* Refactor language information classes * Implement SimpleLanguageInformation abstract class * Move some properties to SimpleLanguageInformation * Implement format and debug buttons disabling if Intellisense is not supported for current language * Add Intellisense available check in FormsExtensions to deactivate menu items if needed * Change function interfaces in VisibilityService * Replace CodeCompletionController.CurrentParser null checks with IntellisenseAvailable method call * Refactor IParser and BaseParser to deduplicate code * Fix BuildTreeInSpecialMode in SPythonParser * Add SimpleParser class for new languages without Intellisense * Delete duplicate SetDebugButtonsEnabled function * Add Intellisense available check in RunService when attaching debugger * Delete inner check in SetDebugButtonsEnabled to improve architecture * Change CurrentParser property in CodeCompletion to be CurrentLanguage * Divide ILanguageInformation into two interfaces (creating new ILanguageIntellisenseSupport) * Fix LanguageIntellisenseSupport initialization in BaseLanguage * Fix RunService fictive_attach logic * Disable Intellisense parsing for languages without Intellisense support * Add DefaultLanguageInformation abstract class * Add default implementation for SetSemanticConstants in BaseLanguage * Simplify IParser interface * Update developer guide documentation
52 lines
2.3 KiB
C#
52 lines
2.3 KiB
C#
// Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt)
|
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
|
|
|
using System.Collections.Generic;
|
|
using Languages.Facade;
|
|
using PascalABCCompiler.SyntaxTreeConverters;
|
|
using PascalABCCompiler.SystemLibrary;
|
|
using PascalABCCompiler.TreeConverter;
|
|
|
|
namespace Languages.Pascal
|
|
{
|
|
public class PascalABCLanguage : BaseLanguage
|
|
{
|
|
|
|
public PascalABCLanguage() : base(
|
|
|
|
languageInformation: new Frontend.Data.PascalABCLanguageInformation(),
|
|
languageIntellisenseSupport: new Frontend.Data.PascalABCIntellisenseSupport(),
|
|
parser: new Frontend.Wrapping.PascalABCNewLanguageParser(),
|
|
docParser: new Frontend.Documentation.PascalDocTagsLanguageParser(),
|
|
|
|
syntaxTreeConverters: new List<ISyntaxTreeConverter>() { new Frontend.Converters.StandardSyntaxTreeConverter(), new SyntaxSemanticVisitors.LambdaAnyConverter() }
|
|
) { }
|
|
|
|
|
|
public override void SetSemanticConstants()
|
|
{
|
|
SemanticRulesConstants.ClassBaseType = SystemLibrary.object_type;
|
|
SemanticRulesConstants.StructBaseType = SystemLibrary.value_type;
|
|
SemanticRulesConstants.AddResultVariable = true;
|
|
SemanticRulesConstants.ZeroBasedStrings = false;
|
|
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 = true;
|
|
}
|
|
|
|
public override void SetSyntaxTreeToSemanticTreeConverter()
|
|
{
|
|
SyntaxTreeToSemanticTreeConverter = new syntax_tree_visitor();
|
|
}
|
|
}
|
|
}
|