/
n-dimens
/
pascalabcnet
Обзор
Документация
Войти
/
n-dimens
/
pascalabcnet
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
LanguagePlugins/SPython/SPythonLanguageInfo/SPythonLanguage.cs
52 строки
2 KB
AlexanderZemlyak
Language interface change (#3356)
07 ноя 2025, 20:43
Не верифицирован
07 ноя 2025, 20:43
7a59245
Код
Авторство
О чём код?
using System.Collections.Generic; using Languages.Facade; using PascalABCCompiler.SyntaxTreeConverters; using PascalABCCompiler.SystemLibrary; using PascalABCCompiler.TreeConverter; namespace Languages.SPython { public class SPythonLanguage : BaseLanguage { public SPythonLanguage() : base( languageInformation: new Frontend.Data.SPythonLanguageInformation(), parser: new SPythonParser.SPythonLanguageParser(), docParser: null, syntaxTreeConverters: new List<ISyntaxTreeConverter>() { new Frontend.Converters.StandardSyntaxTreeConverter(), new SyntaxSemanticVisitors.LambdaAnyConverter() } ) { ((SPythonParser.SPythonLanguageParser)Parser).SyntaxTreeConvertersForIntellisense = SyntaxTreeConverters; } /// <summary> /// TODO: требуется проверка и настройка работы EVA /// </summary> public override void SetSemanticConstants() { SemanticRulesConstants.ClassBaseType = SystemLibrary.object_type; SemanticRulesConstants.StructBaseType = SystemLibrary.value_type; SemanticRulesConstants.AddResultVariable = true; SemanticRulesConstants.ZeroBasedStrings = true; SemanticRulesConstants.FastStrings = false; SemanticRulesConstants.InitStringAsEmptyString = true; SemanticRulesConstants.UseDivisionAssignmentOperatorsForIntegerTypes = false; SemanticRulesConstants.ManyVariablesOneInitializator = false; SemanticRulesConstants.OrderIndependedMethodNames = true; SemanticRulesConstants.OrderIndependedFunctionNames = false; SemanticRulesConstants.OrderIndependedTypeNames = false; SemanticRulesConstants.EnableExitProcedure = true; SemanticRulesConstants.StrongPointersTypeCheckForDotNet = true; SemanticRulesConstants.AllowChangeLoopVariable = false; SemanticRulesConstants.AllowGlobalVisibilityForPABCDll = true; SemanticRulesConstants.AllowMethodCallsWithoutParentheses = false; } public override void SetSyntaxTreeToSemanticTreeConverter() { SyntaxTreeToSemanticTreeConverter = new SPythonSyntaxTreeVisitor.spython_syntax_tree_visitor(LanguageProvider.Instance.MainLanguage.SyntaxTreeToSemanticTreeConverter); } } }