pascalabcnet/documentation/Compiler/Compiler_api.md
AlexanderZemlyak 271d5792ce
Documentation (#3211)
* Add Compiler documentation

* Add Intellisense documentation

* Move documentation folder to root directory
2024-10-08 10:00:14 +03:00

86 KiB
Raw Permalink Blame History

Class Compiler

Namespace: PascalABCCompiler
Assembly: Compiler.dll

public class Compiler : MarshalByRefObject, ICompiler

Inheritance

objectMarshalByRefObjectCompiler

Implements

ICompiler

Inherited Members

MarshalByRefObject.MemberwiseClone(bool), MarshalByRefObject.GetLifetimeService(), MarshalByRefObject.InitializeLifetimeService(), MarshalByRefObject.CreateObjRef(Type), object.ToString(), object.Equals(object), object.Equals(object, object), object.ReferenceEquals(object, object), object.GetHashCode(), object.GetType(), object.MemberwiseClone()

Constructors

Compiler()

private static Compiler()

Compiler()

public Compiler()

Compiler(ICompiler, SourceFilesProviderDelegate, ChangeCompilerStateEventDelegate)

public Compiler(ICompiler comp, SourceFilesProviderDelegate SourceFilesProvider, ChangeCompilerStateEventDelegate ChangeCompilerState)

Parameters

comp ICompiler

SourceFilesProvider SourceFilesProviderDelegate

ChangeCompilerState ChangeCompilerStateEventDelegate

Compiler(SourceFilesProviderDelegate, ChangeCompilerStateEventDelegate)

public Compiler(SourceFilesProviderDelegate SourceFilesProvider, ChangeCompilerStateEventDelegate ChangeCompilerState)

Parameters

SourceFilesProvider SourceFilesProviderDelegate

ChangeCompilerState ChangeCompilerStateEventDelegate

Fields

BadNodesInSyntaxTree

private Hashtable BadNodesInSyntaxTree

Field Value

Hashtable

CodeGeneratorsController

public Controller CodeGeneratorsController

Field Value

Controller

CompiledVariables

public List<var_definition_node> CompiledVariables

Field Value

List<var_definition_node>

DLLCache

private Dictionary<string, CompilationUnit> DLLCache

Field Value

Dictionary<string, CompilationUnit>

PCUReadersAndWritersClosed

private bool PCUReadersAndWritersClosed

Field Value

bool

RecompileList

public Hashtable RecompileList

Field Value

Hashtable

StandardModules

private List<string> StandardModules

Field Value

List<string>

SyntaxTreeToSemanticTreeConverter

public SyntaxTreeToSemanticTreeConverter SyntaxTreeToSemanticTreeConverter

Field Value

SyntaxTreeToSemanticTreeConverter

UnitsToCompileDelayedList

список отложенной компиляции реализации (она будет откомпилирована в Compile, а не в СompileUnit)

private List<CompilationUnit> UnitsToCompileDelayedList

Field Value

List<CompilationUnit>

UnitsTopologicallySortedList

public List<CompilationUnit> UnitsTopologicallySortedList

Field Value

List<CompilationUnit>

_clear_after_compilation

private bool _clear_after_compilation

Field Value

bool

assemblyResolveScope

private AssemblyResolveScope assemblyResolveScope

Field Value

AssemblyResolveScope

beginOffset

Начало основной программы

public int beginOffset

Field Value

int

currentCompilationUnit

private CompilationUnit currentCompilationUnit

Field Value

CompilationUnit

errorsList

private List<Error> errorsList

Field Value

List<Error>

firstCompilationUnit

private CompilationUnit firstCompilationUnit

Field Value

CompilationUnit

internalDebug

private CompilerInternalDebug internalDebug

Field Value

CompilerInternalDebug

linesCompiled

private uint linesCompiled

Field Value

uint

pABCCodeHealth

private int pABCCodeHealth

Field Value

int

pcuCompilationUnits

private static Dictionary<string, CompilationUnit> pcuCompilationUnits

Field Value

Dictionary<string, CompilationUnit>

project

private ProjectInfo project

Field Value

ProjectInfo

semanticTree

private program_node semanticTree

Field Value

program_node

semanticTreeConvertersController

private SemanticTreeConvertersController semanticTreeConvertersController

Field Value

SemanticTreeConvertersController

sourceFilesProvider

private SourceFilesProviderDelegate sourceFilesProvider

Field Value

SourceFilesProviderDelegate

standartAssemblyPath

private static string standartAssemblyPath

Field Value

string

standart_assembly_dict

public static Dictionary<string, string> standart_assembly_dict

Field Value

Dictionary<string, string>

state

private CompilerState state

Field Value

CompilerState

supportedProjectFiles

private SupportedSourceFile[] supportedProjectFiles

Field Value

SupportedSourceFile[]

supportedSourceFiles

private SupportedSourceFile[] supportedSourceFiles

Field Value

SupportedSourceFile[]

unitTable

private CompilationUnitHashTable unitTable

Field Value

CompilationUnitHashTable

varBeginOffset

Положение первых переменных в пространстве имен основной программы

public int varBeginOffset

Field Value

int

warnings

private List<CompilerWarning> warnings

Field Value

List<CompilerWarning>

Properties

Banner

public static string Banner { get; }

Property Value

string

BeginOffset

public int BeginOffset { get; }

Property Value

int

ClearAfterCompilation

public bool ClearAfterCompilation { get; set; }

Property Value

bool

CompilerOptions

public CompilerOptions CompilerOptions { get; set; }

Property Value

CompilerOptions

CompilerType

public CompilerType CompilerType { get; }

Property Value

CompilerType

ErrorsList

public List<Error> ErrorsList { get; }

Property Value

List<Error>

GetUnitFileNameCache

public Dictionary<Tuple<string, string>, string> GetUnitFileNameCache { get; }

Property Value

Dictionary<Tuple<string, string>, string>

InternalDebug

public CompilerInternalDebug InternalDebug { get; set; }

Property Value

CompilerInternalDebug

LanguageProvider

private LanguageProvider LanguageProvider { get; }

Property Value

LanguageProvider

LinesCompiled

public uint LinesCompiled { get; }

Property Value

uint

PABCCodeHealth

Здоровье кода на всякий случай выносим в интерфейс компилятора Реально оно будет использоваться только при запуске из под оболочки (Remote Compiler)

public int PABCCodeHealth { get; }

Property Value

int

PCUFileNamesDictionary

public Dictionary<Tuple<string, string>, Tuple<string, int>> PCUFileNamesDictionary { get; }

Property Value

Dictionary<Tuple<string, string>, Tuple<string, int>>

SemanticTree

public IProgramNode SemanticTree { get; }

Property Value

IProgramNode

SemanticTreeConvertersController

public SemanticTreeConvertersController SemanticTreeConvertersController { get; }

Property Value

SemanticTreeConvertersController

ShortVersion

public static string ShortVersion { get; }

Property Value

string

SourceFileNamesDictionary

public Dictionary<Tuple<string, string>, Tuple<string, int>> SourceFileNamesDictionary { get; }

Property Value

Dictionary<Tuple<string, string>, Tuple<string, int>>

SourceFilesProvider

public SourceFilesProviderDelegate SourceFilesProvider { get; }

Property Value

SourceFilesProviderDelegate

State

public CompilerState State { get; }

Property Value

CompilerState

SupportedProjectFiles

public SupportedSourceFile[] SupportedProjectFiles { get; }

Property Value

SupportedSourceFile[]

SupportedSourceFiles

public SupportedSourceFile[] SupportedSourceFiles { get; set; }

Property Value

SupportedSourceFile[]

UnitTable

public CompilationUnitHashTable UnitTable { get; }

Property Value

CompilationUnitHashTable

VarBeginOffset

public int VarBeginOffset { get; }

Property Value

int

Version

public static string Version { get; }

Property Value

string

VersionDateTime

public static DateTime VersionDateTime { get; }

Property Value

DateTime

Warnings

public List<CompilerWarning> Warnings { get; }

Property Value

List<CompilerWarning>

Methods

AddCodeGenerationErrorToErrorList(Exception)

private void AddCodeGenerationErrorToErrorList(Exception err)

Parameters

err Exception

AddCurrentUnitAndItsReferencesToUsesLists(unit_node_list, Dictionary<unit_node, CompilationUnit>, unit_or_namespace, CompilationUnit, unit_node_list)

private void AddCurrentUnitAndItsReferencesToUsesLists(unit_node_list unitsFromUsesSection, Dictionary<unit_node, CompilationUnit> directUnitsFromUsesSection, unit_or_namespace currentUnitNode, CompilationUnit currentUnit, unit_node_list references)

Parameters

unitsFromUsesSection unit_node_list

directUnitsFromUsesSection Dictionary<unit_node, CompilationUnit>

currentUnitNode unit_or_namespace

currentUnit CompilationUnit

references unit_node_list

AddDeclarationsAndReferencedUnitsToNamespaces(List<unit_or_namespace>, string, unit_module, syntax_namespace_node)

private void AddDeclarationsAndReferencedUnitsToNamespaces(List<unit_or_namespace> namespace_modules, string file, unit_module unitModule, syntax_namespace_node namespaceNode)

Parameters

namespace_modules List<unit_or_namespace>

file string

unitModule unit_module

namespaceNode syntax_namespace_node

AddDocumentationToNodes(CompilationUnit, string)

private Dictionary<syntax_tree_node, string> AddDocumentationToNodes(CompilationUnit currentUnit, string text)

Parameters

currentUnit CompilationUnit

text string

Returns

Dictionary<syntax_tree_node, string>

AddErrorToErrorListConsideringPosition(Error)

private void AddErrorToErrorListConsideringPosition(Error err)

Parameters

err Error

AddInternalErrorToErrorList(CompilerInternalError)

private void AddInternalErrorToErrorList(CompilerInternalError internalError)

Parameters

internalError CompilerInternalError

AddNamespacesToMainDefinitions(unit_module, program_module, Dictionary<string, syntax_namespace_node>)

private void AddNamespacesToMainDefinitions(unit_module mainLibrary, program_module main_program, Dictionary<string, syntax_namespace_node> namespaces)

Parameters

mainLibrary unit_module

main_program program_module

namespaces Dictionary<string, syntax_namespace_node>

AddNamespacesToMainUsesList(unit_module, program_module, List<unit_or_namespace>)

private void AddNamespacesToMainUsesList(unit_module mainLibrary, program_module main_program, List<unit_or_namespace> namespaceModules)

Parameters

mainLibrary unit_module

main_program program_module

namespaceModules List<unit_or_namespace>

AddNamespacesToUsingList(using_namespace_list, List<unit_or_namespace>, bool, Dictionary<string, syntax_namespace_node>)

public void AddNamespacesToUsingList(using_namespace_list usingList, List<unit_or_namespace> possibleNamespaces, bool mightContainUnits, Dictionary<string, syntax_namespace_node> namespaces)

Parameters

usingList using_namespace_list

possibleNamespaces List<unit_or_namespace>

mightContainUnits bool

namespaces Dictionary<string, syntax_namespace_node>

AddNamespacesToUsingList(using_namespace_list, using_list)

public void AddNamespacesToUsingList(using_namespace_list using_list, using_list ul)

Parameters

using_list using_namespace_list

ul using_list

AddReferencesToNetSystemLibraries(CompilationUnit, List<compiler_directive>)

Добавляет ссылки на стандартные системные dll .NET - версия с директивами уровня семантики

private void AddReferencesToNetSystemLibraries(CompilationUnit compilationUnit, List<compiler_directive> directives)

Parameters

compilationUnit CompilationUnit

directives List<compiler_directive>

AddReferencesToNetSystemLibraries(CompilationUnit, List<compiler_directive>)

Добавляет ссылки на стандартные системные dll .NET - версия с директивами уровня синтаксиса

private void AddReferencesToNetSystemLibraries(CompilationUnit compilationUnit, List<compiler_directive> directives)

Parameters

compilationUnit CompilationUnit

directives List<compiler_directive>

AddStandardUnitsToInterfaceUsesSection(CompilationUnit)

public void AddStandardUnitsToInterfaceUsesSection(CompilationUnit currentUnit)

Parameters

currentUnit CompilationUnit

AddWarnings(List<CompilerWarning>)

public void AddWarnings(List<CompilerWarning> WarningList)

Parameters

WarningList List<CompilerWarning>

AsyncClosePCUWriters()

private void AsyncClosePCUWriters()

CalculateLinesCompiled(List<Error>, compilation_unit)

private void CalculateLinesCompiled(List<Error> errorList, compilation_unit unitSyntaxTree)

Parameters

errorList List<Error>

unitSyntaxTree compilation_unit

CalculatePascalProgramHealth(compilation_unit)

private void CalculatePascalProgramHealth(compilation_unit unitSyntaxTree)

Parameters

unitSyntaxTree compilation_unit

ChangeCompilerStateEvent(ICompiler, CompilerState, string)

private void ChangeCompilerStateEvent(ICompiler sender, CompilerState State, string FileName)

Parameters

sender ICompiler

State CompilerState

FileName string

CheckErrorsAndThrowTheFirstOne()

private void CheckErrorsAndThrowTheFirstOne()

CheckForDuplicatesInUsesSection(List<unit_or_namespace>)

Бросает ошибку если находит дупликаты в секции uses

private void CheckForDuplicatesInUsesSection(List<unit_or_namespace> usesList)

Parameters

usesList List<unit_or_namespace>

CheckForRTLErrorsAndClearAllErrorsIfFound()

private bool CheckForRTLErrorsAndClearAllErrorsIfFound()

Returns

bool

CheckPathValid(string)

public static bool CheckPathValid(string path)

Parameters

path string

Returns

bool

ClearAll(bool)

public void ClearAll(bool close_pcu = true)

Parameters

close_pcu bool

ClosePCUReadersAndWriters()

private void ClosePCUReadersAndWriters()

ClosePCUWriters()

private void ClosePCUWriters()

CombinePathsRelatively(string, string)

public static string CombinePathsRelatively(string path1, string path2)

Parameters

path1 string

path2 string

Returns

string

Compile(CompilerOptions)

public string Compile(CompilerOptions CompilerOptions)

Parameters

CompilerOptions CompilerOptions

Returns

string

Compile()

public string Compile()

Returns

string

CompileCS()

public string CompileCS()

Returns

string

CompileCurrentUnitImplementation(string, CompilationUnit, Dictionary<syntax_tree_node, string>)

private void CompileCurrentUnitImplementation(string UnitFileName, CompilationUnit currentUnit, Dictionary<syntax_tree_node, string> docs)

Parameters

UnitFileName string

currentUnit CompilationUnit

docs Dictionary<syntax_tree_node, string>

CompileCurrentUnitInterface(string, CompilationUnit, Dictionary<syntax_tree_node, string>)

private void CompileCurrentUnitInterface(string UnitFileName, CompilationUnit currentUnit, Dictionary<syntax_tree_node, string> docs)

Parameters

UnitFileName string

currentUnit CompilationUnit

docs Dictionary<syntax_tree_node, string>

CompileImplementationDependencies(string, CompilationUnit, List<unit_or_namespace>, Dictionary<string, syntax_namespace_node>, common_unit_node, out bool)

Компилирует модули из секции uses текущего модуля реализации рекурсивно

private void CompileImplementationDependencies(string currentPath, CompilationUnit currentUnit, List<unit_or_namespace> implementationUsesList, Dictionary<string, syntax_namespace_node> namespaces, common_unit_node commonUnitNode, out bool shouldReturnCurrentUnit)

Parameters

currentPath string

currentUnit CompilationUnit

implementationUsesList List<unit_or_namespace>

namespaces Dictionary<string, syntax_namespace_node>

commonUnitNode common_unit_node

shouldReturnCurrentUnit bool

CompileInterfaceDependencies(unit_node_list, Dictionary<unit_node, CompilationUnit>, unit_or_namespace, string, string, CompilationUnit, List<unit_or_namespace>, unit_node_list, Dictionary<string, syntax_namespace_node>, out bool)

Компилирует модули из секции uses интерфейса текущего модуля рекурсивно

private void CompileInterfaceDependencies(unit_node_list unitsFromUsesSection, Dictionary<unit_node, CompilationUnit> directUnitsFromUsesSection, unit_or_namespace currentUnitNode, string unitFileName, string currentPath, CompilationUnit currentUnit, List<unit_or_namespace> interfaceUsesList, unit_node_list references, Dictionary<string, syntax_namespace_node> namespaces, out bool shouldReturnCurrentUnit)

Parameters

unitsFromUsesSection unit_node_list

directUnitsFromUsesSection Dictionary<unit_node, CompilationUnit>

currentUnitNode unit_or_namespace

unitFileName string

currentPath string

currentUnit CompilationUnit

interfaceUsesList List<unit_or_namespace>

references unit_node_list

namespaces Dictionary<string, syntax_namespace_node>

shouldReturnCurrentUnit bool

Exceptions

CycleUnitReference

CompileReference(unit_node_list, compiler_directive)

private CompilationUnit CompileReference(unit_node_list dlls, compiler_directive reference)

Parameters

dlls unit_node_list

reference compiler_directive

Returns

CompilationUnit

CompileUnit(unit_node_list, Dictionary<unit_node, CompilationUnit>, unit_or_namespace, string)

Компилирует основную программу и все используемые ей юниты рекурсивно

public CompilationUnit CompileUnit(unit_node_list unitsFromUsesSection, Dictionary<unit_node, CompilationUnit> directUnitsFromUsesSection, unit_or_namespace currentUnitNode, string previousPath)

Parameters

unitsFromUsesSection unit_node_list

Вспомогательная переменная для заполнения CompilationUnit.interfaceUsedUnits и CompilationUnit.implementationUsedUnits (здесь могут содержаться юниты и dll)

directUnitsFromUsesSection Dictionary<unit_node, CompilationUnit>

Вспомогательная переменная для заполнения CompilationUnit.interfaceUsedDirectUnits и CompilationUnit.implementationUsedDirectUnits

currentUnitNode unit_or_namespace

Синтаксический узел текущего модуля (или пространства имен)

previousPath string

Директория родительского модуля

Returns

CompilationUnit

Скомпилированный юнит

CompileUnitsFromDelayedList()

private void CompileUnitsFromDelayedList()

ConstructMainSemanticTree(CompilerOptions)

private program_node ConstructMainSemanticTree(CompilerOptions compilerOptions)

Parameters

compilerOptions CompilerOptions

Returns

program_node

ConstructSyntaxTree(string, CompilationUnit, string)

private compilation_unit ConstructSyntaxTree(string unitFileName, CompilationUnit currentUnit, string sourceText)

Parameters

unitFileName string

currentUnit CompilationUnit

sourceText string

Returns

compilation_unit

ConstructSyntaxTreeAndRunSugarConversions(string, CompilationUnit, out Dictionary<syntax_tree_node, string>)

Строит синтаксическое дерево, бросает первую из найденных ошибок (если они есть) и запускает сахарные преобразования

private void ConstructSyntaxTreeAndRunSugarConversions(string unitFileName, CompilationUnit currentUnit, out Dictionary<syntax_tree_node, string> docs)

Parameters

unitFileName string

currentUnit CompilationUnit

docs Dictionary<syntax_tree_node, string>

ConvertSyntaxTree(compilation_unit, List<ISyntaxTreeConverter>)

private compilation_unit ConvertSyntaxTree(compilation_unit syntaxTree, List<ISyntaxTreeConverter> converters)

Parameters

syntaxTree compilation_unit

converters List<ISyntaxTreeConverter>

Returns

compilation_unit

CreateDependencyListsForCurrentUnit(CompilationUnit, string, out List<unit_or_namespace>, out unit_node_list, out Dictionary<string, syntax_namespace_node>)

private void CreateDependencyListsForCurrentUnit(CompilationUnit currentUnit, string currentDirectory, out List<unit_or_namespace> interfaceUsesList, out unit_node_list references, out Dictionary<string, syntax_namespace_node> namespaces)

Parameters

currentUnit CompilationUnit

currentDirectory string

interfaceUsesList List<unit_or_namespace>

references unit_node_list

namespaces Dictionary<string, syntax_namespace_node>

CurrentUnitIsNotMainProgram()

Возвращает true, если текущий компилируемый модуль не является основной программой (program_module)

private bool CurrentUnitIsNotMainProgram()

Returns

bool

DebugOutputFileCreationUsingPDB()

private void DebugOutputFileCreationUsingPDB()

DisablePABCRtlIfUsingDotnet5(List<compiler_directive>)

private void DisablePABCRtlIfUsingDotnet5(List<compiler_directive> directives)

Parameters

directives List<compiler_directive>

FillNetCompilerOptionsFromCompilerDirectives(CompilerOptions, Dictionary<string, List<compiler_directive>>)

private void FillNetCompilerOptionsFromCompilerDirectives(CompilerOptions netCompilerOptions, Dictionary<string, List<compiler_directive>> compilerDirectives)

Parameters

netCompilerOptions CompilerOptions

compilerDirectives Dictionary<string, List<compiler_directive>>

FillNetCompilerOptionsFromProject(CompilerOptions)

private void FillNetCompilerOptionsFromProject(CompilerOptions netCompilerOptions)

Parameters

netCompilerOptions CompilerOptions

FindFileWithExtensionInDirs(string, out int, params string[])

private string FindFileWithExtensionInDirs(string fileName, out int foundDirIndex, params string[] dirs)

Parameters

fileName string

foundDirIndex int

dirs string[]

Returns

string

FindPCUFileName(string, string, out int)

public string FindPCUFileName(string fileName, string currentPath, out int folderPriority)

Parameters

fileName string

currentPath string

folderPriority int

Returns

string

FindPositionForSemanticErrorInTheErrorList(Error)

private int FindPositionForSemanticErrorInTheErrorList(Error err)

Parameters

err Error

Returns

int

FindSourceFileName(string, string, out int)

public string FindSourceFileName(string fileName, string currentPath, out int folderPriority)

Parameters

fileName string

currentPath string

folderPriority int

Returns

string

FindSourceFileNameInDirs(string, out int, params string[])

public string FindSourceFileNameInDirs(string fileName, out int foundDirIndex, params string[] Dirs)

Parameters

fileName string

foundDirIndex int

Dirs string[]

Returns

string

Free()

public void Free()

GenUnitDocumentation(CompilationUnit, string)

private Dictionary<syntax_tree_node, string> GenUnitDocumentation(CompilationUnit currentUnit, string SourceText)

Parameters

currentUnit CompilationUnit

SourceText string

Returns

Dictionary<syntax_tree_node, string>

GenerateILCode(program_node, CompilerOptions, List<string>)

private void GenerateILCode(program_node programNode, CompilerOptions compilerOptions, List<string> resourceFiles)

Parameters

programNode program_node

compilerOptions CompilerOptions

resourceFiles List<string>

GetCompilerDirectives(List<CompilationUnit>)

Формирует словарь директив компилятора, собирая их из всех переданных модулей

private Dictionary<string, List<compiler_directive>> GetCompilerDirectives(List<CompilationUnit> Units)

Parameters

Units List<CompilationUnit>

Returns

Dictionary<string, List<compiler_directive>>

Exceptions

DuplicateDirective

GetDirectivesAsSemanticNodes(List<compiler_directive>, string)

преобразует в директивы семантического уровня | в syntax_tree_visitor такая же функция EVA

private List<compiler_directive> GetDirectivesAsSemanticNodes(List<compiler_directive> compilerDirectives, string unitFileName)

Parameters

compilerDirectives List<compiler_directive>

unitFileName string

Returns

List<compiler_directive>

GetImplementationSyntaxUsingList(compilation_unit)

получение списка using - legacy code !!!

private using_list GetImplementationSyntaxUsingList(compilation_unit cu)

Parameters

cu compilation_unit

Returns

using_list

GetImplementationUsesSection(compilation_unit)

private List<unit_or_namespace> GetImplementationUsesSection(compilation_unit unitSyntaxTree)

Parameters

unitSyntaxTree compilation_unit

Returns

List<unit_or_namespace>

GetIncludedFilesFromDirectives(CompilationUnit, List<compiler_directive>)

private static List<string> GetIncludedFilesFromDirectives(CompilationUnit compilationUnit, List<compiler_directive> directives)

Parameters

compilationUnit CompilationUnit

directives List<compiler_directive>

Returns

List<string>

GetInterfaceUsesSection(compilation_unit)

Возвращает список зависимостей из интерфейсной части модуля (или основной программы)

public List<unit_or_namespace> GetInterfaceUsesSection(compilation_unit unitSyntaxTree)

Parameters

unitSyntaxTree compilation_unit

Returns

List<unit_or_namespace>

GetInterfaceUsingList(compilation_unit)

получение списка using - legacy code !!!

public using_list GetInterfaceUsingList(compilation_unit cu)

Parameters

cu compilation_unit

Returns

using_list

GetLocationFromTreenode(syntax_tree_node, string)

private location GetLocationFromTreenode(syntax_tree_node tn, string FileName)

Parameters

tn syntax_tree_node

FileName string

Returns

location

GetNamespace(unit_or_namespace)

public using_namespace GetNamespace(unit_or_namespace _name_space)

Parameters

_name_space unit_or_namespace

Returns

using_namespace

GetNamespace(using_namespace_list, string, unit_or_namespace, bool, Dictionary<string, syntax_namespace_node>)

Формирует узел семантического дерева, соответствующий пространству имен (.NET или пользовательскому)

private using_namespace GetNamespace(using_namespace_list usingList, string fullNamespaceName, unit_or_namespace name_space, bool mightBeUnit, Dictionary<string, syntax_namespace_node> namespaces)

Parameters

usingList using_namespace_list

fullNamespaceName string

name_space unit_or_namespace

mightBeUnit bool

namespaces Dictionary<string, syntax_namespace_node>

Returns

using_namespace

Exceptions

UnitNotFound

NamespaceNotFound

GetNamespaceSyntaxTree(string)

private compilation_unit GetNamespaceSyntaxTree(string fileName)

Parameters

fileName string

Returns

compilation_unit

GetReferenceFileName(string, string)

public static string GetReferenceFileName(string FileName, string curr_path = null)

Parameters

FileName string

curr_path string

Returns

string

GetReferenceFileName(string, SourceContext, string, bool)

private string GetReferenceFileName(string FileName, SourceContext sc, string curr_path, bool overwrite)

Parameters

FileName string

sc SourceContext

curr_path string

overwrite bool

Returns

string

GetReferences(CompilationUnit)

public unit_node_list GetReferences(CompilationUnit compilationUnit)

Parameters

compilationUnit CompilationUnit

Returns

unit_node_list

GetResourceFilesFromCompilerDirectives(Dictionary<string, List<compiler_directive>>)

private List<string> GetResourceFilesFromCompilerDirectives(Dictionary<string, List<compiler_directive>> compilerDirectives)

Parameters

compilerDirectives Dictionary<string, List<compiler_directive>>

Returns

List<string>

GetSourceCode(string, CompilationUnit)

private string GetSourceCode(string UnitFileName, CompilationUnit currentUnit)

Parameters

UnitFileName string

currentUnit CompilationUnit

Returns

string

GetSourceContext(compiler_directive)

private SourceContext GetSourceContext(compiler_directive directive)

Parameters

directive compiler_directive

Returns

SourceContext

GetSourceFileText(string)

public string GetSourceFileText(string FileName)

Parameters

FileName string

Returns

string

GetUnitFileName(unit_or_namespace, string)

public string GetUnitFileName(unit_or_namespace unitNode, string currentPath)

Parameters

unitNode unit_or_namespace

currentPath string

Returns

string

GetUnitFileName(string, string, string, SourceContext)

public string GetUnitFileName(string unitName, string usesPath, string currentPath, SourceContext sourceContext)

Parameters

unitName string

usesPath string

currentPath string

sourceContext SourceContext

Returns

string

GetUnitPath(CompilationUnit, CompilationUnit)

public static string GetUnitPath(CompilationUnit u1, CompilationUnit u2)

Parameters

u1 CompilationUnit

u2 CompilationUnit

Returns

string

HasIncludeNamespaceDirective(CompilationUnit)

private bool HasIncludeNamespaceDirective(CompilationUnit unit)

Parameters

unit CompilationUnit

Returns

bool

HasOnlySyntaxErrors(List<Error>)

private bool HasOnlySyntaxErrors(List<Error> errors)

Parameters

errors List<Error>

Returns

bool

InitializeCompilerOptionsRelatedToStandardUnits(compilation_unit)

Устанавливает значения опций DisableStandardUnits и UseDllForSystemUnits

private void InitializeCompilerOptionsRelatedToStandardUnits(compilation_unit unitSyntaxTree)

Parameters

unitSyntaxTree compilation_unit

InitializeNewUnit(string, string, ref CompilationUnit, out Dictionary<syntax_tree_node, string>)

Получение исходного кода модуля, заполнение документации, генерация синтаксического дерева, обработка синтаксических ошибок

private void InitializeNewUnit(string unitFileName, string UnitId, ref CompilationUnit currentUnit, out Dictionary<syntax_tree_node, string> docs)

Parameters

unitFileName string

UnitId string

currentUnit CompilationUnit

docs Dictionary<syntax_tree_node, string>

InitializeProjectInfoAndFillCompilerOptionsFromIt()

private void InitializeProjectInfoAndFillCompilerOptionsFromIt()

InternalParseText(ILanguage, string, string, List<Error>, List<CompilerWarning>, List<string>, bool)

private compilation_unit InternalParseText(ILanguage language, string fileName, string text, List<Error> errorList, List<CompilerWarning> warnings, List<string> definesList = null, bool calculateHealth = true)

Parameters

language ILanguage

fileName string

text string

errorList List<Error>

warnings List<CompilerWarning>

definesList List<string>

calculateHealth bool

Returns

compilation_unit

IsDll(compilation_unit)

Проверяет, является ли модуль dll по соответствующей директиве

public static bool IsDll(compilation_unit unitSyntaxTree)

Parameters

unitSyntaxTree compilation_unit

Returns

bool

IsDll(compilation_unit, out compiler_directive)

Проверяет, является ли модуль dll по соответствующей директиве и возвращает эту директиву выходным параметром

public static bool IsDll(compilation_unit unitSyntaxTree, out compiler_directive dllDirective)

Parameters

unitSyntaxTree compilation_unit

dllDirective compiler_directive

Returns

bool

IsDocumentationNeeded(compilation_unit)

private bool IsDocumentationNeeded(compilation_unit unitSyntaxTree)

Parameters

unitSyntaxTree compilation_unit

Returns

bool

IsPossibleNetNamespaceOrStandardPasFile(unit_or_namespace, bool, string)

private bool IsPossibleNetNamespaceOrStandardPasFile(unit_or_namespace name_space, bool addToStandardModules, string currentPath)

Parameters

name_space unit_or_namespace

addToStandardModules bool

currentPath string

Returns

bool

MatchSyntaxErrorsToBadNodes(CompilationUnit)

private void MatchSyntaxErrorsToBadNodes(CompilationUnit currentUnit)

Parameters

currentUnit CompilationUnit

NeedRecompiled(string, string[], PCUReader)

public bool NeedRecompiled(string pcu_name, string[] included, PCUReader pr)

Parameters

pcu_name string

included string[]

pr PCUReader

Returns

bool

ParseText(string, string, List<Error>, List<CompilerWarning>)

public compilation_unit ParseText(string fileName, string text, List<Error> errorList, List<CompilerWarning> warnings)

Parameters

fileName string

text string

errorList List<Error>

warnings List<CompilerWarning>

Returns

compilation_unit

PrebuildMainSemanticTreeActions(out CompilerOptions, out List<string>)

Сохраняет документацию для модулей; Выясняет тип выходного файла, целевой фреймворк, платформу; Заполняет опции .NET компиляции согласно директивам и/или информации из проекта; Находит ресурсные файлы из директив

private void PrebuildMainSemanticTreeActions(out CompilerOptions netCompilerOptions, out List<string> resourceFiles)

Parameters

netCompilerOptions CompilerOptions

resourceFiles List<string>

PreloadReference(compiler_directive)

private Assembly PreloadReference(compiler_directive reference)

Parameters

reference compiler_directive

Returns

Assembly

PrepareFinalMainFunctionForExe(program_node)

public void PrepareFinalMainFunctionForExe(program_node mainSemanticTree)

Parameters

mainSemanticTree program_node

PrepareUserNamespacesUsedInTheCurrentUnit(CompilationUnit)

private Dictionary<string, syntax_namespace_node> PrepareUserNamespacesUsedInTheCurrentUnit(CompilationUnit compilationUnit)

Parameters

compilationUnit CompilationUnit

Returns

Dictionary<string, syntax_namespace_node>

ReadDLL(string, SourceContext)

public CompilationUnit ReadDLL(string FileName, SourceContext sc = null)

Parameters

FileName string

sc SourceContext

Returns

CompilationUnit

ReadPCU(string)

public CompilationUnit ReadPCU(string FileName)

Parameters

FileName string

Returns

CompilationUnit

Reload()

public void Reload()

Reset()

private void Reset()

RunSemanticChecks(string, CompilationUnit)

Семантические проверки по директивам и по типу файла

private void RunSemanticChecks(string unitFileName, CompilationUnit currentUnit)

Parameters

unitFileName string

currentUnit CompilationUnit

SaveDocumentationsForUnits()

private void SaveDocumentationsForUnits()

SavePCU(CompilationUnit)

public void SavePCU(CompilationUnit Unit)

Parameters

Unit CompilationUnit

SaveUnitCheckInParsers()

Передаем парсерам возможность проверить, компилируется ли в данный момент модуль (нужно, если нет ключевого слова unit или подобного в языке)

private void SaveUnitCheckInParsers()

SemanticCheckCurrentUnitMustBeUnitModule(string, CompilationUnit, bool)

private void SemanticCheckCurrentUnitMustBeUnitModule(string UnitFileName, CompilationUnit currentUnit, bool isDll)

Parameters

UnitFileName string

currentUnit CompilationUnit

isDll bool

SemanticCheckDLLDirectiveOnlyForLibraries(compilation_unit, bool, compiler_directive)

Проверка, что директива dll только в Library - требует передачи директивы dll

private void SemanticCheckDLLDirectiveOnlyForLibraries(compilation_unit unitSyntaxTree, bool isDll, compiler_directive dllDirective)

Parameters

unitSyntaxTree compilation_unit

isDll bool

dllDirective compiler_directive

SemanticCheckDisableStandardUnitsDirectiveInUnit(compilation_unit)

Ошибка указания директивы DisableStandardUnits в подключенном модулей

private void SemanticCheckDisableStandardUnitsDirectiveInUnit(compilation_unit unitSyntaxTree)

Parameters

unitSyntaxTree compilation_unit

SemanticCheckIsUserNamespace(compilation_unit)

private void SemanticCheckIsUserNamespace(compilation_unit unitSyntaxTree)

Parameters

unitSyntaxTree compilation_unit

SemanticCheckNamespacesOnlyInProjects(CompilationUnit)

private void SemanticCheckNamespacesOnlyInProjects(CompilationUnit currentUnit)

Parameters

currentUnit CompilationUnit

SemanticCheckNoIncludeNamespaceDirectivesInUnit(CompilationUnit)

private void SemanticCheckNoIncludeNamespaceDirectivesInUnit(CompilationUnit currentUnit)

Parameters

currentUnit CompilationUnit

SemanticCheckNoLoopDependenciesOfInterfaces(CompilationUnit, string, unit_or_namespace, string)

private void SemanticCheckNoLoopDependenciesOfInterfaces(CompilationUnit currentUnit, string unitFileName, unit_or_namespace usedUnitNode, string currentPath)

Parameters

currentUnit CompilationUnit

unitFileName string

usedUnitNode unit_or_namespace

currentPath string

SemanticCheckUsesInIsNotNamespace(unit_or_namespace, CompilationUnit)

private void SemanticCheckUsesInIsNotNamespace(unit_or_namespace currentUnitNode, CompilationUnit currentUnit)

Parameters

currentUnitNode unit_or_namespace

currentUnit CompilationUnit

SetOutputFileTypeOption(Dictionary<string, List<compiler_directive>>)

private void SetOutputFileTypeOption(Dictionary<string, List<compiler_directive>> compilerDirectives)

Parameters

compilerDirectives Dictionary<string, List<compiler_directive>>

SetOutputPlatformOption(CompilerOptions, Dictionary<string, List<compiler_directive>>)

private void SetOutputPlatformOption(CompilerOptions netCompilerOptions, Dictionary<string, List<compiler_directive>> compilerDirectives)

Parameters

netCompilerOptions CompilerOptions

compilerDirectives Dictionary<string, List<compiler_directive>>

SetSupportedProjectFiles()

private void SetSupportedProjectFiles()

SetSupportedSourceFiles()

private void SetSupportedSourceFiles()

SetTargetTypeOption(CompilerOptions)

private void SetTargetTypeOption(CompilerOptions netCompilerOptions)

Parameters

netCompilerOptions CompilerOptions

SetUseDLLForSystemUnits(string, List<unit_or_namespace>, int)

Если в программе в секции uses есть не про-во имен и не стандартный модуль, то использование PABCRtl.dll отменяется

private void SetUseDLLForSystemUnits(string currentDirectory, List<unit_or_namespace> usesList, int lastUnitIndex)

Parameters

currentDirectory string

usesList List<unit_or_namespace>

lastUnitIndex int

SourceFileExists(string)

private bool SourceFileExists(string FileName)

Parameters

FileName string

Returns

bool

SourceFileGetLastWriteTime(string)

private DateTime SourceFileGetLastWriteTime(string FileName)

Parameters

FileName string

Returns

DateTime

StartCompile()

public void StartCompile()

ToString()

public override string ToString()

Returns

string

TryThrowInvalidPath(string, SourceContext)

public static void TryThrowInvalidPath(string path, SourceContext loc)

Parameters

path string

loc SourceContext

UnitHasPCU(unit_node_list, Dictionary<unit_node, CompilationUnit>, unit_or_namespace, ref string, ref CompilationUnit)

private bool UnitHasPCU(unit_node_list unitsFromUsesSection, Dictionary<unit_node, CompilationUnit> directUnitsFromUsesSection, unit_or_namespace currentUnitNode, ref string UnitFileName, ref CompilationUnit currentUnit)

Parameters

unitsFromUsesSection unit_node_list

directUnitsFromUsesSection Dictionary<unit_node, CompilationUnit>

currentUnitNode unit_or_namespace

UnitFileName string

currentUnit CompilationUnit

Returns

bool

WaitCallback_ClosePCUWriters(object)

private void WaitCallback_ClosePCUWriters(object state)

Parameters

state object

buildImplementationUsesList(CompilationUnit)

private unit_node_list buildImplementationUsesList(CompilationUnit cu)

Parameters

cu CompilationUnit

Returns

unit_node_list

get_assembly_path(string, bool)

public static string get_assembly_path(string name, bool search_for_intellisense)

Parameters

name string

search_for_intellisense bool

Returns

string

get_standart_assembly_path(string)

public static string get_standart_assembly_path(string name)

Parameters

name string

Returns

string

pr_ChangeState(object, PCUReaderWriterState, object)

private void pr_ChangeState(object Sender, PCUReaderWriterState State, object obj)

Parameters

Sender object

State PCUReaderWriterState

obj object

semanticTreeConvertersController_ChangeState(State, ISemanticTreeConverter)

private void semanticTreeConvertersController_ChangeState(SemanticTreeConvertersController.State State, ISemanticTreeConverter SemanticTreeConverter)

Parameters

State SemanticTreeConvertersController.State

SemanticTreeConverter ISemanticTreeConverter

OnChangeCompilerState

public event ChangeCompilerStateEventDelegate OnChangeCompilerState

Event Type

ChangeCompilerStateEventDelegate