2019-07-28 23:53:15 +03:00
|
|
|
|
// Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt)
|
2015-06-01 22:15:17 +03:00
|
|
|
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
|
2015-05-14 22:35:07 +03:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using PascalABCCompiler.SemanticTreeConverters;
|
|
|
|
|
|
using PascalABCCompiler.Errors;
|
|
|
|
|
|
|
2015-12-28 14:25:15 +03:00
|
|
|
|
///В разработке DarkStar
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
|
|
|
|
|
namespace PascalABCCompiler
|
|
|
|
|
|
{
|
|
|
|
|
|
public enum CompilerType { Standart, Remote }
|
|
|
|
|
|
public interface ICompiler
|
|
|
|
|
|
{
|
2020-09-19 23:45:19 +03:00
|
|
|
|
/// Здоровье кода на всякий случай выносим в интерфейс компилятора
|
|
|
|
|
|
/// Реально оно будет использоваться только при запуске из под оболочки (Remote Compiler)
|
|
|
|
|
|
int PABCCodeHealth
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2024-05-25 12:26:32 +03:00
|
|
|
|
/*SyntaxTreeConvertersController SyntaxTreeConvertersController
|
2016-05-02 11:26:17 +03:00
|
|
|
|
{
|
|
|
|
|
|
get;
|
2024-05-25 12:26:32 +03:00
|
|
|
|
}*/
|
2015-05-14 22:35:07 +03:00
|
|
|
|
SemanticTreeConvertersController SemanticTreeConvertersController
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-01-15 15:52:32 +03:00
|
|
|
|
/*SemanticTree.IProgramNode SemanticTree
|
2015-05-14 22:35:07 +03:00
|
|
|
|
{
|
|
|
|
|
|
get;
|
2026-01-15 15:52:32 +03:00
|
|
|
|
}*/
|
2020-09-14 21:14:08 +03:00
|
|
|
|
|
2015-05-14 22:35:07 +03:00
|
|
|
|
uint LinesCompiled
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CompilerInternalDebug InternalDebug
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
set;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CompilerState State
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CompilerOptions CompilerOptions
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
set;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<Errors.Error> ErrorsList
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
List<CompilerWarning> Warnings
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int BeginOffset
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
int VarBeginOffset
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
CompilationUnitHashTable UnitTable
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2026-03-13 08:02:04 +03:00
|
|
|
|
PascalABCCompiler.CoreUtils.SourceFilesProviderDelegate SourceFilesProvider
|
2015-05-14 22:35:07 +03:00
|
|
|
|
{
|
2025-04-07 22:07:13 +03:00
|
|
|
|
get; set;
|
2015-05-14 22:35:07 +03:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
event ChangeCompilerStateEventDelegate OnChangeCompilerState;
|
|
|
|
|
|
|
|
|
|
|
|
void Free();
|
|
|
|
|
|
|
|
|
|
|
|
void Reload();
|
|
|
|
|
|
|
|
|
|
|
|
string Compile();
|
|
|
|
|
|
|
|
|
|
|
|
void StartCompile();
|
|
|
|
|
|
|
|
|
|
|
|
void AddWarnings(List<CompilerWarning> WarningList);
|
|
|
|
|
|
|
2026-01-15 15:52:32 +03:00
|
|
|
|
// Не нужно это в интерфейсе! Этого нет в RemoteCompiler!
|
|
|
|
|
|
// SyntaxTree.compilation_unit ParseText(string FileName, string Text, List<Error> ErrorList, List<CompilerWarning> Warnings);
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
2026-01-15 15:52:32 +03:00
|
|
|
|
// Не нужно это в интерфейсе! Этого нет в RemoteCompiler!
|
|
|
|
|
|
// string GetSourceFileText(string FileName);
|
2015-05-14 22:35:07 +03:00
|
|
|
|
|
|
|
|
|
|
CompilerType CompilerType
|
|
|
|
|
|
{
|
|
|
|
|
|
get;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|