From a53dcd9ed22b80e08c926d4fc525da73d7618a42 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Sat, 14 Dec 2024 15:25:16 +0300 Subject: [PATCH] =?UTF-8?q?SF=20Prm=20Cmb=20=D0=B4=D0=BB=D1=8F=20=D1=81?= =?UTF-8?q?=D1=82=D1=80=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Configuration/GlobalAssemblyInfo.cs | 2 +- Configuration/Version.defs | 2 +- .../WhatsNew/3_10_2/SquareBrForArr.pas | 14 + .../PascalABCParserNewSaushkin/ABCPascal.cs | 10 +- .../PascalABCParserNewSaushkin/ABCPascal.y | 44 +- .../ABCPascalYacc.cs | 9868 +++++++++++------ Parsers/PascalABCParserNewSaushkin/PABC.tags | 30 - Parsers/PascalABCParserNewSaushkin/PABC.ymc | 15 +- .../SemanticRulesForYacc.cs | 47 + .../generateParserScanner.bat | 2 +- Release/pabcversion.txt | 2 +- ReleaseGenerators/PascalABCNET_version.nsh | 2 +- bin/Lib/PABCSystem.pas | 25 +- bin/Lib/SF.pas | 61 +- 14 files changed, 6515 insertions(+), 3609 deletions(-) create mode 100644 InstallerSamples/WhatsNew/3_10_2/SquareBrForArr.pas diff --git a/Configuration/GlobalAssemblyInfo.cs b/Configuration/GlobalAssemblyInfo.cs index 8cf52b36b..3aebfc44c 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 = "10"; public const string Build = "2"; - public const string Revision = "3589"; + public const string Revision = "3593"; 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 7caf33bfa..5ea6cd8db 100644 --- a/Configuration/Version.defs +++ b/Configuration/Version.defs @@ -1,4 +1,4 @@ %MINOR%=10 -%REVISION%=3589 +%REVISION%=3593 %COREVERSION%=2 %MAJOR%=3 diff --git a/InstallerSamples/WhatsNew/3_10_2/SquareBrForArr.pas b/InstallerSamples/WhatsNew/3_10_2/SquareBrForArr.pas new file mode 100644 index 000000000..6b260b783 --- /dev/null +++ b/InstallerSamples/WhatsNew/3_10_2/SquareBrForArr.pas @@ -0,0 +1,14 @@ +begin + var a := [1,2,3]; // по умолчанию - массив + Println(a,TypeName(a)); + var s := [2..4]; // если есть диапазон, то множество + Println(s,TypeName(s)); + var s1: set of byte := [3,4,5]; // множество инициализируется значениями в [] + Println(s1,TypeName(s1)); + // Если один из операндов - множество, то результат - множество + Println(s + [1,2,3], s * [1,2,3], [1,2,3] - s, s - [1,2,3]); + // Это - операции с массивами + Println(a + [7,8,9], a * 3); + // Операция in для массива и для множества. Внешний вид одинаков + Println(5 in [3,5,7], 5 in [3..5,7]); +end. \ No newline at end of file diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs index 0056096d9..4160a3f62 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs @@ -1,9 +1,9 @@ // // This CSharp output file generated by Gardens Point LEX // Version: 1.1.3.301 -// Machine: DESKTOP-G8V08V4 -// DateTime: 19.07.2024 12:42:46 -// UserName: ????????? +// Machine: LAPTOP-TE3HP881 +// DateTime: 14.12.2024 15:20:04 +// UserName: miks // GPLEX input file // GPLEX frame file // @@ -2193,7 +2193,7 @@ if (parserTools.buildTreeForFormatter) parserTools.ParseDirective(yytext, CurrentLexLocation, out var directiveName, out var directiveParams); var orgDirectiveName = directiveName; - if (directiveName == "") // сл�?�?ай п�?с�?ой ди�?ек�?ив�? + if (directiveName == "") // сл??ай п?с?ой ди?ек?ив? break; directiveName = directiveName.ToUpper(); @@ -2290,7 +2290,7 @@ BEGIN(INITIAL); parserTools.ParseDirective(yytext, CurrentLexLocation, out directiveName, out directiveParams); orgDirectiveName = directiveName; - if (directiveName == "") // сл�?�?ай п�?с�?ой ди�?ек�?ив�? + if (directiveName == "") // сл??ай п?с?ой ди?ек?ив? break; directiveName = directiveName.ToUpper(); diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y index 0365488ea..29c805c61 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y @@ -140,7 +140,7 @@ %type program_header %type parameter_decl %type parameter_decl_list property_parameter_list -%type const_set +%type const_set pascal_set_const %type question_expr question_constexpr new_question_expr %type record_const const_field_list_1 const_field_list %type const_field @@ -987,9 +987,9 @@ const_factor // $$ = new roof_dereference($2 as addressed_value, @$); // } ; - -const_set - : tkSquareOpen elem_list tkSquareClose + +pascal_set_const + : tkSquareOpen elem_list tkSquareClose { // Если elem_list пуст или содержит диапазон, то это множество, иначе массив. С PascalABC.NET 3.10 /*var is_set = false; @@ -1002,6 +1002,13 @@ const_set $$ = new pascal_set_constant($2 as expression_list, @$); //else $$ = new array_const_new($2 as expression_list, @$); } + ; + +const_set + : pascal_set_const + { + $$ = $1; + } | tkVertParen elem_list tkVertParen { $$ = new array_const_new($2 as expression_list, @$); @@ -2915,6 +2922,11 @@ proc_call { $$ = new procedure_call($1 as addressed_value, $1 is ident, @$); } + /*| pascal_set_const tkPoint identifier_keyword_operatorname + { + var abcd = new dot_node($1 as addressed_value, $3 as addressed_value, @$); + $$ = new procedure_call(abcd as addressed_value, abcd is ident, @$); + } */ ; goto_stmt @@ -4164,6 +4176,8 @@ factor_without_unary_op | var_reference { $$ = $1; } ; + + factor : tkNil @@ -4175,19 +4189,18 @@ factor { $$ = $1; } | default_expr { $$ = $1; } - | tkSquareOpen elem_list tkSquareClose + | pascal_set_const { - // Если elem_list пуст или содержит диапазон, то это множество, иначе массив. С PascalABC.NET 3.10 - /*var is_set = false; - var el = $2 as expression_list; - if (el == null || el.Count == 0) - is_set = true; - else if (el.expressions.Count(x => x is diapason_expr_new) > 0) - is_set = true; - if (is_set)*/ - $$ = new pascal_set_constant($2 as expression_list, @$); - //else $$ = new array_const_new($2 as expression_list, @$); + $$ = $1; } + | factor tkPoint identifier_keyword_operatorname + { + $$ = new dot_node($1 as addressed_value, $3 as addressed_value, @$); + } + | factor tkRoundOpen optional_expr_list_func_param tkRoundClose + { + $$ = new method_call($1 as addressed_value,$3 as expression_list, @$); + } | tkNot factor { $$ = new un_expr($2, $1.type, @$); @@ -4375,6 +4388,7 @@ variable } | variable_or_literal_or_number tkSquareOpen expr_list tkSquareClose { + //$$ = NewIndexerOrSlice($1 as addressed_value,$3 as expression_list,@$); var el = $3 as expression_list; // SSM 10/03/16 if (el.Count==1 && el.expressions[0] is format_expr) { diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs index 28c6cdc7e..e432f8b94 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs @@ -1,12 +1,10 @@ -// (see accompanying GPPGcopyright.rtf) - // GPPG version 1.3.6 -// Machine: DESKTOP-G8V08V4 -// DateTime: 19.07.2024 12:42:47 -// UserName: ????????? -// Input file +// Machine: LAPTOP-TE3HP881 +// DateTime: 14.12.2024 13:55:00 +// UserName: miks +// Input file -// options: no-lines gplex +// options: lines gplex using System; using System.Collections.Generic; @@ -58,26 +56,38 @@ public abstract class ScanBase : AbstractScanner { - // Verbatim content from ABCPascal.y + // Verbatim content from D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y +#line 6 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // Э�?и об�?явления добавля�?�?ся в класс GPPGParser, п�?едс�?авля�?�?ий собой па�?се�?, гене�?и�?�?ем�?й сис�?емой gppg +#line 7 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 8 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" public syntax_tree_node root; // �?о�?невой �?зел син�?акси�?еского де�?ева +#line 9 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 10 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // private int maxErrors = 10; +#line 11 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" private PascalParserTools parserTools; +#line 12 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" private ParserLambdaHelper lambdaHelper = new ParserLambdaHelper(); +#line 13 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 14 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" public GPPGParser(AbstractScanner scanner, PascalParserTools parserTools) : base(scanner) +#line 15 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 16 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" this.parserTools = parserTools; +#line 17 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } - // End verbatim content from ABCPascal.y + // End verbatim content from D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y #pragma warning disable 649 private static Dictionary aliasses; #pragma warning restore 649 - private static Rule[] rules = new Rule[1028]; - private static State[] states = new State[1704]; + private static Rule[] rules = new Rule[1031]; + private static State[] states = new State[1708]; private static string[] nonTerms = new string[] { "parse_goal", "unit_key_word", "class_or_static", "assignment", "optional_array_initializer", "attribute_declarations", "ot_visibility_specifier", "one_attribute", "attribute_variable", @@ -138,16 +148,16 @@ public partial class GPPGParser: ShiftReduceParser program_file +#line 195 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { root = ValueStack[ValueStack.Depth-1].stn; } break; case 3: // parse_goal -> unit_file +#line 197 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { root = ValueStack[ValueStack.Depth-1].stn; } break; case 4: // parse_goal -> parts +#line 199 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { root = ValueStack[ValueStack.Depth-1].stn; } break; case 5: // parse_goal -> tkShortProgram, uses_clause_one_or_empty, // decl_sect_list_proc_func_only, stmt_list +#line 201 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 202 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var stl = ValueStack[ValueStack.Depth-1].stn as statement_list; +#line 203 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" stl.left_logical_bracket = new token_info(""); +#line 204 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" stl.right_logical_bracket = new token_info(""); +#line 205 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var ul = ValueStack[ValueStack.Depth-3].stn as uses_list; +#line 206 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" root = CurrentSemanticValue.stn = NewProgramModule(null, null, ul, new block(ValueStack[ValueStack.Depth-2].stn as declarations, stl, LocationStack[LocationStack.Depth-1]), new token_info(""), LexLocation.MergeAll(LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1])); +#line 207 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 6: // parse_goal -> tkShortSFProgram, uses_clause_one_or_empty, // decl_sect_list_proc_func_only, stmt_list +#line 209 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 210 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var stl = ValueStack[ValueStack.Depth-1].stn as statement_list; +#line 211 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" stl.left_logical_bracket = new token_info(""); +#line 212 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" stl.right_logical_bracket = new token_info(""); +#line 213 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var un = new unit_or_namespace(new ident_list("SF"),null); +#line 214 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var ul = ValueStack[ValueStack.Depth-3].stn as uses_list; +#line 215 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ul == null) +#line 216 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" //var un1 = new unit_or_namespace(new ident_list("School"),null); ul = new uses_list(un,null); +#line 217 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else ul.Insert(0,un); +#line 218 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" //ul.Add(un1); root = CurrentSemanticValue.stn = NewProgramModule(null, null, ul, new block(ValueStack[ValueStack.Depth-2].stn as declarations, stl, CurrentLocationSpan), new token_info(""), LexLocation.MergeAll(LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1])); +#line 219 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 7: // parts -> tkParseModeExpression, expr +#line 226 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } break; case 8: // parts -> tkParseModeExpression, tkType, type_decl_identifier +#line 228 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].id; } break; case 9: // parts -> tkParseModeType, variable_as_type +#line 230 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } break; case 10: // parts -> tkParseModeStatement, stmt_or_expression +#line 232 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 11: // stmt_or_expression -> expr +#line 238 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = new expression_as_statement(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan);} break; case 12: // stmt_or_expression -> assignment +#line 240 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 13: // stmt_or_expression -> var_stmt +#line 242 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 14: // optional_head_compiler_directives -> /* empty */ +#line 247 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 15: // optional_head_compiler_directives -> head_compiler_directives +#line 249 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 16: // head_compiler_directives -> one_compiler_directive +#line 254 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 17: // head_compiler_directives -> head_compiler_directives, one_compiler_directive +#line 256 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 18: // one_compiler_directive -> tkDirectiveName, tkIdentifier +#line 261 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 262 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("UNSUPPORTED_OLD_DIRECTIVES",CurrentLocationSpan); +#line 263 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = null; +#line 264 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 19: // one_compiler_directive -> tkDirectiveName, tkStringLiteral +#line 266 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 267 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("UNSUPPORTED_OLD_DIRECTIVES",CurrentLocationSpan); +#line 268 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = null; +#line 269 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 20: // program_file -> program_header, optional_head_compiler_directives, uses_clause, // program_block, optional_tk_point +#line 274 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 275 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewProgramModule(ValueStack[ValueStack.Depth-5].stn as program_name, ValueStack[ValueStack.Depth-4].ob, ValueStack[ValueStack.Depth-3].stn as uses_list, ValueStack[ValueStack.Depth-2].stn, ValueStack[ValueStack.Depth-1].ob, CurrentLocationSpan); +#line 276 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 21: // optional_tk_point -> tkPoint +#line 282 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-1].ti; } break; case 22: // optional_tk_point -> tkSemiColon +#line 284 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 23: // optional_tk_point -> tkColon +#line 286 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 24: // optional_tk_point -> tkComma +#line 288 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 25: // optional_tk_point -> tkDotDot +#line 290 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 27: // program_header -> /* empty */ +#line 296 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; case 28: // program_header -> tkProgram, identifier, program_heading_2 +#line 298 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = new program_name(ValueStack[ValueStack.Depth-2].id,CurrentLocationSpan); } break; case 29: // program_heading_2 -> tkSemiColon +#line 303 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 30: // program_heading_2 -> tkRoundOpen, program_param_list, tkRoundClose, tkSemiColon +#line 305 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 31: // program_param_list -> program_param +#line 310 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 32: // program_param_list -> program_param_list, tkComma, program_param +#line 312 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; case 33: // program_param -> identifier +#line 317 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; case 34: // program_block -> program_decl_sect_list, compound_stmt +#line 322 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 323 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new block(ValueStack[ValueStack.Depth-2].stn as declarations, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); +#line 324 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 35: // program_decl_sect_list -> decl_sect_list +#line 329 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 36: // ident_or_keyword_pointseparator_list -> identifier_or_keyword +#line 334 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 335 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new ident_list(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 336 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 37: // ident_or_keyword_pointseparator_list -> ident_or_keyword_pointseparator_list, // tkPoint, identifier_or_keyword +#line 338 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 339 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as ident_list).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 340 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 38: // uses_clause_one -> tkUses, used_units_list, tkSemiColon +#line 346 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 347 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 348 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 349 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 39: // uses_clause_one_or_empty -> /* empty */ +#line 354 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 355 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = null; +#line 356 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 40: // uses_clause_one_or_empty -> uses_clause_one +#line 358 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 359 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 360 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new uses_closure(ValueStack[ValueStack.Depth-1].stn as uses_list,CurrentLocationSpan); +#line 361 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 362 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 41: // uses_clause -> /* empty */ +#line 367 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 368 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = null; +#line 369 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 42: // uses_clause -> uses_clause, uses_clause_one +#line 371 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 372 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 373 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 374 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].stn == null) +#line 375 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 376 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new uses_closure(ValueStack[ValueStack.Depth-1].stn as uses_list,CurrentLocationSpan); +#line 377 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 378 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else { +#line 379 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-2].stn as uses_closure).AddUsesList(ValueStack[ValueStack.Depth-1].stn as uses_list,CurrentLocationSpan); +#line 380 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 381 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 382 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 383 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 384 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 385 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].stn == null) +#line 386 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 387 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 388 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 389 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 390 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 391 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 392 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-2].stn as uses_list).AddUsesList(ValueStack[ValueStack.Depth-1].stn as uses_list,CurrentLocationSpan); +#line 393 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 394 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 395 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 396 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 397 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 43: // used_units_list -> used_unit_name +#line 402 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 403 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new uses_list(ValueStack[ValueStack.Depth-1].stn as unit_or_namespace,CurrentLocationSpan); +#line 404 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 44: // used_units_list -> used_units_list, tkComma, used_unit_name +#line 406 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 407 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as uses_list).Add(ValueStack[ValueStack.Depth-1].stn as unit_or_namespace, CurrentLocationSpan); +#line 408 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 45: // used_unit_name -> ident_or_keyword_pointseparator_list +#line 413 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 414 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new unit_or_namespace(ValueStack[ValueStack.Depth-1].stn as ident_list,CurrentLocationSpan); +#line 415 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 46: // used_unit_name -> ident_or_keyword_pointseparator_list, tkIn, tkStringLiteral +#line 417 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 418 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-1].stn is char_const _cc) +#line 419 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ValueStack[ValueStack.Depth-1].stn = new string_const(_cc.cconst.ToString()); +#line 420 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new uses_unit_in(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].stn as string_const, CurrentLocationSpan); +#line 421 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 47: // unit_file -> unit_header, interface_part, implementation_part, // initialization_part, tkPoint +#line 428 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 429 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new unit_module(ValueStack[ValueStack.Depth-5].stn as unit_name, ValueStack[ValueStack.Depth-4].stn as interface_node, ValueStack[ValueStack.Depth-3].stn as implementation_node, +#line 430 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-2].stn as initfinal_part).initialization_sect, (ValueStack[ValueStack.Depth-2].stn as initfinal_part).finalization_sect, /*$1 as attribute_list*/ null, CurrentLocationSpan); +#line 431 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as compilation_unit).Language = PascalABCCompiler.StringConstants.pascalLanguageName; +#line 432 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 48: // unit_file -> unit_header, abc_interface_part, initialization_part, tkPoint +#line 436 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 437 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new unit_module(ValueStack[ValueStack.Depth-4].stn as unit_name, ValueStack[ValueStack.Depth-3].stn as interface_node, null, +#line 438 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-2].stn as initfinal_part).initialization_sect, (ValueStack[ValueStack.Depth-2].stn as initfinal_part).finalization_sect, /*$1 as attribute_list*/ null, CurrentLocationSpan); +#line 439 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as compilation_unit).Language = PascalABCCompiler.StringConstants.pascalLanguageName; +#line 440 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 49: // unit_header -> unit_key_word, unit_name, tkSemiColon, // optional_head_compiler_directives +#line 445 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 446 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewUnitHeading(new ident(ValueStack[ValueStack.Depth-4].ti.text, LocationStack[LocationStack.Depth-4]), ValueStack[ValueStack.Depth-3].id, CurrentLocationSpan); +#line 447 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 50: // unit_header -> tkNamespace, ident_or_keyword_pointseparator_list, tkSemiColon, // optional_head_compiler_directives +#line 449 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 450 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewNamespaceHeading(new ident(ValueStack[ValueStack.Depth-4].ti.text, LocationStack[LocationStack.Depth-4]), ValueStack[ValueStack.Depth-3].stn as ident_list, CurrentLocationSpan); +#line 451 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 51: // unit_key_word -> tkUnit +#line 456 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; case 52: // unit_key_word -> tkLibrary +#line 458 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; case 53: // unit_name -> identifier +#line 463 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; case 54: // interface_part -> tkInterface, uses_clause, interface_decl_sect_list +#line 468 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 469 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new interface_node(ValueStack[ValueStack.Depth-1].stn as declarations, ValueStack[ValueStack.Depth-2].stn as uses_list, null, LexLocation.MergeAll(LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1])); +#line 470 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 55: // implementation_part -> tkImplementation, uses_clause, decl_sect_list +#line 475 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 476 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new implementation_node(ValueStack[ValueStack.Depth-2].stn as uses_list, ValueStack[ValueStack.Depth-1].stn as declarations, null, LexLocation.MergeAll(LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1])); +#line 477 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 56: // abc_interface_part -> uses_clause, decl_sect_list +#line 482 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 483 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new interface_node(ValueStack[ValueStack.Depth-1].stn as declarations, ValueStack[ValueStack.Depth-2].stn as uses_list, null, null); +#line 484 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 57: // initialization_part -> tkEnd +#line 489 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 490 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new initfinal_part(); +#line 491 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 492 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 58: // initialization_part -> tkInitialization, stmt_list, tkEnd +#line 494 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 495 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new initfinal_part(ValueStack[ValueStack.Depth-3].ti, ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].ti, null, null, CurrentLocationSpan); +#line 496 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 59: // initialization_part -> tkInitialization, stmt_list, tkFinalization, stmt_list, // tkEnd +#line 498 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 499 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new initfinal_part(ValueStack[ValueStack.Depth-5].ti, ValueStack[ValueStack.Depth-4].stn as statement_list, ValueStack[ValueStack.Depth-3].ti, ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].ti, CurrentLocationSpan); +#line 500 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 60: // initialization_part -> tkBegin, stmt_list, tkEnd +#line 502 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 503 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new initfinal_part(ValueStack[ValueStack.Depth-3].ti, ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].ti, null, null, CurrentLocationSpan); +#line 504 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 61: // interface_decl_sect_list -> int_decl_sect_list1 +#line 509 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 510 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-1].stn as declarations).Count > 0) +#line 511 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 512 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 513 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 514 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 62: // int_decl_sect_list1 -> /* empty */ +#line 519 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 520 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new declarations(); +#line 521 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (GlobalDecls==null) +#line 522 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" GlobalDecls = CurrentSemanticValue.stn as declarations; +#line 523 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 63: // int_decl_sect_list1 -> int_decl_sect_list1, int_decl_sect +#line 525 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 526 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as declarations).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); +#line 527 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 64: // decl_sect_list -> decl_sect_list1 +#line 532 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 533 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-1].stn as declarations).Count > 0) +#line 534 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 535 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 536 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 537 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 65: // decl_sect_list_proc_func_only -> /* empty */ +#line 542 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 543 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new declarations(); +#line 544 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (GlobalDecls==null) +#line 545 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" GlobalDecls = CurrentSemanticValue.stn as declarations; +#line 546 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 66: // decl_sect_list_proc_func_only -> decl_sect_list_proc_func_only, // attribute_declarations, // proc_func_decl_noclass +#line 548 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 549 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var dcl = ValueStack[ValueStack.Depth-3].stn as declarations; +#line 550 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).AssignAttrList(ValueStack[ValueStack.Depth-2].stn as attribute_list); +#line 551 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (dcl.Count == 0) +#line 552 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = dcl.Add(ValueStack[ValueStack.Depth-1].stn as declaration, LocationStack[LocationStack.Depth-1]); +#line 553 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 554 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 555 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sc = dcl.source_context; +#line 556 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" sc = sc.Merge(ValueStack[ValueStack.Depth-1].stn.source_context); +#line 557 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = dcl.Add(ValueStack[ValueStack.Depth-1].stn as declaration, LocationStack[LocationStack.Depth-1]); +#line 558 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = sc; +#line 559 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 560 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 67: // decl_sect_list1 -> /* empty */ +#line 565 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 566 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new declarations(); +#line 567 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (GlobalDecls==null) +#line 568 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" GlobalDecls = CurrentSemanticValue.stn as declarations; +#line 569 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 68: // decl_sect_list1 -> decl_sect_list1, decl_sect +#line 571 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 572 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as declarations).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); +#line 573 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 69: // inclass_decl_sect_list -> inclass_decl_sect_list1 +#line 578 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 579 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-1].stn as declarations).Count > 0) +#line 580 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 581 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 582 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 583 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 70: // inclass_decl_sect_list1 -> /* empty */ +#line 588 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 589 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new declarations(); +#line 590 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 71: // inclass_decl_sect_list1 -> inclass_decl_sect_list1, abc_decl_sect +#line 592 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 593 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as declarations).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); +#line 594 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 72: // int_decl_sect -> const_decl_sect +#line 599 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 73: // int_decl_sect -> res_str_decl_sect +#line 601 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 74: // int_decl_sect -> type_decl_sect +#line 603 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 75: // int_decl_sect -> var_decl_sect +#line 605 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 76: // int_decl_sect -> int_proc_header +#line 607 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } break; case 77: // int_decl_sect -> int_func_header +#line 609 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } break; case 78: // decl_sect -> label_decl_sect +#line 614 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 79: // decl_sect -> const_decl_sect +#line 616 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 80: // decl_sect -> res_str_decl_sect +#line 618 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 81: // decl_sect -> type_decl_sect +#line 620 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 82: // decl_sect -> var_decl_sect +#line 622 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 83: // decl_sect -> proc_func_constr_destr_decl_with_attr +#line 624 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 84: // proc_func_constr_destr_decl -> proc_func_decl +#line 630 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 85: // proc_func_constr_destr_decl -> constr_destr_decl +#line 632 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 86: // proc_func_constr_destr_decl_with_attr -> attribute_declarations, // proc_func_constr_destr_decl +#line 637 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 638 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).AssignAttrList(ValueStack[ValueStack.Depth-2].stn as attribute_list); +#line 639 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 640 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 87: // abc_decl_sect -> label_decl_sect +#line 645 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 88: // abc_decl_sect -> const_decl_sect +#line 647 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 89: // abc_decl_sect -> res_str_decl_sect +#line 649 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 90: // abc_decl_sect -> type_decl_sect +#line 651 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 91: // abc_decl_sect -> var_decl_sect +#line 653 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; case 92: // int_proc_header -> attribute_declarations, proc_header +#line 658 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 659 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 660 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.td as procedure_header).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; +#line 661 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 93: // int_proc_header -> attribute_declarations, proc_header, tkForward, tkSemiColon +#line 663 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 664 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = NewProcedureHeader(ValueStack[ValueStack.Depth-4].stn as attribute_list, ValueStack[ValueStack.Depth-3].td as procedure_header, ValueStack[ValueStack.Depth-2].id as procedure_attribute, CurrentLocationSpan); +#line 665 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 94: // int_func_header -> attribute_declarations, func_header +#line 670 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 671 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 672 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.td as procedure_header).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; +#line 673 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 95: // int_func_header -> attribute_declarations, func_header, tkForward, tkSemiColon +#line 675 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 676 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = NewProcedureHeader(ValueStack[ValueStack.Depth-4].stn as attribute_list, ValueStack[ValueStack.Depth-3].td as procedure_header, ValueStack[ValueStack.Depth-2].id as procedure_attribute, CurrentLocationSpan); +#line 677 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 96: // label_decl_sect -> tkLabel, label_list, tkSemiColon +#line 682 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 683 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new label_definitions(ValueStack[ValueStack.Depth-2].stn as ident_list, CurrentLocationSpan); +#line 684 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 97: // label_list -> label_name +#line 689 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 690 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new ident_list(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 691 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 98: // label_list -> label_list, tkComma, label_name +#line 693 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 694 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as ident_list).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 695 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 99: // label_name -> tkInteger +#line 700 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 701 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ex.ToString(), CurrentLocationSpan); +#line 702 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 100: // label_name -> identifier +#line 704 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 705 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; +#line 706 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 101: // const_decl_sect -> tkConst, const_decl +#line 711 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 712 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new consts_definitions_list(ValueStack[ValueStack.Depth-1].stn as const_definition, CurrentLocationSpan); +#line 713 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 102: // const_decl_sect -> const_decl_sect, const_decl +#line 715 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 716 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as consts_definitions_list).Add(ValueStack[ValueStack.Depth-1].stn as const_definition, CurrentLocationSpan); +#line 717 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 103: // res_str_decl_sect -> tkResourceString, const_decl +#line 722 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 723 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 724 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 104: // res_str_decl_sect -> res_str_decl_sect, const_decl +#line 726 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 727 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 728 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 105: // type_decl_sect -> tkType, type_decl +#line 733 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 734 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new type_declarations(ValueStack[ValueStack.Depth-1].stn as type_declaration, CurrentLocationSpan); +#line 735 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 106: // type_decl_sect -> type_decl_sect, type_decl +#line 737 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 738 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as type_declarations).Add(ValueStack[ValueStack.Depth-1].stn as type_declaration, CurrentLocationSpan); +#line 739 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 107: // var_decl_with_assign_var_tuple -> var_decl +#line 744 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 745 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 746 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 108: // var_decl_with_assign_var_tuple -> tkRoundOpen, identifier, tkComma, ident_list, // tkRoundClose, tkAssign, expr_l1, // tkSemiColon +#line 748 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 749 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-5].stn as ident_list).Insert(0,ValueStack[ValueStack.Depth-7].id); +#line 750 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ValueStack[ValueStack.Depth-5].stn.source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4]); +#line 751 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_tuple_def_statement(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-2].ex, CurrentLocationSpan); +#line 752 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 109: // var_decl_sect -> tkVar, var_decl_with_assign_var_tuple +#line 757 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 758 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new variable_definitions(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); +#line 759 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 110: // var_decl_sect -> tkEvent, var_decl_with_assign_var_tuple +#line 761 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 762 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new variable_definitions(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); +#line 763 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as var_def_statement).is_event = true; +#line 764 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 111: // var_decl_sect -> var_decl_sect, var_decl_with_assign_var_tuple +#line 766 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 767 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as variable_definitions).Add(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); +#line 768 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 112: // const_decl -> only_const_decl, tkSemiColon +#line 779 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; case 113: // only_const_decl -> const_name, tkEqual, init_const_expr +#line 784 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 785 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new simple_const_definition(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 786 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 114: // only_const_decl -> const_name, tkColon, type_ref, tkEqual, typed_const +#line 788 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 789 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new typed_const_definition(ValueStack[ValueStack.Depth-5].id, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-3].td, CurrentLocationSpan); +#line 790 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 115: // init_const_expr -> const_expr +#line 795 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 116: // init_const_expr -> array_const +#line 797 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 117: // const_name -> identifier +#line 802 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; case 118: // const_relop_expr -> const_simple_expr +#line 818 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 819 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; +#line 820 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 119: // const_relop_expr -> const_relop_expr, const_relop, const_simple_expr +#line 822 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 823 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 824 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 120: // const_expr -> const_relop_expr +#line 829 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 830 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; +#line 831 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 121: // const_expr -> question_constexpr +#line 833 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 834 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; +#line 835 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 122: // const_expr -> const_expr, tkDoubleQuestion, const_relop_expr +#line 837 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new double_question_node(ValueStack[ValueStack.Depth-3].ex as expression, ValueStack[ValueStack.Depth-1].ex as expression, CurrentLocationSpan);} break; case 123: // question_constexpr -> const_expr, tkQuestion, const_expr, tkColon, const_expr +#line 842 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new question_colon_expression(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; case 124: // const_relop -> tkEqual +#line 847 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 125: // const_relop -> tkNotEqual +#line 849 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 126: // const_relop -> tkLower +#line 851 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 127: // const_relop -> tkGreater +#line 853 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 128: // const_relop -> tkLowerEqual +#line 855 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 129: // const_relop -> tkGreaterEqual +#line 857 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 130: // const_relop -> tkIn +#line 859 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 131: // const_simple_expr -> const_term +#line 864 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 132: // const_simple_expr -> const_simple_expr, const_addop, const_term +#line 866 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; case 133: // const_addop -> tkPlus +#line 871 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 134: // const_addop -> tkMinus +#line 873 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 135: // const_addop -> tkOr +#line 875 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 136: // const_addop -> tkXor +#line 877 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 137: // as_is_constexpr -> const_term, typecast_op, simple_or_template_type_reference +#line 882 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 883 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewAsIsConstexpr(ValueStack[ValueStack.Depth-3].ex, (op_typecast)ValueStack[ValueStack.Depth-2].ob, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 884 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 138: // power_constexpr -> const_factor_without_unary_op, tkStarStar, const_factor +#line 889 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; case 139: // power_constexpr -> const_factor_without_unary_op, tkStarStar, power_constexpr +#line 891 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; case 140: // power_constexpr -> sign, power_constexpr +#line 893 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; case 141: // const_term -> const_factor +#line 898 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 142: // const_term -> as_is_constexpr +#line 900 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 143: // const_term -> power_constexpr +#line 902 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 144: // const_term -> const_term, const_mulop, const_factor +#line 904 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; case 145: // const_term -> const_term, const_mulop, power_constexpr +#line 906 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; case 146: // const_mulop -> tkStar +#line 911 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 147: // const_mulop -> tkSlash +#line 913 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 148: // const_mulop -> tkDiv +#line 915 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 149: // const_mulop -> tkMod +#line 917 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 150: // const_mulop -> tkShl +#line 919 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 151: // const_mulop -> tkShr +#line 921 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 152: // const_mulop -> tkAnd +#line 923 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; case 153: // const_factor_without_unary_op -> const_variable +#line 928 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 154: // const_factor_without_unary_op -> tkRoundOpen, const_expr, tkRoundClose +#line 930 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-2].ex; } break; case 155: // const_factor -> const_variable +#line 935 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 156: // const_factor -> const_set +#line 937 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 157: // const_factor -> tkNil +#line 939 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 940 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new nil_const(); +#line 941 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex.source_context = CurrentLocationSpan; +#line 942 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 158: // const_factor -> tkAddressOf, const_factor +#line 944 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 945 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new get_address(ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); +#line 946 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 159: // const_factor -> tkRoundOpen, const_expr, tkRoundClose +#line 948 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 949 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new bracket_expr(ValueStack[ValueStack.Depth-2].ex, CurrentLocationSpan); +#line 950 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 160: // const_factor -> tkNot, const_factor +#line 952 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 953 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 954 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 161: // const_factor -> sign, const_factor +#line 956 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 957 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // �?�?�?наЯ ко�?�?ек�?иЯ �?ел�?�? конс�?ан�? if (ValueStack[ValueStack.Depth-2].op.type == Operators.Minus) +#line 958 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 959 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var i64 = ValueStack[ValueStack.Depth-1].ex as int64_const; +#line 960 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1) +#line 961 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 962 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new int32_const(Int32.MinValue,CurrentLocationSpan); +#line 963 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" break; +#line 964 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 965 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var ui64 = ValueStack[ValueStack.Depth-1].ex as uint64_const; +#line 966 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1) +#line 967 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 968 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new int64_const(Int64.MinValue,CurrentLocationSpan); +#line 969 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" break; +#line 970 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 971 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1) +#line 972 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 973 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("BAD_INT2",CurrentLocationSpan); +#line 974 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" break; +#line 975 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 976 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // можно сдела�?�? в�?�?исление конс�?ан�?�? с вмон�?и�?ованн�?м мин�?сом } +#line 977 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 978 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 162: // const_factor -> new_expr +#line 982 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 163: // const_factor -> default_expr +#line 984 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 164: // const_set -> tkSquareOpen, elem_list, tkSquareClose + case 164: // pascal_set_const -> tkSquareOpen, elem_list, tkSquareClose +#line 993 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 994 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // �?сли elem_list п�?с�? или соде�?жи�? диапазон, �?о э�?о множес�?во, ина�?е массив. С PascalABC.NET 3.10 /*var is_set = false; var el = $2 as expression_list; @@ -3674,4302 +4099,6713 @@ public partial class GPPGParser: ShiftReduceParser x is diapason_expr_new) > 0) is_set = true; if (is_set)*/ +#line 995 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new pascal_set_constant(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); +#line 996 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" //else $$ = new array_const_new($2 as expression_list, @$); } break; - case 165: // const_set -> tkVertParen, elem_list, tkVertParen -{ - CurrentSemanticValue.ex = new array_const_new(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); + case 165: // const_set -> pascal_set_const +#line 1009 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +{ +#line 1010 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; +#line 1011 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 166: // sign -> tkPlus + case 166: // const_set -> tkVertParen, elem_list, tkVertParen +#line 1013 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +{ +#line 1014 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.ex = new array_const_new(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); +#line 1015 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + } + break; + case 167: // sign -> tkPlus +#line 1020 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 167: // sign -> tkMinus + case 168: // sign -> tkMinus +#line 1022 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 168: // const_variable -> identifier + case 169: // const_variable -> identifier +#line 1027 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 169: // const_variable -> literal + case 170: // const_variable -> literal +#line 1029 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 170: // const_variable -> unsigned_number + case 171: // const_variable -> unsigned_number +#line 1031 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 171: // const_variable -> tkInherited, identifier + case 172: // const_variable -> tkInherited, identifier +#line 1033 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1034 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new inherited_ident(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); +#line 1035 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 172: // const_variable -> sizeof_expr + case 173: // const_variable -> sizeof_expr +#line 1037 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 173: // const_variable -> typeof_expr + case 174: // const_variable -> typeof_expr +#line 1039 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 174: // const_variable -> const_variable, const_variable_2 + case 175: // const_variable -> const_variable, const_variable_2 +#line 1050 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1051 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewConstVariable(ValueStack[ValueStack.Depth-2].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 1052 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 175: // const_variable -> const_variable, tkAmpersend, template_type_params + case 176: // const_variable -> const_variable, tkAmpersend, template_type_params +#line 1054 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1055 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); +#line 1056 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 176: // const_variable -> const_variable, tkSquareOpen, format_const_expr, + case 177: // const_variable -> const_variable, tkSquareOpen, format_const_expr, // tkSquareClose +#line 1058 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1059 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var fe = ValueStack[ValueStack.Depth-2].ex as format_expr; +#line 1060 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!parserTools.buildTreeForFormatter) +#line 1061 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1062 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (fe.expr == null) +#line 1063 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.expr = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); +#line 1064 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (fe.format1 == null) +#line 1065 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.format1 = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); +#line 1066 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 1067 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new slice_expr(ValueStack[ValueStack.Depth-4].ex as addressed_value,fe.expr,fe.format1,fe.format2,CurrentLocationSpan); +#line 1068 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 177: // const_variable_2 -> tkPoint, identifier_or_keyword + case 178: // const_variable_2 -> tkPoint, identifier_or_keyword +#line 1073 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1074 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new dot_node(null, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); +#line 1075 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 178: // const_variable_2 -> tkDeref + case 179: // const_variable_2 -> tkDeref +#line 1077 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1078 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new roof_dereference(); +#line 1079 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex.source_context = CurrentLocationSpan; +#line 1080 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 179: // const_variable_2 -> tkRoundOpen, optional_const_func_expr_list, tkRoundClose + case 180: // const_variable_2 -> tkRoundOpen, optional_const_func_expr_list, tkRoundClose +#line 1082 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1083 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); +#line 1084 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 180: // const_variable_2 -> tkSquareOpen, const_elem_list, tkSquareClose + case 181: // const_variable_2 -> tkSquareOpen, const_elem_list, tkSquareClose +#line 1086 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1087 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new indexer(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); +#line 1088 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 181: // optional_const_func_expr_list -> expr_list + case 182: // optional_const_func_expr_list -> expr_list +#line 1093 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 182: // optional_const_func_expr_list -> /* empty */ + case 183: // optional_const_func_expr_list -> /* empty */ +#line 1095 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 183: // const_elem_list -> const_elem_list1 + case 184: // const_elem_list -> const_elem_list1 +#line 1111 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 185: // const_elem_list1 -> const_elem + case 186: // const_elem_list1 -> const_elem +#line 1117 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1118 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 1119 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 186: // const_elem_list1 -> const_elem_list1, tkComma, const_elem + case 187: // const_elem_list1 -> const_elem_list1, tkComma, const_elem +#line 1121 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1122 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 1123 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 187: // const_elem -> const_expr + case 188: // const_elem -> const_expr +#line 1128 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 188: // const_elem -> const_expr, tkDotDot, const_expr + case 189: // const_elem -> const_expr, tkDotDot, const_expr +#line 1130 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1131 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 1132 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 189: // unsigned_number -> tkInteger + case 190: // unsigned_number -> tkInteger +#line 1137 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 190: // unsigned_number -> tkHex + case 191: // unsigned_number -> tkHex +#line 1139 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 191: // unsigned_number -> tkFloat + case 192: // unsigned_number -> tkFloat +#line 1141 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 192: // unsigned_number -> tkBigInteger + case 193: // unsigned_number -> tkBigInteger +#line 1143 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 193: // typed_const -> const_expr + case 194: // typed_const -> const_expr +#line 1148 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 194: // typed_const -> array_const + case 195: // typed_const -> array_const +#line 1150 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 195: // typed_const -> record_const + case 196: // typed_const -> record_const +#line 1152 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 196: // array_const -> tkRoundOpen, typed_const_list, tkRoundClose + case 197: // array_const -> tkRoundOpen, typed_const_list, tkRoundClose +#line 1157 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1158 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new array_const(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); +#line 1159 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 198: // typed_const_list -> typed_const_list1 + case 199: // typed_const_list -> typed_const_list1 +#line 1169 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1170 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 1171 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 199: // typed_const_list1 -> typed_const_plus + case 200: // typed_const_list1 -> typed_const_plus +#line 1176 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1177 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 1178 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 200: // typed_const_list1 -> typed_const_list1, tkComma, typed_const_plus + case 201: // typed_const_list1 -> typed_const_list1, tkComma, typed_const_plus +#line 1180 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1181 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 1182 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 201: // record_const -> tkRoundOpen, const_field_list, tkRoundClose + case 202: // record_const -> tkRoundOpen, const_field_list, tkRoundClose +#line 1187 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1188 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-2].ex; +#line 1189 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex.source_context = CurrentLocationSpan; +#line 1190 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 202: // const_field_list -> const_field_list_1 + case 203: // const_field_list -> const_field_list_1 +#line 1195 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 203: // const_field_list -> const_field_list_1, tkSemiColon + case 204: // const_field_list -> const_field_list_1, tkSemiColon +#line 1197 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-2].ex; } break; - case 204: // const_field_list_1 -> const_field + case 205: // const_field_list_1 -> const_field +#line 1202 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1203 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new record_const(ValueStack[ValueStack.Depth-1].stn as record_const_definition, CurrentLocationSpan); +#line 1204 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 205: // const_field_list_1 -> const_field_list_1, tkSemiColon, const_field + case 206: // const_field_list_1 -> const_field_list_1, tkSemiColon, const_field +#line 1206 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1207 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = (ValueStack[ValueStack.Depth-3].ex as record_const).Add(ValueStack[ValueStack.Depth-1].stn as record_const_definition, CurrentLocationSpan); +#line 1208 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 206: // const_field -> const_field_name, tkColon, typed_const + case 207: // const_field -> const_field_name, tkColon, typed_const +#line 1213 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1214 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new record_const_definition(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 1215 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 207: // const_field_name -> identifier + case 208: // const_field_name -> identifier +#line 1220 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 208: // type_decl -> attribute_declarations, simple_type_decl + case 209: // type_decl -> attribute_declarations, simple_type_decl +#line 1225 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1226 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; +#line 1227 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 1228 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = LocationStack[LocationStack.Depth-1]; +#line 1229 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 209: // attribute_declarations -> attribute_declaration + case 210: // attribute_declarations -> attribute_declaration +#line 1234 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1235 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new attribute_list(ValueStack[ValueStack.Depth-1].stn as simple_attribute_list, CurrentLocationSpan); +#line 1236 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 210: // attribute_declarations -> attribute_declarations, attribute_declaration + case 211: // attribute_declarations -> attribute_declarations, attribute_declaration +#line 1238 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1239 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as attribute_list).Add(ValueStack[ValueStack.Depth-1].stn as simple_attribute_list, CurrentLocationSpan); +#line 1240 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 211: // attribute_declarations -> /* empty */ + case 212: // attribute_declarations -> /* empty */ +#line 1242 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 212: // attribute_declaration -> tkSquareOpen, one_or_some_attribute, tkSquareClose + case 213: // attribute_declaration -> tkSquareOpen, one_or_some_attribute, tkSquareClose +#line 1247 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 213: // one_or_some_attribute -> one_attribute + case 214: // one_or_some_attribute -> one_attribute +#line 1252 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1253 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new simple_attribute_list(ValueStack[ValueStack.Depth-1].stn as attribute, CurrentLocationSpan); +#line 1254 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 214: // one_or_some_attribute -> one_or_some_attribute, tkComma, one_attribute + case 215: // one_or_some_attribute -> one_or_some_attribute, tkComma, one_attribute +#line 1256 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1257 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as simple_attribute_list).Add(ValueStack[ValueStack.Depth-1].stn as attribute, CurrentLocationSpan); +#line 1258 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 215: // one_attribute -> attribute_variable + case 216: // one_attribute -> attribute_variable +#line 1263 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 216: // one_attribute -> identifier, tkColon, attribute_variable + case 217: // one_attribute -> identifier, tkColon, attribute_variable +#line 1265 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1266 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as attribute).qualifier = ValueStack[ValueStack.Depth-3].id; +#line 1267 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 1268 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 1269 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 217: // simple_type_decl -> type_decl_identifier, tkEqual, type_decl_type, tkSemiColon + case 218: // simple_type_decl -> type_decl_identifier, tkEqual, type_decl_type, tkSemiColon +#line 1274 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1275 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new type_declaration(ValueStack[ValueStack.Depth-4].id, ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); +#line 1276 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 218: // simple_type_decl -> template_identifier_with_equal, type_decl_type, tkSemiColon + case 219: // simple_type_decl -> template_identifier_with_equal, type_decl_type, tkSemiColon +#line 1278 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1279 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new type_declaration(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); +#line 1280 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 219: // type_decl_identifier -> identifier + case 220: // type_decl_identifier -> identifier +#line 1285 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 220: // type_decl_identifier -> identifier, template_arguments + case 221: // type_decl_identifier -> identifier, template_arguments +#line 1287 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1288 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.id = new template_type_name(ValueStack[ValueStack.Depth-2].id.name, ValueStack[ValueStack.Depth-1].stn as ident_list, CurrentLocationSpan); +#line 1289 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 221: // template_identifier_with_equal -> identifier, tkLower, ident_list, + case 222: // template_identifier_with_equal -> identifier, tkLower, ident_list, // tkGreaterEqual +#line 1294 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1295 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.id = new template_type_name(ValueStack[ValueStack.Depth-4].id.name, ValueStack[ValueStack.Depth-2].stn as ident_list, CurrentLocationSpan); +#line 1296 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 222: // type_decl_type -> type_ref + case 223: // type_decl_type -> type_ref +#line 1301 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 223: // type_decl_type -> object_type + case 224: // type_decl_type -> object_type +#line 1303 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 224: // simple_type_question -> simple_type, tkQuestion + case 225: // simple_type_question -> simple_type, tkQuestion +#line 1308 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1309 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 1310 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1311 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-2].td; +#line 1312 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 1313 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 1314 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1315 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var l = new List(); +#line 1316 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" l.Add(new ident("System")); +#line 1317 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" l.Add(new ident("Nullable")); +#line 1318 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new template_type_reference(new named_type_reference(l), new template_param_list(ValueStack[ValueStack.Depth-2].td), CurrentLocationSpan); +#line 1319 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 1320 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 225: // simple_type_question -> template_type, tkQuestion + case 226: // simple_type_question -> template_type, tkQuestion +#line 1322 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1323 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 1324 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1325 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-2].td; +#line 1326 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 1327 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 1328 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1329 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var l = new List(); +#line 1330 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" l.Add(new ident("System")); +#line 1331 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" l.Add(new ident("Nullable")); +#line 1332 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new template_type_reference(new named_type_reference(l), new template_param_list(ValueStack[ValueStack.Depth-2].td), CurrentLocationSpan); +#line 1333 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 1334 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 226: // type_ref -> simple_type + case 227: // type_ref -> simple_type +#line 1339 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 227: // type_ref -> simple_type_question + case 228: // type_ref -> simple_type_question +#line 1341 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 228: // type_ref -> string_type + case 229: // type_ref -> string_type +#line 1343 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 229: // type_ref -> pointer_type + case 230: // type_ref -> pointer_type +#line 1345 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 230: // type_ref -> structured_type + case 231: // type_ref -> structured_type +#line 1347 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 231: // type_ref -> procedural_type + case 232: // type_ref -> procedural_type +#line 1349 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 232: // type_ref -> template_type + case 233: // type_ref -> template_type +#line 1351 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 233: // template_type -> simple_type_identifier, template_type_params + case 234: // template_type -> simple_type_identifier, template_type_params +#line 1356 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1357 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new template_type_reference(ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); +#line 1358 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 234: // template_type_params -> tkLower, template_param_list, tkGreater + case 235: // template_type_params -> tkLower, template_param_list, tkGreater +#line 1363 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1364 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 1365 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 1366 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 235: // template_type_empty_params -> tkNotEqual + case 236: // template_type_empty_params -> tkNotEqual +#line 1371 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1372 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var ntr = new named_type_reference(new ident(""), CurrentLocationSpan); +#line 1373 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 1374 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new template_param_list(ntr, CurrentLocationSpan); +#line 1375 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ntr.source_context = new SourceContext(CurrentSemanticValue.stn.source_context.end_position.line_num, CurrentSemanticValue.stn.source_context.end_position.column_num, CurrentSemanticValue.stn.source_context.begin_position.line_num, CurrentSemanticValue.stn.source_context.begin_position.column_num); +#line 1376 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 236: // template_type_empty_params -> tkLower, template_empty_param_list, tkGreater + case 237: // template_type_empty_params -> tkLower, template_empty_param_list, tkGreater +#line 1378 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1379 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 1380 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 1381 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 237: // template_param_list -> template_param + case 238: // template_param_list -> template_param +#line 1386 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1387 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new template_param_list(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1388 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 238: // template_param_list -> template_param_list, tkComma, template_param + case 239: // template_param_list -> template_param_list, tkComma, template_param +#line 1390 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1391 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as template_param_list).Add(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1392 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 239: // template_empty_param_list -> template_empty_param + case 240: // template_empty_param_list -> template_empty_param +#line 1397 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1398 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new template_param_list(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1399 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 240: // template_empty_param_list -> template_empty_param_list, tkComma, + case 241: // template_empty_param_list -> template_empty_param_list, tkComma, // template_empty_param +#line 1401 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1402 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as template_param_list).Add(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1403 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 241: // template_empty_param -> /* empty */ + case 242: // template_empty_param -> /* empty */ +#line 1408 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1409 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new named_type_reference(new ident(""), CurrentLocationSpan); +#line 1410 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 242: // template_param -> simple_type + case 243: // template_param -> simple_type +#line 1415 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 243: // template_param -> simple_type, tkQuestion + case 244: // template_param -> simple_type, tkQuestion +#line 1417 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1418 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 1419 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1420 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-2].td; +#line 1421 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 1422 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 1423 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1424 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var l = new List(); +#line 1425 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" l.Add(new ident("System")); +#line 1426 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" l.Add(new ident("Nullable")); +#line 1427 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new template_type_reference(new named_type_reference(l), new template_param_list(ValueStack[ValueStack.Depth-2].td), CurrentLocationSpan); +#line 1428 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 1429 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 244: // template_param -> structured_type + case 245: // template_param -> structured_type +#line 1431 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 245: // template_param -> procedural_type + case 246: // template_param -> procedural_type +#line 1433 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 246: // template_param -> template_type + case 247: // template_param -> template_type +#line 1435 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 247: // simple_type -> range_expr + case 248: // simple_type -> range_expr +#line 1440 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1441 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = parserTools.ConvertDotNodeOrIdentToNamedTypeReference(ValueStack[ValueStack.Depth-1].ex); +#line 1442 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 248: // simple_type -> range_expr, tkDotDot, range_expr + case 249: // simple_type -> range_expr, tkDotDot, range_expr +#line 1444 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1445 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new diapason(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 1446 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 249: // simple_type -> tkRoundOpen, enumeration_id_list, tkRoundClose + case 250: // simple_type -> tkRoundOpen, enumeration_id_list, tkRoundClose +#line 1448 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1449 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new enum_type_definition(ValueStack[ValueStack.Depth-2].stn as enumerator_list, CurrentLocationSpan); +#line 1450 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 250: // range_expr -> range_term + case 251: // range_expr -> range_term +#line 1455 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 251: // range_expr -> range_expr, const_addop, range_term + case 252: // range_expr -> range_expr, const_addop, range_term +#line 1457 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1458 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 1459 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 252: // range_term -> range_factor + case 253: // range_term -> range_factor +#line 1464 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 253: // range_term -> range_term, const_mulop, range_factor + case 254: // range_term -> range_term, const_mulop, range_factor +#line 1466 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1467 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 1468 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 254: // range_factor -> simple_type_identifier + case 255: // range_factor -> simple_type_identifier +#line 1473 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1474 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = parserTools.ConvertNamedTypeReferenceToDotNodeOrIdent(ValueStack[ValueStack.Depth-1].td as named_type_reference); +#line 1475 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 255: // range_factor -> unsigned_number + case 256: // range_factor -> unsigned_number +#line 1477 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 256: // range_factor -> sign, range_factor + case 257: // range_factor -> sign, range_factor +#line 1479 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1480 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 1481 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 257: // range_factor -> literal + case 258: // range_factor -> literal +#line 1483 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 258: // range_factor -> range_factor, tkRoundOpen, const_elem_list, tkRoundClose + case 259: // range_factor -> range_factor, tkRoundOpen, const_elem_list, tkRoundClose +#line 1485 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1486 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-4].ex as addressed_value, ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); +#line 1487 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 259: // simple_type_identifier -> identifier + case 260: // simple_type_identifier -> identifier +#line 1492 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1493 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new named_type_reference(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 1494 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 260: // simple_type_identifier -> simple_type_identifier, tkPoint, + case 261: // simple_type_identifier -> simple_type_identifier, tkPoint, // identifier_or_keyword +#line 1496 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1497 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = (ValueStack[ValueStack.Depth-3].td as named_type_reference).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 1498 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 261: // enumeration_id_list -> enumeration_id + case 262: // enumeration_id_list -> enumeration_id +#line 1503 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1504 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new enumerator_list(ValueStack[ValueStack.Depth-1].stn as enumerator, CurrentLocationSpan); +#line 1505 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 262: // enumeration_id_list -> enumeration_id_list, tkComma, enumeration_id + case 263: // enumeration_id_list -> enumeration_id_list, tkComma, enumeration_id +#line 1507 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1508 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as enumerator_list).Add(ValueStack[ValueStack.Depth-1].stn as enumerator, CurrentLocationSpan); +#line 1509 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 263: // enumeration_id -> type_ref + case 264: // enumeration_id -> type_ref +#line 1514 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1515 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new enumerator(ValueStack[ValueStack.Depth-1].td, null, CurrentLocationSpan); +#line 1516 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 264: // enumeration_id -> type_ref, tkEqual, expr + case 265: // enumeration_id -> type_ref, tkEqual, expr +#line 1518 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1519 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new enumerator(ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 1520 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 265: // pointer_type -> tkDeref, fptype + case 266: // pointer_type -> tkDeref, fptype +#line 1525 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1526 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new ref_type(ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); +#line 1527 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 266: // structured_type -> array_type + case 267: // structured_type -> array_type +#line 1532 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 267: // structured_type -> record_type + case 268: // structured_type -> record_type +#line 1534 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 268: // structured_type -> set_type + case 269: // structured_type -> set_type +#line 1536 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 269: // structured_type -> file_type + case 270: // structured_type -> file_type +#line 1538 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 270: // structured_type -> sequence_type + case 271: // structured_type -> sequence_type +#line 1540 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 271: // sequence_type -> tkSequence, tkOf, type_ref + case 272: // sequence_type -> tkSequence, tkOf, type_ref +#line 1545 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1546 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new sequence_type(ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); +#line 1547 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 272: // array_type -> tkArray, tkSquareOpen, simple_type_list, tkSquareClose, tkOf, + case 273: // array_type -> tkArray, tkSquareOpen, simple_type_list, tkSquareClose, tkOf, // type_ref +#line 1552 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1553 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new array_type(ValueStack[ValueStack.Depth-4].stn as indexers_types, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1554 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 273: // array_type -> unsized_array_type + case 274: // array_type -> unsized_array_type +#line 1556 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 274: // unsized_array_type -> tkArray, tkOf, type_ref + case 275: // unsized_array_type -> tkArray, tkOf, type_ref +#line 1561 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1562 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new array_type(null, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1563 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 275: // simple_type_list -> simple_type_or_ + case 276: // simple_type_list -> simple_type_or_ +#line 1568 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1569 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new indexers_types(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1570 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 276: // simple_type_list -> simple_type_list, tkComma, simple_type_or_ + case 277: // simple_type_list -> simple_type_list, tkComma, simple_type_or_ +#line 1572 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1573 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as indexers_types).Add(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1574 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 277: // simple_type_or_ -> simple_type + case 278: // simple_type_or_ -> simple_type +#line 1579 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 278: // simple_type_or_ -> /* empty */ + case 279: // simple_type_or_ -> /* empty */ +#line 1581 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = null; } break; - case 279: // set_type -> tkSet, tkOf, type_ref + case 280: // set_type -> tkSet, tkOf, type_ref +#line 1586 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1587 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new set_type_definition(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1588 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 280: // file_type -> tkFile, tkOf, type_ref + case 281: // file_type -> tkFile, tkOf, type_ref +#line 1593 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1594 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new file_type(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1595 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 281: // file_type -> tkFile + case 282: // file_type -> tkFile +#line 1597 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1598 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new file_type(); +#line 1599 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td.source_context = CurrentLocationSpan; +#line 1600 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 282: // string_type -> tkIdentifier, tkSquareOpen, const_expr, tkSquareClose + case 283: // string_type -> tkIdentifier, tkSquareOpen, const_expr, tkSquareClose +#line 1605 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1606 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new string_num_definition(ValueStack[ValueStack.Depth-2].ex, ValueStack[ValueStack.Depth-4].id, CurrentLocationSpan); +#line 1607 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 283: // procedural_type -> procedural_type_kind + case 284: // procedural_type -> procedural_type_kind +#line 1612 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 284: // procedural_type_kind -> proc_type_decl + case 285: // procedural_type_kind -> proc_type_decl +#line 1617 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 285: // proc_type_decl -> tkProcedure, fp_list + case 286: // proc_type_decl -> tkProcedure, fp_list +#line 1622 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1623 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new procedure_header(ValueStack[ValueStack.Depth-1].stn as formal_parameters,null,null,false,false,null,null,CurrentLocationSpan); +#line 1624 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 286: // proc_type_decl -> tkFunction, fp_list, tkColon, fptype + case 287: // proc_type_decl -> tkFunction, fp_list, tkColon, fptype +#line 1630 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1631 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new function_header(ValueStack[ValueStack.Depth-3].stn as formal_parameters, null, null, null, ValueStack[ValueStack.Depth-1].td as type_definition, CurrentLocationSpan); +#line 1632 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 287: // proc_type_decl -> simple_type_identifier, tkArrow, template_param + case 288: // proc_type_decl -> simple_type_identifier, tkArrow, template_param +#line 1634 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1635 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new modern_proc_type(ValueStack[ValueStack.Depth-3].td,null,ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); +#line 1636 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 288: // proc_type_decl -> template_type, tkArrow, template_param + case 289: // proc_type_decl -> template_type, tkArrow, template_param +#line 1638 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1639 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new modern_proc_type(ValueStack[ValueStack.Depth-3].td,null,ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); +#line 1640 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 289: // proc_type_decl -> tkRoundOpen, tkRoundClose, tkArrow, template_param + case 290: // proc_type_decl -> tkRoundOpen, tkRoundClose, tkArrow, template_param +#line 1642 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1643 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new modern_proc_type(null,null,ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); +#line 1644 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 290: // proc_type_decl -> tkRoundOpen, enumeration_id_list, tkRoundClose, tkArrow, + case 291: // proc_type_decl -> tkRoundOpen, enumeration_id_list, tkRoundClose, tkArrow, // template_param +#line 1646 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1647 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new modern_proc_type(null,ValueStack[ValueStack.Depth-4].stn as enumerator_list,ValueStack[ValueStack.Depth-1].td,CurrentLocationSpan); +#line 1648 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 291: // proc_type_decl -> simple_type_identifier, tkArrow, tkRoundOpen, tkRoundClose + case 292: // proc_type_decl -> simple_type_identifier, tkArrow, tkRoundOpen, tkRoundClose +#line 1650 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1651 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new modern_proc_type(ValueStack[ValueStack.Depth-4].td,null,null,CurrentLocationSpan); +#line 1652 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 292: // proc_type_decl -> template_type, tkArrow, tkRoundOpen, tkRoundClose + case 293: // proc_type_decl -> template_type, tkArrow, tkRoundOpen, tkRoundClose +#line 1654 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1655 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new modern_proc_type(ValueStack[ValueStack.Depth-4].td,null,null,CurrentLocationSpan); +#line 1656 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 293: // proc_type_decl -> tkRoundOpen, tkRoundClose, tkArrow, tkRoundOpen, tkRoundClose + case 294: // proc_type_decl -> tkRoundOpen, tkRoundClose, tkArrow, tkRoundOpen, tkRoundClose +#line 1658 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1659 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new modern_proc_type(null,null,null,CurrentLocationSpan); +#line 1660 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 294: // proc_type_decl -> tkRoundOpen, enumeration_id_list, tkRoundClose, tkArrow, + case 295: // proc_type_decl -> tkRoundOpen, enumeration_id_list, tkRoundClose, tkArrow, // tkRoundOpen, tkRoundClose +#line 1662 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1663 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new modern_proc_type(null,ValueStack[ValueStack.Depth-5].stn as enumerator_list,null,CurrentLocationSpan); +#line 1664 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 295: // object_type -> class_attributes, class_or_interface_keyword, + case 296: // object_type -> class_attributes, class_or_interface_keyword, // optional_base_classes, optional_where_section, // optional_component_list_seq_end +#line 1669 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1670 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var cd = NewObjectType((class_attribute)ValueStack[ValueStack.Depth-5].ob, ValueStack[ValueStack.Depth-4].ti, ValueStack[ValueStack.Depth-3].stn as named_type_reference_list, ValueStack[ValueStack.Depth-2].stn as where_definition_list, ValueStack[ValueStack.Depth-1].stn as class_body_list, CurrentLocationSpan); +#line 1671 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = cd; +#line 1672 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 296: // record_type -> tkRecord, optional_base_classes, optional_where_section, + case 297: // record_type -> tkRecord, optional_base_classes, optional_where_section, // member_list_section, tkEnd +#line 1677 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1678 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var nnrt = new class_definition(ValueStack[ValueStack.Depth-4].stn as named_type_reference_list, ValueStack[ValueStack.Depth-2].stn as class_body_list, class_keyword.Record, null, ValueStack[ValueStack.Depth-3].stn as where_definition_list, class_attribute.None, false, CurrentLocationSpan); +#line 1679 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (/*nnrt.body!=null && nnrt.body.class_def_blocks!=null && nnrt.body.class_def_blocks.Count>0 &&*/ +#line 1680 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" nnrt.body.class_def_blocks[0].access_mod==null) +#line 1681 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1682 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" nnrt.body.class_def_blocks[0].access_mod = new access_modifer_node(access_modifer.public_modifer); +#line 1683 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 1684 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = nnrt; +#line 1685 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 297: // class_attribute -> tkSealed + case 298: // class_attribute -> tkSealed +#line 1691 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = class_attribute.Sealed; } break; - case 298: // class_attribute -> tkPartial + case 299: // class_attribute -> tkPartial +#line 1693 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = class_attribute.Partial; } break; - case 299: // class_attribute -> tkAbstract + case 300: // class_attribute -> tkAbstract +#line 1695 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = class_attribute.Abstract; } break; - case 300: // class_attribute -> tkAuto + case 301: // class_attribute -> tkAuto +#line 1697 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = class_attribute.Auto; } break; - case 301: // class_attribute -> tkStatic + case 302: // class_attribute -> tkStatic +#line 1699 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = class_attribute.Static; } break; - case 302: // class_attributes -> /* empty */ + case 303: // class_attributes -> /* empty */ +#line 1704 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1705 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = class_attribute.None; +#line 1706 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 303: // class_attributes -> class_attributes1 + case 304: // class_attributes -> class_attributes1 +#line 1708 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1709 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-1].ob; +#line 1710 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 304: // class_attributes1 -> class_attribute + case 305: // class_attributes1 -> class_attribute +#line 1715 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1716 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-1].ob; +#line 1717 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 305: // class_attributes1 -> class_attributes1, class_attribute + case 306: // class_attributes1 -> class_attributes1, class_attribute +#line 1719 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1720 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (((class_attribute)ValueStack[ValueStack.Depth-2].ob & (class_attribute)ValueStack[ValueStack.Depth-1].ob) == (class_attribute)ValueStack[ValueStack.Depth-1].ob) +#line 1721 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("ATTRIBUTE_REDECLARED",LocationStack[LocationStack.Depth-1]); +#line 1722 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = ((class_attribute)ValueStack[ValueStack.Depth-2].ob) | ((class_attribute)ValueStack[ValueStack.Depth-1].ob); +#line 1723 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" //$$ = $1; } break; - case 306: // class_or_interface_keyword -> tkClass + case 307: // class_or_interface_keyword -> tkClass +#line 1729 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 307: // class_or_interface_keyword -> tkInterface + case 308: // class_or_interface_keyword -> tkInterface +#line 1731 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 308: // class_or_interface_keyword -> tkTemplate + case 309: // class_or_interface_keyword -> tkTemplate +#line 1733 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1734 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ti = NewClassOrInterfaceKeyword(ValueStack[ValueStack.Depth-1].ti); +#line 1735 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 309: // class_or_interface_keyword -> tkTemplate, tkClass + case 310: // class_or_interface_keyword -> tkTemplate, tkClass +#line 1737 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1738 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ti = NewClassOrInterfaceKeyword(ValueStack[ValueStack.Depth-2].ti, "c", CurrentLocationSpan); +#line 1739 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 310: // class_or_interface_keyword -> tkTemplate, tkRecord + case 311: // class_or_interface_keyword -> tkTemplate, tkRecord +#line 1741 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1742 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ti = NewClassOrInterfaceKeyword(ValueStack[ValueStack.Depth-2].ti, "r", CurrentLocationSpan); +#line 1743 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 311: // class_or_interface_keyword -> tkTemplate, tkInterface + case 312: // class_or_interface_keyword -> tkTemplate, tkInterface +#line 1745 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1746 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ti = NewClassOrInterfaceKeyword(ValueStack[ValueStack.Depth-2].ti, "i", CurrentLocationSpan); +#line 1747 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 312: // optional_component_list_seq_end -> /* empty */ + case 313: // optional_component_list_seq_end -> /* empty */ +#line 1752 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 313: // optional_component_list_seq_end -> member_list_section, tkEnd + case 314: // optional_component_list_seq_end -> member_list_section, tkEnd +#line 1754 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1755 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 1756 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 1757 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 315: // optional_base_classes -> tkRoundOpen, base_classes_names_list, tkRoundClose + case 316: // optional_base_classes -> tkRoundOpen, base_classes_names_list, tkRoundClose +#line 1763 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 316: // base_classes_names_list -> base_class_name + case 317: // base_classes_names_list -> base_class_name +#line 1768 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1769 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new named_type_reference_list(ValueStack[ValueStack.Depth-1].stn as named_type_reference, CurrentLocationSpan); +#line 1770 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 317: // base_classes_names_list -> base_classes_names_list, tkComma, base_class_name + case 318: // base_classes_names_list -> base_classes_names_list, tkComma, base_class_name +#line 1772 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1773 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as named_type_reference_list).Add(ValueStack[ValueStack.Depth-1].stn as named_type_reference, CurrentLocationSpan); +#line 1774 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 318: // base_class_name -> simple_type_identifier + case 319: // base_class_name -> simple_type_identifier +#line 1779 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } break; - case 319: // base_class_name -> template_type + case 320: // base_class_name -> template_type +#line 1781 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } break; - case 320: // template_arguments -> tkLower, ident_list, tkGreater + case 321: // template_arguments -> tkLower, ident_list, tkGreater +#line 1786 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1787 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 1788 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 1789 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 321: // optional_where_section -> /* empty */ + case 322: // optional_where_section -> /* empty */ +#line 1794 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 322: // optional_where_section -> where_part_list + case 323: // optional_where_section -> where_part_list +#line 1796 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 323: // where_part_list -> where_part + case 324: // where_part_list -> where_part +#line 1801 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1802 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new where_definition_list(ValueStack[ValueStack.Depth-1].stn as where_definition, CurrentLocationSpan); +#line 1803 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 324: // where_part_list -> where_part_list, where_part + case 325: // where_part_list -> where_part_list, where_part +#line 1805 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1806 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as where_definition_list).Add(ValueStack[ValueStack.Depth-1].stn as where_definition, CurrentLocationSpan); +#line 1807 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 325: // where_part -> tkWhere, ident_list, tkColon, type_ref_and_secific_list, + case 326: // where_part -> tkWhere, ident_list, tkColon, type_ref_and_secific_list, // tkSemiColon +#line 1812 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1813 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new where_definition(ValueStack[ValueStack.Depth-4].stn as ident_list, ValueStack[ValueStack.Depth-2].stn as where_type_specificator_list, CurrentLocationSpan); +#line 1814 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 326: // type_ref_and_secific_list -> type_ref_or_secific + case 327: // type_ref_and_secific_list -> type_ref_or_secific +#line 1819 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1820 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new where_type_specificator_list(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1821 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 327: // type_ref_and_secific_list -> type_ref_and_secific_list, tkComma, + case 328: // type_ref_and_secific_list -> type_ref_and_secific_list, tkComma, // type_ref_or_secific +#line 1823 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1824 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as where_type_specificator_list).Add(ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 1825 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 328: // type_ref_or_secific -> type_ref + case 329: // type_ref_or_secific -> type_ref +#line 1830 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 329: // type_ref_or_secific -> tkClass + case 330: // type_ref_or_secific -> tkClass +#line 1832 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1833 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new declaration_specificator(DeclarationSpecificator.WhereDefClass, ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); +#line 1834 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 330: // type_ref_or_secific -> tkRecord + case 331: // type_ref_or_secific -> tkRecord +#line 1836 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1837 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new declaration_specificator(DeclarationSpecificator.WhereDefValueType, ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); +#line 1838 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 331: // type_ref_or_secific -> tkConstructor + case 332: // type_ref_or_secific -> tkConstructor +#line 1840 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1841 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new declaration_specificator(DeclarationSpecificator.WhereDefConstructor, ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); +#line 1842 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 332: // member_list_section -> member_list + case 333: // member_list_section -> member_list +#line 1847 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1848 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new class_body_list(ValueStack[ValueStack.Depth-1].stn as class_members, CurrentLocationSpan); +#line 1849 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 333: // member_list_section -> member_list_section, ot_visibility_specifier, + case 334: // member_list_section -> member_list_section, ot_visibility_specifier, // member_list +#line 1851 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1852 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as class_members).access_mod = ValueStack[ValueStack.Depth-2].stn as access_modifer_node; +#line 1853 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-3].stn as class_body_list).Add(ValueStack[ValueStack.Depth-1].stn as class_members,CurrentLocationSpan); +#line 1854 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 1855 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-3].stn as class_body_list).class_def_blocks[0].Count == 0) +#line 1856 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-3].stn as class_body_list).class_def_blocks.RemoveAt(0); +#line 1857 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 1858 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-3].stn; +#line 1859 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 334: // ot_visibility_specifier -> tkInternal + case 335: // ot_visibility_specifier -> tkInternal +#line 1864 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = new access_modifer_node(access_modifer.internal_modifer, CurrentLocationSpan); } break; - case 335: // ot_visibility_specifier -> tkPublic + case 336: // ot_visibility_specifier -> tkPublic +#line 1866 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = new access_modifer_node(access_modifer.public_modifer, CurrentLocationSpan); } break; - case 336: // ot_visibility_specifier -> tkProtected + case 337: // ot_visibility_specifier -> tkProtected +#line 1868 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = new access_modifer_node(access_modifer.protected_modifer, CurrentLocationSpan); } break; - case 337: // ot_visibility_specifier -> tkPrivate + case 338: // ot_visibility_specifier -> tkPrivate +#line 1870 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = new access_modifer_node(access_modifer.private_modifer, CurrentLocationSpan); } break; - case 338: // member_list -> /* empty */ + case 339: // member_list -> /* empty */ +#line 1875 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = new class_members(); } break; - case 339: // member_list -> field_or_const_definition_list, optional_semicolon + case 340: // member_list -> field_or_const_definition_list, optional_semicolon +#line 1877 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 340: // member_list -> method_decl_list + case 341: // member_list -> method_decl_list +#line 1879 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 341: // member_list -> field_or_const_definition_list, tkSemiColon, method_decl_list + case 342: // member_list -> field_or_const_definition_list, tkSemiColon, method_decl_list +#line 1881 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1882 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-3].stn as class_members).members.AddRange((ValueStack[ValueStack.Depth-1].stn as class_members).members); +#line 1883 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-3].stn as class_members).source_context = CurrentLocationSpan; +#line 1884 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-3].stn; +#line 1885 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 342: // ident_list -> identifier + case 343: // ident_list -> identifier +#line 1890 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1891 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new ident_list(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 1892 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 343: // ident_list -> ident_list, tkComma, identifier + case 344: // ident_list -> ident_list, tkComma, identifier +#line 1894 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1895 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as ident_list).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 1896 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 344: // optional_semicolon -> /* empty */ + case 345: // optional_semicolon -> /* empty */ +#line 1901 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = null; } break; - case 345: // optional_semicolon -> tkSemiColon + case 346: // optional_semicolon -> tkSemiColon +#line 1903 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-1].ti; } break; - case 346: // field_or_const_definition_list -> field_or_const_definition + case 347: // field_or_const_definition_list -> field_or_const_definition +#line 1908 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1909 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new class_members(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); +#line 1910 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 347: // field_or_const_definition_list -> field_or_const_definition_list, tkSemiColon, + case 348: // field_or_const_definition_list -> field_or_const_definition_list, tkSemiColon, // field_or_const_definition +#line 1912 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1913 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as class_members).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); +#line 1914 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 348: // field_or_const_definition -> attribute_declarations, + case 349: // field_or_const_definition -> attribute_declarations, // simple_field_or_const_definition +#line 1919 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1920 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; +#line 1921 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 1922 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 349: // method_decl_list -> method_or_property_decl + case 350: // method_decl_list -> method_or_property_decl +#line 1927 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1928 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new class_members(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); +#line 1929 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 350: // method_decl_list -> method_decl_list, method_or_property_decl + case 351: // method_decl_list -> method_decl_list, method_or_property_decl +#line 1931 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1932 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-2].stn as class_members).Add(ValueStack[ValueStack.Depth-1].stn as declaration, CurrentLocationSpan); +#line 1933 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 351: // method_or_property_decl -> method_decl_withattr + case 352: // method_or_property_decl -> method_decl_withattr +#line 1938 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 352: // method_or_property_decl -> property_definition + case 353: // method_or_property_decl -> property_definition +#line 1940 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 353: // simple_field_or_const_definition -> tkConst, only_const_decl + case 354: // simple_field_or_const_definition -> tkConst, only_const_decl +#line 1945 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1946 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 1947 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 1948 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 354: // simple_field_or_const_definition -> field_definition + case 355: // simple_field_or_const_definition -> field_definition +#line 1950 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 355: // simple_field_or_const_definition -> class_or_static, field_definition + case 356: // simple_field_or_const_definition -> class_or_static, field_definition +#line 1952 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1953 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as var_def_statement).var_attr = definition_attribute.Static; +#line 1954 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as var_def_statement).source_context = CurrentLocationSpan; +#line 1955 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 1956 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 356: // class_or_static -> tkStatic + case 357: // class_or_static -> tkStatic +#line 1961 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 357: // class_or_static -> tkClass + case 358: // class_or_static -> tkClass +#line 1963 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 358: // field_definition -> var_decl_part + case 359: // field_definition -> var_decl_part +#line 1968 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 359: // field_definition -> tkEvent, ident_list, tkColon, type_ref + case 360: // field_definition -> tkEvent, ident_list, tkColon, type_ref +#line 1970 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1971 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_def_statement(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, null, definition_attribute.None, true, CurrentLocationSpan); +#line 1972 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 360: // method_decl_withattr -> attribute_declarations, method_header + case 361: // method_decl_withattr -> attribute_declarations, method_header +#line 1977 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1978 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].td as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; +#line 1979 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; +#line 1980 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 361: // method_decl_withattr -> attribute_declarations, method_decl + case 362: // method_decl_withattr -> attribute_declarations, method_decl +#line 1982 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 1983 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; +#line 1984 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-1].stn is procedure_definition && (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header != null) +#line 1985 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; +#line 1986 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 1987 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 362: // method_decl -> inclass_proc_func_decl + case 363: // method_decl -> inclass_proc_func_decl +#line 1992 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 363: // method_decl -> inclass_constr_destr_decl + case 364: // method_decl -> inclass_constr_destr_decl +#line 1994 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 364: // method_header -> class_or_static, method_procfunc_header + case 365: // method_header -> class_or_static, method_procfunc_header +#line 1999 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2000 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].td as procedure_header).class_keyword = true; +#line 2001 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 2002 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 365: // method_header -> method_procfunc_header + case 366: // method_header -> method_procfunc_header +#line 2004 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2005 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 2006 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 366: // method_header -> tkAsync, class_or_static, method_procfunc_header + case 367: // method_header -> tkAsync, class_or_static, method_procfunc_header +#line 2008 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2009 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].td as procedure_header).class_keyword = true; +#line 2010 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].td as procedure_header).IsAsync = true; +#line 2011 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 2012 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 367: // method_header -> tkAsync, method_procfunc_header + case 368: // method_header -> tkAsync, method_procfunc_header +#line 2014 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2015 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].td as procedure_header).IsAsync = true; +#line 2016 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 2017 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 368: // method_header -> constr_destr_header + case 369: // method_header -> constr_destr_header +#line 2019 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 369: // method_procfunc_header -> proc_func_header + case 370: // method_procfunc_header -> proc_func_header +#line 2024 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2025 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = NewProcfuncHeading(ValueStack[ValueStack.Depth-1].td as procedure_header); +#line 2026 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 370: // proc_func_header -> proc_header + case 371: // proc_func_header -> proc_header +#line 2031 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 371: // proc_func_header -> func_header + case 372: // proc_func_header -> func_header +#line 2033 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 372: // constr_destr_header -> tkConstructor, optional_proc_name, fp_list, + case 373: // constr_destr_header -> tkConstructor, optional_proc_name, fp_list, // optional_method_modificators +#line 2038 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2039 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new constructor(null,ValueStack[ValueStack.Depth-2].stn as formal_parameters,ValueStack[ValueStack.Depth-1].stn as procedure_attributes_list,ValueStack[ValueStack.Depth-3].stn as method_name,false,false,null,null,CurrentLocationSpan); +#line 2040 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 373: // constr_destr_header -> class_or_static, tkConstructor, optional_proc_name, + case 374: // constr_destr_header -> class_or_static, tkConstructor, optional_proc_name, // fp_list, optional_method_modificators +#line 2042 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2043 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new constructor(null,ValueStack[ValueStack.Depth-2].stn as formal_parameters,ValueStack[ValueStack.Depth-1].stn as procedure_attributes_list,ValueStack[ValueStack.Depth-3].stn as method_name,false,true,null,null,CurrentLocationSpan); +#line 2044 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 374: // constr_destr_header -> tkDestructor, optional_proc_name, fp_list, + case 375: // constr_destr_header -> tkDestructor, optional_proc_name, fp_list, // optional_method_modificators +#line 2046 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2047 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new destructor(null,ValueStack[ValueStack.Depth-2].stn as formal_parameters,ValueStack[ValueStack.Depth-1].stn as procedure_attributes_list,ValueStack[ValueStack.Depth-3].stn as method_name, false,false,null,null,CurrentLocationSpan); +#line 2048 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 375: // optional_proc_name -> proc_name + case 376: // optional_proc_name -> proc_name +#line 2053 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 376: // optional_proc_name -> /* empty */ + case 377: // optional_proc_name -> /* empty */ +#line 2055 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 377: // property_definition -> attribute_declarations, simple_property_definition + case 378: // property_definition -> attribute_declarations, simple_property_definition +#line 2060 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2061 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertyDefinition(ValueStack[ValueStack.Depth-2].stn as attribute_list, ValueStack[ValueStack.Depth-1].stn as declaration, LocationStack[LocationStack.Depth-1]); - } - break; - case 378: // simple_property_definition -> tkProperty, func_name, property_interface, - // property_specifiers, tkSemiColon, - // array_defaultproperty -{ - CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-5].stn as method_name, ValueStack[ValueStack.Depth-4].stn as property_interface, ValueStack[ValueStack.Depth-3].stn as property_accessors, proc_attribute.attr_none, ValueStack[ValueStack.Depth-1].stn as property_array_default, CurrentLocationSpan); +#line 2062 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 379: // simple_property_definition -> tkProperty, func_name, property_interface, // property_specifiers, tkSemiColon, - // property_modificator, tkSemiColon, // array_defaultproperty +#line 2067 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { - proc_attribute pa = proc_attribute.attr_none; - if (ValueStack[ValueStack.Depth-3].id.name.ToLower() == "virtual") - pa = proc_attribute.attr_virtual; - else if (ValueStack[ValueStack.Depth-3].id.name.ToLower() == "override") - pa = proc_attribute.attr_override; - else if (ValueStack[ValueStack.Depth-3].id.name.ToLower() == "abstract") - pa = proc_attribute.attr_abstract; - CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-7].stn as method_name, ValueStack[ValueStack.Depth-6].stn as property_interface, ValueStack[ValueStack.Depth-5].stn as property_accessors, pa, ValueStack[ValueStack.Depth-1].stn as property_array_default, CurrentLocationSpan); +#line 2068 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-5].stn as method_name, ValueStack[ValueStack.Depth-4].stn as property_interface, ValueStack[ValueStack.Depth-3].stn as property_accessors, proc_attribute.attr_none, ValueStack[ValueStack.Depth-1].stn as property_array_default, CurrentLocationSpan); +#line 2069 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 380: // simple_property_definition -> class_or_static, tkProperty, func_name, - // property_interface, property_specifiers, - // tkSemiColon, array_defaultproperty + case 380: // simple_property_definition -> tkProperty, func_name, property_interface, + // property_specifiers, tkSemiColon, + // property_modificator, tkSemiColon, + // array_defaultproperty +#line 2071 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { - CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-5].stn as method_name, ValueStack[ValueStack.Depth-4].stn as property_interface, ValueStack[ValueStack.Depth-3].stn as property_accessors, proc_attribute.attr_none, ValueStack[ValueStack.Depth-1].stn as property_array_default, CurrentLocationSpan); - (CurrentSemanticValue.stn as simple_property).attr = definition_attribute.Static; +#line 2072 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + proc_attribute pa = proc_attribute.attr_none; +#line 2073 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + if (ValueStack[ValueStack.Depth-3].id.name.ToLower() == "virtual") +#line 2074 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + pa = proc_attribute.attr_virtual; +#line 2075 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + else if (ValueStack[ValueStack.Depth-3].id.name.ToLower() == "override") +#line 2076 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + pa = proc_attribute.attr_override; +#line 2077 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + else if (ValueStack[ValueStack.Depth-3].id.name.ToLower() == "abstract") +#line 2078 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + pa = proc_attribute.attr_abstract; +#line 2079 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-7].stn as method_name, ValueStack[ValueStack.Depth-6].stn as property_interface, ValueStack[ValueStack.Depth-5].stn as property_accessors, pa, ValueStack[ValueStack.Depth-1].stn as property_array_default, CurrentLocationSpan); +#line 2080 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 381: // simple_property_definition -> class_or_static, tkProperty, func_name, + // property_interface, property_specifiers, + // tkSemiColon, array_defaultproperty +#line 2082 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +{ +#line 2083 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-5].stn as method_name, ValueStack[ValueStack.Depth-4].stn as property_interface, ValueStack[ValueStack.Depth-3].stn as property_accessors, proc_attribute.attr_none, ValueStack[ValueStack.Depth-1].stn as property_array_default, CurrentLocationSpan); +#line 2084 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + (CurrentSemanticValue.stn as simple_property).attr = definition_attribute.Static; +#line 2085 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + } + break; + case 382: // simple_property_definition -> class_or_static, tkProperty, func_name, // property_interface, property_specifiers, // tkSemiColon, property_modificator, tkSemiColon, // array_defaultproperty +#line 2087 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2088 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("STATIC_PROPERTIES_CANNOT_HAVE_ATTRBUTE_{0}",LocationStack[LocationStack.Depth-3],ValueStack[ValueStack.Depth-3].id.name); +#line 2089 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 382: // simple_property_definition -> tkAuto, tkProperty, func_name, property_interface, + case 383: // simple_property_definition -> tkAuto, tkProperty, func_name, property_interface, // optional_property_initialization, tkSemiColon +#line 2091 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2092 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-4].stn as method_name, ValueStack[ValueStack.Depth-3].stn as property_interface, null, proc_attribute.attr_none, null, CurrentLocationSpan); +#line 2093 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as simple_property).is_auto = true; +#line 2094 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as simple_property).initial_value = ValueStack[ValueStack.Depth-2].ex; +#line 2095 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 383: // simple_property_definition -> class_or_static, tkAuto, tkProperty, func_name, + case 384: // simple_property_definition -> class_or_static, tkAuto, tkProperty, func_name, // property_interface, // optional_property_initialization, tkSemiColon +#line 2097 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2098 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-4].stn as method_name, ValueStack[ValueStack.Depth-3].stn as property_interface, null, proc_attribute.attr_none, null, CurrentLocationSpan); +#line 2099 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as simple_property).is_auto = true; +#line 2100 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as simple_property).attr = definition_attribute.Static; +#line 2101 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as simple_property).initial_value = ValueStack[ValueStack.Depth-2].ex; +#line 2102 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 384: // optional_property_initialization -> tkAssign, expr + case 385: // optional_property_initialization -> tkAssign, expr +#line 2106 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 385: // optional_property_initialization -> /* empty */ + case 386: // optional_property_initialization -> /* empty */ +#line 2107 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = null; } break; - case 386: // array_defaultproperty -> /* empty */ + case 387: // array_defaultproperty -> /* empty */ +#line 2112 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 387: // array_defaultproperty -> tkDefault, tkSemiColon + case 388: // array_defaultproperty -> tkDefault, tkSemiColon +#line 2114 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2115 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new property_array_default(); +#line 2116 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 2117 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 388: // property_interface -> property_parameter_list, tkColon, fptype + case 389: // property_interface -> property_parameter_list, tkColon, fptype +#line 2124 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2125 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new property_interface(ValueStack[ValueStack.Depth-3].stn as property_parameter_list, ValueStack[ValueStack.Depth-1].td, null, CurrentLocationSpan); +#line 2126 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 389: // property_parameter_list -> /* empty */ + case 390: // property_parameter_list -> /* empty */ +#line 2131 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 390: // property_parameter_list -> tkSquareOpen, parameter_decl_list, tkSquareClose + case 391: // property_parameter_list -> tkSquareOpen, parameter_decl_list, tkSquareClose +#line 2133 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 391: // parameter_decl_list -> parameter_decl + case 392: // parameter_decl_list -> parameter_decl +#line 2138 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2139 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new property_parameter_list(ValueStack[ValueStack.Depth-1].stn as property_parameter, CurrentLocationSpan); +#line 2140 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 392: // parameter_decl_list -> parameter_decl_list, tkSemiColon, parameter_decl + case 393: // parameter_decl_list -> parameter_decl_list, tkSemiColon, parameter_decl +#line 2142 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2143 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as property_parameter_list).Add(ValueStack[ValueStack.Depth-1].stn as property_parameter, CurrentLocationSpan); +#line 2144 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 393: // parameter_decl -> ident_list, tkColon, fptype + case 394: // parameter_decl -> ident_list, tkColon, fptype +#line 2149 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2150 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new property_parameter(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 2151 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 394: // optional_read_expr -> expr_with_func_decl_lambda + case 395: // optional_read_expr -> expr_with_func_decl_lambda +#line 2170 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 395: // optional_read_expr -> /* empty */ + case 396: // optional_read_expr -> /* empty */ +#line 2172 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = null; } break; - case 397: // property_specifiers -> tkRead, optional_read_expr, write_property_specifiers + case 398: // property_specifiers -> tkRead, optional_read_expr, write_property_specifiers +#line 2178 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2179 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].ex == null || ValueStack[ValueStack.Depth-2].ex is ident) // с�?анда�?�?н�?е свойс�?ва { +#line 2180 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersRead(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-2].ex as ident, null, null, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); +#line 2181 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2182 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else // �?ас�?и�?енн�?е свойс�?ва { +#line 2183 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var id = NewId("#GetGen", LocationStack[LocationStack.Depth-2]); +#line 2184 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" procedure_definition pr = null; +#line 2185 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!parserTools.buildTreeForFormatter) +#line 2186 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" pr = CreateAndAddToClassReadFunc(ValueStack[ValueStack.Depth-2].ex, id, LocationStack[LocationStack.Depth-2]); +#line 2187 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersRead(ValueStack[ValueStack.Depth-3].id, id, pr, ValueStack[ValueStack.Depth-2].ex, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); // $2 пе�?еда�?�?ся для �?о�?ма�?и�?ования } +#line 2188 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 398: // property_specifiers -> tkWrite, unlabelled_stmt, read_property_specifiers + case 399: // property_specifiers -> tkWrite, unlabelled_stmt, read_property_specifiers +#line 2193 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2194 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].stn is empty_statement) +#line 2195 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2196 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 2197 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-3].id, null, null, null, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); +#line 2198 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2199 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else if (ValueStack[ValueStack.Depth-2].stn is procedure_call && (ValueStack[ValueStack.Depth-2].stn as procedure_call).is_ident) // с�?анда�?�?н�?е свойс�?ва { +#line 2200 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 2201 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-3].id, (ValueStack[ValueStack.Depth-2].stn as procedure_call).func_name as ident, null, null, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); // с�?а�?�?е свойс�?ва - с иден�?и�?ика�?о�?ом } +#line 2202 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else // �?ас�?и�?енн�?е свойс�?ва { +#line 2203 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var id = NewId("#SetGen", LocationStack[LocationStack.Depth-2]); +#line 2204 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" procedure_definition pr = null; +#line 2205 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!parserTools.buildTreeForFormatter) +#line 2206 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" pr = CreateAndAddToClassWriteProc(ValueStack[ValueStack.Depth-2].stn as statement,id,LocationStack[LocationStack.Depth-2]); +#line 2207 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2208 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-3].id, id, pr, ValueStack[ValueStack.Depth-2].stn as statement, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); // $2 пе�?еда�?�?ся для �?о�?ма�?и�?ования else CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-3].id, id, pr, null, ValueStack[ValueStack.Depth-1].stn as property_accessors, CurrentLocationSpan); +#line 2209 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2210 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 400: // write_property_specifiers -> tkWrite, unlabelled_stmt + case 401: // write_property_specifiers -> tkWrite, unlabelled_stmt +#line 2219 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2220 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-1].stn is empty_statement) +#line 2221 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2222 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 2223 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-2].id, null, null, null, null, CurrentLocationSpan); +#line 2224 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2225 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else if (ValueStack[ValueStack.Depth-1].stn is procedure_call && (ValueStack[ValueStack.Depth-1].stn as procedure_call).is_ident) +#line 2226 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2227 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-2].id, (ValueStack[ValueStack.Depth-1].stn as procedure_call).func_name as ident, null, null, null, CurrentLocationSpan); // с�?а�?�?е свойс�?ва - с иден�?и�?ика�?о�?ом } +#line 2228 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 2229 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2230 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var id = NewId("#SetGen", LocationStack[LocationStack.Depth-1]); +#line 2231 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" procedure_definition pr = null; +#line 2232 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!parserTools.buildTreeForFormatter) +#line 2233 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" pr = CreateAndAddToClassWriteProc(ValueStack[ValueStack.Depth-1].stn as statement,id,LocationStack[LocationStack.Depth-1]); +#line 2234 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2235 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-2].id, id, pr, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); +#line 2236 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.stn = NewPropertySpecifiersWrite(ValueStack[ValueStack.Depth-2].id, id, pr, null, null, CurrentLocationSpan); +#line 2237 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2238 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 402: // read_property_specifiers -> tkRead, optional_read_expr + case 403: // read_property_specifiers -> tkRead, optional_read_expr +#line 2245 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2246 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-1].ex == null || ValueStack[ValueStack.Depth-1].ex is ident) +#line 2247 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2248 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersRead(ValueStack[ValueStack.Depth-2].id, ValueStack[ValueStack.Depth-1].ex as ident, null, null, null, CurrentLocationSpan); +#line 2249 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2250 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 2251 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2252 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var id = NewId("#GetGen", LocationStack[LocationStack.Depth-1]); +#line 2253 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" procedure_definition pr = null; +#line 2254 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!parserTools.buildTreeForFormatter) +#line 2255 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" pr = CreateAndAddToClassReadFunc(ValueStack[ValueStack.Depth-1].ex,id,LocationStack[LocationStack.Depth-1]); +#line 2256 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewPropertySpecifiersRead(ValueStack[ValueStack.Depth-2].id, id, pr, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); +#line 2257 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2258 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 403: // var_decl -> var_decl_part, tkSemiColon + case 404: // var_decl -> var_decl_part, tkSemiColon +#line 2263 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 406: // var_decl_part -> ident_list, tkColon, type_ref + case 407: // var_decl_part -> ident_list, tkColon, type_ref +#line 2288 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2289 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_def_statement(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, null, definition_attribute.None, false, CurrentLocationSpan); +#line 2290 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 407: // var_decl_part -> ident_list, tkAssign, expr_with_func_decl_lambda + case 408: // var_decl_part -> ident_list, tkAssign, expr_with_func_decl_lambda +#line 2292 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2293 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_def_statement(ValueStack[ValueStack.Depth-3].stn as ident_list, null, ValueStack[ValueStack.Depth-1].ex, definition_attribute.None, false, CurrentLocationSpan); +#line 2294 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 408: // var_decl_part -> ident_list, tkColon, type_ref, tkAssignOrEqual, + case 409: // var_decl_part -> ident_list, tkColon, type_ref, tkAssignOrEqual, // typed_var_init_expression +#line 2300 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2301 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_def_statement(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].ex, definition_attribute.None, false, CurrentLocationSpan); +#line 2302 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 409: // typed_var_init_expression -> typed_const_plus + case 410: // typed_var_init_expression -> typed_const_plus +#line 2307 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 410: // typed_var_init_expression -> const_simple_expr, tkDotDot, const_term + case 411: // typed_var_init_expression -> const_simple_expr, tkDotDot, const_term +#line 2309 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2310 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2311 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); +#line 2312 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 2313 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new diapason_expr_new(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); +#line 2314 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 411: // typed_var_init_expression -> expl_func_decl_lambda + case 412: // typed_var_init_expression -> expl_func_decl_lambda +#line 2316 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 412: // typed_var_init_expression -> identifier, tkArrow, lambda_function_body + case 413: // typed_var_init_expression -> identifier, tkArrow, lambda_function_body +#line 2318 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2319 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idList = new ident_list(ValueStack[ValueStack.Depth-3].id, LocationStack[LocationStack.Depth-3]); +#line 2320 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new lambda_any_type_node_syntax(), LocationStack[LocationStack.Depth-3]), parametr_kind.none, null, LocationStack[LocationStack.Depth-3]), LocationStack[LocationStack.Depth-3]); +#line 2321 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, new lambda_inferred_type(new lambda_any_type_node_syntax(), LocationStack[LocationStack.Depth-3]), ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); +#line 2322 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 413: // typed_var_init_expression -> tkRoundOpen, tkRoundClose, lambda_type_ref, + case 414: // typed_var_init_expression -> tkRoundOpen, tkRoundClose, lambda_type_ref, // tkArrow, lambda_function_body +#line 2324 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2325 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); +#line 2326 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 414: // typed_var_init_expression -> tkRoundOpen, typed_const_list, tkRoundClose, + case 415: // typed_var_init_expression -> tkRoundOpen, typed_const_list, tkRoundClose, // tkArrow, lambda_function_body +#line 2328 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2329 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var el = ValueStack[ValueStack.Depth-4].stn as expression_list; +#line 2330 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var cnt = el.Count; +#line 2331 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 2332 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idList = new ident_list(); +#line 2333 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" idList.source_context = LocationStack[LocationStack.Depth-4]; +#line 2334 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 2335 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" for (int j = 0; j < cnt; j++) +#line 2336 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2337 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!(el.expressions[j] is ident)) +#line 2338 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("ONE_TKIDENTIFIER",el.expressions[j].source_context); +#line 2339 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" idList.idents.Add(el.expressions[j] as ident); +#line 2340 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2341 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 2342 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var any = new lambda_inferred_type(new lambda_any_type_node_syntax(), LocationStack[LocationStack.Depth-4]); +#line 2343 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 2344 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var formalPars = new formal_parameters(new typed_parameters(idList, any, parametr_kind.none, null, LocationStack[LocationStack.Depth-4]), LocationStack[LocationStack.Depth-4]); +#line 2345 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, any, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); +#line 2346 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 415: // typed_var_init_expression -> new_question_expr + case 416: // typed_var_init_expression -> new_question_expr +#line 2348 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 416: // typed_const_plus -> typed_const + case 417: // typed_const_plus -> typed_const +#line 2353 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 417: // constr_destr_decl -> constr_destr_header, block + case 418: // constr_destr_decl -> constr_destr_header, block +#line 2360 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2361 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as block, CurrentLocationSpan); +#line 2362 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 418: // constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, tkAssign, + case 419: // constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, tkAssign, // unlabelled_stmt, tkSemiColon +#line 2364 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2365 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].stn is empty_statement) +#line 2366 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-1]); +#line 2367 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var tmp = new constructor(null,ValueStack[ValueStack.Depth-4].stn as formal_parameters,new procedure_attributes_list(new List(),CurrentLocationSpan),ValueStack[ValueStack.Depth-5].stn as method_name,false,false,null,null,LexLocation.MergeAll(LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4])); +#line 2368 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_definition(tmp as procedure_header, new block(null,new statement_list(ValueStack[ValueStack.Depth-2].stn as statement,LocationStack[LocationStack.Depth-2]),LocationStack[LocationStack.Depth-2]), LocationStack[LocationStack.Depth-6].Merge(LocationStack[LocationStack.Depth-2])); +#line 2369 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2370 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); +#line 2371 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 419: // constr_destr_decl -> class_or_static, tkConstructor, optional_proc_name, + case 420: // constr_destr_decl -> class_or_static, tkConstructor, optional_proc_name, // fp_list, tkAssign, unlabelled_stmt, tkSemiColon +#line 2373 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2374 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].stn is empty_statement) +#line 2375 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-1]); +#line 2376 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var tmp = new constructor(null,ValueStack[ValueStack.Depth-4].stn as formal_parameters,new procedure_attributes_list(new List(),CurrentLocationSpan),ValueStack[ValueStack.Depth-5].stn as method_name,false,true,null,null,LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4])); +#line 2377 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_definition(tmp as procedure_header, new block(null,new statement_list(ValueStack[ValueStack.Depth-2].stn as statement,LocationStack[LocationStack.Depth-2]),LocationStack[LocationStack.Depth-2]), LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-2])); +#line 2378 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2379 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); +#line 2380 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 420: // inclass_constr_destr_decl -> constr_destr_header, inclass_block + case 421: // inclass_constr_destr_decl -> constr_destr_header, inclass_block +#line 2385 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2386 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as block, CurrentLocationSpan); +#line 2387 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 421: // inclass_constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, + case 422: // inclass_constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, // tkAssign, unlabelled_stmt, tkSemiColon +#line 2389 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2390 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].stn is empty_statement) +#line 2391 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-1]); +#line 2392 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var tmp = new constructor(null,ValueStack[ValueStack.Depth-4].stn as formal_parameters,new procedure_attributes_list(new List(),CurrentLocationSpan),ValueStack[ValueStack.Depth-5].stn as method_name,false,false,null,null,LexLocation.MergeAll(LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4])); +#line 2393 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_definition(tmp as procedure_header, new block(null,new statement_list(ValueStack[ValueStack.Depth-2].stn as statement,LocationStack[LocationStack.Depth-2]),LocationStack[LocationStack.Depth-2]), LocationStack[LocationStack.Depth-6].Merge(LocationStack[LocationStack.Depth-2])); +#line 2394 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2395 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); +#line 2396 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 422: // inclass_constr_destr_decl -> class_or_static, tkConstructor, optional_proc_name, + case 423: // inclass_constr_destr_decl -> class_or_static, tkConstructor, optional_proc_name, // fp_list, tkAssign, unlabelled_stmt, tkSemiColon +#line 2398 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2399 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].stn is empty_statement) +#line 2400 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-1]); +#line 2401 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var tmp = new constructor(null,ValueStack[ValueStack.Depth-4].stn as formal_parameters,new procedure_attributes_list(new List(),CurrentLocationSpan),ValueStack[ValueStack.Depth-5].stn as method_name,false,true,null,null,LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4])); +#line 2402 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_definition(tmp as procedure_header, new block(null,new statement_list(ValueStack[ValueStack.Depth-2].stn as statement,LocationStack[LocationStack.Depth-2]),LocationStack[LocationStack.Depth-2]), LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-2])); +#line 2403 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2404 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); +#line 2405 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 423: // proc_func_decl -> proc_func_decl_noclass + case 424: // proc_func_decl -> proc_func_decl_noclass +#line 2410 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 424: // proc_func_decl -> class_or_static, proc_func_decl_noclass + case 425: // proc_func_decl -> class_or_static, proc_func_decl_noclass +#line 2412 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2413 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; +#line 2414 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2415 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 425: // proc_func_decl -> tkAsync, proc_func_decl_noclass + case 426: // proc_func_decl -> tkAsync, proc_func_decl_noclass +#line 2417 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2418 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.IsAsync = true; +#line 2419 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2420 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 426: // proc_func_decl -> tkAsync, class_or_static, proc_func_decl_noclass + case 427: // proc_func_decl -> tkAsync, class_or_static, proc_func_decl_noclass +#line 2422 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2423 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.IsAsync = true; +#line 2424 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; +#line 2425 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2426 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 427: // proc_func_decl -> class_or_static, tkAsync, proc_func_decl_noclass + case 428: // proc_func_decl -> class_or_static, tkAsync, proc_func_decl_noclass +#line 2428 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2429 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.IsAsync = true; +#line 2430 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; +#line 2431 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2432 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 428: // proc_func_decl_noclass -> proc_func_header, proc_func_external_block + case 429: // proc_func_decl_noclass -> proc_func_header, proc_func_external_block +#line 2437 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2438 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as proc_block, CurrentLocationSpan); +#line 2439 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 429: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, fptype, + case 430: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, fptype, // optional_method_modificators1, tkAssign, expr_l1, // tkSemiColon +#line 2441 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2442 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-7].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-8].stn as method_name, ValueStack[ValueStack.Depth-5].td as type_definition, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-9].Merge(LocationStack[LocationStack.Depth-4])); +#line 2443 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 430: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, + case 431: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, // optional_method_modificators1, tkAssign, expr_l1, // tkSemiColon +#line 2445 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2446 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].ex is dot_question_node) +#line 2447 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("DOT_QUECTION_IN_SHORT_FUN",LocationStack[LocationStack.Depth-2]); +#line 2448 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 2449 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, null, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); +#line 2450 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 431: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, fptype, + case 432: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, fptype, // optional_method_modificators1, tkAssign, // func_decl_lambda, tkSemiColon +#line 2452 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2453 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-7].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-8].stn as method_name, ValueStack[ValueStack.Depth-5].td as type_definition, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-9].Merge(LocationStack[LocationStack.Depth-4])); +#line 2454 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 432: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, + case 433: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, // optional_method_modificators1, tkAssign, // func_decl_lambda, tkSemiColon +#line 2456 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2457 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, null, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); +#line 2458 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 433: // proc_func_decl_noclass -> tkProcedure, proc_name, fp_list, + case 434: // proc_func_decl_noclass -> tkProcedure, proc_name, fp_list, // optional_method_modificators1, tkAssign, // unlabelled_stmt, tkSemiColon +#line 2460 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2461 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].stn is empty_statement) +#line 2462 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("EMPTY_STATEMENT_IN_SHORT_PROC_DEFINITION",LocationStack[LocationStack.Depth-2]); +#line 2463 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortProcDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, ValueStack[ValueStack.Depth-2].stn as statement, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); +#line 2464 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 434: // proc_func_decl_noclass -> proc_func_header, tkForward, tkSemiColon + case 435: // proc_func_decl_noclass -> proc_func_header, tkForward, tkSemiColon +#line 2466 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2467 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-3].td as procedure_header, null, CurrentLocationSpan); +#line 2468 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as procedure_definition).proc_header.proc_attributes.Add((procedure_attribute)ValueStack[ValueStack.Depth-2].id, ValueStack[ValueStack.Depth-2].id.source_context); +#line 2469 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 435: // inclass_proc_func_decl -> inclass_proc_func_decl_noclass + case 436: // inclass_proc_func_decl -> inclass_proc_func_decl_noclass +#line 2478 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2479 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2480 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 436: // inclass_proc_func_decl -> tkAsync, inclass_proc_func_decl_noclass + case 437: // inclass_proc_func_decl -> tkAsync, inclass_proc_func_decl_noclass +#line 2482 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2483 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.IsAsync = true; +#line 2484 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2485 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 437: // inclass_proc_func_decl -> class_or_static, inclass_proc_func_decl_noclass + case 438: // inclass_proc_func_decl -> class_or_static, inclass_proc_func_decl_noclass +#line 2487 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2488 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header != null) +#line 2489 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2490 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; +#line 2491 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2492 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2493 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 438: // inclass_proc_func_decl -> tkAsync, class_or_static, + case 439: // inclass_proc_func_decl -> tkAsync, class_or_static, // inclass_proc_func_decl_noclass +#line 2495 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2496 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header != null) +#line 2497 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2498 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.IsAsync = true; +#line 2499 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; +#line 2500 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2501 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2502 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 439: // inclass_proc_func_decl -> class_or_static, tkAsync, + case 440: // inclass_proc_func_decl -> class_or_static, tkAsync, // inclass_proc_func_decl_noclass +#line 2504 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2505 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header != null) +#line 2506 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2507 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.IsAsync = true; +#line 2508 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; +#line 2509 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 2510 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2511 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 440: // inclass_proc_func_decl_noclass -> proc_func_header, inclass_block + case 441: // inclass_proc_func_decl_noclass -> proc_func_header, inclass_block +#line 2516 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2517 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as proc_block, CurrentLocationSpan); +#line 2518 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 441: // inclass_proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, + case 442: // inclass_proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, // fptype, optional_method_modificators1, // tkAssign, expr_l1_func_decl_lambda, // tkSemiColon +#line 2520 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2521 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-7].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-8].stn as method_name, ValueStack[ValueStack.Depth-5].td as type_definition, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-9].Merge(LocationStack[LocationStack.Depth-4])); +#line 2522 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2523 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); +#line 2524 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 442: // inclass_proc_func_decl_noclass -> tkFunction, func_name, fp_list, + case 443: // inclass_proc_func_decl_noclass -> tkFunction, func_name, fp_list, // optional_method_modificators1, tkAssign, // expr_l1_func_decl_lambda, tkSemiColon +#line 2526 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2527 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortFuncDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, null, ValueStack[ValueStack.Depth-2].ex, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); +#line 2528 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2529 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); +#line 2530 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 443: // inclass_proc_func_decl_noclass -> tkProcedure, proc_name, fp_list, + case 444: // inclass_proc_func_decl_noclass -> tkProcedure, proc_name, fp_list, // optional_method_modificators1, tkAssign, // unlabelled_stmt, tkSemiColon +#line 2532 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2533 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = SyntaxTreeBuilder.BuildShortProcDefinition(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-4].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, ValueStack[ValueStack.Depth-2].stn as statement, LocationStack[LocationStack.Depth-7].Merge(LocationStack[LocationStack.Depth-4])); +#line 2534 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 2535 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new short_func_definition(CurrentSemanticValue.stn as procedure_definition); +#line 2536 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 444: // proc_func_external_block -> block + case 445: // proc_func_external_block -> block +#line 2541 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 445: // proc_func_external_block -> external_block + case 446: // proc_func_external_block -> external_block +#line 2543 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 446: // proc_name -> func_name + case 447: // proc_name -> func_name +#line 2548 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 447: // func_name -> func_meth_name_ident + case 448: // func_name -> func_meth_name_ident +#line 2553 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2554 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new method_name(null,null, ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); +#line 2555 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 448: // func_name -> func_class_name_ident_list, tkPoint, func_meth_name_ident + case 449: // func_name -> func_class_name_ident_list, tkPoint, func_meth_name_ident +#line 2557 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2558 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var ln = ValueStack[ValueStack.Depth-3].ob as List; +#line 2559 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var cnt = ln.Count; +#line 2560 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (cnt == 1) +#line 2561 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new method_name(null, ln[cnt-1], ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); +#line 2562 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 2563 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new method_name(ln, ln[cnt-1], ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); +#line 2564 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 449: // func_class_name_ident -> func_name_with_template_args + case 450: // func_class_name_ident -> func_name_with_template_args +#line 2569 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 450: // func_class_name_ident_list -> func_class_name_ident + case 451: // func_class_name_ident_list -> func_class_name_ident +#line 2574 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2575 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new List(); +#line 2576 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].id); +#line 2577 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 451: // func_class_name_ident_list -> func_class_name_ident_list, tkPoint, + case 452: // func_class_name_ident_list -> func_class_name_ident_list, tkPoint, // func_class_name_ident +#line 2579 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2580 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-3].ob as List).Add(ValueStack[ValueStack.Depth-1].id); +#line 2581 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; +#line 2582 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 452: // func_meth_name_ident -> func_name_with_template_args + case 453: // func_meth_name_ident -> func_name_with_template_args +#line 2587 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 453: // func_meth_name_ident -> operator_name_ident + case 454: // func_meth_name_ident -> operator_name_ident +#line 2589 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = (ident)ValueStack[ValueStack.Depth-1].ex; } break; - case 454: // func_meth_name_ident -> operator_name_ident, template_arguments + case 455: // func_meth_name_ident -> operator_name_ident, template_arguments +#line 2591 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = new template_operator_name(null, ValueStack[ValueStack.Depth-1].stn as ident_list, ValueStack[ValueStack.Depth-2].ex as operator_name_ident, CurrentLocationSpan); } break; - case 455: // func_name_with_template_args -> func_name_ident + case 456: // func_name_with_template_args -> func_name_ident +#line 2596 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 456: // func_name_with_template_args -> func_name_ident, template_arguments + case 457: // func_name_with_template_args -> func_name_ident, template_arguments +#line 2598 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2599 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.id = new template_type_name(ValueStack[ValueStack.Depth-2].id.name, ValueStack[ValueStack.Depth-1].stn as ident_list, CurrentLocationSpan); +#line 2600 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 457: // func_name_ident -> identifier + case 458: // func_name_ident -> identifier +#line 2605 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 458: // proc_header -> tkProcedure, proc_name, fp_list, optional_method_modificators, + case 459: // proc_header -> tkProcedure, proc_name, fp_list, optional_method_modificators, // optional_where_section +#line 2612 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2613 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new procedure_header(ValueStack[ValueStack.Depth-3].stn as formal_parameters, ValueStack[ValueStack.Depth-2].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-4].stn as method_name, ValueStack[ValueStack.Depth-1].stn as where_definition_list, CurrentLocationSpan); +#line 2614 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 459: // func_header -> tkFunction, func_name, fp_list, optional_method_modificators, + case 460: // func_header -> tkFunction, func_name, fp_list, optional_method_modificators, // optional_where_section +#line 2619 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2620 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new function_header(ValueStack[ValueStack.Depth-3].stn as formal_parameters, ValueStack[ValueStack.Depth-2].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-4].stn as method_name, ValueStack[ValueStack.Depth-1].stn as where_definition_list, null, CurrentLocationSpan); +#line 2621 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 460: // func_header -> tkFunction, func_name, fp_list, tkColon, fptype, + case 461: // func_header -> tkFunction, func_name, fp_list, tkColon, fptype, // optional_method_modificators, optional_where_section +#line 2623 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2624 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new function_header(ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-2].stn as procedure_attributes_list, ValueStack[ValueStack.Depth-6].stn as method_name, ValueStack[ValueStack.Depth-1].stn as where_definition_list, ValueStack[ValueStack.Depth-3].td as type_definition, CurrentLocationSpan); +#line 2625 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 461: // external_block -> tkExternal, external_directive_ident, tkName, + case 462: // external_block -> tkExternal, external_directive_ident, tkName, // external_directive_ident, tkSemiColon +#line 2630 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2631 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new external_directive(ValueStack[ValueStack.Depth-4].ex, ValueStack[ValueStack.Depth-2].ex, CurrentLocationSpan); +#line 2632 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 462: // external_block -> tkExternal, external_directive_ident, tkSemiColon + case 463: // external_block -> tkExternal, external_directive_ident, tkSemiColon +#line 2634 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2635 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new external_directive(ValueStack[ValueStack.Depth-2].ex, null, CurrentLocationSpan); +#line 2636 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 463: // external_block -> tkExternal, tkSemiColon + case 464: // external_block -> tkExternal, tkSemiColon +#line 2638 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2639 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new external_directive(null, null, CurrentLocationSpan); +#line 2640 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 464: // external_directive_ident -> identifier + case 465: // external_directive_ident -> identifier +#line 2645 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 465: // external_directive_ident -> literal + case 466: // external_directive_ident -> literal +#line 2647 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 466: // block -> decl_sect_list, compound_stmt, tkSemiColon + case 467: // block -> decl_sect_list, compound_stmt, tkSemiColon +#line 2652 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2653 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new block(ValueStack[ValueStack.Depth-3].stn as declarations, ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); +#line 2654 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 467: // inclass_block -> inclass_decl_sect_list, compound_stmt, tkSemiColon + case 468: // inclass_block -> inclass_decl_sect_list, compound_stmt, tkSemiColon +#line 2659 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2660 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new block(ValueStack[ValueStack.Depth-3].stn as declarations, ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); +#line 2661 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 468: // inclass_block -> external_block + case 469: // inclass_block -> external_block +#line 2663 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 469: // fp_list -> /* empty */ + case 470: // fp_list -> /* empty */ +#line 2668 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 470: // fp_list -> tkRoundOpen, tkRoundClose + case 471: // fp_list -> tkRoundOpen, tkRoundClose +#line 2670 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2671 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = null; +#line 2672 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 471: // fp_list -> tkRoundOpen, fp_sect_list, tkRoundClose + case 472: // fp_list -> tkRoundOpen, fp_sect_list, tkRoundClose +#line 2674 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2675 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 2676 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (CurrentSemanticValue.stn != null) +#line 2677 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 2678 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 472: // fp_sect_list -> fp_sect + case 473: // fp_sect_list -> fp_sect +#line 2683 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2684 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new formal_parameters(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); +#line 2685 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 473: // fp_sect_list -> fp_sect_list, tkSemiColon, fp_sect + case 474: // fp_sect_list -> fp_sect_list, tkSemiColon, fp_sect +#line 2687 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2688 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as formal_parameters).Add(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); +#line 2689 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 474: // fp_sect -> attribute_declarations, simple_fp_sect + case 475: // fp_sect -> attribute_declarations, simple_fp_sect +#line 2694 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2695 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-1].stn as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; +#line 2696 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 2697 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 475: // simple_fp_sect -> param_name_list, tkColon, fptype + case 476: // simple_fp_sect -> param_name_list, tkColon, fptype +#line 2702 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2703 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.none, null, CurrentLocationSpan); +#line 2704 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 476: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype + case 477: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype +#line 2706 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2707 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.var_parametr, null, CurrentLocationSpan); +#line 2708 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 477: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype + case 478: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype +#line 2710 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2711 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.const_parametr, null, CurrentLocationSpan); +#line 2712 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 478: // simple_fp_sect -> tkParams, param_name_list, tkColon, fptype + case 479: // simple_fp_sect -> tkParams, param_name_list, tkColon, fptype +#line 2714 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2715 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td,parametr_kind.params_parametr,null, CurrentLocationSpan); +#line 2716 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 479: // simple_fp_sect -> param_name_list, tkColon, fptype, tkAssign, expr + case 480: // simple_fp_sect -> param_name_list, tkColon, fptype, tkAssign, expr +#line 2718 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2719 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-3].td, parametr_kind.none, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 2720 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 480: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype, tkAssign, expr + case 481: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype, tkAssign, expr +#line 2722 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2723 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-3].td, parametr_kind.var_parametr, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 2724 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 481: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype, tkAssign, expr + case 482: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype, tkAssign, expr +#line 2726 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2727 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-5].stn as ident_list, ValueStack[ValueStack.Depth-3].td, parametr_kind.const_parametr, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 2728 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 482: // param_name_list -> param_name + case 483: // param_name_list -> param_name +#line 2733 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2734 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new ident_list(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 2735 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 483: // param_name_list -> param_name_list, tkComma, param_name + case 484: // param_name_list -> param_name_list, tkComma, param_name +#line 2737 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2738 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as ident_list).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 2739 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 484: // param_name -> identifier + case 485: // param_name -> identifier +#line 2744 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 485: // fptype -> type_ref + case 486: // fptype -> type_ref +#line 2749 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 486: // fptype_noproctype -> simple_type + case 487: // fptype_noproctype -> simple_type +#line 2754 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 487: // fptype_noproctype -> string_type + case 488: // fptype_noproctype -> string_type +#line 2756 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 488: // fptype_noproctype -> pointer_type + case 489: // fptype_noproctype -> pointer_type +#line 2758 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 489: // fptype_noproctype -> structured_type + case 490: // fptype_noproctype -> structured_type +#line 2760 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 490: // fptype_noproctype -> template_type + case 491: // fptype_noproctype -> template_type +#line 2762 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 491: // stmt -> unlabelled_stmt + case 492: // stmt -> unlabelled_stmt +#line 2767 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 492: // stmt -> label_name, tkColon, stmt + case 493: // stmt -> label_name, tkColon, stmt +#line 2769 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2770 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new labeled_statement(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 2771 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 493: // unlabelled_stmt -> /* empty */ + case 494: // unlabelled_stmt -> /* empty */ +#line 2776 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2777 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new empty_statement(); +#line 2778 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = null; +#line 2779 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 494: // unlabelled_stmt -> assignment + case 495: // unlabelled_stmt -> assignment +#line 2781 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 495: // unlabelled_stmt -> proc_call + case 496: // unlabelled_stmt -> proc_call +#line 2783 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 496: // unlabelled_stmt -> goto_stmt + case 497: // unlabelled_stmt -> goto_stmt +#line 2785 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 497: // unlabelled_stmt -> compound_stmt + case 498: // unlabelled_stmt -> compound_stmt +#line 2787 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 498: // unlabelled_stmt -> if_stmt + case 499: // unlabelled_stmt -> if_stmt +#line 2789 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 499: // unlabelled_stmt -> case_stmt + case 500: // unlabelled_stmt -> case_stmt +#line 2791 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 500: // unlabelled_stmt -> repeat_stmt + case 501: // unlabelled_stmt -> repeat_stmt +#line 2793 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 501: // unlabelled_stmt -> while_stmt + case 502: // unlabelled_stmt -> while_stmt +#line 2795 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 502: // unlabelled_stmt -> for_stmt + case 503: // unlabelled_stmt -> for_stmt +#line 2797 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 503: // unlabelled_stmt -> with_stmt + case 504: // unlabelled_stmt -> with_stmt +#line 2799 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 504: // unlabelled_stmt -> inherited_message + case 505: // unlabelled_stmt -> inherited_message +#line 2801 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 505: // unlabelled_stmt -> try_stmt + case 506: // unlabelled_stmt -> try_stmt +#line 2803 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 506: // unlabelled_stmt -> raise_stmt + case 507: // unlabelled_stmt -> raise_stmt +#line 2805 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 507: // unlabelled_stmt -> foreach_stmt + case 508: // unlabelled_stmt -> foreach_stmt +#line 2807 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 508: // unlabelled_stmt -> var_stmt + case 509: // unlabelled_stmt -> var_stmt +#line 2809 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 509: // unlabelled_stmt -> expr_as_stmt + case 510: // unlabelled_stmt -> expr_as_stmt +#line 2811 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 510: // unlabelled_stmt -> lock_stmt + case 511: // unlabelled_stmt -> lock_stmt +#line 2813 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 511: // unlabelled_stmt -> yield_stmt + case 512: // unlabelled_stmt -> yield_stmt +#line 2815 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 512: // unlabelled_stmt -> yield_sequence_stmt + case 513: // unlabelled_stmt -> yield_sequence_stmt +#line 2817 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 513: // unlabelled_stmt -> loop_stmt + case 514: // unlabelled_stmt -> loop_stmt +#line 2819 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 514: // unlabelled_stmt -> match_with + case 515: // unlabelled_stmt -> match_with +#line 2821 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 515: // loop_stmt -> tkLoop, expr_l1, tkDo, unlabelled_stmt + case 516: // loop_stmt -> tkLoop, expr_l1, tkDo, unlabelled_stmt +#line 2826 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2827 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new loop_stmt(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].stn as statement,CurrentLocationSpan); +#line 2828 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 516: // yield_stmt -> tkYield, expr_l1_func_decl_lambda + case 517: // yield_stmt -> tkYield, expr_l1_func_decl_lambda +#line 2833 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2834 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new yield_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); +#line 2835 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 517: // yield_sequence_stmt -> tkYield, tkSequence, expr_l1_func_decl_lambda + case 518: // yield_sequence_stmt -> tkYield, tkSequence, expr_l1_func_decl_lambda +#line 2840 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2841 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new yield_sequence_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); +#line 2842 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 518: // var_stmt -> tkVar, var_decl_part + case 519: // var_stmt -> tkVar, var_decl_part +#line 2847 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2848 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_statement(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); +#line 2849 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 519: // var_stmt -> tkRoundOpen, tkVar, identifier, tkComma, var_ident_list, + case 520: // var_stmt -> tkRoundOpen, tkVar, identifier, tkComma, var_ident_list, // tkRoundClose, tkAssign, expr +#line 2851 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2852 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-4].ob as ident_list).Insert(0,ValueStack[ValueStack.Depth-6].id); +#line 2853 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-4].ob as syntax_tree_node).source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3]); +#line 2854 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new assign_var_tuple(ValueStack[ValueStack.Depth-4].ob as ident_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 2855 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 520: // var_stmt -> tkVar, tkRoundOpen, identifier, tkComma, ident_list, tkRoundClose, + case 521: // var_stmt -> tkVar, tkRoundOpen, identifier, tkComma, ident_list, tkRoundClose, // tkAssign, expr +#line 2857 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2858 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-4].stn as ident_list).Insert(0,ValueStack[ValueStack.Depth-6].id); +#line 2859 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ValueStack[ValueStack.Depth-4].stn.source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3]); +#line 2860 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new assign_var_tuple(ValueStack[ValueStack.Depth-4].stn as ident_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 2861 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 521: // assignment -> var_reference, assign_operator, expr_with_func_decl_lambda + case 522: // assignment -> var_reference, assign_operator, expr_with_func_decl_lambda +#line 2866 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2867 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!(ValueStack[ValueStack.Depth-3].ex is addressed_value)) +#line 2868 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("LEFT_SIDE_CANNOT_BE_ASSIGNED_TO",CurrentLocationSpan); +#line 2869 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new assign(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 2870 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 522: // assignment -> tkRoundOpen, variable, tkComma, variable_list, tkRoundClose, + case 523: // assignment -> tkRoundOpen, variable, tkComma, variable_list, tkRoundClose, // assign_operator, expr +#line 2872 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2873 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].op.type != Operators.Assignment) +#line 2874 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("ONLY_BASE_ASSIGNMENT_FOR_TUPLE",LocationStack[LocationStack.Depth-2]); +#line 2875 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-4].ob as addressed_value_list).Insert(0,ValueStack[ValueStack.Depth-6].ex as addressed_value); +#line 2876 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-4].ob as syntax_tree_node).source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3]); +#line 2877 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new assign_tuple(ValueStack[ValueStack.Depth-4].ob as addressed_value_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 2878 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 523: // variable_list -> variable + case 524: // variable_list -> variable +#line 2896 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2897 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new addressed_value_list(ValueStack[ValueStack.Depth-1].ex as addressed_value,LocationStack[LocationStack.Depth-1]); +#line 2898 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 524: // variable_list -> variable_list, tkComma, variable + case 525: // variable_list -> variable_list, tkComma, variable +#line 2900 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2901 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-3].ob as addressed_value_list).Add(ValueStack[ValueStack.Depth-1].ex as addressed_value); +#line 2902 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-3].ob as syntax_tree_node).source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1]); +#line 2903 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; +#line 2904 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 525: // var_ident_list -> tkVar, identifier + case 526: // var_ident_list -> tkVar, identifier +#line 2909 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2910 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new ident_list(ValueStack[ValueStack.Depth-1].id,CurrentLocationSpan); +#line 2911 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 526: // var_ident_list -> var_ident_list, tkComma, tkVar, identifier + case 527: // var_ident_list -> var_ident_list, tkComma, tkVar, identifier +#line 2913 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2914 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-4].ob as ident_list).Add(ValueStack[ValueStack.Depth-1].id); +#line 2915 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-4].ob as ident_list).source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-2],LocationStack[LocationStack.Depth-1]); +#line 2916 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-4].ob; +#line 2917 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 527: // proc_call -> var_reference + case 528: // proc_call -> var_reference +#line 2922 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2923 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_call(ValueStack[ValueStack.Depth-1].ex as addressed_value, ValueStack[ValueStack.Depth-1].ex is ident, CurrentLocationSpan); +#line 2924 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 528: // goto_stmt -> tkGoto, label_name + case 529: // goto_stmt -> tkGoto, label_name +#line 2934 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2935 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new goto_statement(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); +#line 2936 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 529: // compound_stmt -> tkBegin, stmt_list, tkEnd + case 530: // compound_stmt -> tkBegin, stmt_list, tkEnd +#line 2941 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2942 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 2943 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; +#line 2944 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as statement_list).right_logical_bracket = ValueStack[ValueStack.Depth-1].ti; +#line 2945 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 2946 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 530: // stmt_list -> stmt + case 531: // stmt_list -> stmt +#line 2951 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2952 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, LocationStack[LocationStack.Depth-1]); +#line 2953 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 531: // stmt_list -> stmt_list, tkSemiColon, stmt + case 532: // stmt_list -> stmt_list, tkSemiColon, stmt +#line 2955 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2956 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as statement_list).Add(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 2957 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 532: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt + case 533: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt +#line 2962 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2963 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new if_node(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); +#line 2964 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 533: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt, tkElse, unlabelled_stmt + case 534: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt, tkElse, unlabelled_stmt +#line 2966 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2967 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new if_node(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].stn as statement, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 2968 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 534: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, else_case, tkEnd + case 535: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, else_case, tkEnd +#line 2973 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2974 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new match_with(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].stn as pattern_cases, ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); +#line 2975 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 535: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, tkSemiColon, else_case, + case 536: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, tkSemiColon, else_case, // tkEnd +#line 2977 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2978 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new match_with(ValueStack[ValueStack.Depth-6].ex, ValueStack[ValueStack.Depth-4].stn as pattern_cases, ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); +#line 2979 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 536: // pattern_cases -> pattern_case + case 537: // pattern_cases -> pattern_case +#line 2984 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2985 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new pattern_cases(ValueStack[ValueStack.Depth-1].stn as pattern_case); +#line 2986 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 537: // pattern_cases -> pattern_cases, tkSemiColon, pattern_case + case 538: // pattern_cases -> pattern_cases, tkSemiColon, pattern_case +#line 2988 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2989 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as pattern_cases).Add(ValueStack[ValueStack.Depth-1].stn as pattern_case); +#line 2990 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 538: // pattern_case -> pattern_optional_var, tkWhen, expr_l1, tkColon, unlabelled_stmt + case 539: // pattern_case -> pattern_optional_var, tkWhen, expr_l1, tkColon, unlabelled_stmt +#line 2995 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 2996 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-5].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].ex, CurrentLocationSpan); +#line 2997 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 539: // pattern_case -> deconstruction_or_const_pattern, tkColon, unlabelled_stmt + case 540: // pattern_case -> deconstruction_or_const_pattern, tkColon, unlabelled_stmt +#line 2999 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3000 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-3].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); +#line 3001 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 540: // pattern_case -> collection_pattern, tkColon, unlabelled_stmt + case 541: // pattern_case -> collection_pattern, tkColon, unlabelled_stmt +#line 3003 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3004 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-3].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); +#line 3005 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 541: // pattern_case -> tuple_pattern, tkWhen, expr_l1, tkColon, unlabelled_stmt + case 542: // pattern_case -> tuple_pattern, tkWhen, expr_l1, tkColon, unlabelled_stmt +#line 3007 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3008 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-5].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].ex, CurrentLocationSpan); +#line 3009 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 542: // pattern_case -> tuple_pattern, tkColon, unlabelled_stmt + case 543: // pattern_case -> tuple_pattern, tkColon, unlabelled_stmt +#line 3011 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3012 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-3].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); +#line 3013 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 543: // case_stmt -> tkCase, expr_l1, tkOf, case_list, else_case, tkEnd + case 544: // case_stmt -> tkCase, expr_l1, tkOf, case_list, else_case, tkEnd +#line 3018 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3019 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new case_node(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].stn as case_variants, ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); +#line 3020 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 544: // case_stmt -> tkCase, expr_l1, tkOf, case_list, tkSemiColon, else_case, tkEnd + case 545: // case_stmt -> tkCase, expr_l1, tkOf, case_list, tkSemiColon, else_case, tkEnd +#line 3022 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3023 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new case_node(ValueStack[ValueStack.Depth-6].ex, ValueStack[ValueStack.Depth-4].stn as case_variants, ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); +#line 3024 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 545: // case_stmt -> tkCase, expr_l1, tkOf, else_case, tkEnd + case 546: // case_stmt -> tkCase, expr_l1, tkOf, else_case, tkEnd +#line 3026 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3027 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new case_node(ValueStack[ValueStack.Depth-4].ex, NewCaseItem(new empty_statement(), null), ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); +#line 3028 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 546: // case_list -> case_item + case 547: // case_list -> case_item +#line 3033 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3034 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-1].stn is empty_statement) +#line 3035 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewCaseItem(ValueStack[ValueStack.Depth-1].stn, null); +#line 3036 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.stn = NewCaseItem(ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); +#line 3037 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 547: // case_list -> case_list, tkSemiColon, case_item + case 548: // case_list -> case_list, tkSemiColon, case_item +#line 3039 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3040 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = AddCaseItem(ValueStack[ValueStack.Depth-3].stn as case_variants, ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); +#line 3041 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 548: // case_item -> case_label_list, tkColon, unlabelled_stmt + case 549: // case_item -> case_label_list, tkColon, unlabelled_stmt +#line 3046 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3047 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new case_variant(ValueStack[ValueStack.Depth-3].stn as expression_list, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 3048 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 549: // case_label_list -> case_label + case 550: // case_label_list -> case_label +#line 3053 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3054 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3055 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 550: // case_label_list -> case_label_list, tkComma, case_label + case 551: // case_label_list -> case_label_list, tkComma, case_label +#line 3057 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3058 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3059 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 551: // case_label -> const_elem + case 552: // case_label -> const_elem +#line 3064 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 552: // else_case -> /* empty */ + case 553: // else_case -> /* empty */ +#line 3069 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null;} break; - case 553: // else_case -> tkElse, stmt_list + case 554: // else_case -> tkElse, stmt_list +#line 3071 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 554: // repeat_stmt -> tkRepeat, stmt_list, tkUntil, expr + case 555: // repeat_stmt -> tkRepeat, stmt_list, tkUntil, expr +#line 3076 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3077 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new repeat_node(ValueStack[ValueStack.Depth-3].stn as statement_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3078 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-3].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-4].ti; +#line 3079 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-3].stn as statement_list).right_logical_bracket = ValueStack[ValueStack.Depth-2].ti; +#line 3080 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ValueStack[ValueStack.Depth-3].stn.source_context = LocationStack[LocationStack.Depth-4].Merge(LocationStack[LocationStack.Depth-2]); +#line 3081 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 555: // while_stmt -> tkWhile, expr_l1, optional_tk_do, unlabelled_stmt + case 556: // while_stmt -> tkWhile, expr_l1, optional_tk_do, unlabelled_stmt +#line 3086 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3087 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewWhileStmt(ValueStack[ValueStack.Depth-4].ti, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-2].ti, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 3088 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 556: // optional_tk_do -> tkDo + case 557: // optional_tk_do -> tkDo +#line 3093 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 557: // optional_tk_do -> /* empty */ + case 558: // optional_tk_do -> /* empty */ +#line 3095 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = null; } break; - case 558: // lock_stmt -> tkLock, expr_l1, tkDo, unlabelled_stmt + case 559: // lock_stmt -> tkLock, expr_l1, tkDo, unlabelled_stmt +#line 3100 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3101 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new lock_stmt(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 3102 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 559: // index_or_nothing -> tkIndex, tkIdentifier + case 560: // index_or_nothing -> tkIndex, tkIdentifier +#line 3107 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 560: // index_or_nothing -> /* empty */ + case 561: // index_or_nothing -> /* empty */ +#line 3109 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = null; } break; - case 561: // optional_type_specification -> tkColon, type_ref + case 562: // optional_type_specification -> tkColon, type_ref +#line 3114 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 562: // optional_type_specification -> /* empty */ + case 563: // optional_type_specification -> /* empty */ +#line 3116 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = null; } break; - case 563: // optional_var -> tkVar + case 564: // optional_var -> tkVar +#line 3121 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = true; } break; - case 564: // optional_var -> /* empty */ + case 565: // optional_var -> /* empty */ +#line 3123 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = false; } break; - case 565: // for_cycle_type -> tkTo + case 566: // for_cycle_type -> tkTo +#line 3128 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = for_cycle_type.to; } break; - case 566: // for_cycle_type -> tkDownto + case 567: // for_cycle_type -> tkDownto +#line 3130 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ob = for_cycle_type.downto; } break; - case 567: // foreach_stmt -> tkForeach, identifier, optional_type_specification, tkIn, + case 568: // foreach_stmt -> tkForeach, identifier, optional_type_specification, tkIn, // expr_l1, index_or_nothing, tkDo, unlabelled_stmt +#line 3135 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3136 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-7].id, ValueStack[ValueStack.Depth-6].td, ValueStack[ValueStack.Depth-4].ex, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].id, CurrentLocationSpan); +#line 3137 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-6].td == null) +#line 3138 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddWarningFromResource("USING_UNLOCAL_FOREACH_VARIABLE", ValueStack[ValueStack.Depth-7].id.source_context); +#line 3139 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 568: // foreach_stmt -> tkForeach, tkVar, identifier, optional_type_specification, tkIn, + case 569: // foreach_stmt -> tkForeach, tkVar, identifier, optional_type_specification, tkIn, // expr_l1, index_or_nothing, tkDo, unlabelled_stmt +#line 3141 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3142 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-6].td == null) +#line 3143 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-7].id, new no_type_foreach(), ValueStack[ValueStack.Depth-4].ex, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].id, CurrentLocationSpan); +#line 3144 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-7].id, ValueStack[ValueStack.Depth-6].td, ValueStack[ValueStack.Depth-4].ex, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].id, CurrentLocationSpan); +#line 3145 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 569: // foreach_stmt -> tkForeach, tkVar, tkRoundOpen, ident_list, tkRoundClose, tkIn, + case 570: // foreach_stmt -> tkForeach, tkVar, tkRoundOpen, ident_list, tkRoundClose, tkIn, // expr_l1, index_or_nothing, tkDo, unlabelled_stmt +#line 3147 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3148 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 3149 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3150 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var il = ValueStack[ValueStack.Depth-7].stn as ident_list; +#line 3151 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" il.source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6]); // н�?жно для �?о�?ма�?и�?ования CurrentSemanticValue.stn = new foreach_stmt_formatting(il,ValueStack[ValueStack.Depth-4].ex,ValueStack[ValueStack.Depth-1].stn as statement,ValueStack[ValueStack.Depth-3].id,CurrentLocationSpan); +#line 3152 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 3153 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 3154 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3155 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // �?с�?�? п�?облема - непоня�?но, где здес�? сдела�?�? семан�?�?еский �?зел для п�?ове�?ки // �?�?ове�?и�?�? можно и в foreach, но где-�?о должен б�?�?�? ма�?ке�?, �?�?о э�?о са�?а�?н�?й �?зел // Нап�?име�?, иден�?и�?ика�?о�? #fe - но э�?о пло�?ая идея var id = NewId("#fe",LocationStack[LocationStack.Depth-7]); +#line 3156 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var tttt = new assign_var_tuple(ValueStack[ValueStack.Depth-7].stn as ident_list, id, CurrentLocationSpan); +#line 3157 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" statement_list nine = ValueStack[ValueStack.Depth-1].stn is statement_list ? ValueStack[ValueStack.Depth-1].stn as statement_list : new statement_list(ValueStack[ValueStack.Depth-1].stn as statement,LocationStack[LocationStack.Depth-2]); +#line 3158 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" nine.Insert(0,tttt); +#line 3159 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var fe = new foreach_stmt(id, new no_type_foreach(), ValueStack[ValueStack.Depth-4].ex, nine, ValueStack[ValueStack.Depth-3].id, CurrentLocationSpan); +#line 3160 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.ext = ValueStack[ValueStack.Depth-7].stn as ident_list; +#line 3161 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = fe; +#line 3162 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } - } - break; - case 570: // for_stmt -> tkFor, optional_var, identifier, optional_type_specification, - // tkAssign, expr_l1, for_cycle_type, expr_l1, optional_tk_do, - // unlabelled_stmt -{ - CurrentSemanticValue.stn = NewForStmt((bool)ValueStack[ValueStack.Depth-9].ob, ValueStack[ValueStack.Depth-8].id, ValueStack[ValueStack.Depth-7].td, ValueStack[ValueStack.Depth-5].ex, (for_cycle_type)ValueStack[ValueStack.Depth-4].ob, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-2].ti, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); +#line 3163 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 571: // for_stmt -> tkFor, optional_var, identifier, optional_type_specification, + // tkAssign, expr_l1, for_cycle_type, expr_l1, optional_tk_do, + // unlabelled_stmt +#line 3172 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +{ +#line 3173 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.stn = NewForStmt((bool)ValueStack[ValueStack.Depth-9].ob, ValueStack[ValueStack.Depth-8].id, ValueStack[ValueStack.Depth-7].td, ValueStack[ValueStack.Depth-5].ex, (for_cycle_type)ValueStack[ValueStack.Depth-4].ob, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-2].ti, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); +#line 3174 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + } + break; + case 572: // for_stmt -> tkFor, optional_var, identifier, optional_type_specification, // tkAssign, expr_l1, for_cycle_type, expr_l1, tkStep, expr_l1, tkDo, // unlabelled_stmt +#line 3176 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3177 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewForStmt((bool)ValueStack[ValueStack.Depth-11].ob, ValueStack[ValueStack.Depth-10].id, ValueStack[ValueStack.Depth-9].td, ValueStack[ValueStack.Depth-7].ex, (for_cycle_type)ValueStack[ValueStack.Depth-6].ob, ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-4].ti, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].ex, CurrentLocationSpan); +#line 3178 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 572: // with_stmt -> tkWith, expr_list, tkDo, unlabelled_stmt + case 573: // with_stmt -> tkWith, expr_list, tkDo, unlabelled_stmt +#line 3183 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3184 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new with_statement(ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].stn as expression_list, CurrentLocationSpan); +#line 3185 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 573: // inherited_message -> tkInherited + case 574: // inherited_message -> tkInherited +#line 3190 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3191 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new inherited_message(); +#line 3192 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 3193 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 574: // try_stmt -> tkTry, stmt_list, try_handler + case 575: // try_stmt -> tkTry, stmt_list, try_handler +#line 3198 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3199 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new try_stmt(ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].stn as try_handler, CurrentLocationSpan); +#line 3200 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-2].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; +#line 3201 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ValueStack[ValueStack.Depth-2].stn.source_context = LocationStack[LocationStack.Depth-3].Merge(LocationStack[LocationStack.Depth-2]); +#line 3202 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 575: // try_handler -> tkFinally, stmt_list, tkEnd + case 576: // try_handler -> tkFinally, stmt_list, tkEnd +#line 3207 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3208 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new try_handler_finally(ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); +#line 3209 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-2].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; +#line 3210 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-2].stn as statement_list).right_logical_bracket = ValueStack[ValueStack.Depth-1].ti; +#line 3211 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 576: // try_handler -> tkExcept, exception_block, tkEnd + case 577: // try_handler -> tkExcept, exception_block, tkEnd +#line 3213 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3214 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new try_handler_except((exception_block)ValueStack[ValueStack.Depth-2].stn, CurrentLocationSpan); +#line 3215 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-2].stn as exception_block).stmt_list != null) +#line 3216 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3217 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-2].stn as exception_block).stmt_list.source_context = CurrentLocationSpan; +#line 3218 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-2].stn as exception_block).source_context = CurrentLocationSpan; +#line 3219 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 3220 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 577: // exception_block -> exception_handler_list, exception_block_else_branch + case 578: // exception_block -> exception_handler_list, exception_block_else_branch +#line 3225 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3226 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new exception_block(null, (exception_handler_list)ValueStack[ValueStack.Depth-2].stn, (statement_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); +#line 3227 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 578: // exception_block -> exception_handler_list, tkSemiColon, + case 579: // exception_block -> exception_handler_list, tkSemiColon, // exception_block_else_branch +#line 3229 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3230 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new exception_block(null, (exception_handler_list)ValueStack[ValueStack.Depth-3].stn, (statement_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); +#line 3231 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 579: // exception_block -> stmt_list + case 580: // exception_block -> stmt_list +#line 3233 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3234 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new exception_block(ValueStack[ValueStack.Depth-1].stn as statement_list, null, null, LocationStack[LocationStack.Depth-1]); +#line 3235 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 580: // exception_handler_list -> exception_handler + case 581: // exception_handler_list -> exception_handler +#line 3240 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3241 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new exception_handler_list(ValueStack[ValueStack.Depth-1].stn as exception_handler, CurrentLocationSpan); +#line 3242 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 581: // exception_handler_list -> exception_handler_list, tkSemiColon, + case 582: // exception_handler_list -> exception_handler_list, tkSemiColon, // exception_handler +#line 3244 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3245 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as exception_handler_list).Add(ValueStack[ValueStack.Depth-1].stn as exception_handler, CurrentLocationSpan); +#line 3246 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 582: // exception_block_else_branch -> /* empty */ + case 583: // exception_block_else_branch -> /* empty */ +#line 3251 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 583: // exception_block_else_branch -> tkElse, stmt_list + case 584: // exception_block_else_branch -> tkElse, stmt_list +#line 3253 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 584: // exception_handler -> tkOn, exception_identifier, tkDo, unlabelled_stmt + case 585: // exception_handler -> tkOn, exception_identifier, tkDo, unlabelled_stmt +#line 3258 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3259 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new exception_handler((ValueStack[ValueStack.Depth-3].stn as exception_ident).variable, (ValueStack[ValueStack.Depth-3].stn as exception_ident).type_name, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 3260 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 585: // exception_identifier -> exception_class_type_identifier + case 586: // exception_identifier -> exception_class_type_identifier +#line 3265 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3266 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new exception_ident(null, (named_type_reference)ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 3267 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 586: // exception_identifier -> exception_variable, tkColon, + case 587: // exception_identifier -> exception_variable, tkColon, // exception_class_type_identifier +#line 3269 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3270 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new exception_ident(ValueStack[ValueStack.Depth-3].id, (named_type_reference)ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 3271 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 587: // exception_class_type_identifier -> simple_type_identifier + case 588: // exception_class_type_identifier -> simple_type_identifier +#line 3276 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 588: // exception_variable -> identifier + case 589: // exception_variable -> identifier +#line 3281 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 589: // raise_stmt -> tkRaise + case 590: // raise_stmt -> tkRaise +#line 3286 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3287 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new raise_stmt(); +#line 3288 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 3289 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 590: // raise_stmt -> tkRaise, expr + case 591: // raise_stmt -> tkRaise, expr +#line 3291 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3292 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new raise_stmt(ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); +#line 3293 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 591: // expr_list -> expr_with_func_decl_lambda + case 592: // expr_list -> expr_with_func_decl_lambda +#line 3298 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3299 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3300 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 592: // expr_list -> expr_list, tkComma, expr_with_func_decl_lambda + case 593: // expr_list -> expr_list, tkComma, expr_with_func_decl_lambda +#line 3302 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3303 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3304 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 593: // expr_list_func_param -> expr_with_func_decl_lambda_ass + case 594: // expr_list_func_param -> expr_with_func_decl_lambda_ass +#line 3309 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3310 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3311 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 594: // expr_list_func_param -> expr_list_func_param, tkComma, + case 595: // expr_list_func_param -> expr_list_func_param, tkComma, // expr_with_func_decl_lambda_ass +#line 3313 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3314 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3315 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 595: // expr_as_stmt -> allowable_expr_as_stmt + case 596: // expr_as_stmt -> allowable_expr_as_stmt +#line 3320 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3321 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new expression_as_statement(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3322 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 596: // allowable_expr_as_stmt -> new_expr + case 597: // allowable_expr_as_stmt -> new_expr +#line 3327 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 597: // expr_with_func_decl_lambda -> expr + case 598: // expr_with_func_decl_lambda -> expr +#line 3332 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 598: // expr_with_func_decl_lambda -> func_decl_lambda + case 599: // expr_with_func_decl_lambda -> func_decl_lambda +#line 3334 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 599: // expr_with_func_decl_lambda -> tkInherited + case 600: // expr_with_func_decl_lambda -> tkInherited +#line 3336 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new inherited_ident("", CurrentLocationSpan); } break; - case 600: // expr_with_func_decl_lambda_ass -> expr + case 601: // expr_with_func_decl_lambda_ass -> expr +#line 3341 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 601: // expr_with_func_decl_lambda_ass -> identifier, tkAssign, expr_l1 + case 602: // expr_with_func_decl_lambda_ass -> identifier, tkAssign, expr_l1 +#line 3343 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new name_assign_expr(ValueStack[ValueStack.Depth-3].id,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); } break; - case 602: // expr_with_func_decl_lambda_ass -> func_decl_lambda + case 603: // expr_with_func_decl_lambda_ass -> func_decl_lambda +#line 3345 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 603: // expr_with_func_decl_lambda_ass -> tkInherited + case 604: // expr_with_func_decl_lambda_ass -> tkInherited +#line 3347 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new inherited_ident("", CurrentLocationSpan); } break; - case 604: // expr -> expr_l1 + case 605: // expr -> expr_l1 +#line 3352 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 605: // expr -> format_expr + case 606: // expr -> format_expr +#line 3354 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 606: // expr -> expr, tkTo, expr_l1 + case 607: // expr -> expr, tkTo, expr_l1 +#line 3356 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new to_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 607: // expr_l1 -> expr_dq + case 608: // expr_l1 -> expr_dq +#line 3361 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 608: // expr_l1 -> question_expr + case 609: // expr_l1 -> question_expr +#line 3363 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 609: // expr_l1 -> new_question_expr + case 610: // expr_l1 -> new_question_expr +#line 3365 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 610: // expr_l1_for_question_expr -> expr_dq + case 611: // expr_l1_for_question_expr -> expr_dq +#line 3372 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 611: // expr_l1_for_question_expr -> question_expr + case 612: // expr_l1_for_question_expr -> question_expr +#line 3374 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 612: // expr_l1_for_new_question_expr -> expr_dq + case 613: // expr_l1_for_new_question_expr -> expr_dq +#line 3379 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 613: // expr_l1_for_new_question_expr -> new_question_expr + case 614: // expr_l1_for_new_question_expr -> new_question_expr +#line 3381 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 614: // expr_l1_func_decl_lambda -> expr_l1 + case 615: // expr_l1_func_decl_lambda -> expr_l1 +#line 3386 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 615: // expr_l1_func_decl_lambda -> func_decl_lambda + case 616: // expr_l1_func_decl_lambda -> func_decl_lambda +#line 3388 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 616: // expr_l1_for_lambda -> expr_dq + case 617: // expr_l1_for_lambda -> expr_dq +#line 3393 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 617: // expr_l1_for_lambda -> question_expr + case 618: // expr_l1_for_lambda -> question_expr +#line 3395 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 618: // expr_l1_for_lambda -> func_decl_lambda + case 619: // expr_l1_for_lambda -> func_decl_lambda +#line 3397 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 619: // expr_dq -> relop_expr + case 620: // expr_dq -> relop_expr +#line 3402 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 620: // expr_dq -> expr_dq, tkDoubleQuestion, relop_expr + case 621: // expr_dq -> expr_dq, tkDoubleQuestion, relop_expr +#line 3404 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new double_question_node(ValueStack[ValueStack.Depth-3].ex as expression, ValueStack[ValueStack.Depth-1].ex as expression, CurrentLocationSpan);} break; - case 621: // sizeof_expr -> tkSizeOf, tkRoundOpen, simple_or_template_type_reference, + case 622: // sizeof_expr -> tkSizeOf, tkRoundOpen, simple_or_template_type_reference, // tkRoundClose +#line 3409 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3410 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new sizeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, null, CurrentLocationSpan); +#line 3411 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 622: // typeof_expr -> tkTypeOf, tkRoundOpen, simple_or_template_type_reference, + case 623: // typeof_expr -> tkTypeOf, tkRoundOpen, simple_or_template_type_reference, // tkRoundClose +#line 3416 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3417 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new typeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); +#line 3418 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 623: // typeof_expr -> tkTypeOf, tkRoundOpen, empty_template_type_reference, + case 624: // typeof_expr -> tkTypeOf, tkRoundOpen, empty_template_type_reference, // tkRoundClose +#line 3421 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3422 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new typeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); +#line 3423 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 624: // question_expr -> expr_l1_for_question_expr, tkQuestion, + case 625: // question_expr -> expr_l1_for_question_expr, tkQuestion, // expr_l1_for_question_expr, tkColon, // expr_l1_for_question_expr +#line 3428 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3429 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-3].ex is nil_const && ValueStack[ValueStack.Depth-1].ex is nil_const) +#line 3430 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("TWO_NILS_IN_QUESTION_EXPR",LocationStack[LocationStack.Depth-3]); +#line 3431 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new question_colon_expression(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3432 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 625: // new_question_expr -> tkIf, expr_l1_for_new_question_expr, tkThen, + case 626: // new_question_expr -> tkIf, expr_l1_for_new_question_expr, tkThen, // expr_l1_for_new_question_expr, tkElse, // expr_l1_for_new_question_expr +#line 3437 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3438 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 3439 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3440 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new if_expr_new(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3441 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 3442 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 3443 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3444 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-3].ex is nil_const && ValueStack[ValueStack.Depth-1].ex is nil_const) +#line 3445 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("TWO_NILS_IN_QUESTION_EXPR",LocationStack[LocationStack.Depth-3]); +#line 3446 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new question_colon_expression(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3447 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 3448 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 626: // empty_template_type_reference -> simple_type_identifier, + case 627: // empty_template_type_reference -> simple_type_identifier, // template_type_empty_params +#line 3454 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3455 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-2].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); +#line 3456 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 627: // empty_template_type_reference -> simple_type_identifier, tkAmpersend, + case 628: // empty_template_type_reference -> simple_type_identifier, tkAmpersend, // template_type_empty_params +#line 3458 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3459 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-3].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); +#line 3460 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 628: // simple_or_template_type_reference -> simple_type_identifier + case 629: // simple_or_template_type_reference -> simple_type_identifier +#line 3465 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3466 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 3467 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 629: // simple_or_template_type_reference -> simple_type_identifier, + case 630: // simple_or_template_type_reference -> simple_type_identifier, // template_type_params +#line 3469 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3470 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-2].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); +#line 3471 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 630: // simple_or_template_type_reference -> simple_type_identifier, tkAmpersend, + case 631: // simple_or_template_type_reference -> simple_type_identifier, tkAmpersend, // template_type_params +#line 3473 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3474 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-3].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); +#line 3475 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 631: // simple_or_template_or_question_type_reference -> + case 632: // simple_or_template_or_question_type_reference -> // simple_or_template_type_reference +#line 3480 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3481 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 3482 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 632: // simple_or_template_or_question_type_reference -> simple_type_question + case 633: // simple_or_template_or_question_type_reference -> simple_type_question +#line 3484 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3485 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 3486 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 633: // optional_array_initializer -> tkRoundOpen, typed_const_list, tkRoundClose + case 634: // optional_array_initializer -> tkRoundOpen, typed_const_list, tkRoundClose +#line 3491 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3492 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new array_const((expression_list)ValueStack[ValueStack.Depth-2].stn, CurrentLocationSpan); +#line 3493 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 635: // new_expr -> tkNew, simple_or_template_type_reference, + case 636: // new_expr -> tkNew, simple_or_template_type_reference, // optional_expr_list_with_bracket +#line 3499 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3500 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new new_expr(ValueStack[ValueStack.Depth-2].td, ValueStack[ValueStack.Depth-1].stn as expression_list, false, null, CurrentLocationSpan); +#line 3501 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 636: // new_expr -> tkNew, simple_or_template_type_reference, tkSquareOpen, + case 637: // new_expr -> tkNew, simple_or_template_type_reference, tkSquareOpen, // optional_expr_list, tkSquareClose, optional_array_initializer +#line 3503 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3504 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var el = ValueStack[ValueStack.Depth-3].stn as expression_list; +#line 3505 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (el == null) +#line 3506 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3507 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var cnt = 0; +#line 3508 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var ac = ValueStack[ValueStack.Depth-1].stn as array_const; +#line 3509 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ac != null && ac.elements != null) +#line 3510 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" cnt = ac.elements.Count; +#line 3511 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else parserTools.AddErrorFromResource("WITHOUT_INIT_AND_SIZE",LocationStack[LocationStack.Depth-2]); +#line 3512 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" el = new expression_list(new int32_const(cnt),LocationStack[LocationStack.Depth-6]); +#line 3513 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 3514 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new new_expr(ValueStack[ValueStack.Depth-5].td, el, true, ValueStack[ValueStack.Depth-1].stn as array_const, CurrentLocationSpan); +#line 3515 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 637: // new_expr -> tkNew, tkClass, tkRoundOpen, list_fields_in_unnamed_object, + case 638: // new_expr -> tkNew, tkClass, tkRoundOpen, list_fields_in_unnamed_object, // tkRoundClose +#line 3517 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3518 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // sugared node var l = ValueStack[ValueStack.Depth-2].ob as name_assign_expr_list; +#line 3519 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var exprs = l.name_expr.Select(x=>x.expr.Clone() as expression).ToList(); +#line 3520 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var typename = "AnonymousType#"+Guid(); +#line 3521 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var type = new named_type_reference(typename,LocationStack[LocationStack.Depth-5]); +#line 3522 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 3523 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // node new_expr - for code generation of new node var ne = new new_expr(type, new expression_list(exprs), CurrentLocationSpan); +#line 3524 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // node unnamed_type_object - for formatting and code generation (new node and Anonymous class) CurrentSemanticValue.ex = new unnamed_type_object(l, true, ne, CurrentLocationSpan); +#line 3525 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 638: // field_in_unnamed_object -> identifier, tkAssign, expr_l1 + case 639: // field_in_unnamed_object -> identifier, tkAssign, expr_l1 +#line 3533 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3534 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-1].ex is nil_const) +#line 3535 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("NIL_IN_UNNAMED_OBJECT",CurrentLocationSpan); +#line 3536 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new name_assign_expr(ValueStack[ValueStack.Depth-3].id,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); +#line 3537 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 639: // field_in_unnamed_object -> expr_l1 + case 640: // field_in_unnamed_object -> expr_l1 +#line 3539 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3540 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ident name = null; +#line 3541 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var id = ValueStack[ValueStack.Depth-1].ex as ident; +#line 3542 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" dot_node dot; +#line 3543 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (id != null) +#line 3544 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" name = id; +#line 3545 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 3546 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3547 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" dot = ValueStack[ValueStack.Depth-1].ex as dot_node; +#line 3548 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (dot != null) +#line 3549 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3550 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" name = dot.right as ident; +#line 3551 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 3552 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 3553 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (name == null) +#line 3554 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.errors.Add(new bad_anon_type(parserTools.currentFileName, LocationStack[LocationStack.Depth-1], null)); +#line 3555 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new name_assign_expr(name,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); +#line 3556 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 640: // list_fields_in_unnamed_object -> field_in_unnamed_object + case 641: // list_fields_in_unnamed_object -> field_in_unnamed_object +#line 3561 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3562 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var l = new name_assign_expr_list(); +#line 3563 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = l.Add(ValueStack[ValueStack.Depth-1].ob as name_assign_expr); +#line 3564 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 641: // list_fields_in_unnamed_object -> list_fields_in_unnamed_object, tkComma, + case 642: // list_fields_in_unnamed_object -> list_fields_in_unnamed_object, tkComma, // field_in_unnamed_object +#line 3566 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3567 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var nel = ValueStack[ValueStack.Depth-3].ob as name_assign_expr_list; +#line 3568 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var ss = nel.name_expr.Select(ne=>ne.name.name).FirstOrDefault(x=>string.Compare(x,(ValueStack[ValueStack.Depth-1].ob as name_assign_expr).name.name,true)==0); +#line 3569 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ss != null) +#line 3570 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.errors.Add(new anon_type_duplicate_name(parserTools.currentFileName, LocationStack[LocationStack.Depth-1], null)); +#line 3571 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" nel.Add(ValueStack[ValueStack.Depth-1].ob as name_assign_expr); +#line 3572 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; +#line 3573 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 642: // optional_expr_list_with_bracket -> /* empty */ + case 643: // optional_expr_list_with_bracket -> /* empty */ +#line 3585 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 643: // optional_expr_list_with_bracket -> tkRoundOpen, optional_expr_list, + case 644: // optional_expr_list_with_bracket -> tkRoundOpen, optional_expr_list, // tkRoundClose +#line 3587 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 644: // relop_expr -> simple_expr + case 645: // relop_expr -> simple_expr +#line 3592 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 645: // relop_expr -> relop_expr, relop, simple_expr + case 646: // relop_expr -> relop_expr, relop, simple_expr +#line 3594 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3595 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].op.type == Operators.NotIn) +#line 3596 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new un_expr(new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, Operators.In, CurrentLocationSpan),Operators.LogicalNOT,CurrentLocationSpan); +#line 3597 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 3598 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 3599 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 646: // relop_expr -> relop_expr, relop, new_question_expr + case 647: // relop_expr -> relop_expr, relop, new_question_expr +#line 3601 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3602 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].op.type == Operators.NotIn) +#line 3603 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new un_expr(new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, Operators.In, CurrentLocationSpan),Operators.LogicalNOT,CurrentLocationSpan); +#line 3604 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 3605 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 3606 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 647: // relop_expr -> is_type_expr, tkRoundOpen, pattern_out_param_list, tkRoundClose + case 648: // relop_expr -> is_type_expr, tkRoundOpen, pattern_out_param_list, tkRoundClose +#line 3608 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3609 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var isTypeCheck = ValueStack[ValueStack.Depth-4].ex as typecast_node; +#line 3610 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var deconstructorPattern = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, isTypeCheck.type_def, null, CurrentLocationSpan); +#line 3611 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new is_pattern_expr(isTypeCheck.expr, deconstructorPattern, CurrentLocationSpan); +#line 3612 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 648: // pattern -> simple_or_template_type_reference, tkRoundOpen, + case 649: // pattern -> simple_or_template_type_reference, tkRoundOpen, // pattern_out_param_list, tkRoundClose +#line 3627 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3628 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, ValueStack[ValueStack.Depth-4].td, null, CurrentLocationSpan); +#line 3629 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 649: // pattern_optional_var -> simple_or_template_type_reference, tkRoundOpen, + case 650: // pattern_optional_var -> simple_or_template_type_reference, tkRoundOpen, // pattern_out_param_list_optional_var, tkRoundClose +#line 3634 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3635 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, ValueStack[ValueStack.Depth-4].td, null, CurrentLocationSpan); +#line 3636 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 650: // deconstruction_or_const_pattern -> simple_or_template_type_reference, + case 651: // deconstruction_or_const_pattern -> simple_or_template_type_reference, // tkRoundOpen, // pattern_out_param_list_optional_var, // tkRoundClose +#line 3641 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3642 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, ValueStack[ValueStack.Depth-4].td, null, CurrentLocationSpan); +#line 3643 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 651: // deconstruction_or_const_pattern -> const_pattern_expr_list + case 652: // deconstruction_or_const_pattern -> const_pattern_expr_list +#line 3645 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3646 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new const_pattern(ValueStack[ValueStack.Depth-1].ob as List, CurrentLocationSpan); +#line 3647 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 652: // const_pattern_expr_list -> const_pattern_expression + case 653: // const_pattern_expr_list -> const_pattern_expression +#line 3652 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3653 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new List(); +#line 3654 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn); +#line 3655 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 653: // const_pattern_expr_list -> const_pattern_expr_list, tkComma, + case 654: // const_pattern_expr_list -> const_pattern_expr_list, tkComma, // const_pattern_expression +#line 3657 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3658 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var list = ValueStack[ValueStack.Depth-3].ob as List; +#line 3659 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" list.Add(ValueStack[ValueStack.Depth-1].stn); +#line 3660 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = list; +#line 3661 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 654: // const_pattern_expression -> literal_or_number + case 655: // const_pattern_expression -> literal_or_number +#line 3666 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } break; - case 655: // const_pattern_expression -> simple_or_template_type_reference + case 656: // const_pattern_expression -> simple_or_template_type_reference +#line 3668 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].td; } break; - case 656: // const_pattern_expression -> tkNil + case 657: // const_pattern_expression -> tkNil +#line 3670 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3671 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new nil_const(); +#line 3672 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 3673 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 657: // const_pattern_expression -> sizeof_expr + case 658: // const_pattern_expression -> sizeof_expr +#line 3675 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } break; - case 658: // const_pattern_expression -> typeof_expr + case 659: // const_pattern_expression -> typeof_expr +#line 3677 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].ex; } break; - case 659: // collection_pattern -> tkSquareOpen, collection_pattern_expr_list, tkSquareClose + case 660: // collection_pattern -> tkSquareOpen, collection_pattern_expr_list, tkSquareClose +#line 3682 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3683 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new collection_pattern(ValueStack[ValueStack.Depth-2].ob as List, CurrentLocationSpan); +#line 3684 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 660: // collection_pattern_expr_list -> collection_pattern_list_item + case 661: // collection_pattern_expr_list -> collection_pattern_list_item +#line 3689 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3690 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new List(); +#line 3691 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); +#line 3692 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 661: // collection_pattern_expr_list -> collection_pattern_expr_list, tkComma, + case 662: // collection_pattern_expr_list -> collection_pattern_expr_list, tkComma, // collection_pattern_list_item +#line 3694 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3695 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var list = ValueStack[ValueStack.Depth-3].ob as List; +#line 3696 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); +#line 3697 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = list; +#line 3698 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 662: // collection_pattern_list_item -> literal_or_number + case 663: // collection_pattern_list_item -> literal_or_number +#line 3703 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3704 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new const_pattern_parameter(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3705 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 663: // collection_pattern_list_item -> collection_pattern_var_item + case 664: // collection_pattern_list_item -> collection_pattern_var_item +#line 3707 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3708 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 3709 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 664: // collection_pattern_list_item -> tkUnderscore + case 665: // collection_pattern_list_item -> tkUnderscore +#line 3711 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3712 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new collection_pattern_wild_card(CurrentLocationSpan); +#line 3713 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 665: // collection_pattern_list_item -> pattern_optional_var + case 666: // collection_pattern_list_item -> pattern_optional_var +#line 3719 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3720 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3721 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 666: // collection_pattern_list_item -> collection_pattern + case 667: // collection_pattern_list_item -> collection_pattern +#line 3723 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3724 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_collection_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3725 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 667: // collection_pattern_list_item -> tuple_pattern + case 668: // collection_pattern_list_item -> tuple_pattern +#line 3727 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3728 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_tuple_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3729 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 668: // collection_pattern_list_item -> tkDotDot + case 669: // collection_pattern_list_item -> tkDotDot +#line 3731 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3732 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new collection_pattern_gap_parameter(CurrentLocationSpan); +#line 3733 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 669: // collection_pattern_var_item -> tkVar, identifier + case 670: // collection_pattern_var_item -> tkVar, identifier +#line 3738 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3739 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new collection_pattern_var_parameter(ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); +#line 3740 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 670: // tuple_pattern -> tkRoundOpen, tuple_pattern_item_list, tkRoundClose + case 671: // tuple_pattern -> tkRoundOpen, tuple_pattern_item_list, tkRoundClose +#line 3745 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3746 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-2].ob as List).Count>6) +#line 3747 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("TUPLE_ELEMENTS_COUNT_MUST_BE_LESSEQUAL_7",CurrentLocationSpan); +#line 3748 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new tuple_pattern(ValueStack[ValueStack.Depth-2].ob as List, CurrentLocationSpan); +#line 3749 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 671: // tuple_pattern_item -> tkUnderscore + case 672: // tuple_pattern_item -> tkUnderscore +#line 3754 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3755 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new tuple_pattern_wild_card(CurrentLocationSpan); +#line 3756 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 672: // tuple_pattern_item -> literal_or_number + case 673: // tuple_pattern_item -> literal_or_number +#line 3758 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3759 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new const_pattern_parameter(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3760 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 673: // tuple_pattern_item -> sign, literal_or_number + case 674: // tuple_pattern_item -> sign, literal_or_number +#line 3762 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3763 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new const_pattern_parameter(new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan), CurrentLocationSpan); +#line 3764 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 674: // tuple_pattern_item -> tkVar, identifier + case 675: // tuple_pattern_item -> tkVar, identifier +#line 3766 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3767 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new tuple_pattern_var_parameter(ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); +#line 3768 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 675: // tuple_pattern_item -> pattern_optional_var + case 676: // tuple_pattern_item -> pattern_optional_var +#line 3770 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3771 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3772 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 676: // tuple_pattern_item -> collection_pattern + case 677: // tuple_pattern_item -> collection_pattern +#line 3774 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3775 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_collection_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3776 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 677: // tuple_pattern_item -> tuple_pattern + case 678: // tuple_pattern_item -> tuple_pattern +#line 3778 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3779 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_tuple_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3780 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 678: // tuple_pattern_item_list -> tuple_pattern_item + case 679: // tuple_pattern_item_list -> tuple_pattern_item +#line 3785 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3786 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new List(); +#line 3787 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); +#line 3788 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 679: // tuple_pattern_item_list -> tuple_pattern_item_list, tkComma, tuple_pattern_item + case 680: // tuple_pattern_item_list -> tuple_pattern_item_list, tkComma, tuple_pattern_item +#line 3790 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3791 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var list = ValueStack[ValueStack.Depth-3].ob as List; +#line 3792 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); +#line 3793 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = list; +#line 3794 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 680: // pattern_out_param_list_optional_var -> pattern_out_param_optional_var + case 681: // pattern_out_param_list_optional_var -> pattern_out_param_optional_var +#line 3799 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3800 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new List(); +#line 3801 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); - } - break; - case 681: // pattern_out_param_list_optional_var -> pattern_out_param_list_optional_var, - // tkSemiColon, - // pattern_out_param_optional_var -{ - var list = ValueStack[ValueStack.Depth-3].ob as List; - list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); - CurrentSemanticValue.ob = list; +#line 3802 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; case 682: // pattern_out_param_list_optional_var -> pattern_out_param_list_optional_var, + // tkSemiColon, + // pattern_out_param_optional_var +#line 3804 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +{ +#line 3805 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + var list = ValueStack[ValueStack.Depth-3].ob as List; +#line 3806 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); +#line 3807 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.ob = list; +#line 3808 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + } + break; + case 683: // pattern_out_param_list_optional_var -> pattern_out_param_list_optional_var, // tkComma, // pattern_out_param_optional_var +#line 3810 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3811 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var list = ValueStack[ValueStack.Depth-3].ob as List; +#line 3812 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); +#line 3813 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = list; +#line 3814 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 683: // pattern_out_param_list -> pattern_out_param + case 684: // pattern_out_param_list -> pattern_out_param +#line 3819 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3820 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new List(); +#line 3821 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); +#line 3822 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 684: // pattern_out_param_list -> pattern_out_param_list, tkSemiColon, + case 685: // pattern_out_param_list -> pattern_out_param_list, tkSemiColon, // pattern_out_param +#line 3824 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3825 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var list = ValueStack[ValueStack.Depth-3].ob as List; +#line 3826 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); +#line 3827 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = list; +#line 3828 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 685: // pattern_out_param_list -> pattern_out_param_list, tkComma, pattern_out_param + case 686: // pattern_out_param_list -> pattern_out_param_list, tkComma, pattern_out_param +#line 3830 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3831 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var list = ValueStack[ValueStack.Depth-3].ob as List; +#line 3832 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_parameter); +#line 3833 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = list; +#line 3834 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 686: // pattern_out_param -> tkUnderscore + case 687: // pattern_out_param -> tkUnderscore +#line 3839 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3840 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new wild_card_deconstructor_parameter(CurrentLocationSpan); +#line 3841 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 687: // pattern_out_param -> literal_or_number + case 688: // pattern_out_param -> literal_or_number +#line 3843 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3844 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new const_pattern_parameter(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3845 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 688: // pattern_out_param -> tkVar, identifier, tkColon, type_ref + case 689: // pattern_out_param -> tkVar, identifier, tkColon, type_ref +#line 3847 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3848 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].td, true, CurrentLocationSpan); +#line 3849 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 689: // pattern_out_param -> tkVar, identifier + case 690: // pattern_out_param -> tkVar, identifier +#line 3851 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3852 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-1].id, null, true, CurrentLocationSpan); +#line 3853 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 690: // pattern_out_param -> pattern + case 691: // pattern_out_param -> pattern +#line 3855 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3856 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3857 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 691: // pattern_out_param -> collection_pattern + case 692: // pattern_out_param -> collection_pattern +#line 3859 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3860 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_collection_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3861 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 692: // pattern_out_param -> tuple_pattern + case 693: // pattern_out_param -> tuple_pattern +#line 3863 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3864 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_tuple_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3865 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 693: // pattern_out_param_optional_var -> tkUnderscore + case 694: // pattern_out_param_optional_var -> tkUnderscore +#line 3870 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3871 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new wild_card_deconstructor_parameter(CurrentLocationSpan); +#line 3872 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 694: // pattern_out_param_optional_var -> literal_or_number + case 695: // pattern_out_param_optional_var -> literal_or_number +#line 3874 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3875 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new const_pattern_parameter(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3876 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 695: // pattern_out_param_optional_var -> sign, literal_or_number + case 696: // pattern_out_param_optional_var -> sign, literal_or_number +#line 3878 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3879 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new const_pattern_parameter(new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan), CurrentLocationSpan); +#line 3880 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 696: // pattern_out_param_optional_var -> identifier, tkColon, type_ref + case 697: // pattern_out_param_optional_var -> identifier, tkColon, type_ref +#line 3882 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3883 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].td, false, CurrentLocationSpan); +#line 3884 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 697: // pattern_out_param_optional_var -> identifier + case 698: // pattern_out_param_optional_var -> identifier +#line 3886 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3887 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-1].id, null, false, CurrentLocationSpan); +#line 3888 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 698: // pattern_out_param_optional_var -> tkVar, identifier, tkColon, type_ref + case 699: // pattern_out_param_optional_var -> tkVar, identifier, tkColon, type_ref +#line 3890 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3891 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].td, true, CurrentLocationSpan); +#line 3892 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 699: // pattern_out_param_optional_var -> tkVar, identifier + case 700: // pattern_out_param_optional_var -> tkVar, identifier +#line 3894 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3895 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-1].id, null, true, CurrentLocationSpan); +#line 3896 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 700: // pattern_out_param_optional_var -> pattern_optional_var + case 701: // pattern_out_param_optional_var -> pattern_optional_var +#line 3898 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3899 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3900 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 701: // pattern_out_param_optional_var -> collection_pattern + case 702: // pattern_out_param_optional_var -> collection_pattern +#line 3902 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3903 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_collection_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3904 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 702: // pattern_out_param_optional_var -> tuple_pattern + case 703: // pattern_out_param_optional_var -> tuple_pattern +#line 3906 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3907 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new recursive_tuple_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); +#line 3908 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 703: // simple_expr_or_nothing -> simple_expr + case 704: // simple_expr_or_nothing -> simple_expr +#line 3913 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3914 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; +#line 3915 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 704: // simple_expr_or_nothing -> /* empty */ + case 705: // simple_expr_or_nothing -> /* empty */ +#line 3917 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3918 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = null; +#line 3919 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 705: // const_expr_or_nothing -> const_expr + case 706: // const_expr_or_nothing -> const_expr +#line 3924 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3925 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; +#line 3926 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 706: // const_expr_or_nothing -> /* empty */ + case 707: // const_expr_or_nothing -> /* empty */ +#line 3928 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3929 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = null; +#line 3930 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 707: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing + case 708: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing +#line 3961 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3962 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); +#line 3963 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 708: // format_expr -> tkColon, simple_expr_or_nothing + case 709: // format_expr -> tkColon, simple_expr_or_nothing +#line 3965 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3966 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); +#line 3967 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 709: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing, tkColon, + case 710: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing, tkColon, // simple_expr +#line 3969 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3970 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3971 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 710: // format_expr -> tkColon, simple_expr_or_nothing, tkColon, simple_expr + case 711: // format_expr -> tkColon, simple_expr_or_nothing, tkColon, simple_expr +#line 3973 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3974 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3975 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 711: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing + case 712: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing +#line 3980 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3981 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); +#line 3982 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 712: // format_const_expr -> tkColon, const_expr_or_nothing + case 713: // format_const_expr -> tkColon, const_expr_or_nothing +#line 3984 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3985 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); +#line 3986 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 713: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing, tkColon, + case 714: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing, tkColon, // const_expr +#line 3988 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3989 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3990 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 714: // format_const_expr -> tkColon, const_expr_or_nothing, tkColon, const_expr + case 715: // format_const_expr -> tkColon, const_expr_or_nothing, tkColon, const_expr +#line 3992 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 3993 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 3994 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 715: // relop -> tkEqual + case 716: // relop -> tkEqual +#line 4000 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 716: // relop -> tkNotEqual + case 717: // relop -> tkNotEqual +#line 4002 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 717: // relop -> tkLower + case 718: // relop -> tkLower +#line 4004 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 718: // relop -> tkGreater + case 719: // relop -> tkGreater +#line 4006 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 719: // relop -> tkLowerEqual + case 720: // relop -> tkLowerEqual +#line 4008 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 720: // relop -> tkGreaterEqual + case 721: // relop -> tkGreaterEqual +#line 4010 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 721: // relop -> tkIn + case 722: // relop -> tkIn +#line 4012 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 722: // relop -> tkNot, tkIn + case 723: // relop -> tkNot, tkIn +#line 4014 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4015 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 4016 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; +#line 4017 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 4018 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4019 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; +#line 4020 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.op.type = Operators.NotIn; +#line 4021 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4022 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 723: // simple_expr -> term1 + case 724: // simple_expr -> term1 +#line 4027 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 724: // simple_expr -> simple_expr, tkDotDot, term1 + case 725: // simple_expr -> simple_expr, tkDotDot, term1 +#line 4029 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4030 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 4031 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); +#line 4032 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 4033 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new diapason_expr_new(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); +#line 4034 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 725: // term1 -> term + case 726: // term1 -> term +#line 4039 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 726: // term1 -> term1, addop, term + case 727: // term1 -> term1, addop, term +#line 4041 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4042 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 4043 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 727: // term1 -> term1, addop, new_question_expr + case 728: // term1 -> term1, addop, new_question_expr +#line 4045 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4046 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 4047 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 728: // addop -> tkPlus + case 729: // addop -> tkPlus +#line 4052 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 729: // addop -> tkMinus + case 730: // addop -> tkMinus +#line 4054 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 730: // addop -> tkOr + case 731: // addop -> tkOr +#line 4056 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 731: // addop -> tkXor + case 732: // addop -> tkXor +#line 4058 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 732: // addop -> tkCSharpStyleOr + case 733: // addop -> tkCSharpStyleOr +#line 4060 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 733: // typecast_op -> tkAs + case 734: // typecast_op -> tkAs +#line 4065 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4066 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = op_typecast.as_op; +#line 4067 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 734: // typecast_op -> tkIs + case 735: // typecast_op -> tkIs +#line 4069 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4070 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = op_typecast.is_op; +#line 4071 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 735: // as_is_expr -> is_type_expr + case 736: // as_is_expr -> is_type_expr +#line 4076 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 736: // as_is_expr -> as_expr + case 737: // as_is_expr -> as_expr +#line 4078 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 737: // as_expr -> term, tkAs, simple_or_template_type_reference + case 738: // as_expr -> term, tkAs, simple_or_template_type_reference +#line 4083 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4084 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, op_typecast.as_op, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 4085 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 738: // as_expr -> term, tkAs, array_type + case 739: // as_expr -> term, tkAs, array_type +#line 4087 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4088 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, op_typecast.as_op, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 4089 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 739: // is_type_expr -> term, tkIs, simple_or_template_type_reference + case 740: // is_type_expr -> term, tkIs, simple_or_template_type_reference +#line 4094 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4095 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, op_typecast.is_op, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 4096 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 740: // is_type_expr -> term, tkIs, array_type + case 741: // is_type_expr -> term, tkIs, array_type +#line 4098 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4099 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, op_typecast.is_op, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); +#line 4100 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 741: // power_expr -> factor_without_unary_op, tkStarStar, factor + case 742: // power_expr -> factor_without_unary_op, tkStarStar, factor +#line 4105 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 742: // power_expr -> factor_without_unary_op, tkStarStar, power_expr + case 743: // power_expr -> factor_without_unary_op, tkStarStar, power_expr +#line 4107 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 743: // power_expr -> sign, power_expr + case 744: // power_expr -> sign, power_expr +#line 4109 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 744: // term -> factor + case 745: // term -> factor +#line 4114 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 745: // term -> new_expr + case 746: // term -> new_expr +#line 4116 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 746: // term -> power_expr + case 747: // term -> power_expr +#line 4118 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 747: // term -> term, mulop, factor + case 748: // term -> term, mulop, factor +#line 4120 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 748: // term -> term, mulop, power_expr + case 749: // term -> term, mulop, power_expr +#line 4122 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 749: // term -> term, mulop, new_question_expr + case 750: // term -> term, mulop, new_question_expr +#line 4124 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 750: // term -> as_is_expr + case 751: // term -> as_is_expr +#line 4126 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 751: // mulop -> tkStar + case 752: // mulop -> tkStar +#line 4131 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 752: // mulop -> tkSlash + case 753: // mulop -> tkSlash +#line 4133 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 753: // mulop -> tkDiv + case 754: // mulop -> tkDiv +#line 4135 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 754: // mulop -> tkMod + case 755: // mulop -> tkMod +#line 4137 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 755: // mulop -> tkShl + case 756: // mulop -> tkShl +#line 4139 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 756: // mulop -> tkShr + case 757: // mulop -> tkShr +#line 4141 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 757: // mulop -> tkAnd + case 758: // mulop -> tkAnd +#line 4143 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 758: // default_expr -> tkDefault, tkRoundOpen, + case 759: // default_expr -> tkDefault, tkRoundOpen, // simple_or_template_or_question_type_reference, tkRoundClose +#line 4148 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4149 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new default_operator(ValueStack[ValueStack.Depth-2].td as named_type_reference, CurrentLocationSpan); +#line 4150 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 759: // tuple -> tkRoundOpen, expr_l1_or_unpacked, tkComma, expr_l1_or_unpacked_list, + case 760: // tuple -> tkRoundOpen, expr_l1_or_unpacked, tkComma, expr_l1_or_unpacked_list, // lambda_type_ref, optional_full_lambda_fp_list, tkRoundClose +#line 4155 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4156 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-6].ex is unpacked_list_of_ident_or_list) +#line 4157 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("EXPRESSION_EXPECTED",LocationStack[LocationStack.Depth-6]); +#line 4158 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" foreach (var ex in (ValueStack[ValueStack.Depth-4].stn as expression_list).expressions) +#line 4159 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ex is unpacked_list_of_ident_or_list) +#line 4160 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("EXPRESSION_EXPECTED",ex.source_context); +#line 4161 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!(ValueStack[ValueStack.Depth-3].td is lambda_inferred_type)) +#line 4162 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("BAD_TUPLE",LocationStack[LocationStack.Depth-3]); +#line 4163 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].stn != null) +#line 4164 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("BAD_TUPLE",LocationStack[LocationStack.Depth-2]); +#line 4165 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 4166 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if ((ValueStack[ValueStack.Depth-4].stn as expression_list).Count>6) +#line 4167 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("TUPLE_ELEMENTS_COUNT_MUST_BE_LESSEQUAL_7",CurrentLocationSpan); +#line 4168 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (ValueStack[ValueStack.Depth-4].stn as expression_list).Insert(0,ValueStack[ValueStack.Depth-6].ex); +#line 4169 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new tuple_node(ValueStack[ValueStack.Depth-4].stn as expression_list,CurrentLocationSpan); +#line 4170 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 760: // factor_without_unary_op -> literal_or_number + case 761: // factor_without_unary_op -> literal_or_number +#line 4175 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 761: // factor_without_unary_op -> var_reference + case 762: // factor_without_unary_op -> var_reference +#line 4177 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 762: // factor -> tkNil + case 763: // factor -> tkNil +#line 4184 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4185 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new nil_const(); +#line 4186 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex.source_context = CurrentLocationSpan; +#line 4187 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 763: // factor -> literal_or_number + case 764: // factor -> literal_or_number +#line 4189 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 764: // factor -> default_expr + case 765: // factor -> default_expr +#line 4191 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 765: // factor -> tkSquareOpen, elem_list, tkSquareClose + case 766: // factor -> pascal_set_const +#line 4193 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { - // �?сли elem_list п�?с�? или соде�?жи�? диапазон, �?о э�?о множес�?во, ина�?е массив. С PascalABC.NET 3.10 - /*var is_set = false; - var el = $2 as expression_list; - if (el == null || el.Count == 0) - is_set = true; - else if (el.expressions.Count(x => x is diapason_expr_new) > 0) - is_set = true; - if (is_set)*/ - CurrentSemanticValue.ex = new pascal_set_constant(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); - //else $$ = new array_const_new($2 as expression_list, @$); +#line 4194 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; +#line 4195 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 766: // factor -> tkNot, factor -{ - CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); - } - break; - case 767: // factor -> sign, factor + case 767: // factor -> factor, tkPoint, identifier_keyword_operatorname +#line 4197 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4198 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); +#line 4199 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + } + break; + case 768: // factor -> factor, tkRoundOpen, optional_expr_list_func_param, tkRoundClose +#line 4201 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +{ +#line 4202 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-4].ex as addressed_value,ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); +#line 4203 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + } + break; + case 769: // factor -> tkNot, factor +#line 4205 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +{ +#line 4206 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 4207 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + } + break; + case 770: // factor -> sign, factor +#line 4209 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +{ +#line 4210 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-2].op.type == Operators.Minus) +#line 4211 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4212 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var i64 = ValueStack[ValueStack.Depth-1].ex as int64_const; +#line 4213 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (i64 != null && i64.val == (Int64)Int32.MaxValue + 1) +#line 4214 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4215 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new int32_const(Int32.MinValue,CurrentLocationSpan); +#line 4216 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" break; +#line 4217 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4218 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var ui64 = ValueStack[ValueStack.Depth-1].ex as uint64_const; +#line 4219 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ui64 != null && ui64.val == (UInt64)Int64.MaxValue + 1) +#line 4220 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4221 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new int64_const(Int64.MinValue,CurrentLocationSpan); +#line 4222 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" break; +#line 4223 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4224 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ui64 != null && ui64.val > (UInt64)Int64.MaxValue + 1) +#line 4225 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4226 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("BAD_INT2",CurrentLocationSpan); +#line 4227 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" break; +#line 4228 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4229 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // можно сдела�?�? в�?�?исление конс�?ан�?�? с вмон�?и�?ованн�?м мин�?сом } +#line 4230 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); +#line 4231 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 768: // factor -> tkDeref, factor + case 771: // factor -> tkDeref, factor +#line 4234 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4235 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new index(ValueStack[ValueStack.Depth-1].ex, true, CurrentLocationSpan); +#line 4236 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 769: // factor -> var_reference + case 772: // factor -> var_reference +#line 4238 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 770: // factor -> tuple + case 773: // factor -> tuple +#line 4240 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 771: // literal_or_number -> literal + case 774: // literal_or_number -> literal +#line 4245 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 772: // literal_or_number -> unsigned_number + case 775: // literal_or_number -> unsigned_number +#line 4247 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 773: // var_question_point -> variable, tkQuestionPoint, variable + case 776: // var_question_point -> variable, tkQuestionPoint, variable +#line 4257 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4258 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new dot_question_node(ValueStack[ValueStack.Depth-3].ex as addressed_value,ValueStack[ValueStack.Depth-1].ex as addressed_value,CurrentLocationSpan); +#line 4259 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 774: // var_question_point -> variable, tkQuestionPoint, var_question_point + case 777: // var_question_point -> variable, tkQuestionPoint, var_question_point +#line 4261 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4262 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new dot_question_node(ValueStack[ValueStack.Depth-3].ex as addressed_value,ValueStack[ValueStack.Depth-1].ex as addressed_value,CurrentLocationSpan); +#line 4263 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 775: // var_reference -> var_address, variable + case 778: // var_reference -> var_address, variable +#line 4268 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4269 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewVarReference(ValueStack[ValueStack.Depth-2].stn as get_address, ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); +#line 4270 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 776: // var_reference -> variable + case 779: // var_reference -> variable +#line 4272 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 777: // var_reference -> var_question_point + case 780: // var_reference -> var_question_point +#line 4274 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 778: // var_reference -> tkRoundOpen, tkVar, identifier, tkAssign, expr_dq, + case 781: // var_reference -> tkRoundOpen, tkVar, identifier, tkAssign, expr_dq, // tkRoundClose +#line 4276 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new let_var_expr(ValueStack[ValueStack.Depth-4].id,ValueStack[ValueStack.Depth-2].ex,CurrentLocationSpan); } break; - case 779: // var_address -> tkAddressOf + case 782: // var_address -> tkAddressOf +#line 4281 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4282 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewVarAddress(CurrentLocationSpan); +#line 4283 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 780: // var_address -> var_address, tkAddressOf + case 783: // var_address -> var_address, tkAddressOf +#line 4285 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4286 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = NewVarAddress(ValueStack[ValueStack.Depth-2].stn as get_address, CurrentLocationSpan); +#line 4287 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 781: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket + case 784: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket +#line 4292 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4293 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new attribute(null, ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as expression_list, CurrentLocationSpan); +#line 4294 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 782: // attribute_variable -> template_type, optional_expr_list_with_bracket + case 785: // attribute_variable -> template_type, optional_expr_list_with_bracket +#line 4296 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4297 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new attribute(null, ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as expression_list, CurrentLocationSpan); +#line 4298 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 783: // dotted_identifier -> identifier + case 786: // dotted_identifier -> identifier +#line 4302 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 784: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword + case 787: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword +#line 4304 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4305 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-3].ex is index) +#line 4306 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}", LocationStack[LocationStack.Depth-3], "^"); +#line 4307 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); +#line 4308 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 785: // variable_as_type -> dotted_identifier + case 788: // variable_as_type -> dotted_identifier +#line 4312 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex;} break; - case 786: // variable_as_type -> dotted_identifier, template_type_params + case 789: // variable_as_type -> dotted_identifier, template_type_params +#line 4314 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { 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 787: // variable_or_literal_or_number -> variable + case 790: // variable_or_literal_or_number -> variable +#line 4319 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 788: // variable_or_literal_or_number -> literal_or_number + case 791: // variable_or_literal_or_number -> literal_or_number +#line 4321 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 789: // var_with_init_for_expr_with_let -> tkVar, identifier, tkAssign, expr, + case 792: // var_with_init_for_expr_with_let -> tkVar, identifier, tkAssign, expr, // tkSemiColon +#line 4326 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4327 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new assign(ValueStack[ValueStack.Depth-4].id as addressed_value, ValueStack[ValueStack.Depth-2].ex, Operators.Assignment, CurrentLocationSpan); +#line 4328 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 790: // var_with_init_for_expr_with_let_list -> var_with_init_for_expr_with_let + case 793: // var_with_init_for_expr_with_let_list -> var_with_init_for_expr_with_let +#line 4333 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4334 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 4335 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 791: // var_with_init_for_expr_with_let_list -> var_with_init_for_expr_with_let_list, + case 794: // var_with_init_for_expr_with_let_list -> var_with_init_for_expr_with_let_list, // var_with_init_for_expr_with_let +#line 4337 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4338 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ValueStack[ValueStack.Depth-2].stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 4339 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 4340 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 792: // proc_func_call -> variable, tkRoundOpen, optional_expr_list_func_param, + case 795: // proc_func_call -> variable, tkRoundOpen, optional_expr_list_func_param, // tkRoundClose +#line 4345 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4346 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-4].ex is index) +#line 4347 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}", LocationStack[LocationStack.Depth-4], "^"); +#line 4348 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-4].ex as addressed_value,ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); +#line 4349 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 793: // variable -> identifier + case 796: // variable -> identifier +#line 4354 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 794: // variable -> operator_name_ident + case 797: // variable -> operator_name_ident +#line 4356 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 795: // variable -> tkInherited, identifier + case 798: // variable -> tkInherited, identifier +#line 4358 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4359 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new inherited_ident(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); +#line 4360 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 796: // variable -> tkRoundOpen, expr, tkRoundClose + case 799: // variable -> tkRoundOpen, expr, tkRoundClose +#line 4362 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4363 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!parserTools.buildTreeForFormatter) +#line 4364 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4365 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ValueStack[ValueStack.Depth-2].ex.source_context = CurrentLocationSpan; +#line 4366 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-2].ex; +#line 4367 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4368 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.ex = new bracket_expr(ValueStack[ValueStack.Depth-2].ex, CurrentLocationSpan); +#line 4369 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 797: // variable -> tkRoundOpen, var_with_init_for_expr_with_let_list, expr, + case 800: // variable -> tkRoundOpen, var_with_init_for_expr_with_let_list, expr, // tkRoundClose +#line 4371 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4372 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!parserTools.buildTreeForFormatter) +#line 4373 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4374 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ValueStack[ValueStack.Depth-2].ex.source_context = CurrentLocationSpan; +#line 4375 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-2].ex; +#line 4376 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4377 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.ex = new expression_with_let(ValueStack[ValueStack.Depth-3].stn as statement_list, ValueStack[ValueStack.Depth-3].stn as expression, CurrentLocationSpan); +#line 4378 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 798: // variable -> sizeof_expr + case 801: // variable -> sizeof_expr +#line 4380 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 799: // variable -> typeof_expr + case 802: // variable -> typeof_expr +#line 4382 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 800: // variable -> literal_or_number, tkPoint, identifier_or_keyword + case 803: // variable -> literal_or_number, tkPoint, identifier_or_keyword +#line 4384 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4385 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-3].ex is index) +#line 4386 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}", LocationStack[LocationStack.Depth-3], "^"); +#line 4387 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); +#line 4388 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 801: // variable -> variable_or_literal_or_number, tkSquareOpen, expr_list, + case 804: // variable -> variable_or_literal_or_number, tkSquareOpen, expr_list, // tkSquareClose +#line 4390 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4391 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + //$$ = NewIndexerOrSlice($1 as addressed_value,$3 as expression_list,@$); var el = ValueStack[ValueStack.Depth-2].stn as expression_list; // SSM 10/03/16 if (el.Count==1 && el.expressions[0] is format_expr) +#line 4392 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4393 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var fe = el.expressions[0] as format_expr; +#line 4394 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!parserTools.buildTreeForFormatter) +#line 4395 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4396 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (fe.expr == null) +#line 4397 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.expr = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); +#line 4398 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (fe.format1 == null) +#line 4399 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.format1 = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); +#line 4400 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4401 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new slice_expr(ValueStack[ValueStack.Depth-4].ex as addressed_value,fe.expr,fe.format1,fe.format2,CurrentLocationSpan); +#line 4402 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4403 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // многоме�?н�?е с�?ез�? else if (el.expressions.Any(e => e is format_expr)) +#line 4404 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4405 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (el.expressions.Count > 4) +#line 4406 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("SLICES_OF MULTIDIMENSIONAL_ARRAYS_ALLOW_ONLY_FOR_RANK_LT_5",CurrentLocationSpan); // С�?ез�? многоме�?н�?�? массивов �?аз�?е�?ен�? �?ол�?ко для массивов �?азме�?нос�?и < 5 var ll = new List>(); +#line 4407 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" foreach (var ex in el.expressions) +#line 4408 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4409 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ex is format_expr fe) +#line 4410 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4411 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (fe.expr == null) +#line 4412 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.expr = new int32_const(int.MaxValue, fe.source_context); +#line 4413 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (fe.format1 == null) +#line 4414 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.format1 = new int32_const(int.MaxValue, fe.source_context); +#line 4415 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (fe.format2 == null) +#line 4416 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.format2 = new int32_const(1, fe.source_context); +#line 4417 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ll.Add(Tuple.Create(fe.expr, fe.format1, fe.format2)); +#line 4418 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4419 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 4420 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4421 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" ll.Add(Tuple.Create(ex, (expression)new int32_const(0, ex.source_context), (expression)new int32_const(int.MaxValue, ex.source_context))); // скаля�?ное зна�?ение вмес�?о с�?еза } +#line 4422 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4423 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sle = new slice_expr(ValueStack[ValueStack.Depth-4].ex as addressed_value,null,null,null,CurrentLocationSpan); +#line 4424 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" sle.slices = ll; +#line 4425 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = sle; +#line 4426 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4427 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.ex = new indexer(ValueStack[ValueStack.Depth-4].ex as addressed_value, el, CurrentLocationSpan); +#line 4428 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 802: // variable -> variable_or_literal_or_number, tkQuestionSquareOpen, format_expr, + case 805: // variable -> variable_or_literal_or_number, tkQuestionSquareOpen, format_expr, // tkSquareClose +#line 4435 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4436 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var fe = ValueStack[ValueStack.Depth-2].ex as format_expr; // SSM 9/01/17 if (!parserTools.buildTreeForFormatter) +#line 4437 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4438 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (fe.expr == null) +#line 4439 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.expr = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); +#line 4440 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (fe.format1 == null) +#line 4441 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fe.format1 = new int32_const(int.MaxValue,LocationStack[LocationStack.Depth-2]); +#line 4442 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4443 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new slice_expr_question(ValueStack[ValueStack.Depth-4].ex as addressed_value,fe.expr,fe.format1,fe.format2,CurrentLocationSpan); +#line 4444 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 803: // variable -> tkVertParen, elem_list, tkVertParen + case 806: // variable -> tkVertParen, elem_list, tkVertParen +#line 4447 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4448 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new array_const_new(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); +#line 4449 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 804: // variable -> proc_func_call + case 807: // variable -> proc_func_call +#line 4451 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 805: // variable -> variable, tkPoint, identifier_keyword_operatorname + case 808: // variable -> variable, tkPoint, identifier_keyword_operatorname +#line 4453 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4454 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-3].ex is index) +#line 4455 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}", LocationStack[LocationStack.Depth-3], "^"); +#line 4456 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); +#line 4457 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 806: // variable -> tuple, tkPoint, identifier_keyword_operatorname + case 809: // variable -> tuple, tkPoint, identifier_keyword_operatorname +#line 4459 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4460 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); +#line 4461 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 807: // variable -> variable, tkDeref + case 810: // variable -> variable, tkDeref +#line 4467 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4468 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new roof_dereference(ValueStack[ValueStack.Depth-2].ex as addressed_value,CurrentLocationSpan); +#line 4469 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 808: // variable -> variable, tkAmpersend, template_type_params + case 811: // variable -> variable, tkAmpersend, template_type_params +#line 4471 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4472 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); +#line 4473 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 809: // optional_expr_list -> expr_list + case 812: // optional_expr_list -> expr_list +#line 4478 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 810: // optional_expr_list -> /* empty */ + case 813: // optional_expr_list -> /* empty */ +#line 4480 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 811: // optional_expr_list_func_param -> expr_list_func_param + case 814: // optional_expr_list_func_param -> expr_list_func_param +#line 4485 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 812: // optional_expr_list_func_param -> /* empty */ + case 815: // optional_expr_list_func_param -> /* empty */ +#line 4487 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 813: // elem_list -> elem_list1 + case 816: // elem_list -> elem_list1 +#line 4492 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 814: // elem_list -> /* empty */ + case 817: // elem_list -> /* empty */ +#line 4494 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 815: // elem_list1 -> elem + case 818: // elem_list1 -> elem +#line 4499 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4500 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 4501 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 816: // elem_list1 -> elem_list1, tkComma, elem + case 819: // elem_list1 -> elem_list1, tkComma, elem +#line 4503 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4504 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 4505 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 817: // elem -> expr + case 820: // elem -> expr +#line 4510 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 818: // elem -> expr, tkDotDot, expr + case 821: // elem -> expr, tkDotDot, expr +#line 4512 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 819: // one_literal -> tkStringLiteral + case 822: // one_literal -> tkStringLiteral +#line 4517 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 820: // one_literal -> tkAsciiChar + case 823: // one_literal -> tkAsciiChar +#line 4519 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 821: // literal -> literal_list + case 824: // literal -> literal_list +#line 4524 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4525 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewLiteral(ValueStack[ValueStack.Depth-1].stn as literal_const_line); +#line 4526 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 822: // literal -> tkFormatStringLiteral + case 825: // literal -> tkFormatStringLiteral +#line 4528 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4529 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 4530 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4531 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as string_const; +#line 4532 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4533 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 4534 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4535 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewFormatString(ValueStack[ValueStack.Depth-1].stn as string_const); +#line 4536 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4537 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 823: // literal -> tkMultilineStringLiteral + case 826: // literal -> tkMultilineStringLiteral +#line 4539 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4540 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (parserTools.buildTreeForFormatter) +#line 4541 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4542 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sc = ValueStack[ValueStack.Depth-1].stn as string_const; +#line 4543 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" sc.IsMultiline = true; +#line 4544 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = sc; +#line 4545 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4546 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 4547 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4548 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = NewLiteral(new literal_const_line(ValueStack[ValueStack.Depth-1].stn as literal, CurrentLocationSpan)); +#line 4549 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 4550 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 824: // literal_list -> one_literal + case 827: // literal_list -> one_literal +#line 4555 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4556 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new literal_const_line(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); +#line 4557 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 825: // literal_list -> literal_list, one_literal + case 828: // literal_list -> literal_list, one_literal +#line 4559 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4560 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var line = ValueStack[ValueStack.Depth-2].stn as literal_const_line; +#line 4561 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (line.literals.Last() is string_const && ValueStack[ValueStack.Depth-1].ex is string_const) +#line 4562 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("TWO_STRING_LITERALS_IN_SUCCESSION",LocationStack[LocationStack.Depth-1]); +#line 4563 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = line.Add(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); +#line 4564 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 826: // operator_name_ident -> tkOperator, overload_operator + case 829: // operator_name_ident -> tkOperator, overload_operator +#line 4569 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4570 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" 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); +#line 4571 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 827: // optional_method_modificators -> tkSemiColon + case 830: // optional_method_modificators -> tkSemiColon +#line 4576 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4577 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); +#line 4578 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 828: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon + case 831: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon +#line 4580 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4581 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" //parserTools.AddModifier((procedure_attributes_list)$2, proc_attribute.attr_overload); CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; +#line 4582 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 829: // optional_method_modificators1 -> /* empty */ + case 832: // optional_method_modificators1 -> /* empty */ +#line 4588 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4589 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); +#line 4590 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 830: // optional_method_modificators1 -> tkSemiColon, meth_modificators + case 833: // optional_method_modificators1 -> tkSemiColon, meth_modificators +#line 4592 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4593 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" //parserTools.AddModifier((procedure_attributes_list)$2, proc_attribute.attr_overload); CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 4594 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 831: // meth_modificators -> meth_modificator + case 834: // meth_modificators -> meth_modificator +#line 4600 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4601 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new procedure_attributes_list(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); +#line 4602 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 832: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator + case 835: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator +#line 4604 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4605 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as procedure_attributes_list).Add(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); +#line 4606 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 833: // identifier -> tkIdentifier + case 836: // identifier -> tkIdentifier +#line 4611 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 834: // identifier -> property_specifier_directives + case 837: // identifier -> property_specifier_directives +#line 4613 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 835: // identifier -> non_reserved + case 838: // identifier -> non_reserved +#line 4615 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 836: // identifier -> tkStep + case 839: // identifier -> tkStep +#line 4617 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 837: // identifier -> tkIndex + case 840: // identifier -> tkIndex +#line 4619 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 838: // identifier_or_keyword -> identifier + case 841: // identifier_or_keyword -> identifier +#line 4624 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 839: // identifier_or_keyword -> keyword + case 842: // identifier_or_keyword -> keyword +#line 4626 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 840: // identifier_or_keyword -> reserved_keyword + case 843: // identifier_or_keyword -> reserved_keyword +#line 4628 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 841: // identifier_keyword_operatorname -> identifier + case 844: // identifier_keyword_operatorname -> identifier +#line 4633 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 842: // identifier_keyword_operatorname -> keyword + case 845: // identifier_keyword_operatorname -> keyword +#line 4635 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 843: // identifier_keyword_operatorname -> operator_name_ident + case 846: // identifier_keyword_operatorname -> operator_name_ident +#line 4637 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = (ident)ValueStack[ValueStack.Depth-1].ex; } break; - case 844: // meth_modificator -> tkAbstract + case 847: // meth_modificator -> tkAbstract +#line 4642 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 845: // meth_modificator -> tkOverload + case 848: // meth_modificator -> tkOverload +#line 4644 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4645 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; +#line 4646 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddWarningFromResource("OVERLOAD_IS_NOT_USED", ValueStack[ValueStack.Depth-1].id.source_context); +#line 4647 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 846: // meth_modificator -> tkReintroduce + case 849: // meth_modificator -> tkReintroduce +#line 4649 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 847: // meth_modificator -> tkOverride + case 850: // meth_modificator -> tkOverride +#line 4651 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 848: // meth_modificator -> tkExtensionMethod + case 851: // meth_modificator -> tkExtensionMethod +#line 4653 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 849: // meth_modificator -> tkVirtual + case 852: // meth_modificator -> tkVirtual +#line 4655 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 850: // property_modificator -> tkVirtual + case 853: // property_modificator -> tkVirtual +#line 4660 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 851: // property_modificator -> tkOverride + case 854: // property_modificator -> tkOverride +#line 4662 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 852: // property_modificator -> tkAbstract + case 855: // property_modificator -> tkAbstract +#line 4664 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 853: // property_modificator -> tkReintroduce + case 856: // property_modificator -> tkReintroduce +#line 4666 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 854: // property_specifier_directives -> tkRead + case 857: // property_specifier_directives -> tkRead +#line 4671 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 855: // property_specifier_directives -> tkWrite + case 858: // property_specifier_directives -> tkWrite +#line 4673 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 856: // non_reserved -> tkName + case 859: // non_reserved -> tkName +#line 4678 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 857: // non_reserved -> tkNew + case 860: // non_reserved -> tkNew +#line 4680 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 858: // visibility_specifier -> tkInternal + case 861: // visibility_specifier -> tkInternal +#line 4685 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 859: // visibility_specifier -> tkPublic + case 862: // visibility_specifier -> tkPublic +#line 4687 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 860: // visibility_specifier -> tkProtected + case 863: // visibility_specifier -> tkProtected +#line 4689 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 861: // visibility_specifier -> tkPrivate + case 864: // visibility_specifier -> tkPrivate +#line 4691 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 862: // keyword -> visibility_specifier + case 865: // keyword -> visibility_specifier +#line 4696 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4697 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); +#line 4698 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 863: // keyword -> tkSealed + case 866: // keyword -> tkSealed +#line 4700 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 864: // keyword -> tkTemplate + case 867: // keyword -> tkTemplate +#line 4702 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 865: // keyword -> tkOr + case 868: // keyword -> tkOr +#line 4704 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 866: // keyword -> tkTypeOf + case 869: // keyword -> tkTypeOf +#line 4706 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 867: // keyword -> tkSizeOf + case 870: // keyword -> tkSizeOf +#line 4708 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 868: // keyword -> tkDefault + case 871: // keyword -> tkDefault +#line 4710 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 869: // keyword -> tkWhere + case 872: // keyword -> tkWhere +#line 4712 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 870: // keyword -> tkXor + case 873: // keyword -> tkXor +#line 4714 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 871: // keyword -> tkAnd + case 874: // keyword -> tkAnd +#line 4716 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 872: // keyword -> tkDiv + case 875: // keyword -> tkDiv +#line 4718 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 873: // keyword -> tkMod + case 876: // keyword -> tkMod +#line 4720 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 874: // keyword -> tkShl + case 877: // keyword -> tkShl +#line 4722 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 875: // keyword -> tkShr + case 878: // keyword -> tkShr +#line 4724 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 876: // keyword -> tkNot + case 879: // keyword -> tkNot +#line 4726 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 877: // keyword -> tkAs + case 880: // keyword -> tkAs +#line 4728 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 878: // keyword -> tkIn + case 881: // keyword -> tkIn +#line 4730 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 879: // keyword -> tkIs + case 882: // keyword -> tkIs +#line 4732 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 880: // keyword -> tkArray + case 883: // keyword -> tkArray +#line 4734 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 881: // keyword -> tkSequence + case 884: // keyword -> tkSequence +#line 4736 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 882: // keyword -> tkBegin + case 885: // keyword -> tkBegin +#line 4738 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 883: // keyword -> tkCase + case 886: // keyword -> tkCase +#line 4740 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 884: // keyword -> tkClass + case 887: // keyword -> tkClass +#line 4742 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 885: // keyword -> tkConst + case 888: // keyword -> tkConst +#line 4744 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 886: // keyword -> tkConstructor + case 889: // keyword -> tkConstructor +#line 4746 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 887: // keyword -> tkDestructor + case 890: // keyword -> tkDestructor +#line 4748 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 888: // keyword -> tkDownto + case 891: // keyword -> tkDownto +#line 4750 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 889: // keyword -> tkDo + case 892: // keyword -> tkDo +#line 4752 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 890: // keyword -> tkElse + case 893: // keyword -> tkElse +#line 4754 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 891: // keyword -> tkEnd + case 894: // keyword -> tkEnd +#line 4756 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 892: // keyword -> tkExcept + case 895: // keyword -> tkExcept +#line 4758 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 893: // keyword -> tkFile + case 896: // keyword -> tkFile +#line 4760 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 894: // keyword -> tkAuto + case 897: // keyword -> tkAuto +#line 4762 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 895: // keyword -> tkFinalization + case 898: // keyword -> tkFinalization +#line 4764 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 896: // keyword -> tkFinally + case 899: // keyword -> tkFinally +#line 4766 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 897: // keyword -> tkFor + case 900: // keyword -> tkFor +#line 4768 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 898: // keyword -> tkForeach + case 901: // keyword -> tkForeach +#line 4770 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 899: // keyword -> tkFunction + case 902: // keyword -> tkFunction +#line 4772 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 900: // keyword -> tkIf + case 903: // keyword -> tkIf +#line 4774 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 901: // keyword -> tkImplementation + case 904: // keyword -> tkImplementation +#line 4776 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 902: // keyword -> tkInherited + case 905: // keyword -> tkInherited +#line 4778 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 903: // keyword -> tkInitialization + case 906: // keyword -> tkInitialization +#line 4780 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 904: // keyword -> tkInterface + case 907: // keyword -> tkInterface +#line 4782 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 905: // keyword -> tkProcedure + case 908: // keyword -> tkProcedure +#line 4784 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 906: // keyword -> tkProperty + case 909: // keyword -> tkProperty +#line 4786 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 907: // keyword -> tkRaise + case 910: // keyword -> tkRaise +#line 4788 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 908: // keyword -> tkRecord + case 911: // keyword -> tkRecord +#line 4790 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 909: // keyword -> tkRepeat + case 912: // keyword -> tkRepeat +#line 4792 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 910: // keyword -> tkSet + case 913: // keyword -> tkSet +#line 4794 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 911: // keyword -> tkTry + case 914: // keyword -> tkTry +#line 4796 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 912: // keyword -> tkType + case 915: // keyword -> tkType +#line 4798 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 913: // keyword -> tkStatic + case 916: // keyword -> tkStatic +#line 4800 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 914: // keyword -> tkThen + case 917: // keyword -> tkThen +#line 4802 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 915: // keyword -> tkTo + case 918: // keyword -> tkTo +#line 4804 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 916: // keyword -> tkUntil + case 919: // keyword -> tkUntil +#line 4806 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 917: // keyword -> tkUses + case 920: // keyword -> tkUses +#line 4808 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 918: // keyword -> tkVar + case 921: // keyword -> tkVar +#line 4810 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 919: // keyword -> tkWhile + case 922: // keyword -> tkWhile +#line 4812 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 920: // keyword -> tkWith + case 923: // keyword -> tkWith +#line 4814 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 921: // keyword -> tkNil + case 924: // keyword -> tkNil +#line 4816 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 922: // keyword -> tkGoto + case 925: // keyword -> tkGoto +#line 4818 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 923: // keyword -> tkOf + case 926: // keyword -> tkOf +#line 4820 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 924: // keyword -> tkLabel + case 927: // keyword -> tkLabel +#line 4822 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 925: // keyword -> tkProgram + case 928: // keyword -> tkProgram +#line 4824 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 926: // keyword -> tkUnit + case 929: // keyword -> tkUnit +#line 4826 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 927: // keyword -> tkLibrary + case 930: // keyword -> tkLibrary +#line 4828 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 928: // keyword -> tkNamespace + case 931: // keyword -> tkNamespace +#line 4830 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 929: // keyword -> tkExternal + case 932: // keyword -> tkExternal +#line 4832 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 930: // keyword -> tkParams + case 933: // keyword -> tkParams +#line 4834 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 931: // keyword -> tkEvent + case 934: // keyword -> tkEvent +#line 4836 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 932: // keyword -> tkYield + case 935: // keyword -> tkYield +#line 4838 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 933: // keyword -> tkMatch + case 936: // keyword -> tkMatch +#line 4840 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 934: // keyword -> tkWhen + case 937: // keyword -> tkWhen +#line 4842 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 935: // keyword -> tkPartial + case 938: // keyword -> tkPartial +#line 4844 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 936: // keyword -> tkAbstract + case 939: // keyword -> tkAbstract +#line 4846 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 937: // keyword -> tkLock + case 940: // keyword -> tkLock +#line 4848 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 938: // keyword -> tkImplicit + case 941: // keyword -> tkImplicit +#line 4850 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 939: // keyword -> tkExplicit + case 942: // keyword -> tkExplicit +#line 4852 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 940: // keyword -> tkOn + case 943: // keyword -> tkOn +#line 4854 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 941: // keyword -> tkVirtual + case 944: // keyword -> tkVirtual +#line 4856 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 942: // keyword -> tkOverride + case 945: // keyword -> tkOverride +#line 4858 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 943: // keyword -> tkLoop + case 946: // keyword -> tkLoop +#line 4860 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 944: // keyword -> tkExtensionMethod + case 947: // keyword -> tkExtensionMethod +#line 4862 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 945: // keyword -> tkOverload + case 948: // keyword -> tkOverload +#line 4864 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 946: // keyword -> tkReintroduce + case 949: // keyword -> tkReintroduce +#line 4866 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 947: // keyword -> tkForward + case 950: // keyword -> tkForward +#line 4868 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 948: // reserved_keyword -> tkOperator + case 951: // reserved_keyword -> tkOperator +#line 4873 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 949: // overload_operator -> tkMinus + case 952: // overload_operator -> tkMinus +#line 4878 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 950: // overload_operator -> tkPlus + case 953: // overload_operator -> tkPlus +#line 4880 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 951: // overload_operator -> tkSlash + case 954: // overload_operator -> tkSlash +#line 4882 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 952: // overload_operator -> tkStar + case 955: // overload_operator -> tkStar +#line 4884 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 953: // overload_operator -> tkEqual + case 956: // overload_operator -> tkEqual +#line 4886 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 954: // overload_operator -> tkGreater + case 957: // overload_operator -> tkGreater +#line 4888 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 955: // overload_operator -> tkGreaterEqual + case 958: // overload_operator -> tkGreaterEqual +#line 4890 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 956: // overload_operator -> tkLower + case 959: // overload_operator -> tkLower +#line 4892 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 957: // overload_operator -> tkLowerEqual + case 960: // overload_operator -> tkLowerEqual +#line 4894 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 958: // overload_operator -> tkNotEqual + case 961: // overload_operator -> tkNotEqual +#line 4896 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 959: // overload_operator -> tkOr + case 962: // overload_operator -> tkOr +#line 4898 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 960: // overload_operator -> tkXor + case 963: // overload_operator -> tkXor +#line 4900 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 961: // overload_operator -> tkAnd + case 964: // overload_operator -> tkAnd +#line 4902 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 962: // overload_operator -> tkDiv + case 965: // overload_operator -> tkDiv +#line 4904 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 963: // overload_operator -> tkMod + case 966: // overload_operator -> tkMod +#line 4906 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 964: // overload_operator -> tkShl + case 967: // overload_operator -> tkShl +#line 4908 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 965: // overload_operator -> tkShr + case 968: // overload_operator -> tkShr +#line 4910 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 966: // overload_operator -> tkNot + case 969: // overload_operator -> tkNot +#line 4912 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 967: // overload_operator -> tkIn + case 970: // overload_operator -> tkIn +#line 4914 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 968: // overload_operator -> tkImplicit + case 971: // overload_operator -> tkImplicit +#line 4916 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 969: // overload_operator -> tkExplicit + case 972: // overload_operator -> tkExplicit +#line 4918 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 970: // overload_operator -> assign_operator + case 973: // overload_operator -> assign_operator +#line 4920 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 971: // overload_operator -> tkStarStar + case 974: // overload_operator -> tkStarStar +#line 4922 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 972: // assign_operator -> tkAssign + case 975: // assign_operator -> tkAssign +#line 4927 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 973: // assign_operator -> tkPlusEqual + case 976: // assign_operator -> tkPlusEqual +#line 4929 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 974: // assign_operator -> tkMinusEqual + case 977: // assign_operator -> tkMinusEqual +#line 4931 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 975: // assign_operator -> tkMultEqual + case 978: // assign_operator -> tkMultEqual +#line 4933 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 976: // assign_operator -> tkDivEqual + case 979: // assign_operator -> tkDivEqual +#line 4935 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 977: // lambda_unpacked_params -> tkBackSlashRoundOpen, + case 980: // lambda_unpacked_params -> tkBackSlashRoundOpen, // lambda_list_of_unpacked_params_or_id, tkComma, // lambda_unpacked_params_or_id, tkRoundClose +#line 4940 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4941 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // �?ез�?л�?�?а�? надо п�?исвои�?�? каком�? �?о са�?а�?ном�? пол�? в function_lambda_definition (ValueStack[ValueStack.Depth-4].ob as unpacked_list_of_ident_or_list).Add(ValueStack[ValueStack.Depth-2].ob as ident_or_list); +#line 4942 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-4].ob as unpacked_list_of_ident_or_list; +#line 4943 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 978: // lambda_unpacked_params_or_id -> lambda_unpacked_params + case 981: // lambda_unpacked_params_or_id -> lambda_unpacked_params +#line 4949 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4950 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new ident_or_list(ValueStack[ValueStack.Depth-1].ex as unpacked_list_of_ident_or_list); +#line 4951 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 979: // lambda_unpacked_params_or_id -> identifier + case 982: // lambda_unpacked_params_or_id -> identifier +#line 4953 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4954 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new ident_or_list(ValueStack[ValueStack.Depth-1].id as ident); +#line 4955 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 980: // lambda_list_of_unpacked_params_or_id -> lambda_unpacked_params_or_id + case 983: // lambda_list_of_unpacked_params_or_id -> lambda_unpacked_params_or_id +#line 4960 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4961 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new unpacked_list_of_ident_or_list(); +#line 4962 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as unpacked_list_of_ident_or_list).Add(ValueStack[ValueStack.Depth-1].ob as ident_or_list); +#line 4963 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as unpacked_list_of_ident_or_list).source_context = LocationStack[LocationStack.Depth-1]; +#line 4964 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 981: // lambda_list_of_unpacked_params_or_id -> lambda_list_of_unpacked_params_or_id, + case 984: // lambda_list_of_unpacked_params_or_id -> lambda_list_of_unpacked_params_or_id, // tkComma, lambda_unpacked_params_or_id +#line 4966 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4967 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; +#line 4968 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as unpacked_list_of_ident_or_list).Add(ValueStack[ValueStack.Depth-1].ob as ident_or_list); +#line 4969 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ob as unpacked_list_of_ident_or_list).source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-3],LocationStack[LocationStack.Depth-1]); +#line 4970 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 982: // expr_l1_or_unpacked -> expr_l1 + case 985: // expr_l1_or_unpacked -> expr_l1 +#line 4976 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 983: // expr_l1_or_unpacked -> lambda_unpacked_params + case 986: // expr_l1_or_unpacked -> lambda_unpacked_params +#line 4978 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 984: // expr_l1_or_unpacked_list -> expr_l1_or_unpacked + case 987: // expr_l1_or_unpacked_list -> expr_l1_or_unpacked +#line 4984 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4985 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 4986 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 985: // expr_l1_or_unpacked_list -> expr_l1_or_unpacked_list, tkComma, + case 988: // expr_l1_or_unpacked_list -> expr_l1_or_unpacked_list, tkComma, // expr_l1_or_unpacked +#line 4988 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4989 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); +#line 4990 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 986: // func_decl_lambda -> identifier, tkArrow, lambda_function_body + case 989: // func_decl_lambda -> identifier, tkArrow, lambda_function_body +#line 4995 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 4996 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idList = new ident_list(ValueStack[ValueStack.Depth-3].id, LocationStack[LocationStack.Depth-3]); +#line 4997 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new lambda_any_type_node_syntax(), LocationStack[LocationStack.Depth-3]), parametr_kind.none, null, LocationStack[LocationStack.Depth-3]), LocationStack[LocationStack.Depth-3]); +#line 4998 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" //var sl = $3 as statement_list; //if (sl.expr_lambda_body || SyntaxVisitors.HasNameVisitor.HasName($3, "Result") != null) // если э�?о б�?ло в�?�?ажение или ес�?�? пе�?еменная Result, �?о ав�?ов�?вод �?ипа CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, new lambda_inferred_type(new lambda_any_type_node_syntax(), LocationStack[LocationStack.Depth-3]), ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); +#line 4999 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" //else //$$ = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, null, $3 as statement_list, @$); } break; - case 987: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref_noproctype, + case 990: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref_noproctype, // tkArrow, lambda_function_body +#line 5005 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5006 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // �?дес�? надо анализи�?ова�?�? по �?ел�? и либо ос�?авля�?�? lambda_inferred_type, либо дела�?�? его null! var sl = ValueStack[ValueStack.Depth-1].stn as statement_list; +#line 5007 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (sl.expr_lambda_body || SyntaxVisitors.HasNameVisitor.HasName(sl, "result") != null) // �?о надо в�?води�?�? CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, sl, CurrentLocationSpan); +#line 5008 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, sl, CurrentLocationSpan); +#line 5009 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 988: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, + case 991: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, // lambda_type_ref_noproctype, tkArrow, lambda_function_body +#line 5013 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5014 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idList = new ident_list(ValueStack[ValueStack.Depth-7].id, LocationStack[LocationStack.Depth-7]); +#line 5015 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var loc = LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5]); +#line 5016 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var formalPars = new formal_parameters(new typed_parameters(idList, ValueStack[ValueStack.Depth-5].td, parametr_kind.none, null, loc), loc); +#line 5017 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sl = ValueStack[ValueStack.Depth-1].stn as statement_list; +#line 5018 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (sl.expr_lambda_body || SyntaxVisitors.HasNameVisitor.HasName(sl, "result") != null) // �?о надо в�?води�?�? CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, ValueStack[ValueStack.Depth-3].td, sl, CurrentLocationSpan); +#line 5019 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, null, sl, CurrentLocationSpan); +#line 5020 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 989: // func_decl_lambda -> tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, + case 992: // func_decl_lambda -> tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, // tkRoundClose, lambda_type_ref_noproctype, tkArrow, // lambda_function_body +#line 5023 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5024 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idList = new ident_list(ValueStack[ValueStack.Depth-7].id, LocationStack[LocationStack.Depth-7]); +#line 5025 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new lambda_any_type_node_syntax(), null), parametr_kind.none, null, LocationStack[LocationStack.Depth-7]), LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5])); +#line 5026 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" for (int i = 0; i < (ValueStack[ValueStack.Depth-5].stn as formal_parameters).Count; i++) +#line 5027 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" formalPars.Add((ValueStack[ValueStack.Depth-5].stn as formal_parameters).params_list[i]); +#line 5028 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sl = ValueStack[ValueStack.Depth-1].stn as statement_list; +#line 5029 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (sl.expr_lambda_body || SyntaxVisitors.HasNameVisitor.HasName(sl, "result") != null) // �?о надо в�?води�?�? CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, ValueStack[ValueStack.Depth-3].td, sl, CurrentLocationSpan); +#line 5030 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, null, sl, CurrentLocationSpan); +#line 5031 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 990: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, + case 993: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, // full_lambda_fp_list, tkRoundClose, // lambda_type_ref_noproctype, tkArrow, lambda_function_body +#line 5034 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5035 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idList = new ident_list(ValueStack[ValueStack.Depth-9].id, LocationStack[LocationStack.Depth-9]); +#line 5036 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var loc = LexLocation.MergeAll(LocationStack[LocationStack.Depth-9],LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7]); +#line 5037 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var formalPars = new formal_parameters(new typed_parameters(idList, ValueStack[ValueStack.Depth-7].td, parametr_kind.none, null, loc), LexLocation.MergeAll(LocationStack[LocationStack.Depth-9],LocationStack[LocationStack.Depth-8],LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5])); +#line 5038 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" for (int i = 0; i < (ValueStack[ValueStack.Depth-5].stn as formal_parameters).Count; i++) +#line 5039 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" formalPars.Add((ValueStack[ValueStack.Depth-5].stn as formal_parameters).params_list[i]); +#line 5040 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sl = ValueStack[ValueStack.Depth-1].stn as statement_list; +#line 5041 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (sl.expr_lambda_body || SyntaxVisitors.HasNameVisitor.HasName(sl, "result") != null) // �?о надо в�?води�?�? CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, ValueStack[ValueStack.Depth-3].td, sl, CurrentLocationSpan); +#line 5042 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, null, sl, CurrentLocationSpan); +#line 5043 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 991: // func_decl_lambda -> tkRoundOpen, expr_l1_or_unpacked, tkComma, + case 994: // func_decl_lambda -> tkRoundOpen, expr_l1_or_unpacked, tkComma, // expr_l1_or_unpacked_list, lambda_type_ref, // optional_full_lambda_fp_list, tkRoundClose, rem_lambda +#line 5046 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5047 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var pair = ValueStack[ValueStack.Depth-1].ob as pair_type_stlist; +#line 5048 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5049 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-4].td is lambda_inferred_type) +#line 5050 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5051 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // добавим с�?да \(x,y) // �?�?ой�?ис�? по всем expr_list1. �?сли �?о�?я б�? одна - �?ипа ident_or_list �?о пой�?и по э�?ой ве�?ке и в�?й�?и // �?беди�?�?ся, �?�?о $6 = null // с�?о�?ми�?ова�?�? List для unpacked_params и п�?исвои�?�? var has_unpacked = false; +#line 5052 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-7].ex is unpacked_list_of_ident_or_list) +#line 5053 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" has_unpacked = true; +#line 5054 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (!has_unpacked) +#line 5055 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" foreach (var x in (ValueStack[ValueStack.Depth-5].stn as expression_list).expressions) +#line 5056 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5057 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (x is unpacked_list_of_ident_or_list) +#line 5058 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5059 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" has_unpacked = true; +#line 5060 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" break; +#line 5061 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5062 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5063 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (has_unpacked) // �?�?�? новая ве�?ка { +#line 5064 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-3].stn != null) +#line 5065 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5066 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("SEMICOLON_IN_PARAMS",LocationStack[LocationStack.Depth-3]); +#line 5067 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5068 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5069 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var lst_ex = new List(); +#line 5070 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" lst_ex.Add(ValueStack[ValueStack.Depth-7].ex as expression); +#line 5071 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" foreach (var x in (ValueStack[ValueStack.Depth-5].stn as expression_list).expressions) +#line 5072 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" lst_ex.Add(x); +#line 5073 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5074 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" function_lambda_definition fld = null; //= new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, //new lambda_inferred_type(new lambda_any_type_node_syntax(), @2), pair.exprs, @$); +#line 5075 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sl1 = pair.exprs; +#line 5076 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (sl1.expr_lambda_body || SyntaxVisitors.HasNameVisitor.HasName(sl1, "result") != null) // �?о надо в�?води�?�? fld = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, pair.tn, pair.exprs, CurrentLocationSpan); +#line 5077 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else fld = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, pair.exprs, CurrentLocationSpan); +#line 5078 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5079 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" fld.unpacked_params = lst_ex; +#line 5080 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = fld; +#line 5081 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" return; +#line 5082 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5083 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5084 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var formal_pars = new formal_parameters(); +#line 5085 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idd = ValueStack[ValueStack.Depth-7].ex as ident; +#line 5086 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (idd==null) +#line 5087 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("ONE_TKIDENTIFIER",LocationStack[LocationStack.Depth-7]); +#line 5088 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var lambda_inf_type = new lambda_inferred_type(new lambda_any_type_node_syntax(), null); +#line 5089 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var new_typed_pars = new typed_parameters(new ident_list(idd, idd.source_context), lambda_inf_type, parametr_kind.none, null, idd.source_context); +#line 5090 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" formal_pars.Add(new_typed_pars); +#line 5091 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" foreach (var id in (ValueStack[ValueStack.Depth-5].stn as expression_list).expressions) +#line 5092 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5093 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idd1 = id as ident; +#line 5094 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (idd1==null) +#line 5095 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("ONE_TKIDENTIFIER",id.source_context); +#line 5096 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5097 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" lambda_inf_type = new lambda_inferred_type(new lambda_any_type_node_syntax(), null); +#line 5098 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" new_typed_pars = new typed_parameters(new ident_list(idd1, idd1.source_context), lambda_inf_type, parametr_kind.none, null, idd1.source_context); +#line 5099 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" formal_pars.Add(new_typed_pars); +#line 5100 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5101 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5102 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-3].stn != null) +#line 5103 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" for (int i = 0; i < (ValueStack[ValueStack.Depth-3].stn as formal_parameters).Count; i++) +#line 5104 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" formal_pars.Add((ValueStack[ValueStack.Depth-3].stn as formal_parameters).params_list[i]); +#line 5105 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5106 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" formal_pars.source_context = LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4]); +#line 5107 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5108 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sl = pair.exprs; +#line 5109 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (sl.expr_lambda_body || SyntaxVisitors.HasNameVisitor.HasName(sl, "result") != null) // �?о надо в�?води�?�? CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formal_pars, pair.tn, pair.exprs, CurrentLocationSpan); +#line 5110 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formal_pars, null, pair.exprs, CurrentLocationSpan); +#line 5111 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5112 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 5113 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5114 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var loc = LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5]); +#line 5115 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idd = ValueStack[ValueStack.Depth-7].ex as ident; +#line 5116 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (idd==null) +#line 5117 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("ONE_TKIDENTIFIER",LocationStack[LocationStack.Depth-7]); +#line 5118 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5119 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idList = new ident_list(idd, loc); +#line 5120 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5121 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var iddlist = (ValueStack[ValueStack.Depth-5].stn as expression_list).expressions; +#line 5122 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5123 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" for (int j = 0; j < iddlist.Count; j++) +#line 5124 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5125 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var idd2 = iddlist[j] as ident; +#line 5126 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (idd2==null) +#line 5127 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("ONE_TKIDENTIFIER",idd2.source_context); +#line 5128 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" idList.Add(idd2); +#line 5129 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5130 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var parsType = ValueStack[ValueStack.Depth-4].td; +#line 5131 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var formalPars = new formal_parameters(new typed_parameters(idList, parsType, parametr_kind.none, null, LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4])), LexLocation.MergeAll(LocationStack[LocationStack.Depth-7],LocationStack[LocationStack.Depth-6],LocationStack[LocationStack.Depth-5],LocationStack[LocationStack.Depth-4],LocationStack[LocationStack.Depth-3])); +#line 5132 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5133 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (ValueStack[ValueStack.Depth-3].stn != null) +#line 5134 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" for (int i = 0; i < (ValueStack[ValueStack.Depth-3].stn as formal_parameters).Count; i++) +#line 5135 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" formalPars.Add((ValueStack[ValueStack.Depth-3].stn as formal_parameters).params_list[i]); +#line 5136 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" +#line 5137 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sl = pair.exprs; +#line 5138 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (sl.expr_lambda_body || SyntaxVisitors.HasNameVisitor.HasName(sl, "result") != null) // �?о надо в�?води�?�? CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, pair.tn, pair.exprs, CurrentLocationSpan); +#line 5139 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, null, pair.exprs, CurrentLocationSpan); +#line 5140 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5141 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 992: // func_decl_lambda -> lambda_unpacked_params, rem_lambda + case 995: // func_decl_lambda -> lambda_unpacked_params, rem_lambda +#line 5153 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5154 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var pair = ValueStack[ValueStack.Depth-1].ob as pair_type_stlist; +#line 5155 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // пока �?о�?мал�?н�?е па�?аме�?�?�? - null. Раск�?оем и�? са�?а�?н�?м визи�?о�?ом CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, +#line 5156 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" new lambda_inferred_type(new lambda_any_type_node_syntax(), LocationStack[LocationStack.Depth-2]), pair.exprs, CurrentLocationSpan); +#line 5157 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" // unpacked_params - э�?о для одного па�?аме�?�?а. �?ля нескол�?ки�? - надо д�?�?г�?�? с�?�?�?к�?�?�?�?. �?озможно, список списков var lst_ex = new List(); +#line 5158 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" lst_ex.Add(ValueStack[ValueStack.Depth-2].ex as unpacked_list_of_ident_or_list); +#line 5159 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.ex as function_lambda_definition).unpacked_params = lst_ex; +#line 5160 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 993: // func_decl_lambda -> expl_func_decl_lambda + case 996: // func_decl_lambda -> expl_func_decl_lambda +#line 5164 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5165 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; +#line 5166 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 994: // optional_full_lambda_fp_list -> /* empty */ + case 997: // optional_full_lambda_fp_list -> /* empty */ +#line 5170 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { CurrentSemanticValue.stn = null; } break; - case 995: // optional_full_lambda_fp_list -> tkSemiColon, full_lambda_fp_list + case 998: // optional_full_lambda_fp_list -> tkSemiColon, full_lambda_fp_list +#line 5172 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5173 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 5174 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 996: // rem_lambda -> lambda_type_ref_noproctype, tkArrow, lambda_function_body + case 999: // rem_lambda -> lambda_type_ref_noproctype, tkArrow, lambda_function_body +#line 5179 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5180 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ob = new pair_type_stlist(ValueStack[ValueStack.Depth-3].td,ValueStack[ValueStack.Depth-1].stn as statement_list); +#line 5181 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 997: // expl_func_decl_lambda -> tkFunction, lambda_type_ref_noproctype, tkArrow, - // lambda_function_body + case 1000: // expl_func_decl_lambda -> tkFunction, lambda_type_ref_noproctype, tkArrow, + // lambda_function_body +#line 5186 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5187 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, 1, CurrentLocationSpan); +#line 5188 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 998: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, - // lambda_type_ref_noproctype, tkArrow, - // lambda_function_body + case 1001: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, + // lambda_type_ref_noproctype, tkArrow, + // lambda_function_body +#line 5190 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5191 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, 1, CurrentLocationSpan); +#line 5192 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 999: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, - // tkRoundClose, lambda_type_ref_noproctype, tkArrow, - // lambda_function_body + case 1002: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, + // tkRoundClose, lambda_type_ref_noproctype, tkArrow, + // lambda_function_body +#line 5194 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5195 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" 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, 1, CurrentLocationSpan); +#line 5196 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1000: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body + case 1003: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body +#line 5198 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5199 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, 2, CurrentLocationSpan); +#line 5200 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1001: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, + case 1004: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, // lambda_procedure_body +#line 5202 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5203 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, 2, CurrentLocationSpan); +#line 5204 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1002: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, + case 1005: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, // tkRoundClose, tkArrow, lambda_procedure_body +#line 5206 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5207 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" 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, 2, CurrentLocationSpan); +#line 5208 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1003: // full_lambda_fp_list -> lambda_simple_fp_sect + case 1006: // full_lambda_fp_list -> lambda_simple_fp_sect +#line 5213 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5214 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var typed_pars = ValueStack[ValueStack.Depth-1].stn as typed_parameters; +#line 5215 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (typed_pars.vars_type is lambda_inferred_type) +#line 5216 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5217 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new formal_parameters(); +#line 5218 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" foreach (var id in typed_pars.idents.idents) +#line 5219 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5220 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var lambda_inf_type = new lambda_inferred_type(new lambda_any_type_node_syntax(), null); +#line 5221 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var new_typed_pars = new typed_parameters(new ident_list(id, id.source_context), lambda_inf_type, parametr_kind.none, null, id.source_context); +#line 5222 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" (CurrentSemanticValue.stn as formal_parameters).Add(new_typed_pars); +#line 5223 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5224 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn.source_context = CurrentLocationSpan; +#line 5225 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5226 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" else +#line 5227 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5228 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new formal_parameters(typed_pars, CurrentLocationSpan); +#line 5229 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5230 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1004: // full_lambda_fp_list -> full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect + case 1007: // full_lambda_fp_list -> full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect +#line 5232 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5233 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn =(ValueStack[ValueStack.Depth-3].stn as formal_parameters).Add(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); +#line 5234 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1005: // lambda_simple_fp_sect -> ident_list, lambda_type_ref + case 1008: // lambda_simple_fp_sect -> ident_list, lambda_type_ref +#line 5239 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5240 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-2].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.none, null, CurrentLocationSpan); +#line 5241 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1006: // lambda_type_ref -> /* empty */ + case 1009: // lambda_type_ref -> /* empty */ +#line 5246 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5247 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new lambda_inferred_type(new lambda_any_type_node_syntax(), null); +#line 5248 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1007: // lambda_type_ref -> tkColon, fptype + case 1010: // lambda_type_ref -> tkColon, fptype +#line 5250 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5251 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 5252 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1008: // lambda_type_ref_noproctype -> /* empty */ + case 1011: // lambda_type_ref_noproctype -> /* empty */ +#line 5257 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5258 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = new lambda_inferred_type(new lambda_any_type_node_syntax(), null); +#line 5259 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1009: // lambda_type_ref_noproctype -> tkColon, fptype_noproctype + case 1012: // lambda_type_ref_noproctype -> tkColon, fptype_noproctype +#line 5261 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5262 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; +#line 5263 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1010: // common_lambda_body -> compound_stmt + case 1013: // common_lambda_body -> compound_stmt +#line 5268 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5269 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 5270 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1011: // common_lambda_body -> if_stmt + case 1014: // common_lambda_body -> if_stmt +#line 5272 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5273 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5274 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1012: // common_lambda_body -> while_stmt + case 1015: // common_lambda_body -> while_stmt +#line 5276 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5277 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5278 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1013: // common_lambda_body -> repeat_stmt + case 1016: // common_lambda_body -> repeat_stmt +#line 5280 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5281 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5282 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1014: // common_lambda_body -> for_stmt + case 1017: // common_lambda_body -> for_stmt +#line 5284 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5285 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5286 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1015: // common_lambda_body -> foreach_stmt + case 1018: // common_lambda_body -> foreach_stmt +#line 5288 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5289 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5290 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1016: // common_lambda_body -> loop_stmt + case 1019: // common_lambda_body -> loop_stmt +#line 5292 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5293 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5294 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1017: // common_lambda_body -> case_stmt + case 1020: // common_lambda_body -> case_stmt +#line 5296 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5297 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5298 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1018: // common_lambda_body -> try_stmt + case 1021: // common_lambda_body -> try_stmt +#line 5300 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5301 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5302 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1019: // common_lambda_body -> lock_stmt + case 1022: // common_lambda_body -> lock_stmt +#line 5304 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5305 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5306 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1020: // common_lambda_body -> raise_stmt + case 1023: // common_lambda_body -> raise_stmt +#line 5308 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5309 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5310 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1021: // common_lambda_body -> yield_stmt + case 1024: // common_lambda_body -> yield_stmt +#line 5312 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5313 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("YIELD_STATEMENT_CANNOT_BE_USED_IN_LAMBDA_BODY", CurrentLocationSpan); +#line 5314 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1022: // common_lambda_body -> tkRoundOpen, assignment, tkRoundClose + case 1025: // common_lambda_body -> tkRoundOpen, assignment, tkRoundClose +#line 5316 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5317 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-2].stn as statement, LocationStack[LocationStack.Depth-2]); +#line 5318 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1023: // lambda_function_body -> expr_l1_for_lambda + case 1026: // lambda_function_body -> expr_l1_for_lambda +#line 5324 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5325 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var id = SyntaxVisitors.HasNameVisitor.HasName(ValueStack[ValueStack.Depth-1].ex, "Result"); +#line 5326 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" if (id != null) +#line 5327 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5328 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" parserTools.AddErrorFromResource("RESULT_IDENT_NOT_EXPECTED_IN_THIS_CONTEXT", id.source_context); +#line 5329 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } +#line 5330 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" var sl = new statement_list(new assign("result",ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan),CurrentLocationSpan); // надо поме�?а�?�? е�?�? и assign как ав�?осгене�?и�?ованн�?й для лямбд�? - �?�?об�? зап�?е�?и�?�? явн�?й Result sl.expr_lambda_body = true; +#line 5331 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = sl; +#line 5332 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1024: // lambda_function_body -> common_lambda_body + case 1027: // lambda_function_body -> common_lambda_body +#line 5335 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5336 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 5337 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1025: // lambda_procedure_body -> proc_call + case 1028: // lambda_procedure_body -> proc_call +#line 5342 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5343 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5344 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1026: // lambda_procedure_body -> assignment + case 1029: // lambda_procedure_body -> assignment +#line 5346 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5347 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); +#line 5348 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; - case 1027: // lambda_procedure_body -> common_lambda_body + case 1030: // lambda_procedure_body -> common_lambda_body +#line 5350 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" { +#line 5351 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; +#line 5352 "D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" } break; } diff --git a/Parsers/PascalABCParserNewSaushkin/PABC.tags b/Parsers/PascalABCParserNewSaushkin/PABC.tags index 8cbf0e7e4..d6129c750 100644 --- a/Parsers/PascalABCParserNewSaushkin/PABC.tags +++ b/Parsers/PascalABCParserNewSaushkin/PABC.tags @@ -14,7 +14,6 @@ - @@ -43,10 +42,7 @@ - - - @@ -74,9 +70,7 @@ - - @@ -103,7 +97,6 @@ - @@ -137,12 +130,10 @@ - - @@ -174,9 +165,6 @@ - - - @@ -220,22 +208,8 @@ - - - - - - - - - - - - - - @@ -250,19 +224,15 @@ - - - - diff --git a/Parsers/PascalABCParserNewSaushkin/PABC.ymc b/Parsers/PascalABCParserNewSaushkin/PABC.ymc index 63c278343..442b5a145 100644 --- a/Parsers/PascalABCParserNewSaushkin/PABC.ymc +++ b/Parsers/PascalABCParserNewSaushkin/PABC.ymc @@ -1,16 +1,19 @@ lex=ABCPascal.lex yacc=ABCPascal.y -lexGen=D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\Gplex.exe -yaccGen=D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gppg.exe +lexGen=D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\Gplex.exe +yaccGen=D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gppg.exe lexGenOpt=/unicode yaccGenOpt=/gplex -useCustomScript script= -"D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gplex.exe" /unicode "D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\ABCPascal.lex" +"D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gplex.exe" /unicode "D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\ABCPascal.lex" + +"D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gppg.exe" /no-lines /gplex "D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" + +"D:\PABC_GIT\pascalabcnet\Parsers\PascalABCParserNewSaushkin\convert4.exe" + + -"D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\GPLex_GPPG\gppg.exe" /no-lines /gplex "D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\ABCPascal.y" -"D:\PABC_Git\Parsers\PascalABCParserNewSaushkin\convert4.exe" diff --git a/Parsers/PascalABCParserNewSaushkin/SemanticRulesForYacc.cs b/Parsers/PascalABCParserNewSaushkin/SemanticRulesForYacc.cs index acd2a2053..454266307 100644 --- a/Parsers/PascalABCParserNewSaushkin/SemanticRulesForYacc.cs +++ b/Parsers/PascalABCParserNewSaushkin/SemanticRulesForYacc.cs @@ -1,6 +1,7 @@ // Copyright (c) Ivan Bondarev, Stanislav Mikhalkovich (for details please see \doc\copyright.txt) // This code is distributed under the GNU LGPL (for details please see \doc\license.txt) using System; +using System.Linq; using System.Collections.Generic; using System.Text; using QUT.Gppg; @@ -566,6 +567,52 @@ namespace Languages.Pascal.Frontend.Core return sl; }/**/ + public expression NewIndexerOrSlice(addressed_value av, expression_list el, LexLocation loc) + { + if (el.Count == 1 && el.expressions[0] is format_expr) + { + var fe = el.expressions[0] as format_expr; + if (!parserTools.buildTreeForFormatter) + { + if (fe.expr == null) + fe.expr = new int32_const(int.MaxValue,el.source_context); + if (fe.format1 == null) + fe.format1 = new int32_const(int.MaxValue, el.source_context); + } + return new slice_expr(av, fe.expr, fe.format1, fe.format2, el.source_context); + } + // многомерные срезы + else if (el.expressions.Any(e => e is format_expr)) + { + // Срезы многомерных массивов разрешены только для массивов размерности < 5 + if (el.expressions.Count > 4) + parserTools.AddErrorFromResource("SLICES_OF MULTIDIMENSIONAL_ARRAYS_ALLOW_ONLY_FOR_RANK_LT_5",loc); + var ll = new List>(); + foreach (var ex in el.expressions) + { + if (ex is format_expr fe) + { + if (fe.expr == null) + fe.expr = new int32_const(int.MaxValue, fe.source_context); + if (fe.format1 == null) + fe.format1 = new int32_const(int.MaxValue, fe.source_context); + if (fe.format2 == null) + fe.format2 = new int32_const(1, fe.source_context); + ll.Add(Tuple.Create(fe.expr, fe.format1, fe.format2)); + } + else + { + // скалярное значение вместо среза + ll.Add(Tuple.Create(ex, (expression)new int32_const(0, ex.source_context), (expression)new int32_const(int.MaxValue, ex.source_context))); + } + } + var sle = new slice_expr(av, null, null, null,loc); + sle.slices = ll; + return sle; + } + else return new indexer(av, el, loc); + } + public procedure_definition CreateAndAddToClassReadFunc(expression ex, ident id, SourceContext sc) { var fd = SyntaxTreeBuilder.BuildShortFuncDefinition(new formal_parameters(), null, new method_name(id.name, sc), new no_type(), ex, sc); diff --git a/Parsers/PascalABCParserNewSaushkin/generateParserScanner.bat b/Parsers/PascalABCParserNewSaushkin/generateParserScanner.bat index 4f1d3ea2c..807d83708 100644 --- a/Parsers/PascalABCParserNewSaushkin/generateParserScanner.bat +++ b/Parsers/PascalABCParserNewSaushkin/generateParserScanner.bat @@ -1,5 +1,5 @@ cls GPLex_GPPG\gplex.exe /unicode ABCPascal.lex -GPLex_GPPG\gppg.exe /no-lines /gplex ABCPascal.y +GPLex_GPPG\gppg.exe /report /no-lines /gplex ABCPascal.y convert4.exe pause \ No newline at end of file diff --git a/Release/pabcversion.txt b/Release/pabcversion.txt index efb9a4ee1..cf6981451 100644 --- a/Release/pabcversion.txt +++ b/Release/pabcversion.txt @@ -1 +1 @@ -3.10.1.3589 +3.10.2.3593 diff --git a/ReleaseGenerators/PascalABCNET_version.nsh b/ReleaseGenerators/PascalABCNET_version.nsh index 1686d7299..fd0d2ce31 100644 --- a/ReleaseGenerators/PascalABCNET_version.nsh +++ b/ReleaseGenerators/PascalABCNET_version.nsh @@ -1 +1 @@ -!define VERSION '3.10.2.3589' +!define VERSION '3.10.2.3593' diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index 66615463a..932ce382f 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -14832,30 +14832,31 @@ begin Result := (Self[0], Self[1], Self[2], Self[3], Self[4], Self[5], v); end; -/// Выводит кортеж +/// Выводит кортеж на экран, после чего выводит пробел procedure Print(Self: (T1, T2)); extensionmethod := Print(Self); -/// Выводит кортеж +/// Выводит кортеж на экран, после чего выводит пробел procedure Print(Self: (T1, T2, T3)); extensionmethod := Print(Self); -/// Выводит кортеж +/// Выводит кортеж на экран, после чего выводит пробел procedure Print(Self: (T1, T2, T3, T4)); extensionmethod := Print(Self); -/// Выводит кортеж +/// Выводит кортеж на экран, после чего выводит пробел procedure Print(Self: (T1, T2, T3, T4, T5)); extensionmethod := Print(Self); -/// Выводит кортеж +/// Выводит кортеж на экран, после чего выводит пробел procedure Print(Self: (T1, T2, T3, T4, T5, T6)); extensionmethod := Print(Self); -/// Выводит кортеж +/// Выводит кортеж на экран, после чего выводит пробел procedure Print(Self: (T1, T2, T3, T4, T5, T6, T7)); extensionmethod := Print(Self); -/// Выводит кортеж и переходит на новую строку +/// Выводит кортеж на экран и переходит на новую строку procedure Println(Self: (T1, T2)); extensionmethod := Println(Self); -/// Выводит кортеж и переходит на новую строку +/// Выводит кортеж на экран и переходит на новую строку procedure Println(Self: (T1, T2, T3)); extensionmethod := Println(Self); -/// Выводит кортеж и переходит на новую строку +/// Выводит кортеж на экран и переходит на новую строку procedure Println(Self: (T1, T2, T3, T4)); extensionmethod := Println(Self); -/// Выводит кортеж и переходит на новую строку +/// Выводит кортеж на экран и переходит на новую строку procedure Println(Self: (T1, T2, T3, T4, T5)); extensionmethod := Println(Self); -/// Выводит кортеж и переходит на новую строку +/// Выводит кортеж на экран и переходит на новую строку procedure Println(Self: (T1, T2, T3, T4, T5, T6)); extensionmethod := Println(Self); -/// Выводит кортеж и переходит на новую строку +/// Выводит кортеж на экран и переходит на новую строку procedure Println(Self: (T1, T2, T3, T4, T5, T6, T7)); extensionmethod := Println(Self); + /// Преобразует кортеж элементов одного типа в массив function ToArray(Self: (T,T)): array of T; extensionmethod := |Self[0],Self[1]|; /// Преобразует кортеж элементов одного типа в массив diff --git a/bin/Lib/SF.pas b/bin/Lib/SF.pas index e7d66433a..bb89662ce 100644 --- a/bin/Lib/SF.pas +++ b/bin/Lib/SF.pas @@ -127,10 +127,6 @@ begin max := x end; -/// Возвращает все перестановки -function Prm(Self: array of T): sequence of array of T; extensionmethod - := Self.Permutations; - /// Возвращает все сочетания по m элементов function Cmb(Self: array of T; m: integer): sequence of array of T; extensionmethod := Self.Combinations(m); @@ -281,42 +277,67 @@ procedure Tr(a: array of T; transform: T->T) := a.Transform(transform); function H(Self: array of T): integer; extensionmethod := Self.High; /// Возвращает все перестановки множества элементов, заданного массивом -function Prm(Self: array of T): sequence of array of T; extensionmethod := Self.Permutations; +function Prm(Self: array of T): sequence of array of T; extensionmethod + := Self.Permutations; /// Возвращает все перестановки множества элементов, заданного массивом -function Prm(Self: sequence of T): sequence of array of T; extensionmethod := Self.Permutations; +function Prm(Self: sequence of T): sequence of array of T; extensionmethod + := Self.Permutations; /// Возвращает все частичные перестановки из n элементов по m -function Prm(Self: array of T; m: integer): sequence of array of T; extensionmethod := Self.Permutations(m); +function Prm(Self: array of T; m: integer): sequence of array of T; extensionmethod + := Self.Permutations(m); /// Возвращает все частичные перестановки из n элементов по m -function Prm(Self: sequence of T; m: integer): sequence of array of T; extensionmethod := Self.Permutations(m); +function Prm(Self: sequence of T; m: integer): sequence of array of T; extensionmethod + := Self.Permutations(m); + +/// Возвращает все перестановки букв в строке в виде последовательности строк +function Prm(Self: string): sequence of string; extensionmethod + := Self.Permutations; + +/// Возвращает все частичные перестановки букв строки по m символов в виде последовательности строк +function Prm(Self: string; m: integer): sequence of string; extensionmethod + := Self.Permutations(m); /// Возвращает n-тую декартову степень множества элементов, заданного массивом -function Cart(Self: array of T; n: integer): sequence of array of T; extensionmethod := Self.Cartesian(n); +function Cart(Self: array of T; n: integer): sequence of array of T; extensionmethod + := Self.Cartesian(n); /// Возвращает n-тую декартову степень множества элементов, заданного массивом -function Cart(Self: sequence of T; n: integer): sequence of array of T; extensionmethod := Self.Cartesian(n); +function Cart(Self: sequence of T; n: integer): sequence of array of T; extensionmethod + := Self.Cartesian(n); /// Возвращает n-тую декартову степень множества символов, заданного строкой -function Cart(Self: string; n: integer): sequence of string; extensionmethod := Self.CartesianPower(n); +function Cart(Self: string; n: integer): sequence of string; extensionmethod + := Self.CartesianPower(n); /// Возвращает декартово произведение последовательностей в виде последовательности пар -function Cart(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod := Self.Cartesian(b); +function Cart(Self: sequence of T; b: sequence of T1): sequence of (T, T1); extensionmethod + := Self.Cartesian(b); /// Возвращает декартово произведение последовательностей, проектируя каждую пару на значение -function Cart(Self: sequence of T; b: sequence of T1; func: (T,T1)->T2): sequence of T2; extensionmethod := Self.Cartesian(b,func); +function Cart(Self: sequence of T; b: sequence of T1; func: (T,T1)->T2): sequence of T2; extensionmethod + := Self.Cartesian(b,func); + + +/// Возвращает все сочетания по m элементов +function Cmb(Self: array of T; m: integer): sequence of array of T; extensionmethod + := Self.Combinations(m); + +/// Возвращает все сочетания по m элементов +function Cmb(Self: sequence of T; m: integer): sequence of array of T; extensionmethod + := Self.Combinations(m); + +/// Возвращает все сочетания по m элементов +function Cmb(Self: string; m: integer): sequence of string; extensionmethod + := Self.Combinations(m); + /// Возвращает исходную последовательность или одноэлементную последовательность если исходная последовательность пуста function DefIfE(Self: sequence of T; def: T): sequence of T; extensionmethod := Self.DefaultIfEmpty(def); -/// Возвращает все сочетания по m элементов -function Cmb(Self: array of T; m: integer): sequence of array of T; extensionmethod := Self.Combinations(m); - -/// Возвращает все сочетания по m элементов -function Cmb(Self: sequence of T; m: integer): sequence of array of T; extensionmethod := Self.Combinations(m); - -/// Выводит кортеж +/// Выводит кортеж на экран, после чего выводит пробел function Pr(Self: (T1,T2)): (T1,T2); extensionmethod; begin Result := Self;