pascalabcnet/TreeConverter/TreeConversion/SemanticRules.cs
Бондарев Иван dec66239fa bug fix #446
2017-07-26 21:09:45 +02:00

140 lines
5.9 KiB
C#
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// 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
{
/// <summary>
/// Определять методы в константных записях
/// </summary>
public static bool DefineMethodsInConstantRecord = false;
/// <summary>
/// Наследование константных записей
/// </summary>
public static bool InheritanceConstantRecord = false;
/// <summary>
/// Инициализировать строку пустой срокой
/// </summary>
public static bool InitStringAsEmptyString = true;
/// <summary>
/// Делать строки с быстрым доступом к символам на запись, но со ссылочной семантикой
/// </summary>
public static bool FastStrings = false;
/// <summary>
/// Индексировать строки с 0
/// </summary>
public static bool NullBasedStrings = false;
/// <summary>
/// Строгая проверка типа указателя
/// </summary>
public static bool StrongPointersTypeCheckForDotNet = true;
/// <summary>
/// Использовать is as для указателей
/// </summary>
public static bool IsAsForPointers = false;
/// <summary>
/// Чуствительность к регистру таблицы символов
/// </summary>
public static bool SymbolTableCaseSensitive = false;
/// <summary>
/// Разрешить использование операторов += -= /= *= для приметивных типов
/// </summary>
public static bool UseExtendedAssignmentOperatorsForPrimitiveTypes = true;
/// <summary>
/// Разрешить оператор /= для целых
/// </summary>
public static bool UseDivisionAssignmentOperatorsForIntegerTypes = false;
/// <summary>
/// Разрешить инициализацию списка переменных одним инициализатором
/// </summary>
public static bool ManyVariablesOneInitializator = false;
/// <summary>
/// Разрешить указатели на аргументы шаблона
/// </summary>
public static bool AllowPointersForGenericParameters = true;
/// <summary>
/// Разрешить запись аргументов шаблона в файл
/// </summary>
public static bool AllowGenericParametersForFiles = true;
/// <summary>
/// Отключить накопление ошибок
/// </summary>
public static bool ThrowErrorWithoutSave = true;
/// <summary>
/// Добавлять переменную result в функции
/// </summary>
public static bool AddResultVariable = true;
//!PoinerRealization! in NetGenerator\Helpers.cs
public static PoinerRealization PoinerRealization = PoinerRealization.VoidStar;
public static VariableInitializationParams VariableInitializationParams = VariableInitializationParams.Expression;
/// <summary>
/// Запертить объявление переменной в блоке если ее имя совпадает с переменной объявленой в объемлющем блоке
/// </summary>
public static bool DisabledDefinitionBlockVariablesWithSameNameThatInAboveScope = true;
/// <summary>
/// Разрешить неазависимость от порядка объявления методов
/// </summary>
public static bool OrderIndependedMethodNames = true;
/// <summary>
/// Разрешить неазависимость от порядка объявления функций
/// </summary>
public static bool OrderIndependedFunctionNames = false;
/// <summary>
/// Разрешить неазависимость от порядка объявления типов
/// </summary>
public static bool OrderIndependedTypeNames = false;
/// <summary>
/// Разрешить процедуру exit
/// </summary>
public static bool EnableExitProcedure = true;
/// <summary>
/// Инициализировать переменные типа аргументов управляемых шаблонов
/// </summary>
public static bool RuntimeInitVariablesOfGenericParameters = true;
/// <summary>
/// Разрешить неявное преобразование нетипизированного указателя к типизированному
/// </summary>
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;
}
}