* Add Compiler documentation * Add Intellisense documentation * Move documentation folder to root directory
86 KiB
Class Compiler
Namespace: PascalABCCompiler
Assembly: Compiler.dll
public class Compiler : MarshalByRefObject, ICompiler
Inheritance
object ← MarshalByRefObject ← Compiler
Implements
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
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
RecompileList
public Hashtable RecompileList
Field Value
StandardModules
private List<string> StandardModules
Field Value
SyntaxTreeToSemanticTreeConverter
public SyntaxTreeToSemanticTreeConverter SyntaxTreeToSemanticTreeConverter
Field Value
SyntaxTreeToSemanticTreeConverter
UnitsToCompileDelayedList
список отложенной компиляции реализации (она будет откомпилирована в Compile, а не в СompileUnit)
private List<CompilationUnit> UnitsToCompileDelayedList
Field Value
UnitsTopologicallySortedList
public List<CompilationUnit> UnitsTopologicallySortedList
Field Value
_clear_after_compilation
private bool _clear_after_compilation
Field Value
assemblyResolveScope
private AssemblyResolveScope assemblyResolveScope
Field Value
AssemblyResolveScope
beginOffset
Начало основной программы
public int beginOffset
Field Value
currentCompilationUnit
private CompilationUnit currentCompilationUnit
Field Value
errorsList
private List<Error> errorsList
Field Value
List<Error>
firstCompilationUnit
private CompilationUnit firstCompilationUnit
Field Value
internalDebug
private CompilerInternalDebug internalDebug
Field Value
linesCompiled
private uint linesCompiled
Field Value
pABCCodeHealth
private int pABCCodeHealth
Field Value
pcuCompilationUnits
private static Dictionary<string, CompilationUnit> pcuCompilationUnits
Field Value
Dictionary<string, CompilationUnit>
project
private ProjectInfo project
Field Value
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
standart_assembly_dict
public static Dictionary<string, string> standart_assembly_dict
Field Value
state
private CompilerState state
Field Value
supportedProjectFiles
private SupportedSourceFile[] supportedProjectFiles
Field Value
supportedSourceFiles
private SupportedSourceFile[] supportedSourceFiles
Field Value
unitTable
private CompilationUnitHashTable unitTable
Field Value
varBeginOffset
Положение первых переменных в пространстве имен основной программы
public int varBeginOffset
Field Value
warnings
private List<CompilerWarning> warnings
Field Value
List<CompilerWarning>
Properties
Banner
public static string Banner { get; }
Property Value
BeginOffset
public int BeginOffset { get; }
Property Value
ClearAfterCompilation
public bool ClearAfterCompilation { get; set; }
Property Value
CompilerOptions
public CompilerOptions CompilerOptions { get; set; }
Property Value
CompilerType
public CompilerType CompilerType { get; }
Property Value
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
LanguageProvider
private LanguageProvider LanguageProvider { get; }
Property Value
LanguageProvider
LinesCompiled
public uint LinesCompiled { get; }
Property Value
PABCCodeHealth
Здоровье кода на всякий случай выносим в интерфейс компилятора Реально оно будет использоваться только при запуске из под оболочки (Remote Compiler)
public int PABCCodeHealth { get; }
Property Value
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
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
SupportedProjectFiles
public SupportedSourceFile[] SupportedProjectFiles { get; }
Property Value
SupportedSourceFiles
public SupportedSourceFile[] SupportedSourceFiles { get; set; }
Property Value
UnitTable
public CompilationUnitHashTable UnitTable { get; }
Property Value
VarBeginOffset
public int VarBeginOffset { get; }
Property Value
Version
public static string Version { get; }
Property Value
VersionDateTime
public static DateTime VersionDateTime { get; }
Property Value
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
CheckPathValid(string)
public static bool CheckPathValid(string path)
Parameters
path string
Returns
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
Compile(CompilerOptions)
public string Compile(CompilerOptions CompilerOptions)
Parameters
CompilerOptions CompilerOptions
Returns
Compile()
public string Compile()
Returns
CompileCS()
public string CompileCS()
Returns
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
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
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
Скомпилированный юнит
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
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
FindPCUFileName(string, string, out int)
public string FindPCUFileName(string fileName, string currentPath, out int folderPriority)
Parameters
fileName string
currentPath string
folderPriority int
Returns
FindPositionForSemanticErrorInTheErrorList(Error)
private int FindPositionForSemanticErrorInTheErrorList(Error err)
Parameters
err Error
Returns
FindSourceFileName(string, string, out int)
public string FindSourceFileName(string fileName, string currentPath, out int folderPriority)
Parameters
fileName string
currentPath string
folderPriority int
Returns
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
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
GetCompilerDirectives(List<CompilationUnit>)
Формирует словарь директив компилятора, собирая их из всех переданных модулей
private Dictionary<string, List<compiler_directive>> GetCompilerDirectives(List<CompilationUnit> Units)
Parameters
Units List<CompilationUnit>
Returns
Dictionary<string, List<compiler_directive>>
Exceptions
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
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
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
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
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
GetSourceCode(string, CompilationUnit)
private string GetSourceCode(string UnitFileName, CompilationUnit currentUnit)
Parameters
UnitFileName string
currentUnit CompilationUnit
Returns
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
GetUnitFileName(unit_or_namespace, string)
public string GetUnitFileName(unit_or_namespace unitNode, string currentPath)
Parameters
unitNode unit_or_namespace
currentPath string
Returns
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
GetUnitPath(CompilationUnit, CompilationUnit)
public static string GetUnitPath(CompilationUnit u1, CompilationUnit u2)
Parameters
Returns
HasIncludeNamespaceDirective(CompilationUnit)
private bool HasIncludeNamespaceDirective(CompilationUnit unit)
Parameters
unit CompilationUnit
Returns
HasOnlySyntaxErrors(List<Error>)
private bool HasOnlySyntaxErrors(List<Error> errors)
Parameters
errors List<Error>
Returns
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>
calculateHealth bool
Returns
compilation_unit
IsDll(compilation_unit)
Проверяет, является ли модуль dll по соответствующей директиве
public static bool IsDll(compilation_unit unitSyntaxTree)
Parameters
unitSyntaxTree compilation_unit
Returns
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
IsDocumentationNeeded(compilation_unit)
private bool IsDocumentationNeeded(compilation_unit unitSyntaxTree)
Parameters
unitSyntaxTree compilation_unit
Returns
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
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
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
PreloadReference(compiler_directive)
private Assembly PreloadReference(compiler_directive reference)
Parameters
reference compiler_directive
Returns
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
ReadPCU(string)
public CompilationUnit ReadPCU(string FileName)
Parameters
FileName string
Returns
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
SourceFileGetLastWriteTime(string)
private DateTime SourceFileGetLastWriteTime(string FileName)
Parameters
FileName string
Returns
StartCompile()
public void StartCompile()
ToString()
public override string ToString()
Returns
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
WaitCallback_ClosePCUWriters(object)
private void WaitCallback_ClosePCUWriters(object state)
Parameters
state object
buildImplementationUsesList(CompilationUnit)
private unit_node_list buildImplementationUsesList(CompilationUnit cu)
Parameters
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
get_standart_assembly_path(string)
public static string get_standart_assembly_path(string name)
Parameters
name string
Returns
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