This commit is contained in:
parent
041847f552
commit
29a2fb4156
|
|
@ -1,9 +1,9 @@
|
||||||
//
|
//
|
||||||
// This CSharp output file generated by Gardens Point LEX
|
// This CSharp output file generated by Gardens Point LEX
|
||||||
// Version: 1.1.3.301
|
// Version: 1.1.3.301
|
||||||
// Machine: DESKTOP-G8V08V4
|
// Machine: DESKTOP-2BJCJ7I
|
||||||
// DateTime: 23.09.2021 17:46:26
|
// DateTime: 07.10.2021 20:25:46
|
||||||
// UserName: ?????????
|
// UserName: ibond
|
||||||
// GPLEX input file <ABCPascal.lex>
|
// GPLEX input file <ABCPascal.lex>
|
||||||
// GPLEX frame file <embedded resource>
|
// GPLEX frame file <embedded resource>
|
||||||
//
|
//
|
||||||
|
|
@ -2260,6 +2260,21 @@ parsertools.DivideDirectiveOn(yytext,out directivename,out directiveparam);
|
||||||
IfExclude--;
|
IfExclude--;
|
||||||
if (IfExclude == 0)
|
if (IfExclude == 0)
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
|
}
|
||||||
|
else if (IfExclude > 0)
|
||||||
|
{
|
||||||
|
int ind_to_remove = -1;
|
||||||
|
for (int i=0; i<parsertools.compilerDirectives.Count; i++)
|
||||||
|
{
|
||||||
|
if (parsertools.compilerDirectives[i].source_context.begin_position.line_num == CurrentLexLocation.StartLine &&
|
||||||
|
parsertools.compilerDirectives[i].source_context.begin_position.column_num - 2 == CurrentLexLocation.StartColumn + 1)
|
||||||
|
{
|
||||||
|
ind_to_remove = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ind_to_remove != -1)
|
||||||
|
parsertools.compilerDirectives.RemoveAt(ind_to_remove);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 72:
|
case 72:
|
||||||
|
|
|
||||||
|
|
@ -154,6 +154,22 @@ UNICODEARROW \x890
|
||||||
if (IfExclude == 0)
|
if (IfExclude == 0)
|
||||||
BEGIN(INITIAL);
|
BEGIN(INITIAL);
|
||||||
}
|
}
|
||||||
|
else if (IfExclude > 0)
|
||||||
|
{
|
||||||
|
int ind_to_remove = -1;
|
||||||
|
for (int i=0; i<parsertools.compilerDirectives.Count; i++)
|
||||||
|
{
|
||||||
|
if (parsertools.compilerDirectives[i].source_context.begin_position.line_num == CurrentLexLocation.StartLine &&
|
||||||
|
parsertools.compilerDirectives[i].source_context.begin_position.column_num - 2 == CurrentLexLocation.StartColumn + 1)
|
||||||
|
{
|
||||||
|
ind_to_remove = i;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ind_to_remove != -1)
|
||||||
|
parsertools.compilerDirectives.RemoveAt(ind_to_remove);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
<EXCLUDETEXT>.|\n {
|
<EXCLUDETEXT>.|\n {
|
||||||
|
|
|
||||||
|
|
@ -46,6 +46,7 @@ namespace PascalABCSavParser
|
||||||
public bool build_tree_for_formatter = false;
|
public bool build_tree_for_formatter = false;
|
||||||
public bool build_tree_for_format_strings = false;
|
public bool build_tree_for_format_strings = false;
|
||||||
public string CurrentFileName;
|
public string CurrentFileName;
|
||||||
|
public List<compiler_directive> compilerDirectives;
|
||||||
|
|
||||||
int lambda_num = 0;
|
int lambda_num = 0;
|
||||||
public List<function_lambda_definition> pascalABC_lambda_definitions;
|
public List<function_lambda_definition> pascalABC_lambda_definitions;
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,9 @@
|
||||||
// (see accompanying GPPGcopyright.rtf)
|
// (see accompanying GPPGcopyright.rtf)
|
||||||
|
|
||||||
// GPPG version 1.3.6
|
// GPPG version 1.3.6
|
||||||
// Machine: DESKTOP-G8V08V4
|
// Machine: DESKTOP-2BJCJ7I
|
||||||
// DateTime: 23.09.2021 17:46:26
|
// DateTime: 07.10.2021 20:25:47
|
||||||
// UserName: ?????????
|
// UserName: ibond
|
||||||
// Input file <ABCPascal.y>
|
// Input file <ABCPascal.y>
|
||||||
|
|
||||||
// options: no-lines gplex
|
// options: no-lines gplex
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ namespace PascalABCCompiler.PascalABCNewParser
|
||||||
this.FileName = FileName;
|
this.FileName = FileName;
|
||||||
}
|
}
|
||||||
|
|
||||||
public syntax_tree_node Parse(string Text)
|
public syntax_tree_node Parse(string Text, List<compiler_directive> compilerDirectives=null)
|
||||||
{
|
{
|
||||||
#if DEBUG
|
#if DEBUG
|
||||||
#if _ERR
|
#if _ERR
|
||||||
|
|
@ -43,6 +43,7 @@ namespace PascalABCCompiler.PascalABCNewParser
|
||||||
PT parsertools = new PT(); // контекст сканера и парсера
|
PT parsertools = new PT(); // контекст сканера и парсера
|
||||||
parsertools.errors = Errs;
|
parsertools.errors = Errs;
|
||||||
parsertools.warnings = Warnings;
|
parsertools.warnings = Warnings;
|
||||||
|
parsertools.compilerDirectives = compilerDirectives;
|
||||||
parsertools.CurrentFileName = Path.GetFullPath(FileName);
|
parsertools.CurrentFileName = Path.GetFullPath(FileName);
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -94,6 +95,7 @@ namespace PascalABCCompiler.PascalABCNewParser
|
||||||
|
|
||||||
var parser = new PreprocessorParser(scanner);
|
var parser = new PreprocessorParser(scanner);
|
||||||
parser.compilerDirectives = compilerDirectives;
|
parser.compilerDirectives = compilerDirectives;
|
||||||
|
parsertools.compilerDirectives = compilerDirectives;
|
||||||
//parser.parsertools = parsertools; // передали parsertools в объект парсера
|
//parser.parsertools = parsertools; // передали parsertools в объект парсера
|
||||||
|
|
||||||
if (!parser.Parse())
|
if (!parser.Parse())
|
||||||
|
|
@ -200,7 +202,7 @@ namespace PascalABCCompiler.PascalABCNewParser
|
||||||
|
|
||||||
localparserhelper = new GPPGParserHelper(Errors, Warnings, FileName);
|
localparserhelper = new GPPGParserHelper(Errors, Warnings, FileName);
|
||||||
localparserhelper.DefinesList = DefinesList;
|
localparserhelper.DefinesList = DefinesList;
|
||||||
syntax_tree_node root = localparserhelper.Parse(Text);
|
syntax_tree_node root = localparserhelper.Parse(Text, preprocessor3.compilerDirectives);
|
||||||
|
|
||||||
if (Errors.Count > 0)
|
if (Errors.Count > 0)
|
||||||
return null;
|
return null;
|
||||||
|
|
|
||||||
20
TestSuite/debug2.pas
Normal file
20
TestSuite/debug2.pas
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
{$ifdef asd}
|
||||||
|
{$resource 'ddddd'}
|
||||||
|
{$endif asd}
|
||||||
|
|
||||||
|
{$define asd}
|
||||||
|
{$ifdef asd}
|
||||||
|
{$ifdef asd2}
|
||||||
|
{$resource 'ddddd'}
|
||||||
|
{$endif asd2}
|
||||||
|
{$endif asd}
|
||||||
|
|
||||||
|
{$define asd3}
|
||||||
|
{$undef asd3}
|
||||||
|
{$ifdef asd3}
|
||||||
|
{$resource 'НеСуществующийФайл'}
|
||||||
|
{$endif asd3}
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
end.
|
||||||
6
TestSuite/errors/err0425.pas
Normal file
6
TestSuite/errors/err0425.pas
Normal file
|
|
@ -0,0 +1,6 @@
|
||||||
|
{$ifndef asd}
|
||||||
|
{$resource 'НеСуществующийФайл'}
|
||||||
|
{$endif asd}
|
||||||
|
begin
|
||||||
|
|
||||||
|
end.
|
||||||
7
TestSuite/errors/err0426.pas
Normal file
7
TestSuite/errors/err0426.pas
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
{$define asd}
|
||||||
|
{$ifdef asd}
|
||||||
|
{$resource 'НеСуществующийФайл'}
|
||||||
|
{$endif asd}
|
||||||
|
begin
|
||||||
|
|
||||||
|
end.
|
||||||
9
TestSuite/errors/err0427.pas
Normal file
9
TestSuite/errors/err0427.pas
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
{$define asd}
|
||||||
|
{$ifdef asd}
|
||||||
|
{$resource 'НеСуществующийФайл'}
|
||||||
|
{$endif asd}
|
||||||
|
{$undef asd}
|
||||||
|
|
||||||
|
begin
|
||||||
|
|
||||||
|
end.
|
||||||
Loading…
Reference in a new issue