From 2983529171201ee44507df7bf2fb52b2cc2febbd Mon Sep 17 00:00:00 2001 From: miks1965 Date: Mon, 14 Mar 2016 13:05:49 +0300 Subject: [PATCH] Working commit --- Configuration/GlobalAssemblyInfo.cs | 2 +- Configuration/Version.defs | 2 +- Localization/DefaultLang.resources | Bin 79601 -> 79795 bytes .../PascalABCParserNewSaushkin/ABCPascal.cs | 2 +- .../PascalABCParserNewSaushkin/ABCPascal.y | 25 +- .../ABCPascalYacc.cs | 4249 +++++++++-------- Parsers/PascalABCParserNewSaushkin/PABC.tags | 1 - Parsers/PascalABCParserNewSaushkin/PABC.ymc | 1 + ReleaseGenerators/PascalABCNET_version.nsh | 2 +- TestSuite/CompilationSamples/PABCSystem.pas | 14 +- .../TreeConversion/syntax_tree_visitor.cs | 64 +- bin/Lib/PABCRtl.dll | Bin 524800 -> 524800 bytes bin/Lng/Eng/SemanticErrors_ib.dat | 1 + bin/Lng/Rus/SemanticErrors_ib.dat | 1 + 14 files changed, 2227 insertions(+), 2137 deletions(-) diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index d1e96b9be..131ab1560 100644 --- a/Configuration/GlobalAssemblyInfo.cs +++ b/Configuration/GlobalAssemblyInfo.cs @@ -15,7 +15,7 @@ internal static class RevisionClass public const string Major = "3"; public const string Minor = "1"; public const string Build = "0"; - public const string Revision = "1198"; + public const string Revision = "1200"; public const string MainVersion = Major + "." + Minor; public const string FullVersion = Major + "." + Minor + "." + Build + "." + Revision; diff --git a/Configuration/Version.defs b/Configuration/Version.defs index 9f4efe239..f276c4894 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %MINOR%=1 -%REVISION%=1198 +%REVISION%=1200 %COREVERSION%=0 %MAJOR%=3 diff --git a/Localization/DefaultLang.resources b/Localization/DefaultLang.resources index dcddb739386f7cad42dd0ffb233b3542d5249ddc..6933c81f262362f9c4d8db28f2bc61223f42a8d7 100644 GIT binary patch delta 216 zcmWm6Jx;?g7ywWq^%x9301OYn(Al65fd&NILcb$xvoY^FVsk=laJc#X?EZf2j@-?v*~9(qsncG! MCi=cUdwhNV2SFi(`~Uy| delta 28 mcmV+%0OS9&?*#Gf1d!kX4YA?(ZL=zGTO5;-2OP5zjH0X5ZVjXW diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs index ed2749003..2ba1743fd 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs @@ -2,7 +2,7 @@ // This CSharp output file generated by Gardens Point LEX // Version: 1.1.3.301 // Machine: SSM -// DateTime: 10.03.2016 0:57:37 +// DateTime: 12.03.2016 23:50:46 // UserName: ????????? // GPLEX input file // GPLEX frame file diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y index cb9b18e65..bce928e16 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y @@ -77,7 +77,7 @@ %type enumeration_id expr_l1_list %type enumeration_id_list %type const_simple_expr term typed_const typed_const_or_new expr const_expr elem range_expr const_elem array_const factor relop_expr expr_l1 simple_expr range_term range_factor -%type external_directive_ident init_const_expr case_label variable var_reference // var_question_colon +%type external_directive_ident init_const_expr case_label variable var_reference simple_expr_or_nothing // var_question_colon %type for_cycle_type %type format_expr %type foreach_stmt @@ -2775,15 +2775,34 @@ relop_expr } ; +simple_expr_or_nothing + : simple_expr + { + $$ = $1; + } + | + { + $$ = null; + } + ; + format_expr - : simple_expr tkColon simple_expr + : simple_expr tkColon simple_expr_or_nothing { $$ = new format_expr($1, $3, null, @$); } - | simple_expr tkColon simple_expr tkColon simple_expr + | tkColon simple_expr + { + $$ = new format_expr(null, $2, null, @$); + } + | simple_expr tkColon simple_expr_or_nothing tkColon simple_expr { $$ = new format_expr($1, $3, $5, @$); } + | tkColon simple_expr_or_nothing tkColon simple_expr + { + $$ = new format_expr(null, $2, $4, @$); + } ; relop diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs index 6f7e7f832..8cd876699 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs @@ -2,7 +2,7 @@ // GPPG version 1.3.6 // Machine: SSM -// DateTime: 10.03.2016 0:57:38 +// DateTime: 12.03.2016 23:50:47 // UserName: ????????? // Input file @@ -73,8 +73,8 @@ public partial class GPPGParser: ShiftReduceParser aliasses; #pragma warning restore 649 - private static Rule[] rules = new Rule[790]; - private static State[] states = new State[1257]; + private static Rule[] rules = new Rule[794]; + private static State[] states = new State[1263]; private static string[] nonTerms = new string[] { "parse_goal", "unit_key_word", "assignment", "optional_array_initializer", "attribute_declarations", "ot_visibility_specifier", "one_attribute", "attribute_variable", @@ -97,12 +97,12 @@ public partial class GPPGParser: ShiftReduceParser simple_expr, tkColon, simple_expr + case 551: // simple_expr_or_nothing -> simple_expr +{ + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; + } + break; + case 552: // simple_expr_or_nothing -> /* empty */ +{ + CurrentSemanticValue.ex = null; + } + break; + case 553: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing { CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); } break; - case 552: // format_expr -> simple_expr, tkColon, simple_expr, tkColon, simple_expr + case 554: // format_expr -> tkColon, simple_expr +{ + CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); + } + break; + case 555: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing, tkColon, + // simple_expr { CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 553: // relop -> tkEqual + case 556: // format_expr -> tkColon, simple_expr_or_nothing, tkColon, simple_expr +{ + CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); + } + break; + case 557: // relop -> tkEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 554: // relop -> tkNotEqual + case 558: // relop -> tkNotEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 555: // relop -> tkLower + case 559: // relop -> tkLower { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 556: // relop -> tkGreater + case 560: // relop -> tkGreater { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 557: // relop -> tkLowerEqual + case 561: // relop -> tkLowerEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 558: // relop -> tkGreaterEqual + case 562: // relop -> tkGreaterEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 559: // relop -> tkIn + case 563: // relop -> tkIn { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 560: // simple_expr -> term + case 564: // simple_expr -> term { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 561: // simple_expr -> simple_expr, addop, term + case 565: // simple_expr -> simple_expr, addop, term { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 562: // addop -> tkPlus + case 566: // addop -> tkPlus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 563: // addop -> tkMinus + case 567: // addop -> tkMinus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 564: // addop -> tkOr + case 568: // addop -> tkOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 565: // addop -> tkXor + case 569: // addop -> tkXor { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 566: // addop -> tkCSharpStyleOr + case 570: // addop -> tkCSharpStyleOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 567: // typecast_op -> tkAs + case 571: // typecast_op -> tkAs { CurrentSemanticValue.ob = op_typecast.as_op; } break; - case 568: // typecast_op -> tkIs + case 572: // typecast_op -> tkIs { CurrentSemanticValue.ob = op_typecast.is_op; } break; - case 569: // as_is_expr -> term, typecast_op, simple_or_template_type_reference + case 573: // as_is_expr -> term, typecast_op, simple_or_template_type_reference { CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, (op_typecast)ValueStack[ValueStack.Depth-2].ob, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 570: // term -> factor + case 574: // term -> factor { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 571: // term -> new_expr + case 575: // term -> new_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 572: // term -> term, mulop, factor + case 576: // term -> term, mulop, factor { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 573: // term -> as_is_expr + case 577: // term -> as_is_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 574: // mulop -> tkStar + case 578: // mulop -> tkStar { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 575: // mulop -> tkSlash + case 579: // mulop -> tkSlash { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 576: // mulop -> tkDiv + case 580: // mulop -> tkDiv { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 577: // mulop -> tkMod + case 581: // mulop -> tkMod { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 578: // mulop -> tkShl + case 582: // mulop -> tkShl { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 579: // mulop -> tkShr + case 583: // mulop -> tkShr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 580: // mulop -> tkAnd + case 584: // mulop -> tkAnd { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 581: // default_expr -> tkDefault, tkRoundOpen, simple_or_template_type_reference, + case 585: // default_expr -> tkDefault, tkRoundOpen, simple_or_template_type_reference, // tkRoundClose { CurrentSemanticValue.ex = new default_operator(ValueStack[ValueStack.Depth-2].td as named_type_reference, CurrentLocationSpan); } break; - case 582: // factor -> tkNil + case 586: // factor -> tkNil { CurrentSemanticValue.ex = new nil_const(); CurrentSemanticValue.ex.source_context = CurrentLocationSpan; } break; - case 583: // factor -> literal_or_number + case 587: // factor -> literal_or_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 584: // factor -> default_expr + case 588: // factor -> default_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 585: // factor -> tkSquareOpen, elem_list, tkSquareClose + case 589: // factor -> tkSquareOpen, elem_list, tkSquareClose { CurrentSemanticValue.ex = new pascal_set_constant(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); } break; - case 586: // factor -> tkNot, factor + case 590: // factor -> tkNot, factor { CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 587: // factor -> sign, factor + case 591: // factor -> sign, factor { CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 588: // factor -> tkDeref, factor + case 592: // factor -> tkDeref, factor { CurrentSemanticValue.ex = new roof_dereference(ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); } break; - case 589: // factor -> var_reference + case 593: // factor -> var_reference { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 590: // factor -> func_decl_lambda + case 594: // factor -> func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 591: // literal_or_number -> literal + case 595: // literal_or_number -> literal { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 592: // literal_or_number -> unsigned_number + case 596: // literal_or_number -> unsigned_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 593: // var_reference -> var_address, variable + case 597: // var_reference -> var_address, variable { CurrentSemanticValue.ex = NewVarReference(ValueStack[ValueStack.Depth-2].stn as get_address, ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); } break; - case 594: // var_reference -> variable + case 598: // var_reference -> variable { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 595: // var_address -> tkAddressOf + case 599: // var_address -> tkAddressOf { CurrentSemanticValue.stn = NewVarAddress(CurrentLocationSpan); } break; - case 596: // var_address -> var_address, tkAddressOf + case 600: // var_address -> var_address, tkAddressOf { CurrentSemanticValue.stn = NewVarAddress(ValueStack[ValueStack.Depth-2].stn as get_address, CurrentLocationSpan); } break; - case 597: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket + case 601: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket { CurrentSemanticValue.stn = new attribute(null, ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as expression_list, CurrentLocationSpan); } break; - case 598: // dotted_identifier -> identifier + case 602: // dotted_identifier -> identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 599: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword + case 603: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword { CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 600: // variable_as_type -> dotted_identifier + case 604: // variable_as_type -> dotted_identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex;} break; - case 601: // variable_as_type -> dotted_identifier, template_type_params + case 605: // variable_as_type -> dotted_identifier, template_type_params { CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-2].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); } break; - case 602: // variable -> identifier + case 606: // variable -> identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 603: // variable -> operator_name_ident + case 607: // variable -> operator_name_ident { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 604: // variable -> tkInherited, identifier + case 608: // variable -> tkInherited, identifier { CurrentSemanticValue.ex = new inherited_ident(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 605: // variable -> tkRoundOpen, expr, tkRoundClose + case 609: // variable -> tkRoundOpen, expr, tkRoundClose { if (!parsertools.build_tree_for_formatter) { @@ -4860,18 +4891,18 @@ public partial class GPPGParser: ShiftReduceParser sizeof_expr + case 610: // variable -> sizeof_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 607: // variable -> typeof_expr + case 611: // variable -> typeof_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 608: // variable -> literal_or_number, tkPoint, identifier_or_keyword + case 612: // variable -> literal_or_number, tkPoint, identifier_or_keyword { CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 609: // variable -> variable, tkSquareOpen, expr_list, tkSquareClose + case 613: // variable -> variable, tkSquareOpen, expr_list, tkSquareClose { var el = ValueStack[ValueStack.Depth-2].stn as expression_list; // SSM 10/03/16 if (el.expressions.Count==1 && el.expressions[0] is format_expr) @@ -4882,482 +4913,482 @@ public partial class GPPGParser: ShiftReduceParser variable, tkRoundOpen, optional_expr_list, tkRoundClose + case 614: // variable -> variable, tkRoundOpen, optional_expr_list, tkRoundClose { CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-4].ex as addressed_value,ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); } break; - case 611: // variable -> variable, tkPoint, identifier_keyword_operatorname + case 615: // variable -> variable, tkPoint, identifier_keyword_operatorname { CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 612: // variable -> variable, tkDeref + case 616: // variable -> variable, tkDeref { CurrentSemanticValue.ex = new roof_dereference(ValueStack[ValueStack.Depth-2].ex as addressed_value,CurrentLocationSpan); } break; - case 613: // variable -> variable, tkAmpersend, template_type_params + case 617: // variable -> variable, tkAmpersend, template_type_params { CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); } break; - case 614: // optional_expr_list -> expr_list + case 618: // optional_expr_list -> expr_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 615: // optional_expr_list -> /* empty */ + case 619: // optional_expr_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 616: // elem_list -> elem_list1 + case 620: // elem_list -> elem_list1 { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 617: // elem_list -> /* empty */ + case 621: // elem_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 618: // elem_list1 -> elem + case 622: // elem_list1 -> elem { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 619: // elem_list1 -> elem_list1, tkComma, elem + case 623: // elem_list1 -> elem_list1, tkComma, elem { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 620: // elem -> expr + case 624: // elem -> expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 621: // elem -> expr, tkDotDot, expr + case 625: // elem -> expr, tkDotDot, expr { CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 622: // one_literal -> tkStringLiteral + case 626: // one_literal -> tkStringLiteral { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 623: // one_literal -> tkAsciiChar + case 627: // one_literal -> tkAsciiChar { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 624: // literal -> literal_list + case 628: // literal -> literal_list { CurrentSemanticValue.ex = NewLiteral(ValueStack[ValueStack.Depth-1].stn as literal_const_line); } break; - case 625: // literal_list -> one_literal + case 629: // literal_list -> one_literal { CurrentSemanticValue.stn = new literal_const_line(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); } break; - case 626: // literal_list -> literal_list, one_literal + case 630: // literal_list -> literal_list, one_literal { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as literal_const_line).Add(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); } break; - case 627: // operator_name_ident -> tkOperator, overload_operator + case 631: // operator_name_ident -> tkOperator, overload_operator { CurrentSemanticValue.ex = new operator_name_ident((ValueStack[ValueStack.Depth-1].op as op_type_node).text, (ValueStack[ValueStack.Depth-1].op as op_type_node).type, CurrentLocationSpan); } break; - case 628: // optional_method_modificators -> tkSemiColon + case 632: // optional_method_modificators -> tkSemiColon { CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); } break; - case 629: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon + case 633: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon { //parsertools.AddModifier((procedure_attributes_list)$2, proc_attribute.attr_overload); CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 630: // optional_method_modificators1 -> /* empty */ + case 634: // optional_method_modificators1 -> /* empty */ { CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); } break; - case 631: // optional_method_modificators1 -> tkSemiColon, meth_modificators + case 635: // optional_method_modificators1 -> tkSemiColon, meth_modificators { //parsertools.AddModifier((procedure_attributes_list)$2, proc_attribute.attr_overload); CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 632: // meth_modificators -> meth_modificator + case 636: // meth_modificators -> meth_modificator { CurrentSemanticValue.stn = new procedure_attributes_list(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); } break; - case 633: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator + case 637: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as procedure_attributes_list).Add(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); } break; - case 634: // identifier -> tkIdentifier + case 638: // identifier -> tkIdentifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 635: // identifier -> property_specifier_directives + case 639: // identifier -> property_specifier_directives { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 636: // identifier -> non_reserved + case 640: // identifier -> non_reserved { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 637: // identifier_or_keyword -> identifier + case 641: // identifier_or_keyword -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 638: // identifier_or_keyword -> keyword + case 642: // identifier_or_keyword -> keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 639: // identifier_or_keyword -> reserved_keyword + case 643: // identifier_or_keyword -> reserved_keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 640: // identifier_keyword_operatorname -> identifier + case 644: // identifier_keyword_operatorname -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 641: // identifier_keyword_operatorname -> keyword + case 645: // identifier_keyword_operatorname -> keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 642: // identifier_keyword_operatorname -> operator_name_ident + case 646: // identifier_keyword_operatorname -> operator_name_ident { CurrentSemanticValue.id = (ident)ValueStack[ValueStack.Depth-1].ex; } break; - case 643: // meth_modificator -> tkAbstract + case 647: // meth_modificator -> tkAbstract { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 644: // meth_modificator -> tkOverload + case 648: // meth_modificator -> tkOverload { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 645: // meth_modificator -> tkReintroduce + case 649: // meth_modificator -> tkReintroduce { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 646: // meth_modificator -> tkOverride + case 650: // meth_modificator -> tkOverride { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 647: // meth_modificator -> tkExtensionMethod + case 651: // meth_modificator -> tkExtensionMethod { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 648: // meth_modificator -> tkVirtual + case 652: // meth_modificator -> tkVirtual { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 649: // property_specifier_directives -> tkRead + case 653: // property_specifier_directives -> tkRead { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 650: // property_specifier_directives -> tkWrite + case 654: // property_specifier_directives -> tkWrite { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 651: // non_reserved -> tkName + case 655: // non_reserved -> tkName { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 652: // non_reserved -> tkNew + case 656: // non_reserved -> tkNew { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 653: // visibility_specifier -> tkInternal + case 657: // visibility_specifier -> tkInternal { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 654: // visibility_specifier -> tkPublic + case 658: // visibility_specifier -> tkPublic { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 655: // visibility_specifier -> tkProtected + case 659: // visibility_specifier -> tkProtected { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 656: // visibility_specifier -> tkPrivate + case 660: // visibility_specifier -> tkPrivate { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 657: // keyword -> visibility_specifier + case 661: // keyword -> visibility_specifier { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 658: // keyword -> tkSealed + case 662: // keyword -> tkSealed { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 659: // keyword -> tkTemplate + case 663: // keyword -> tkTemplate { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 660: // keyword -> tkOr + case 664: // keyword -> tkOr { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 661: // keyword -> tkTypeOf + case 665: // keyword -> tkTypeOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 662: // keyword -> tkSizeOf + case 666: // keyword -> tkSizeOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 663: // keyword -> tkDefault + case 667: // keyword -> tkDefault { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 664: // keyword -> tkWhere + case 668: // keyword -> tkWhere { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 665: // keyword -> tkXor + case 669: // keyword -> tkXor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 666: // keyword -> tkAnd + case 670: // keyword -> tkAnd { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 667: // keyword -> tkDiv + case 671: // keyword -> tkDiv { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 668: // keyword -> tkMod + case 672: // keyword -> tkMod { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 669: // keyword -> tkShl + case 673: // keyword -> tkShl { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 670: // keyword -> tkShr + case 674: // keyword -> tkShr { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 671: // keyword -> tkNot + case 675: // keyword -> tkNot { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 672: // keyword -> tkAs + case 676: // keyword -> tkAs { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 673: // keyword -> tkIn + case 677: // keyword -> tkIn { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 674: // keyword -> tkIs + case 678: // keyword -> tkIs { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 675: // keyword -> tkArray + case 679: // keyword -> tkArray { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 676: // keyword -> tkSequence + case 680: // keyword -> tkSequence { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 677: // keyword -> tkBegin + case 681: // keyword -> tkBegin { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 678: // keyword -> tkCase + case 682: // keyword -> tkCase { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 679: // keyword -> tkClass + case 683: // keyword -> tkClass { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 680: // keyword -> tkConst + case 684: // keyword -> tkConst { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 681: // keyword -> tkConstructor + case 685: // keyword -> tkConstructor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 682: // keyword -> tkDestructor + case 686: // keyword -> tkDestructor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 683: // keyword -> tkDownto + case 687: // keyword -> tkDownto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 684: // keyword -> tkDo + case 688: // keyword -> tkDo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 685: // keyword -> tkElse + case 689: // keyword -> tkElse { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 686: // keyword -> tkExcept + case 690: // keyword -> tkExcept { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 687: // keyword -> tkFile + case 691: // keyword -> tkFile { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 688: // keyword -> tkAuto + case 692: // keyword -> tkAuto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 689: // keyword -> tkFinalization + case 693: // keyword -> tkFinalization { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 690: // keyword -> tkFinally + case 694: // keyword -> tkFinally { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 691: // keyword -> tkFor + case 695: // keyword -> tkFor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 692: // keyword -> tkForeach + case 696: // keyword -> tkForeach { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 693: // keyword -> tkFunction + case 697: // keyword -> tkFunction { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 694: // keyword -> tkIf + case 698: // keyword -> tkIf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 695: // keyword -> tkImplementation + case 699: // keyword -> tkImplementation { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 696: // keyword -> tkInherited + case 700: // keyword -> tkInherited { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 697: // keyword -> tkInitialization + case 701: // keyword -> tkInitialization { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 698: // keyword -> tkInterface + case 702: // keyword -> tkInterface { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 699: // keyword -> tkProcedure + case 703: // keyword -> tkProcedure { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 700: // keyword -> tkProperty + case 704: // keyword -> tkProperty { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 701: // keyword -> tkRaise + case 705: // keyword -> tkRaise { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 702: // keyword -> tkRecord + case 706: // keyword -> tkRecord { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 703: // keyword -> tkRepeat + case 707: // keyword -> tkRepeat { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 704: // keyword -> tkSet + case 708: // keyword -> tkSet { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 705: // keyword -> tkTry + case 709: // keyword -> tkTry { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 706: // keyword -> tkType + case 710: // keyword -> tkType { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 707: // keyword -> tkThen + case 711: // keyword -> tkThen { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 708: // keyword -> tkTo + case 712: // keyword -> tkTo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 709: // keyword -> tkUntil + case 713: // keyword -> tkUntil { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 710: // keyword -> tkUses + case 714: // keyword -> tkUses { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 711: // keyword -> tkVar + case 715: // keyword -> tkVar { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 712: // keyword -> tkWhile + case 716: // keyword -> tkWhile { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 713: // keyword -> tkWith + case 717: // keyword -> tkWith { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 714: // keyword -> tkNil + case 718: // keyword -> tkNil { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 715: // keyword -> tkGoto + case 719: // keyword -> tkGoto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 716: // keyword -> tkOf + case 720: // keyword -> tkOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 717: // keyword -> tkLabel + case 721: // keyword -> tkLabel { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 718: // keyword -> tkProgram + case 722: // keyword -> tkProgram { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 719: // keyword -> tkUnit + case 723: // keyword -> tkUnit { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 720: // keyword -> tkLibrary + case 724: // keyword -> tkLibrary { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 721: // keyword -> tkExternal + case 725: // keyword -> tkExternal { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 722: // keyword -> tkParams + case 726: // keyword -> tkParams { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 723: // reserved_keyword -> tkOperator + case 727: // reserved_keyword -> tkOperator { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 724: // reserved_keyword -> tkEnd + case 728: // reserved_keyword -> tkEnd { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 725: // overload_operator -> tkMinus + case 729: // overload_operator -> tkMinus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 726: // overload_operator -> tkPlus + case 730: // overload_operator -> tkPlus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 727: // overload_operator -> tkSlash + case 731: // overload_operator -> tkSlash { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 728: // overload_operator -> tkStar + case 732: // overload_operator -> tkStar { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 729: // overload_operator -> tkEqual + case 733: // overload_operator -> tkEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 730: // overload_operator -> tkGreater + case 734: // overload_operator -> tkGreater { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 731: // overload_operator -> tkGreaterEqual + case 735: // overload_operator -> tkGreaterEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 732: // overload_operator -> tkLower + case 736: // overload_operator -> tkLower { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 733: // overload_operator -> tkLowerEqual + case 737: // overload_operator -> tkLowerEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 734: // overload_operator -> tkNotEqual + case 738: // overload_operator -> tkNotEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 735: // overload_operator -> tkOr + case 739: // overload_operator -> tkOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 736: // overload_operator -> tkXor + case 740: // overload_operator -> tkXor { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 737: // overload_operator -> tkAnd + case 741: // overload_operator -> tkAnd { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 738: // overload_operator -> tkDiv + case 742: // overload_operator -> tkDiv { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 739: // overload_operator -> tkMod + case 743: // overload_operator -> tkMod { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 740: // overload_operator -> tkShl + case 744: // overload_operator -> tkShl { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 741: // overload_operator -> tkShr + case 745: // overload_operator -> tkShr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 742: // overload_operator -> tkNot + case 746: // overload_operator -> tkNot { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 743: // overload_operator -> tkIn + case 747: // overload_operator -> tkIn { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 744: // overload_operator -> tkImplicit + case 748: // overload_operator -> tkImplicit { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 745: // overload_operator -> tkExplicit + case 749: // overload_operator -> tkExplicit { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 746: // overload_operator -> assign_operator + case 750: // overload_operator -> assign_operator { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 747: // assign_operator -> tkAssign + case 751: // assign_operator -> tkAssign { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 748: // assign_operator -> tkPlusEqual + case 752: // assign_operator -> tkPlusEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 749: // assign_operator -> tkMinusEqual + case 753: // assign_operator -> tkMinusEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 750: // assign_operator -> tkMultEqual + case 754: // assign_operator -> tkMultEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 751: // assign_operator -> tkDivEqual + case 755: // assign_operator -> tkDivEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 752: // func_decl_lambda -> identifier, tkArrow, lambda_function_body + case 756: // func_decl_lambda -> identifier, tkArrow, lambda_function_body { var idList = new ident_list(ValueStack[ValueStack.Depth-3].id, LocationStack[LocationStack.Depth-3]); var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null), parametr_kind.none, null, LocationStack[LocationStack.Depth-3]), LocationStack[LocationStack.Depth-3]); CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null), ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 753: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref_noproctype, + case 757: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref_noproctype, // tkArrow, lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 754: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, + case 758: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, // lambda_type_ref_noproctype, tkArrow, lambda_function_body { var idList = new ident_list(ValueStack[ValueStack.Depth-7].id, LocationStack[LocationStack.Depth-7]); @@ -5366,7 +5397,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, + case 759: // func_decl_lambda -> tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, // tkRoundClose, lambda_type_ref_noproctype, tkArrow, // lambda_function_body { @@ -5377,7 +5408,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, + case 760: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, // full_lambda_fp_list, tkRoundClose, // lambda_type_ref_noproctype, tkArrow, lambda_function_body { @@ -5389,7 +5420,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, expr_l1, tkComma, expr_l1_list, + case 761: // func_decl_lambda -> tkRoundOpen, expr_l1, tkComma, expr_l1_list, // lambda_type_ref, optional_full_lambda_fp_list, // tkRoundClose, rem_lambda { @@ -5472,64 +5503,64 @@ public partial class GPPGParser: ShiftReduceParser expl_func_decl_lambda + case 762: // func_decl_lambda -> expl_func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 759: // optional_full_lambda_fp_list -> /* empty */ + case 763: // optional_full_lambda_fp_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 760: // optional_full_lambda_fp_list -> tkSemiColon, full_lambda_fp_list + case 764: // optional_full_lambda_fp_list -> tkSemiColon, full_lambda_fp_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 761: // rem_lambda -> /* empty */ + case 765: // rem_lambda -> /* empty */ { CurrentSemanticValue.ob = null; } break; - case 762: // rem_lambda -> lambda_type_ref_noproctype, tkArrow, lambda_function_body + case 766: // rem_lambda -> lambda_type_ref_noproctype, tkArrow, lambda_function_body { CurrentSemanticValue.ob = new pair_type_stlist(ValueStack[ValueStack.Depth-3].td,ValueStack[ValueStack.Depth-1].stn as statement_list); } break; - case 763: // expl_func_decl_lambda -> tkFunction, lambda_type_ref, tkArrow, + case 767: // expl_func_decl_lambda -> tkFunction, lambda_type_ref, tkArrow, // lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 764: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, lambda_type_ref, + case 768: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, lambda_type_ref, // tkArrow, lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 765: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, + case 769: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, // tkRoundClose, lambda_type_ref, tkArrow, // lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 766: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body + case 770: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 767: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, + case 771: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, // lambda_procedure_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 768: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, + case 772: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, // tkRoundClose, tkArrow, lambda_procedure_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), ValueStack[ValueStack.Depth-4].stn as formal_parameters, null, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 769: // full_lambda_fp_list -> lambda_simple_fp_sect + case 773: // full_lambda_fp_list -> lambda_simple_fp_sect { var typed_pars = ValueStack[ValueStack.Depth-1].stn as typed_parameters; if (typed_pars.vars_type is lambda_inferred_type) @@ -5549,102 +5580,102 @@ public partial class GPPGParser: ShiftReduceParser full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect + case 774: // full_lambda_fp_list -> full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect { CurrentSemanticValue.stn =(ValueStack[ValueStack.Depth-3].stn as formal_parameters).Add(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); } break; - case 771: // lambda_simple_fp_sect -> ident_list, lambda_type_ref + case 775: // lambda_simple_fp_sect -> ident_list, lambda_type_ref { CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-2].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.none, null, CurrentLocationSpan); } break; - case 772: // lambda_type_ref -> /* empty */ + case 776: // lambda_type_ref -> /* empty */ { CurrentSemanticValue.td = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); } break; - case 773: // lambda_type_ref -> tkColon, fptype + case 777: // lambda_type_ref -> tkColon, fptype { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 774: // lambda_type_ref_noproctype -> /* empty */ + case 778: // lambda_type_ref_noproctype -> /* empty */ { CurrentSemanticValue.td = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); } break; - case 775: // lambda_type_ref_noproctype -> tkColon, fptype_noproctype + case 779: // lambda_type_ref_noproctype -> tkColon, fptype_noproctype { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 776: // lambda_function_body -> expr_l1 + case 780: // lambda_function_body -> expr_l1 { CurrentSemanticValue.stn = NewLambdaBody(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 777: // lambda_function_body -> compound_stmt + case 781: // lambda_function_body -> compound_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 778: // lambda_procedure_body -> proc_call + case 782: // lambda_procedure_body -> proc_call { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 779: // lambda_procedure_body -> compound_stmt + case 783: // lambda_procedure_body -> compound_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 780: // lambda_procedure_body -> if_stmt + case 784: // lambda_procedure_body -> if_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 781: // lambda_procedure_body -> while_stmt + case 785: // lambda_procedure_body -> while_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 782: // lambda_procedure_body -> repeat_stmt + case 786: // lambda_procedure_body -> repeat_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 783: // lambda_procedure_body -> for_stmt + case 787: // lambda_procedure_body -> for_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 784: // lambda_procedure_body -> foreach_stmt + case 788: // lambda_procedure_body -> foreach_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 785: // lambda_procedure_body -> case_stmt + case 789: // lambda_procedure_body -> case_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 786: // lambda_procedure_body -> try_stmt + case 790: // lambda_procedure_body -> try_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 787: // lambda_procedure_body -> lock_stmt + case 791: // lambda_procedure_body -> lock_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 788: // lambda_procedure_body -> yield_stmt + case 792: // lambda_procedure_body -> yield_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 789: // lambda_procedure_body -> assignment + case 793: // lambda_procedure_body -> assignment { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } diff --git a/Parsers/PascalABCParserNewSaushkin/PABC.tags b/Parsers/PascalABCParserNewSaushkin/PABC.tags index 3c07018cb..89f4844fa 100644 --- a/Parsers/PascalABCParserNewSaushkin/PABC.tags +++ b/Parsers/PascalABCParserNewSaushkin/PABC.tags @@ -25,7 +25,6 @@ - diff --git a/Parsers/PascalABCParserNewSaushkin/PABC.ymc b/Parsers/PascalABCParserNewSaushkin/PABC.ymc index c33c2da95..77410a1b9 100644 --- a/Parsers/PascalABCParserNewSaushkin/PABC.ymc +++ b/Parsers/PascalABCParserNewSaushkin/PABC.ymc @@ -122,5 +122,6 @@ script= + diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 9496b0475..13ba6cc69 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.1.0.1198' +!define VERSION '3.1.0.1200' diff --git a/TestSuite/CompilationSamples/PABCSystem.pas b/TestSuite/CompilationSamples/PABCSystem.pas index 4d9b0af4e..4a98458fc 100644 --- a/TestSuite/CompilationSamples/PABCSystem.pas +++ b/TestSuite/CompilationSamples/PABCSystem.pas @@ -1097,7 +1097,8 @@ function Power(x, y: real): real; function Power(x, y: integer): real; /// Возвращает x в степени y function Power(x: BigInteger; y: integer): BigInteger; -/// Возвращает x, округленное до ближайшего целого +/// Возвращает x, округленное до ближайшего целого. Если вещественное находится посередине между двумя целыми, +///то округление осуществляется к ближайшему четному (банковское округление): Round(2.5)=2, Round(3.5)=4 function Round(x: real): integer; /// Возвращает x, округленное до ближайшего длинного целого function RoundBigInteger(x: real): BigInteger; @@ -3428,6 +3429,11 @@ begin Result := a*n; end; +///-- +function operator in(x: T; Self: sequence of T): boolean; extensionmethod; +begin + Result := Self.Contains(x); +end; // ----------------------------------------------------------------------------- // Функции для последовательностей и динамических массивов // ----------------------------------------------------------------------------- @@ -3635,7 +3641,7 @@ type end; procedure Dispose(); override; begin - cur := first; + cur := first-1; end; end; @@ -8520,13 +8526,13 @@ end; /// Ищет в указанной строке все вхождения регулярного выражения и возвращает их в виде последовательности элементов типа Match function Matches(Self: string; reg: string; options: RegexOptions := RegexOptions.None): sequence of Match; extensionmethod; begin - Result := (new Regex (reg, options)).Matches(Self).Cast&(); + Result := (new Regex(reg, options)).Matches(Self).Cast&(); end; /// Ищет в указанной строке первое вхождение регулярного выражения и возвращает его в виде строки function MatchValue(Self: string; reg: string; options: RegexOptions := RegexOptions.None): string; extensionmethod; begin - Result := (new Regex (reg, options)).Match(Self).Value; + Result := (new Regex(reg, options)).Match(Self).Value; end; /// Ищет в указанной строке все вхождения регулярного выражения и возвращает их в виде последовательности строк diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 1743ae590..1f3917088 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -2369,6 +2369,8 @@ namespace PascalABCCompiler.TreeConverter public override void visit(SyntaxTree.format_expr _format_expr) { + if (_format_expr.expr == null || _format_expr.format1 == null) + AddError(get_location(_format_expr), "BAD_CONSTRUCTED_FORMAT_EXPRESSION"); //TODO: Добавить проверки. if (!SemanticRules.AllowUseFormatExprAnywhere && !is_format_allowed) AddError(get_location(_format_expr.expr), "FORMAT_EXPRESSION_CAN_USE_ONLY_IN_THESE_PROCEDURES"); @@ -18878,6 +18880,13 @@ namespace PascalABCCompiler.TreeConverter public override void visit(SyntaxTree.slice_expr sl) { + // Преобразуется в вызов a.Slice + // from, step сохраняются, count вычисляется как count = (to-from+step-sign(step)) div step + // Для a: нужно to присвоить очень большое целое + // Для :b нужно from присвоить -1 + // Для a::step нужно использовать a.Slice(from,step) + // Для :b:step нужно закодировать from - from := -MaxInt div 2 и в методе Slice это проверить и поправить from в зависимости от знака step + var semvar = convert_strong(sl.v); var semvartype = semvar.type; @@ -18920,9 +18929,23 @@ namespace PascalABCCompiler.TreeConverter if (!IsOrImplementsIEnumerableT) AddError(get_location(sl.v), "BAD_SLICE_OBJECT"); - var semfrom = convert_strong(sl.from); - convertion_data_and_alghoritms.check_convert_type(semfrom, SystemLibrary.SystemLibrary.integer_type, get_location(sl.from)); - var synfrom = new SyntaxTree.semantic_addr_value(semfrom); + // Ситуация from::step - вызвать Slice с двумя параметрами - пропустить вычисление и добавление count + bool SituationFromSpaceStep = (sl.from != null) && (sl.to == null) && (sl.step != null); + // Ситуация :to:step - закодировать from = -MaxInt div 2 и в Slice сделато коррекцию если step<0 !!! + bool SituationSpaceToStep = (sl.from == null) && (sl.to != null) && (sl.step != null); + + + SyntaxTree.expression synfrom; + if (sl.from != null) + { + var semfrom = convert_strong(sl.from); + convertion_data_and_alghoritms.check_convert_type(semfrom, SystemLibrary.SystemLibrary.integer_type, get_location(sl.from)); + synfrom = new SyntaxTree.semantic_addr_value(semfrom); + } + else + { + synfrom = new int32_const(-1); + } var int1 = new int32_const(1); var el = new SyntaxTree.expression_list(); @@ -18944,21 +18967,30 @@ namespace PascalABCCompiler.TreeConverter } el.Add(synstep); - var semto = convert_strong(sl.to); - convertion_data_and_alghoritms.check_convert_type(semto, SystemLibrary.SystemLibrary.integer_type, get_location(sl.to)); - var synto = new SyntaxTree.semantic_addr_value(semto); + SyntaxTree.expression synto; + if (sl.to != null) + { + var semto = convert_strong(sl.to); + convertion_data_and_alghoritms.check_convert_type(semto, SystemLibrary.SystemLibrary.integer_type, get_location(sl.to)); + synto = new SyntaxTree.semantic_addr_value(semto); + } + else + { + synto = new int32_const(Int32.MaxValue/2); + } - // count = (abs(to-from)-1) div abs(step) + 1 - нет - // count = (to-from+step-sign(step)) div step - SyntaxTree.expression ex = new bin_expr(synto, synfrom, Operators.Minus); - //ex = new method_call(new ident("abs"), new expression_list(ex)); - //ex = new bin_expr(ex, absstep, Operators.IntegerDivision); - SyntaxTree.expression signstep = new method_call(new ident("sign"), new expression_list(synstep)); - ex = new bin_expr(ex, synstep, Operators.Plus); - ex = new bin_expr(ex, signstep, Operators.Minus); - ex = new bin_expr(ex, synstep, Operators.IntegerDivision); + if (!SituationFromSpaceStep) // если не from::step то вычислить count и вызвать Slice с тремя параметрами + { + // count = (to-from+step-sign(step)) div step + SyntaxTree.expression ex = new bin_expr(synto, synfrom, Operators.Minus); + SyntaxTree.expression signstep = new method_call(new ident("sign"), new expression_list(synstep)); + ex = new bin_expr(ex, synstep, Operators.Plus); + ex = new bin_expr(ex, signstep, Operators.Minus); + ex = new bin_expr(ex, synstep, Operators.IntegerDivision); + + el.Add(ex); // Параметр count + } - el.Add(ex); var mc = new method_call(new dot_node(sl.v, new ident("Slice", sl.v.source_context), sl.v.source_context), el, sl.source_context); visit(mc); } diff --git a/bin/Lib/PABCRtl.dll b/bin/Lib/PABCRtl.dll index 48dc2bdd4503484827a1953d694fcea4becc9854..d22685a79f417663b1ec59d54aac997be319eebd 100644 GIT binary patch delta 80074 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 bMe^|<`vFb?;MhM~g+-Jg3`t;7R2-lH0VOC% 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 a)?PXj+uA^zj{p2f2!>{Nw*HjUJ=#Bj7I6Xq diff --git a/bin/Lng/Eng/SemanticErrors_ib.dat b/bin/Lng/Eng/SemanticErrors_ib.dat index 586058ee6..e18c872f9 100644 --- a/bin/Lng/Eng/SemanticErrors_ib.dat +++ b/bin/Lng/Eng/SemanticErrors_ib.dat @@ -19,6 +19,7 @@ DESTRUCTOR_CANNOT_HAVE_PARAMETERS=Destructor cannot have parameters USING_MODIFIERS{0}_{1}_TOGETHER_NOT_ALLOWED=Modifier '{0}' has conflicts with modifier '{1}' CONST_PARAMETERS_CANNOT_HAVE_DEFAULT_VALUE=const-parameters cannot have default value FORMAT_EXPRESSION_CAN_USE_ONLY_IN_THESE_PROCEDURES=Format expression can be used only in calls of write, writeln и str +BAD_CONSTRUCTED_FORMAT_EXPRESSION=Badly constructed format expression NIL_IN_SET_CONSTRUCTOR_NOT_ALLOWED=nil cannot be used in a set constructor POINTERS_IN_SETS_NOT_ALLOWED=Set cannot contain pointers VOID_NOT_VALID=Type 'System.Void' cannot be used in this context diff --git a/bin/Lng/Rus/SemanticErrors_ib.dat b/bin/Lng/Rus/SemanticErrors_ib.dat index 5664f98bc..7a0b0f4dc 100644 --- a/bin/Lng/Rus/SemanticErrors_ib.dat +++ b/bin/Lng/Rus/SemanticErrors_ib.dat @@ -19,6 +19,7 @@ DESTRUCTOR_CANNOT_HAVE_PARAMETERS=Деструктор не может имет USING_MODIFIERS{0}_{1}_TOGETHER_NOT_ALLOWED=Совместное использование модификаторов {0} и {1} недопустимо CONST_PARAMETERS_CANNOT_HAVE_DEFAULT_VALUE=const-параметры не могут иметь значение по умолчанию FORMAT_EXPRESSION_CAN_USE_ONLY_IN_THESE_PROCEDURES=Форматное выражение может использоваться только внутри write, writeln и str +BAD_CONSTRUCTED_FORMAT_EXPRESSION=Неверно сконструированное форматное выражение NIL_IN_SET_CONSTRUCTOR_NOT_ALLOWED=Нельзя использовать nil в конструкторе множества POINTERS_IN_SETS_NOT_ALLOWED=Множество не может содержать указатели VOID_NOT_VALID=Использование типа System.Void в данном контексте недопустимо