* Reorganize files in TestSuite dir for multiple languages * Add SPython samples to TestSuite * Update TestRunner to support multiple languages * Delete dll files accidentally pushed * Update .gitignore * Revert "Delete dll files accidentally pushed" This reverts commit 62bcba2b821d58ae51ec98e9dadcf621bb0fc003. * Update testing dir path in Testing.cs * Improve TestRunner output * Add random module and it's usage sample * Reorganize gitignore files * Move pascal tests back to TestSuite and create new TestSuiteLanguagePlugins folder for SPython * Revert "Update testing dir path in Testing.cs" This reverts commit 7d94eafb25292421bce8315520b4f6a0de001bbd. * Revert crlf changes in pascal tests * Test changes of _RebuildReleaseAndRunTestsForGitHubActions.bat * Revert "Test changes of _RebuildReleaseAndRunTestsForGitHubActions.bat" This reverts commit 234ceae3e3a339fbc68a6170e2bd201dab14d67d. * Test changes in StorageLocationPicker * Another test changes in StorageLocationPicker.cs * Rename LanguagePlugins folder to AdditionalLanguages * Decouple TestRunner from language names and parameters * Revert calling TestRunner without parameters in .bat files * Fix formatter tests nogui exception handling * Small refactoring in Testing.cs and TestRunner fix of working directory
53 lines
2.4 KiB
C#
53 lines
2.4 KiB
C#
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);
|
|
}
|
|
|
|
}
|
|
}
|