// Copyright (c) Ivan Bondarev, Stanislav Mihalkovich (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using PascalABCCompiler.TreeRealization; namespace PascalABCCompiler.TreeConverter { public enum VariableInitializationParams { ConstantOnly, ConstructorCall, Expression } public enum PoinerRealization { VoidStar, IntPtr} public static class SemanticRules { /// /// Определять методы в константных записях /// public static bool DefineMethodsInConstantRecord = false; /// /// Наследование константных записей /// public static bool InheritanceConstantRecord = false; /// /// Инициализировать строку пустой срокой /// public static bool InitStringAsEmptyString = true; /// /// Делать строки с быстрым доступом к символам на запись, но со ссылочной семантикой /// public static bool FastStrings = false; /// /// Индексировать строки с 0 /// public static bool NullBasedStrings = false; /// /// Строгая проверка типа указателя /// public static bool StrongPointersTypeCheckForDotNet = true; /// /// Использовать is as для указателей /// public static bool IsAsForPointers = false; /// /// Чуствительность к регистру таблицы символов /// public static bool SymbolTableCaseSensitive = false; /// /// Разрешить использование операторов += -= /= *= для приметивных типов /// public static bool UseExtendedAssignmentOperatorsForPrimitiveTypes = true; /// /// Разрешить оператор /= для целых /// public static bool UseDivisionAssignmentOperatorsForIntegerTypes = false; /// /// Разрешить инициализацию списка переменных одним инициализатором /// public static bool ManyVariablesOneInitializator = false; /// /// Разрешить указатели на аргументы шаблона /// public static bool AllowPointersForGenericParameters = true; /// /// Разрешить запись аргументов шаблона в файл /// public static bool AllowGenericParametersForFiles = true; /// /// Отключить накопление ошибок /// public static bool ThrowErrorWithoutSave = true; /// /// Добавлять переменную result в функции /// public static bool AddResultVariable = true; //!PoinerRealization! in NetGenerator\Helpers.cs public static PoinerRealization PoinerRealization = PoinerRealization.VoidStar; public static VariableInitializationParams VariableInitializationParams = VariableInitializationParams.Expression; /// /// Запертить объявление переменной в блоке если ее имя совпадает с переменной объявленой в объемлющем блоке /// public static bool DisabledDefinitionBlockVariablesWithSameNameThatInAboveScope = true; /// /// Разрешить неазависимость от порядка объявления методов /// public static bool OrderIndependedMethodNames = false; /// /// Разрешить неазависимость от порядка объявления функций /// public static bool OrderIndependedFunctionNames = false; /// /// Разрешить неазависимость от порядка объявления типов /// public static bool OrderIndependedTypeNames = false; /// /// Разрешить процедуру exit /// public static bool EnableExitProcedure = true; /// /// Инициализировать переменные типа аргументов управляемых шаблонов /// public static bool RuntimeInitVariablesOfGenericParameters = true; /// /// Разрешить неявное преобразование нетипизированного указателя к типизированному /// public static bool ImplicitConversionFormPointerToTypedPointer = true; public static type_node ClassBaseType = null; public static type_node StringType = null; public static type_node StructBaseType = null; public static bool AllowUseFormatExprAnywhere = false; public static bool AllowChangeLoopVariable = true; public static bool AllowGlobalVisibilityForPABCDll = false; public static bool AddressOfOperatorNonOverloaded=true; public static bool GenerateNativeCode = false; } }