diff --git a/CodeCompletion/CodeFormatter.cs b/CodeCompletion/CodeFormatter.cs index 879961a03..0d64394d6 100644 --- a/CodeCompletion/CodeFormatter.cs +++ b/CodeCompletion/CodeFormatter.cs @@ -1853,11 +1853,30 @@ namespace CodeFormatters public override void visit(simple_property _simple_property) { multiline_stack_push(_simple_property); + + string keyword_with_spaces = "property"; + var property_keyword = "property"; + if (_simple_property.is_auto) + { + property_keyword = property_keyword.Insert(0, "auto "); + var name_pos = GetPosition( + _simple_property.property_name.source_context.begin_position.line_num, + _simple_property.property_name.source_context.begin_position.column_num); + var property_start_pos = GetPosition( + _simple_property.source_context.begin_position.line_num, + _simple_property.source_context.begin_position.column_num); + + keyword_with_spaces = Text.Substring( + property_start_pos, name_pos - property_start_pos - 1); + keyword_with_spaces.Trim(); + } + if (_simple_property.attr != definition_attribute.Static) { - sb.Append("property"); - SetKeywordOffset("property"); + sb.Append(property_keyword); + SetKeywordOffset(keyword_with_spaces); } + visit_node(_simple_property.property_name); if (_simple_property.parameter_list != null) { diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascal.cs index efd10f925..ad540075b 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: 01.12.2018 12:55:41 -// UserName: ????????? +// Machine: DESKTOP-LFNDRFO +// DateTime: 12/5/2018 9:39:16 AM +// UserName: wowit // GPLEX input file // GPLEX frame file // diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y index 6a2025d4e..b13125c51 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascal.y +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascal.y @@ -1552,55 +1552,6 @@ object_type : class_attributes class_or_interface_keyword optional_base_classes optional_where_section optional_component_list_seq_end { $$ = NewObjectType((class_attribute)$1, $2, $3 as named_type_reference_list, $4 as where_definition_list, $5 as class_body_list, @$); - class_definition cd = $$ as class_definition; - if (cd == null || cd.body == null) - break; - var ccnt = cd.body.DescendantNodes().OfType().ToArray(); - var cm = new class_members(access_modifer.private_modifer); - foreach (var prop in ccnt) - { - var td = prop.property_type; - var ra = prop.accessors?.read_accessor; - if ($2.text.ToLower() == "interface" && ra != null && (ra.pr != null || ra.accessor_name != null)) - parsertools.AddErrorFromResource("INVALID_INTERFACE_MEMBER",ra.source_context); - - if (ra != null && ra.pr != null) - { - if (prop.parameter_list != null) - parsertools.AddErrorFromResource("EXTENDED_INDEXED_PROPERTIES",ra.source_context); - var rapr = ra.pr as procedure_definition; - (rapr.proc_header as function_header).return_type = td; - cm.Add(rapr); - if (prop.attr == definition_attribute.Static) - { - rapr.proc_header.class_keyword = true; - procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static); - pa.source_context = rapr.proc_header.source_context; - rapr.proc_header.proc_attributes = new procedure_attributes_list(pa); - } - } - var wa = prop.accessors?.write_accessor; - if ($2.text.ToLower() == "interface" && wa != null && (wa.pr != null || wa.accessor_name != null)) - parsertools.AddErrorFromResource("INVALID_INTERFACE_MEMBER",wa.source_context); - - if (wa != null && wa.pr != null) - { - if (prop.parameter_list != null) - parsertools.AddErrorFromResource("EXTENDED_INDEXED_PROPERTIES",ra.source_context); - var wapr = wa.pr as procedure_definition; - wapr.proc_header.parameters.params_list[0].vars_type = td; - cm.Add(wapr); - if (prop.attr == definition_attribute.Static) - { - wapr.proc_header.class_keyword = true; - procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static); - pa.source_context = wapr.proc_header.source_context; - wapr.proc_header.proc_attributes = new procedure_attributes_list(pa); - } - } - } - if (cm.Count>0) - cd.body.Insert(0, cm); } ; @@ -1608,51 +1559,6 @@ record_type : tkRecord optional_base_classes optional_where_section member_list_section tkEnd { $$ = NewRecordType($2 as named_type_reference_list, $3 as where_definition_list, $4 as class_body_list, @$); - class_definition cd = $$ as class_definition; - if (cd == null || cd.body == null) - break; - var ccnt = cd.body.DescendantNodes().OfType().ToArray(); - var cm = new class_members(access_modifer.private_modifer); - foreach (var prop in ccnt) - { - var td = prop.property_type; - var ra = prop.accessors?.read_accessor; - - if (ra != null && ra.pr != null) - { - if (prop.parameter_list != null) - parsertools.AddErrorFromResource("EXTENDED_INDEXED_PROPERTIES",ra.source_context); - var rapr = ra.pr as procedure_definition; - (rapr.proc_header as function_header).return_type = td; - cm.Add(rapr); - if (prop.attr == definition_attribute.Static) - { - rapr.proc_header.class_keyword = true; - procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static); - pa.source_context = rapr.proc_header.source_context; - rapr.proc_header.proc_attributes = new procedure_attributes_list(pa); - } - } - var wa = prop.accessors?.write_accessor; - - if (wa != null && wa.pr != null && prop.parameter_list == null) - { - if (prop.parameter_list != null) - parsertools.AddErrorFromResource("EXTENDED_INDEXED_PROPERTIES",ra.source_context); - var wapr = wa.pr as procedure_definition; - wapr.proc_header.parameters.params_list[0].vars_type = td; - cm.Add(wapr); - if (prop.attr == definition_attribute.Static) - { - wapr.proc_header.class_keyword = true; - procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static); - pa.source_context = wapr.proc_header.source_context; - wapr.proc_header.proc_attributes = new procedure_attributes_list(pa); - } - } - } - if (cm.Count>0) - cd.body.Insert(0, cm); } ; @@ -2068,12 +1974,17 @@ simple_property_definition { parsertools.AddErrorFromResource("STATIC_PROPERTIES_CANNOT_HAVE_ATTRBUTE_{0}",@7,$7.name); } + | tkAuto tkProperty qualified_identifier property_interface tkSemiColon + { + $$ = NewSimplePropertyDefinition($3 as method_name, $4 as property_interface, null, proc_attribute.attr_none, null, @$); + ($$ as simple_property).is_auto = true; + } ; array_defaultproperty : { $$ = null; } - | tkDefault tkSemiColon + | tkDefault tkSemiColon { $$ = new property_array_default(); $$.source_context = @$; diff --git a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs index 97bd08e5e..8d744d1ce 100644 --- a/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs +++ b/Parsers/PascalABCParserNewSaushkin/ABCPascalYacc.cs @@ -1,9 +1,9 @@ // (see accompanying GPPGcopyright.rtf) // GPPG version 1.3.6 -// Machine: DESKTOP-G8V08V4 -// DateTime: 01.12.2018 12:55:41 -// UserName: ????????? +// Machine: DESKTOP-LFNDRFO +// DateTime: 12/5/2018 9:39:18 AM +// UserName: wowit // Input file // options: no-lines gplex @@ -75,8 +75,8 @@ public partial class GPPGParser: ShiftReduceParser aliasses; #pragma warning restore 649 - private static Rule[] rules = new Rule[897]; - private static State[] states = new State[1482]; + private static Rule[] rules = new Rule[898]; + private static State[] states = new State[1487]; 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", @@ -161,13 +161,13 @@ public partial class GPPGParser: ShiftReduceParser().ToArray(); - var cm = new class_members(access_modifer.private_modifer); - foreach (var prop in ccnt) - { - var td = prop.property_type; - var ra = prop.accessors?.read_accessor; - if (ValueStack[ValueStack.Depth-4].ti.text.ToLower() == "interface" && ra != null && (ra.pr != null || ra.accessor_name != null)) - parsertools.AddErrorFromResource("INVALID_INTERFACE_MEMBER",ra.source_context); - - if (ra != null && ra.pr != null) - { - if (prop.parameter_list != null) - parsertools.AddErrorFromResource("EXTENDED_INDEXED_PROPERTIES",ra.source_context); - var rapr = ra.pr as procedure_definition; - (rapr.proc_header as function_header).return_type = td; - cm.Add(rapr); - if (prop.attr == definition_attribute.Static) - { - rapr.proc_header.class_keyword = true; - procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static); - pa.source_context = rapr.proc_header.source_context; - rapr.proc_header.proc_attributes = new procedure_attributes_list(pa); - } - } - var wa = prop.accessors?.write_accessor; - if (ValueStack[ValueStack.Depth-4].ti.text.ToLower() == "interface" && wa != null && (wa.pr != null || wa.accessor_name != null)) - parsertools.AddErrorFromResource("INVALID_INTERFACE_MEMBER",wa.source_context); - - if (wa != null && wa.pr != null) - { - if (prop.parameter_list != null) - parsertools.AddErrorFromResource("EXTENDED_INDEXED_PROPERTIES",ra.source_context); - var wapr = wa.pr as procedure_definition; - wapr.proc_header.parameters.params_list[0].vars_type = td; - cm.Add(wapr); - if (prop.attr == definition_attribute.Static) - { - wapr.proc_header.class_keyword = true; - procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static); - pa.source_context = wapr.proc_header.source_context; - wapr.proc_header.proc_attributes = new procedure_attributes_list(pa); - } - } - } - if (cm.Count>0) - cd.body.Insert(0, cm); } break; case 285: // record_type -> tkRecord, optional_base_classes, optional_where_section, // member_list_section, tkEnd { CurrentSemanticValue.td = NewRecordType(ValueStack[ValueStack.Depth-4].stn as named_type_reference_list, ValueStack[ValueStack.Depth-3].stn as where_definition_list, ValueStack[ValueStack.Depth-2].stn as class_body_list, CurrentLocationSpan); - class_definition cd = CurrentSemanticValue.td as class_definition; - if (cd == null || cd.body == null) - break; - var ccnt = cd.body.DescendantNodes().OfType().ToArray(); - var cm = new class_members(access_modifer.private_modifer); - foreach (var prop in ccnt) - { - var td = prop.property_type; - var ra = prop.accessors?.read_accessor; - - if (ra != null && ra.pr != null) - { - if (prop.parameter_list != null) - parsertools.AddErrorFromResource("EXTENDED_INDEXED_PROPERTIES",ra.source_context); - var rapr = ra.pr as procedure_definition; - (rapr.proc_header as function_header).return_type = td; - cm.Add(rapr); - if (prop.attr == definition_attribute.Static) - { - rapr.proc_header.class_keyword = true; - procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static); - pa.source_context = rapr.proc_header.source_context; - rapr.proc_header.proc_attributes = new procedure_attributes_list(pa); - } - } - var wa = prop.accessors?.write_accessor; - - if (wa != null && wa.pr != null && prop.parameter_list == null) - { - if (prop.parameter_list != null) - parsertools.AddErrorFromResource("EXTENDED_INDEXED_PROPERTIES",ra.source_context); - var wapr = wa.pr as procedure_definition; - wapr.proc_header.parameters.params_list[0].vars_type = td; - cm.Add(wapr); - if (prop.attr == definition_attribute.Static) - { - wapr.proc_header.class_keyword = true; - procedure_attribute pa = new procedure_attribute(proc_attribute.attr_static); - pa.source_context = wapr.proc_header.source_context; - wapr.proc_header.proc_attributes = new procedure_attributes_list(pa); - } - } - } - if (cm.Count>0) - cd.body.Insert(0, cm); } break; case 286: // class_attribute -> tkSealed @@ -4306,48 +4218,55 @@ public partial class GPPGParser: ShiftReduceParser /* empty */ + case 373: // simple_property_definition -> tkAuto, tkProperty, qualified_identifier, + // property_interface, tkSemiColon +{ + CurrentSemanticValue.stn = NewSimplePropertyDefinition(ValueStack[ValueStack.Depth-3].stn as method_name, ValueStack[ValueStack.Depth-2].stn as property_interface, null, proc_attribute.attr_none, null, CurrentLocationSpan); + (CurrentSemanticValue.stn as simple_property).is_auto = true; + } + break; + case 374: // array_defaultproperty -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 374: // array_defaultproperty -> tkDefault, tkSemiColon + case 375: // array_defaultproperty -> tkDefault, tkSemiColon { CurrentSemanticValue.stn = new property_array_default(); CurrentSemanticValue.stn.source_context = CurrentLocationSpan; } break; - case 375: // property_interface -> property_parameter_list, tkColon, fptype + case 376: // property_interface -> property_parameter_list, tkColon, fptype { CurrentSemanticValue.stn = new property_interface(ValueStack[ValueStack.Depth-3].stn as property_parameter_list, ValueStack[ValueStack.Depth-1].td, null, CurrentLocationSpan); } break; - case 376: // property_parameter_list -> /* empty */ + case 377: // property_parameter_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 377: // property_parameter_list -> tkSquareOpen, parameter_decl_list, tkSquareClose + case 378: // property_parameter_list -> tkSquareOpen, parameter_decl_list, tkSquareClose { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 378: // parameter_decl_list -> parameter_decl + case 379: // parameter_decl_list -> parameter_decl { CurrentSemanticValue.stn = new property_parameter_list(ValueStack[ValueStack.Depth-1].stn as property_parameter, CurrentLocationSpan); } break; - case 379: // parameter_decl_list -> parameter_decl_list, tkSemiColon, parameter_decl + case 380: // parameter_decl_list -> parameter_decl_list, tkSemiColon, parameter_decl { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as property_parameter_list).Add(ValueStack[ValueStack.Depth-1].stn as property_parameter, CurrentLocationSpan); } break; - case 380: // parameter_decl -> ident_list, tkColon, fptype + case 381: // parameter_decl -> ident_list, tkColon, fptype { CurrentSemanticValue.stn = new property_parameter(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 381: // optional_read_expr -> expr_with_func_decl_lambda + case 382: // optional_read_expr -> expr_with_func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 382: // optional_read_expr -> /* empty */ + case 383: // optional_read_expr -> /* empty */ { CurrentSemanticValue.ex = null; } break; - case 384: // property_specifiers -> tkRead, optional_read_expr, write_property_specifiers + case 385: // property_specifiers -> tkRead, optional_read_expr, write_property_specifiers { if (ValueStack[ValueStack.Depth-2].ex == null || ValueStack[ValueStack.Depth-2].ex is ident) // ����������� �������� { @@ -4363,7 +4282,7 @@ public partial class GPPGParser: ShiftReduceParser tkWrite, unlabelled_stmt, read_property_specifiers + case 386: // property_specifiers -> tkWrite, unlabelled_stmt, read_property_specifiers { if (ValueStack[ValueStack.Depth-2].stn is empty_statement) { @@ -4385,7 +4304,7 @@ public partial class GPPGParser: ShiftReduceParser tkWrite, unlabelled_stmt + case 388: // write_property_specifiers -> tkWrite, unlabelled_stmt { if (ValueStack[ValueStack.Depth-1].stn is empty_statement) { @@ -4406,7 +4325,7 @@ public partial class GPPGParser: ShiftReduceParser tkRead, optional_read_expr + case 390: // read_property_specifiers -> tkRead, optional_read_expr { if (ValueStack[ValueStack.Depth-1].ex == null || ValueStack[ValueStack.Depth-1].ex is ident) { @@ -4422,45 +4341,45 @@ public partial class GPPGParser: ShiftReduceParser var_decl_part, tkSemiColon + case 391: // var_decl -> var_decl_part, tkSemiColon { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 393: // var_decl_part -> ident_list, tkColon, type_ref + case 394: // var_decl_part -> ident_list, tkColon, type_ref { 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); } break; - case 394: // var_decl_part -> ident_list, tkAssign, expr + case 395: // var_decl_part -> ident_list, tkAssign, expr { 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); } break; - case 395: // var_decl_part -> ident_list, tkColon, type_ref, tkAssignOrEqual, + case 396: // var_decl_part -> ident_list, tkColon, type_ref, tkAssignOrEqual, // typed_var_init_expression { 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); } break; - case 396: // typed_var_init_expression -> typed_const_plus + case 397: // typed_var_init_expression -> typed_const_plus { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 397: // typed_var_init_expression -> expl_func_decl_lambda + case 398: // typed_var_init_expression -> expl_func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 398: // typed_var_init_expression -> identifier, tkArrow, lambda_function_body + case 399: // typed_var_init_expression -> identifier, tkArrow, lambda_function_body { var idList = new ident_list(ValueStack[ValueStack.Depth-3].id, LocationStack[LocationStack.Depth-3]); var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), LocationStack[LocationStack.Depth-3]), parametr_kind.none, null, LocationStack[LocationStack.Depth-3]), LocationStack[LocationStack.Depth-3]); CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), LocationStack[LocationStack.Depth-3]), ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 399: // typed_var_init_expression -> tkRoundOpen, tkRoundClose, lambda_type_ref, + case 400: // typed_var_init_expression -> tkRoundOpen, tkRoundClose, lambda_type_ref, // tkArrow, lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 400: // typed_var_init_expression -> tkRoundOpen, typed_const_list, tkRoundClose, + case 401: // typed_var_init_expression -> tkRoundOpen, typed_const_list, tkRoundClose, // tkArrow, lambda_function_body { var el = ValueStack[ValueStack.Depth-4].stn as expression_list; @@ -4482,18 +4401,18 @@ public partial class GPPGParser: ShiftReduceParser typed_const + case 402: // typed_const_plus -> typed_const { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 402: // typed_const_plus -> default_expr + case 403: // typed_const_plus -> default_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 403: // constr_destr_decl -> constr_destr_header, block + case 404: // constr_destr_decl -> constr_destr_header, block { CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as block, CurrentLocationSpan); } break; - case 404: // constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, tkAssign, + case 405: // constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, tkAssign, // unlabelled_stmt, tkSemiColon { if (ValueStack[ValueStack.Depth-2].stn is empty_statement) @@ -4504,7 +4423,7 @@ public partial class GPPGParser: ShiftReduceParser class_or_static, tkConstructor, optional_proc_name, + case 406: // constr_destr_decl -> class_or_static, tkConstructor, optional_proc_name, // fp_list, tkAssign, unlabelled_stmt, tkSemiColon { if (ValueStack[ValueStack.Depth-2].stn is empty_statement) @@ -4515,12 +4434,12 @@ public partial class GPPGParser: ShiftReduceParser constr_destr_header, inclass_block + case 407: // inclass_constr_destr_decl -> constr_destr_header, inclass_block { CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as block, CurrentLocationSpan); } break; - case 407: // inclass_constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, + case 408: // inclass_constr_destr_decl -> tkConstructor, optional_proc_name, fp_list, // tkAssign, unlabelled_stmt, tkSemiColon { if (ValueStack[ValueStack.Depth-2].stn is empty_statement) @@ -4531,7 +4450,7 @@ public partial class GPPGParser: ShiftReduceParser class_or_static, tkConstructor, optional_proc_name, + case 409: // inclass_constr_destr_decl -> class_or_static, tkConstructor, optional_proc_name, // fp_list, tkAssign, unlabelled_stmt, tkSemiColon { if (ValueStack[ValueStack.Depth-2].stn is empty_statement) @@ -4542,28 +4461,28 @@ public partial class GPPGParser: ShiftReduceParser proc_func_decl_noclass + case 410: // proc_func_decl -> proc_func_decl_noclass { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 410: // proc_func_decl -> class_or_static, proc_func_decl_noclass + case 411: // proc_func_decl -> class_or_static, proc_func_decl_noclass { (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 411: // proc_func_decl_noclass -> proc_func_header, proc_func_external_block + case 412: // proc_func_decl_noclass -> proc_func_header, proc_func_external_block { CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as proc_block, CurrentLocationSpan); } break; - case 412: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, fptype, + case 413: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, fptype, // optional_method_modificators1, tkAssign, expr_l1, // tkSemiColon { 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])); } break; - case 413: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, + case 414: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, // optional_method_modificators1, tkAssign, expr_l1, // tkSemiColon { @@ -4573,21 +4492,21 @@ public partial class GPPGParser: ShiftReduceParser tkFunction, func_name, fp_list, tkColon, fptype, + case 415: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, fptype, // optional_method_modificators1, tkAssign, // func_decl_lambda, tkSemiColon { 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])); } break; - case 415: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, + case 416: // proc_func_decl_noclass -> tkFunction, func_name, fp_list, // optional_method_modificators1, tkAssign, // func_decl_lambda, tkSemiColon { 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])); } break; - case 416: // proc_func_decl_noclass -> tkProcedure, proc_name, fp_list, + case 417: // proc_func_decl_noclass -> tkProcedure, proc_name, fp_list, // optional_method_modificators1, tkAssign, // unlabelled_stmt, tkSemiColon { @@ -4596,30 +4515,30 @@ public partial class GPPGParser: ShiftReduceParser proc_func_header, tkForward, tkSemiColon + case 418: // proc_func_decl_noclass -> proc_func_header, tkForward, tkSemiColon { CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-3].td as procedure_header, null, CurrentLocationSpan); (CurrentSemanticValue.stn as procedure_definition).proc_header.proc_attributes.Add((procedure_attribute)ValueStack[ValueStack.Depth-2].id, ValueStack[ValueStack.Depth-2].id.source_context); } break; - case 418: // inclass_proc_func_decl -> inclass_proc_func_decl_noclass + case 419: // inclass_proc_func_decl -> inclass_proc_func_decl_noclass { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 419: // inclass_proc_func_decl -> class_or_static, inclass_proc_func_decl_noclass + case 420: // inclass_proc_func_decl -> class_or_static, inclass_proc_func_decl_noclass { if ((ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header != null) (ValueStack[ValueStack.Depth-1].stn as procedure_definition).proc_header.class_keyword = true; CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 420: // inclass_proc_func_decl_noclass -> proc_func_header, inclass_block + case 421: // inclass_proc_func_decl_noclass -> proc_func_header, inclass_block { CurrentSemanticValue.stn = new procedure_definition(ValueStack[ValueStack.Depth-2].td as procedure_header, ValueStack[ValueStack.Depth-1].stn as proc_block, CurrentLocationSpan); } break; - case 421: // inclass_proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, + case 422: // inclass_proc_func_decl_noclass -> tkFunction, func_name, fp_list, tkColon, // fptype, optional_method_modificators1, // tkAssign, expr_l1_func_decl_lambda, // tkSemiColon @@ -4629,7 +4548,7 @@ public partial class GPPGParser: ShiftReduceParser tkFunction, func_name, fp_list, + case 423: // inclass_proc_func_decl_noclass -> tkFunction, func_name, fp_list, // optional_method_modificators1, tkAssign, // expr_l1_func_decl_lambda, tkSemiColon { @@ -4638,7 +4557,7 @@ public partial class GPPGParser: ShiftReduceParser tkProcedure, proc_name, fp_list, + case 424: // inclass_proc_func_decl_noclass -> tkProcedure, proc_name, fp_list, // optional_method_modificators1, tkAssign, // unlabelled_stmt, tkSemiColon { @@ -4647,21 +4566,21 @@ public partial class GPPGParser: ShiftReduceParser block + case 425: // proc_func_external_block -> block { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 425: // proc_func_external_block -> external_block + case 426: // proc_func_external_block -> external_block { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 426: // proc_name -> func_name + case 427: // proc_name -> func_name { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 427: // func_name -> func_meth_name_ident + case 428: // func_name -> func_meth_name_ident { CurrentSemanticValue.stn = new method_name(null,null, ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); } break; - case 428: // func_name -> func_class_name_ident_list, tkPoint, func_meth_name_ident + case 429: // func_name -> func_class_name_ident_list, tkPoint, func_meth_name_ident { var ln = ValueStack[ValueStack.Depth-3].ob as List; var cnt = ln.Count; @@ -4671,290 +4590,290 @@ public partial class GPPGParser: ShiftReduceParser func_name_with_template_args + case 430: // func_class_name_ident -> func_name_with_template_args { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 430: // func_class_name_ident_list -> func_class_name_ident + case 431: // func_class_name_ident_list -> func_class_name_ident { CurrentSemanticValue.ob = new List(); (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].id); } break; - case 431: // func_class_name_ident_list -> func_class_name_ident_list, tkPoint, + case 432: // func_class_name_ident_list -> func_class_name_ident_list, tkPoint, // func_class_name_ident { (ValueStack[ValueStack.Depth-3].ob as List).Add(ValueStack[ValueStack.Depth-1].id); CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; } break; - case 432: // func_meth_name_ident -> func_name_with_template_args + case 433: // func_meth_name_ident -> func_name_with_template_args { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 433: // func_meth_name_ident -> operator_name_ident + case 434: // func_meth_name_ident -> operator_name_ident { CurrentSemanticValue.id = (ident)ValueStack[ValueStack.Depth-1].ex; } break; - case 434: // func_meth_name_ident -> operator_name_ident, template_arguments + case 435: // func_meth_name_ident -> operator_name_ident, template_arguments { 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 435: // func_name_with_template_args -> func_name_ident + case 436: // func_name_with_template_args -> func_name_ident { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 436: // func_name_with_template_args -> func_name_ident, template_arguments + case 437: // func_name_with_template_args -> func_name_ident, template_arguments { CurrentSemanticValue.id = new template_type_name(ValueStack[ValueStack.Depth-2].id.name, ValueStack[ValueStack.Depth-1].stn as ident_list, CurrentLocationSpan); } break; - case 437: // func_name_ident -> identifier + case 438: // func_name_ident -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 438: // proc_header -> tkProcedure, proc_name, fp_list, optional_method_modificators, + case 439: // proc_header -> tkProcedure, proc_name, fp_list, optional_method_modificators, // optional_where_section { 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); } break; - case 439: // func_header -> tkFunction, func_name, fp_list, optional_method_modificators, + case 440: // func_header -> tkFunction, func_name, fp_list, optional_method_modificators, // optional_where_section { 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); } break; - case 440: // func_header -> tkFunction, func_name, fp_list, tkColon, fptype, + case 441: // func_header -> tkFunction, func_name, fp_list, tkColon, fptype, // optional_method_modificators, optional_where_section { 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); } break; - case 441: // external_block -> tkExternal, external_directive_ident, tkName, + case 442: // external_block -> tkExternal, external_directive_ident, tkName, // external_directive_ident, tkSemiColon { CurrentSemanticValue.stn = new external_directive(ValueStack[ValueStack.Depth-4].ex, ValueStack[ValueStack.Depth-2].ex, CurrentLocationSpan); } break; - case 442: // external_block -> tkExternal, external_directive_ident, tkSemiColon + case 443: // external_block -> tkExternal, external_directive_ident, tkSemiColon { CurrentSemanticValue.stn = new external_directive(ValueStack[ValueStack.Depth-2].ex, null, CurrentLocationSpan); } break; - case 443: // external_block -> tkExternal, tkSemiColon + case 444: // external_block -> tkExternal, tkSemiColon { CurrentSemanticValue.stn = new external_directive(null, null, CurrentLocationSpan); } break; - case 444: // external_directive_ident -> identifier + case 445: // external_directive_ident -> identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 445: // external_directive_ident -> literal + case 446: // external_directive_ident -> literal { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 446: // block -> decl_sect_list, compound_stmt, tkSemiColon + case 447: // block -> decl_sect_list, compound_stmt, tkSemiColon { CurrentSemanticValue.stn = new block(ValueStack[ValueStack.Depth-3].stn as declarations, ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); } break; - case 447: // inclass_block -> inclass_decl_sect_list, compound_stmt, tkSemiColon + case 448: // inclass_block -> inclass_decl_sect_list, compound_stmt, tkSemiColon { CurrentSemanticValue.stn = new block(ValueStack[ValueStack.Depth-3].stn as declarations, ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); } break; - case 448: // inclass_block -> external_block + case 449: // inclass_block -> external_block { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 449: // fp_list -> /* empty */ + case 450: // fp_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 450: // fp_list -> tkRoundOpen, tkRoundClose + case 451: // fp_list -> tkRoundOpen, tkRoundClose { CurrentSemanticValue.stn = null; } break; - case 451: // fp_list -> tkRoundOpen, fp_sect_list, tkRoundClose + case 452: // fp_list -> tkRoundOpen, fp_sect_list, tkRoundClose { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; if (CurrentSemanticValue.stn != null) CurrentSemanticValue.stn.source_context = CurrentLocationSpan; } break; - case 452: // fp_sect_list -> fp_sect + case 453: // fp_sect_list -> fp_sect { CurrentSemanticValue.stn = new formal_parameters(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); } break; - case 453: // fp_sect_list -> fp_sect_list, tkSemiColon, fp_sect + case 454: // fp_sect_list -> fp_sect_list, tkSemiColon, fp_sect { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as formal_parameters).Add(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); } break; - case 454: // fp_sect -> attribute_declarations, simple_fp_sect + case 455: // fp_sect -> attribute_declarations, simple_fp_sect { (ValueStack[ValueStack.Depth-1].stn as declaration).attributes = ValueStack[ValueStack.Depth-2].stn as attribute_list; CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 455: // simple_fp_sect -> param_name_list, tkColon, fptype + case 456: // simple_fp_sect -> param_name_list, tkColon, fptype { CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.none, null, CurrentLocationSpan); } break; - case 456: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype + case 457: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype { CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.var_parametr, null, CurrentLocationSpan); } break; - case 457: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype + case 458: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype { CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.const_parametr, null, CurrentLocationSpan); } break; - case 458: // simple_fp_sect -> tkParams, param_name_list, tkColon, fptype + case 459: // simple_fp_sect -> tkParams, param_name_list, tkColon, fptype { CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-3].stn as ident_list, ValueStack[ValueStack.Depth-1].td,parametr_kind.params_parametr,null, CurrentLocationSpan); } break; - case 459: // simple_fp_sect -> param_name_list, tkColon, fptype, tkAssign, expr + case 460: // simple_fp_sect -> param_name_list, tkColon, fptype, tkAssign, expr { 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); } break; - case 460: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype, tkAssign, expr + case 461: // simple_fp_sect -> tkVar, param_name_list, tkColon, fptype, tkAssign, expr { 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); } break; - case 461: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype, tkAssign, expr + case 462: // simple_fp_sect -> tkConst, param_name_list, tkColon, fptype, tkAssign, expr { 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); } break; - case 462: // param_name_list -> param_name + case 463: // param_name_list -> param_name { CurrentSemanticValue.stn = new ident_list(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); } break; - case 463: // param_name_list -> param_name_list, tkComma, param_name + case 464: // param_name_list -> param_name_list, tkComma, param_name { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as ident_list).Add(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); } break; - case 464: // param_name -> identifier + case 465: // param_name -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 465: // fptype -> type_ref + case 466: // fptype -> type_ref { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 466: // fptype_noproctype -> simple_type + case 467: // fptype_noproctype -> simple_type { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 467: // fptype_noproctype -> string_type + case 468: // fptype_noproctype -> string_type { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 468: // fptype_noproctype -> pointer_type + case 469: // fptype_noproctype -> pointer_type { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 469: // fptype_noproctype -> structured_type + case 470: // fptype_noproctype -> structured_type { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 470: // fptype_noproctype -> template_type + case 471: // fptype_noproctype -> template_type { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 471: // stmt -> unlabelled_stmt + case 472: // stmt -> unlabelled_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 472: // stmt -> label_name, tkColon, stmt + case 473: // stmt -> label_name, tkColon, stmt { CurrentSemanticValue.stn = new labeled_statement(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 473: // unlabelled_stmt -> /* empty */ + case 474: // unlabelled_stmt -> /* empty */ { CurrentSemanticValue.stn = new empty_statement(); CurrentSemanticValue.stn.source_context = null; } break; - case 474: // unlabelled_stmt -> assignment + case 475: // unlabelled_stmt -> assignment { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 475: // unlabelled_stmt -> proc_call + case 476: // unlabelled_stmt -> proc_call { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 476: // unlabelled_stmt -> goto_stmt + case 477: // unlabelled_stmt -> goto_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 477: // unlabelled_stmt -> compound_stmt + case 478: // unlabelled_stmt -> compound_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 478: // unlabelled_stmt -> if_stmt + case 479: // unlabelled_stmt -> if_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 479: // unlabelled_stmt -> case_stmt + case 480: // unlabelled_stmt -> case_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 480: // unlabelled_stmt -> repeat_stmt + case 481: // unlabelled_stmt -> repeat_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 481: // unlabelled_stmt -> while_stmt + case 482: // unlabelled_stmt -> while_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 482: // unlabelled_stmt -> for_stmt + case 483: // unlabelled_stmt -> for_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 483: // unlabelled_stmt -> with_stmt + case 484: // unlabelled_stmt -> with_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 484: // unlabelled_stmt -> inherited_message + case 485: // unlabelled_stmt -> inherited_message { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 485: // unlabelled_stmt -> try_stmt + case 486: // unlabelled_stmt -> try_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 486: // unlabelled_stmt -> raise_stmt + case 487: // unlabelled_stmt -> raise_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 487: // unlabelled_stmt -> foreach_stmt + case 488: // unlabelled_stmt -> foreach_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 488: // unlabelled_stmt -> var_stmt + case 489: // unlabelled_stmt -> var_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 489: // unlabelled_stmt -> expr_as_stmt + case 490: // unlabelled_stmt -> expr_as_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 490: // unlabelled_stmt -> lock_stmt + case 491: // unlabelled_stmt -> lock_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 491: // unlabelled_stmt -> yield_stmt + case 492: // unlabelled_stmt -> yield_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 492: // unlabelled_stmt -> yield_sequence_stmt + case 493: // unlabelled_stmt -> yield_sequence_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 493: // unlabelled_stmt -> loop_stmt + case 494: // unlabelled_stmt -> loop_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 494: // unlabelled_stmt -> match_with + case 495: // unlabelled_stmt -> match_with { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 495: // loop_stmt -> tkLoop, expr_l1, tkDo, unlabelled_stmt + case 496: // loop_stmt -> tkLoop, expr_l1, tkDo, unlabelled_stmt { CurrentSemanticValue.stn = new loop_stmt(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].stn as statement,CurrentLocationSpan); } break; - case 496: // yield_stmt -> tkYield, expr_l1 + case 497: // yield_stmt -> tkYield, expr_l1 { CurrentSemanticValue.stn = new yield_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); } break; - case 497: // yield_sequence_stmt -> tkYield, tkSequence, expr_l1 + case 498: // yield_sequence_stmt -> tkYield, tkSequence, expr_l1 { CurrentSemanticValue.stn = new yield_sequence_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); } break; - case 498: // var_stmt -> tkVar, var_decl_part + case 499: // var_stmt -> tkVar, var_decl_part { CurrentSemanticValue.stn = new var_statement(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); } break; - case 499: // var_stmt -> tkRoundOpen, tkVar, identifier, tkComma, var_ident_list, + case 500: // var_stmt -> tkRoundOpen, tkVar, identifier, tkComma, var_ident_list, // tkRoundClose, tkAssign, expr { (ValueStack[ValueStack.Depth-4].ob as ident_list).Insert(0,ValueStack[ValueStack.Depth-6].id); @@ -4962,7 +4881,7 @@ public partial class GPPGParser: ShiftReduceParser tkVar, tkRoundOpen, identifier, tkComma, ident_list, tkRoundClose, + case 501: // var_stmt -> tkVar, tkRoundOpen, identifier, tkComma, ident_list, tkRoundClose, // tkAssign, expr { (ValueStack[ValueStack.Depth-4].stn as ident_list).Insert(0,ValueStack[ValueStack.Depth-6].id); @@ -4970,12 +4889,12 @@ public partial class GPPGParser: ShiftReduceParser var_reference, assign_operator, expr_with_func_decl_lambda + case 502: // assignment -> var_reference, assign_operator, expr_with_func_decl_lambda { CurrentSemanticValue.stn = new assign(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 502: // assignment -> tkRoundOpen, variable, tkComma, variable_list, tkRoundClose, + case 503: // assignment -> tkRoundOpen, variable, tkComma, variable_list, tkRoundClose, // assign_operator, expr { if (ValueStack[ValueStack.Depth-2].op.type != Operators.Assignment) @@ -4985,41 +4904,41 @@ public partial class GPPGParser: ShiftReduceParser variable + case 504: // variable_list -> variable { CurrentSemanticValue.ob = new addressed_value_list(ValueStack[ValueStack.Depth-1].ex as addressed_value,LocationStack[LocationStack.Depth-1]); } break; - case 504: // variable_list -> variable_list, tkComma, variable + case 505: // variable_list -> variable_list, tkComma, variable { (ValueStack[ValueStack.Depth-3].ob as addressed_value_list).Add(ValueStack[ValueStack.Depth-1].ex as addressed_value); (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]); CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; } break; - case 505: // var_ident_list -> tkVar, identifier + case 506: // var_ident_list -> tkVar, identifier { CurrentSemanticValue.ob = new ident_list(ValueStack[ValueStack.Depth-1].id,CurrentLocationSpan); } break; - case 506: // var_ident_list -> var_ident_list, tkComma, tkVar, identifier + case 507: // var_ident_list -> var_ident_list, tkComma, tkVar, identifier { (ValueStack[ValueStack.Depth-4].ob as ident_list).Add(ValueStack[ValueStack.Depth-1].id); (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]); CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-4].ob; } break; - case 507: // proc_call -> var_reference + case 508: // proc_call -> var_reference { CurrentSemanticValue.stn = new procedure_call(ValueStack[ValueStack.Depth-1].ex as addressed_value, ValueStack[ValueStack.Depth-1].ex is ident, CurrentLocationSpan); } break; - case 508: // goto_stmt -> tkGoto, label_name + case 509: // goto_stmt -> tkGoto, label_name { CurrentSemanticValue.stn = new goto_statement(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); } break; - case 509: // compound_stmt -> tkBegin, stmt_list, tkEnd + case 510: // compound_stmt -> tkBegin, stmt_list, tkEnd { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; (CurrentSemanticValue.stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; @@ -5027,109 +4946,109 @@ public partial class GPPGParser: ShiftReduceParser stmt + case 511: // stmt_list -> stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, LocationStack[LocationStack.Depth-1]); } break; - case 511: // stmt_list -> stmt_list, tkSemiColon, stmt + case 512: // stmt_list -> stmt_list, tkSemiColon, stmt { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as statement_list).Add(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 512: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt + case 513: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt { CurrentSemanticValue.stn = new if_node(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); } break; - case 513: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt, tkElse, unlabelled_stmt + case 514: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt, tkElse, unlabelled_stmt { 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); } break; - case 514: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, else_case, tkEnd + case 515: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, else_case, tkEnd { 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); } break; - case 515: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, tkSemiColon, else_case, + case 516: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, tkSemiColon, else_case, // tkEnd { 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); } break; - case 516: // pattern_cases -> pattern_case + case 517: // pattern_cases -> pattern_case { CurrentSemanticValue.stn = new pattern_cases(ValueStack[ValueStack.Depth-1].stn as pattern_case); } break; - case 517: // pattern_cases -> pattern_cases, tkSemiColon, pattern_case + case 518: // pattern_cases -> pattern_cases, tkSemiColon, pattern_case { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as pattern_cases).Add(ValueStack[ValueStack.Depth-1].stn as pattern_case); } break; - case 518: // pattern_case -> pattern_optional_var, tkWhen, expr_l1, tkColon, unlabelled_stmt + case 519: // pattern_case -> pattern_optional_var, tkWhen, expr_l1, tkColon, unlabelled_stmt { 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); } break; - case 519: // pattern_case -> pattern_optional_var, tkColon, unlabelled_stmt + case 520: // pattern_case -> pattern_optional_var, tkColon, unlabelled_stmt { CurrentSemanticValue.stn = new pattern_case(ValueStack[ValueStack.Depth-3].stn as pattern_node, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); } break; - case 520: // case_stmt -> tkCase, expr_l1, tkOf, case_list, else_case, tkEnd + case 521: // case_stmt -> tkCase, expr_l1, tkOf, case_list, else_case, tkEnd { 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); } break; - case 521: // case_stmt -> tkCase, expr_l1, tkOf, case_list, tkSemiColon, else_case, tkEnd + case 522: // case_stmt -> tkCase, expr_l1, tkOf, case_list, tkSemiColon, else_case, tkEnd { 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); } break; - case 522: // case_stmt -> tkCase, expr_l1, tkOf, else_case, tkEnd + case 523: // case_stmt -> tkCase, expr_l1, tkOf, else_case, tkEnd { CurrentSemanticValue.stn = new case_node(ValueStack[ValueStack.Depth-4].ex, NewCaseItem(new empty_statement(), null), ValueStack[ValueStack.Depth-2].stn as statement, CurrentLocationSpan); } break; - case 523: // case_list -> case_item + case 524: // case_list -> case_item { if (ValueStack[ValueStack.Depth-1].stn is empty_statement) CurrentSemanticValue.stn = NewCaseItem(ValueStack[ValueStack.Depth-1].stn, null); else CurrentSemanticValue.stn = NewCaseItem(ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 524: // case_list -> case_list, tkSemiColon, case_item + case 525: // case_list -> case_list, tkSemiColon, case_item { CurrentSemanticValue.stn = AddCaseItem(ValueStack[ValueStack.Depth-3].stn as case_variants, ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 525: // case_item -> case_label_list, tkColon, unlabelled_stmt + case 526: // case_item -> case_label_list, tkColon, unlabelled_stmt { CurrentSemanticValue.stn = new case_variant(ValueStack[ValueStack.Depth-3].stn as expression_list, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 526: // case_label_list -> case_label + case 527: // case_label_list -> case_label { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 527: // case_label_list -> case_label_list, tkComma, case_label + case 528: // case_label_list -> case_label_list, tkComma, case_label { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 528: // case_label -> const_elem + case 529: // case_label -> const_elem { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 529: // else_case -> /* empty */ + case 530: // else_case -> /* empty */ { CurrentSemanticValue.stn = null;} break; - case 530: // else_case -> tkElse, stmt_list + case 531: // else_case -> tkElse, stmt_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 531: // repeat_stmt -> tkRepeat, stmt_list, tkUntil, expr + case 532: // repeat_stmt -> tkRepeat, stmt_list, tkUntil, expr { CurrentSemanticValue.stn = new repeat_node(ValueStack[ValueStack.Depth-3].stn as statement_list, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); (ValueStack[ValueStack.Depth-3].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-4].ti; @@ -5137,23 +5056,23 @@ public partial class GPPGParser: ShiftReduceParser tkWhile, expr_l1, optional_tk_do, unlabelled_stmt + case 533: // while_stmt -> tkWhile, expr_l1, optional_tk_do, unlabelled_stmt { 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); } break; - case 533: // optional_tk_do -> tkDo + case 534: // optional_tk_do -> tkDo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 534: // optional_tk_do -> /* empty */ + case 535: // optional_tk_do -> /* empty */ { CurrentSemanticValue.ti = null; } break; - case 535: // lock_stmt -> tkLock, expr_l1, tkDo, unlabelled_stmt + case 536: // lock_stmt -> tkLock, expr_l1, tkDo, unlabelled_stmt { CurrentSemanticValue.stn = new lock_stmt(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 536: // foreach_stmt -> tkForeach, identifier, foreach_stmt_ident_dype_opt, tkIn, + case 537: // foreach_stmt -> tkForeach, identifier, foreach_stmt_ident_dype_opt, tkIn, // expr_l1, tkDo, unlabelled_stmt { CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-6].id, ValueStack[ValueStack.Depth-5].td, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); @@ -5161,68 +5080,68 @@ public partial class GPPGParser: ShiftReduceParser tkForeach, tkVar, identifier, tkColon, type_ref, tkIn, expr_l1, + case 538: // foreach_stmt -> tkForeach, tkVar, identifier, tkColon, type_ref, tkIn, expr_l1, // tkDo, unlabelled_stmt { CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-7].id, ValueStack[ValueStack.Depth-5].td, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 538: // foreach_stmt -> tkForeach, tkVar, identifier, tkIn, expr_l1, tkDo, + case 539: // foreach_stmt -> tkForeach, tkVar, identifier, tkIn, expr_l1, tkDo, // unlabelled_stmt { CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-5].id, new no_type_foreach(), ValueStack[ValueStack.Depth-3].ex, (statement)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 539: // foreach_stmt_ident_dype_opt -> tkColon, type_ref + case 540: // foreach_stmt_ident_dype_opt -> tkColon, type_ref { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 541: // for_stmt -> tkFor, optional_var, identifier, for_stmt_decl_or_assign, expr_l1, + case 542: // for_stmt -> tkFor, optional_var, identifier, for_stmt_decl_or_assign, expr_l1, // for_cycle_type, expr_l1, optional_tk_do, unlabelled_stmt { CurrentSemanticValue.stn = NewForStmt((bool)ValueStack[ValueStack.Depth-8].ob, ValueStack[ValueStack.Depth-7].id, ValueStack[ValueStack.Depth-6].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, CurrentLocationSpan); } break; - case 542: // optional_var -> tkVar + case 543: // optional_var -> tkVar { CurrentSemanticValue.ob = true; } break; - case 543: // optional_var -> /* empty */ + case 544: // optional_var -> /* empty */ { CurrentSemanticValue.ob = false; } break; - case 545: // for_stmt_decl_or_assign -> tkColon, simple_type_identifier, tkAssign + case 546: // for_stmt_decl_or_assign -> tkColon, simple_type_identifier, tkAssign { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-2].td; } break; - case 546: // for_cycle_type -> tkTo + case 547: // for_cycle_type -> tkTo { CurrentSemanticValue.ob = for_cycle_type.to; } break; - case 547: // for_cycle_type -> tkDownto + case 548: // for_cycle_type -> tkDownto { CurrentSemanticValue.ob = for_cycle_type.downto; } break; - case 548: // with_stmt -> tkWith, expr_list, tkDo, unlabelled_stmt + case 549: // with_stmt -> tkWith, expr_list, tkDo, unlabelled_stmt { CurrentSemanticValue.stn = new with_statement(ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].stn as expression_list, CurrentLocationSpan); } break; - case 549: // inherited_message -> tkInherited + case 550: // inherited_message -> tkInherited { CurrentSemanticValue.stn = new inherited_message(); CurrentSemanticValue.stn.source_context = CurrentLocationSpan; } break; - case 550: // try_stmt -> tkTry, stmt_list, try_handler + case 551: // try_stmt -> tkTry, stmt_list, try_handler { CurrentSemanticValue.stn = new try_stmt(ValueStack[ValueStack.Depth-2].stn as statement_list, ValueStack[ValueStack.Depth-1].stn as try_handler, CurrentLocationSpan); (ValueStack[ValueStack.Depth-2].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; ValueStack[ValueStack.Depth-2].stn.source_context = LocationStack[LocationStack.Depth-3].Merge(LocationStack[LocationStack.Depth-2]); } break; - case 551: // try_handler -> tkFinally, stmt_list, tkEnd + case 552: // try_handler -> tkFinally, stmt_list, tkEnd { CurrentSemanticValue.stn = new try_handler_finally(ValueStack[ValueStack.Depth-2].stn as statement_list, CurrentLocationSpan); (ValueStack[ValueStack.Depth-2].stn as statement_list).left_logical_bracket = ValueStack[ValueStack.Depth-3].ti; (ValueStack[ValueStack.Depth-2].stn as statement_list).right_logical_bracket = ValueStack[ValueStack.Depth-1].ti; } break; - case 552: // try_handler -> tkExcept, exception_block, tkEnd + case 553: // try_handler -> tkExcept, exception_block, tkEnd { CurrentSemanticValue.stn = new try_handler_except((exception_block)ValueStack[ValueStack.Depth-2].stn, CurrentLocationSpan); if ((ValueStack[ValueStack.Depth-2].stn as exception_block).stmt_list != null) @@ -5232,186 +5151,186 @@ public partial class GPPGParser: ShiftReduceParser exception_handler_list, exception_block_else_branch + case 554: // exception_block -> exception_handler_list, exception_block_else_branch { CurrentSemanticValue.stn = new exception_block(null, (exception_handler_list)ValueStack[ValueStack.Depth-2].stn, (statement_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 554: // exception_block -> exception_handler_list, tkSemiColon, + case 555: // exception_block -> exception_handler_list, tkSemiColon, // exception_block_else_branch { CurrentSemanticValue.stn = new exception_block(null, (exception_handler_list)ValueStack[ValueStack.Depth-3].stn, (statement_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 555: // exception_block -> stmt_list + case 556: // exception_block -> stmt_list { CurrentSemanticValue.stn = new exception_block(ValueStack[ValueStack.Depth-1].stn as statement_list, null, null, LocationStack[LocationStack.Depth-1]); } break; - case 556: // exception_handler_list -> exception_handler + case 557: // exception_handler_list -> exception_handler { CurrentSemanticValue.stn = new exception_handler_list(ValueStack[ValueStack.Depth-1].stn as exception_handler, CurrentLocationSpan); } break; - case 557: // exception_handler_list -> exception_handler_list, tkSemiColon, + case 558: // exception_handler_list -> exception_handler_list, tkSemiColon, // exception_handler { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as exception_handler_list).Add(ValueStack[ValueStack.Depth-1].stn as exception_handler, CurrentLocationSpan); } break; - case 558: // exception_block_else_branch -> /* empty */ + case 559: // exception_block_else_branch -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 559: // exception_block_else_branch -> tkElse, stmt_list + case 560: // exception_block_else_branch -> tkElse, stmt_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 560: // exception_handler -> tkOn, exception_identifier, tkDo, unlabelled_stmt + case 561: // exception_handler -> tkOn, exception_identifier, tkDo, unlabelled_stmt { 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); } break; - case 561: // exception_identifier -> exception_class_type_identifier + case 562: // exception_identifier -> exception_class_type_identifier { CurrentSemanticValue.stn = new exception_ident(null, (named_type_reference)ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 562: // exception_identifier -> exception_variable, tkColon, + case 563: // exception_identifier -> exception_variable, tkColon, // exception_class_type_identifier { CurrentSemanticValue.stn = new exception_ident(ValueStack[ValueStack.Depth-3].id, (named_type_reference)ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 563: // exception_class_type_identifier -> simple_type_identifier + case 564: // exception_class_type_identifier -> simple_type_identifier { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 564: // exception_variable -> identifier + case 565: // exception_variable -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 565: // raise_stmt -> tkRaise + case 566: // raise_stmt -> tkRaise { CurrentSemanticValue.stn = new raise_stmt(); CurrentSemanticValue.stn.source_context = CurrentLocationSpan; } break; - case 566: // raise_stmt -> tkRaise, expr + case 567: // raise_stmt -> tkRaise, expr { CurrentSemanticValue.stn = new raise_stmt(ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); } break; - case 567: // expr_list -> expr_with_func_decl_lambda + case 568: // expr_list -> expr_with_func_decl_lambda { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 568: // expr_list -> expr_list, tkComma, expr_with_func_decl_lambda + case 569: // expr_list -> expr_list, tkComma, expr_with_func_decl_lambda { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 569: // expr_as_stmt -> allowable_expr_as_stmt + case 570: // expr_as_stmt -> allowable_expr_as_stmt { CurrentSemanticValue.stn = new expression_as_statement(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 570: // allowable_expr_as_stmt -> new_expr + case 571: // allowable_expr_as_stmt -> new_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 571: // expr_with_func_decl_lambda -> expr + case 572: // expr_with_func_decl_lambda -> expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 572: // expr_with_func_decl_lambda -> func_decl_lambda + case 573: // expr_with_func_decl_lambda -> func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 573: // expr -> expr_l1 + case 574: // expr -> expr_l1 { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 574: // expr -> format_expr + case 575: // expr -> format_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 575: // expr_l1 -> expr_dq + case 576: // expr_l1 -> expr_dq { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 576: // expr_l1 -> question_expr + case 577: // expr_l1 -> question_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 577: // expr_l1_func_decl_lambda -> expr_l1 + case 578: // expr_l1_func_decl_lambda -> expr_l1 { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 578: // expr_l1_func_decl_lambda -> func_decl_lambda + case 579: // expr_l1_func_decl_lambda -> func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 579: // expr_dq -> relop_expr + case 580: // expr_dq -> relop_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 580: // expr_dq -> expr_dq, tkDoubleQuestion, relop_expr + case 581: // expr_dq -> expr_dq, tkDoubleQuestion, relop_expr { CurrentSemanticValue.ex = new double_question_node(ValueStack[ValueStack.Depth-3].ex as expression, ValueStack[ValueStack.Depth-1].ex as expression, CurrentLocationSpan);} break; - case 581: // sizeof_expr -> tkSizeOf, tkRoundOpen, simple_or_template_type_reference, + case 582: // sizeof_expr -> tkSizeOf, tkRoundOpen, simple_or_template_type_reference, // tkRoundClose { CurrentSemanticValue.ex = new sizeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, null, CurrentLocationSpan); } break; - case 582: // typeof_expr -> tkTypeOf, tkRoundOpen, simple_or_template_type_reference, + case 583: // typeof_expr -> tkTypeOf, tkRoundOpen, simple_or_template_type_reference, // tkRoundClose { CurrentSemanticValue.ex = new typeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); } break; - case 583: // typeof_expr -> tkTypeOf, tkRoundOpen, empty_template_type_reference, + case 584: // typeof_expr -> tkTypeOf, tkRoundOpen, empty_template_type_reference, // tkRoundClose { CurrentSemanticValue.ex = new typeof_operator((named_type_reference)ValueStack[ValueStack.Depth-2].td, CurrentLocationSpan); } break; - case 584: // question_expr -> expr_l1, tkQuestion, expr_l1, tkColon, expr_l1 + case 585: // question_expr -> expr_l1, tkQuestion, expr_l1, tkColon, expr_l1 { if (ValueStack[ValueStack.Depth-3].ex is nil_const && ValueStack[ValueStack.Depth-1].ex is nil_const) parsertools.AddErrorFromResource("TWO_NILS_IN_QUESTION_EXPR",LocationStack[LocationStack.Depth-3]); CurrentSemanticValue.ex = new question_colon_expression(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 585: // empty_template_type_reference -> simple_type_identifier, + case 586: // empty_template_type_reference -> simple_type_identifier, // template_type_empty_params { CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-2].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 586: // empty_template_type_reference -> simple_type_identifier, tkAmpersend, + case 587: // empty_template_type_reference -> simple_type_identifier, tkAmpersend, // template_type_empty_params { CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-3].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 587: // simple_or_template_type_reference -> simple_type_identifier + case 588: // simple_or_template_type_reference -> simple_type_identifier { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 588: // simple_or_template_type_reference -> simple_type_identifier, + case 589: // simple_or_template_type_reference -> simple_type_identifier, // template_type_params { CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-2].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 589: // simple_or_template_type_reference -> simple_type_identifier, tkAmpersend, + case 590: // simple_or_template_type_reference -> simple_type_identifier, tkAmpersend, // template_type_params { CurrentSemanticValue.td = new template_type_reference((named_type_reference)ValueStack[ValueStack.Depth-3].td, (template_param_list)ValueStack[ValueStack.Depth-1].stn, CurrentLocationSpan); } break; - case 590: // optional_array_initializer -> tkRoundOpen, typed_const_list, tkRoundClose + case 591: // optional_array_initializer -> tkRoundOpen, typed_const_list, tkRoundClose { CurrentSemanticValue.stn = new array_const((expression_list)ValueStack[ValueStack.Depth-2].stn, CurrentLocationSpan); } break; - case 592: // new_expr -> tkNew, simple_or_template_type_reference, + case 593: // new_expr -> tkNew, simple_or_template_type_reference, // optional_expr_list_with_bracket { CurrentSemanticValue.ex = new new_expr(ValueStack[ValueStack.Depth-2].td, ValueStack[ValueStack.Depth-1].stn as expression_list, false, null, CurrentLocationSpan); } break; - case 593: // new_expr -> tkNew, simple_or_template_type_reference, tkSquareOpen, + case 594: // new_expr -> tkNew, simple_or_template_type_reference, tkSquareOpen, // optional_expr_list, tkSquareClose, optional_array_initializer { var el = ValueStack[ValueStack.Depth-3].stn as expression_list; @@ -5427,7 +5346,7 @@ public partial class GPPGParser: ShiftReduceParser tkNew, tkClass, tkRoundOpen, list_fields_in_unnamed_object, + case 595: // new_expr -> tkNew, tkClass, tkRoundOpen, list_fields_in_unnamed_object, // tkRoundClose { // sugared node @@ -5442,12 +5361,12 @@ public partial class GPPGParser: ShiftReduceParser identifier, tkAssign, relop_expr + case 596: // field_in_unnamed_object -> identifier, tkAssign, relop_expr { CurrentSemanticValue.ob = new name_assign_expr(ValueStack[ValueStack.Depth-3].id,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); } break; - case 596: // field_in_unnamed_object -> relop_expr + case 597: // field_in_unnamed_object -> relop_expr { ident name = null; var id = ValueStack[ValueStack.Depth-1].ex as ident; @@ -5467,13 +5386,13 @@ public partial class GPPGParser: ShiftReduceParser field_in_unnamed_object + case 598: // list_fields_in_unnamed_object -> field_in_unnamed_object { var l = new name_assign_expr_list(); CurrentSemanticValue.ob = l.Add(ValueStack[ValueStack.Depth-1].ob as name_assign_expr); } break; - case 598: // list_fields_in_unnamed_object -> list_fields_in_unnamed_object, tkComma, + case 599: // list_fields_in_unnamed_object -> list_fields_in_unnamed_object, tkComma, // field_in_unnamed_object { var nel = ValueStack[ValueStack.Depth-3].ob as name_assign_expr_list; @@ -5484,47 +5403,47 @@ public partial class GPPGParser: ShiftReduceParser /* empty */ + case 600: // optional_expr_list_with_bracket -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 600: // optional_expr_list_with_bracket -> tkRoundOpen, optional_expr_list, + case 601: // optional_expr_list_with_bracket -> tkRoundOpen, optional_expr_list, // tkRoundClose { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 601: // relop_expr -> simple_expr + case 602: // relop_expr -> simple_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 602: // relop_expr -> relop_expr, relop, simple_expr + case 603: // relop_expr -> relop_expr, relop, simple_expr { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 603: // relop_expr -> is_expr, tkRoundOpen, pattern_out_param_list, tkRoundClose + case 604: // relop_expr -> is_expr, tkRoundOpen, pattern_out_param_list, tkRoundClose { var isTypeCheck = ValueStack[ValueStack.Depth-4].ex as typecast_node; var deconstructorPattern = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, isTypeCheck.type_def, CurrentLocationSpan); CurrentSemanticValue.ex = new is_pattern_expr(isTypeCheck.expr, deconstructorPattern, CurrentLocationSpan); } break; - case 604: // pattern -> simple_or_template_type_reference, tkRoundOpen, + case 605: // pattern -> simple_or_template_type_reference, tkRoundOpen, // pattern_out_param_list, tkRoundClose { CurrentSemanticValue.stn = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, ValueStack[ValueStack.Depth-4].td, CurrentLocationSpan); } break; - case 605: // pattern_optional_var -> simple_or_template_type_reference, tkRoundOpen, + case 606: // pattern_optional_var -> simple_or_template_type_reference, tkRoundOpen, // pattern_out_param_list_optional_var, tkRoundClose { CurrentSemanticValue.stn = new deconstructor_pattern(ValueStack[ValueStack.Depth-2].ob as List, ValueStack[ValueStack.Depth-4].td, CurrentLocationSpan); } break; - case 606: // pattern_out_param_list_optional_var -> pattern_out_param_optional_var + case 607: // pattern_out_param_list_optional_var -> pattern_out_param_optional_var { CurrentSemanticValue.ob = new List(); (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_deconstructor_parameter); } break; - case 607: // pattern_out_param_list_optional_var -> pattern_out_param_list_optional_var, + case 608: // pattern_out_param_list_optional_var -> pattern_out_param_list_optional_var, // tkSemiColon, // pattern_out_param_optional_var { @@ -5533,7 +5452,7 @@ public partial class GPPGParser: ShiftReduceParser pattern_out_param_list_optional_var, + case 609: // pattern_out_param_list_optional_var -> pattern_out_param_list_optional_var, // tkComma, // pattern_out_param_optional_var { @@ -5542,13 +5461,13 @@ public partial class GPPGParser: ShiftReduceParser pattern_out_param + case 610: // pattern_out_param_list -> pattern_out_param { CurrentSemanticValue.ob = new List(); (CurrentSemanticValue.ob as List).Add(ValueStack[ValueStack.Depth-1].stn as pattern_deconstructor_parameter); } break; - case 610: // pattern_out_param_list -> pattern_out_param_list, tkSemiColon, + case 611: // pattern_out_param_list -> pattern_out_param_list, tkSemiColon, // pattern_out_param { var list = ValueStack[ValueStack.Depth-3].ob as List; @@ -5556,237 +5475,237 @@ public partial class GPPGParser: ShiftReduceParser pattern_out_param_list, tkComma, pattern_out_param + case 612: // pattern_out_param_list -> pattern_out_param_list, tkComma, pattern_out_param { var list = ValueStack[ValueStack.Depth-3].ob as List; list.Add(ValueStack[ValueStack.Depth-1].stn as pattern_deconstructor_parameter); CurrentSemanticValue.ob = list; } break; - case 612: // pattern_out_param -> tkVar, identifier, tkColon, type_ref + case 613: // pattern_out_param -> tkVar, identifier, tkColon, type_ref { CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 613: // pattern_out_param -> tkVar, identifier + case 614: // pattern_out_param -> tkVar, identifier { CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); } break; - case 614: // pattern_out_param -> pattern + case 615: // pattern_out_param -> pattern { CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); } break; - case 615: // pattern_out_param_optional_var -> identifier, tkColon, type_ref + case 616: // pattern_out_param_optional_var -> identifier, tkColon, type_ref { CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 616: // pattern_out_param_optional_var -> identifier + case 617: // pattern_out_param_optional_var -> identifier { CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); } break; - case 617: // pattern_out_param_optional_var -> tkVar, identifier, tkColon, type_ref + case 618: // pattern_out_param_optional_var -> tkVar, identifier, tkColon, type_ref { CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-3].id, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 618: // pattern_out_param_optional_var -> tkVar, identifier + case 619: // pattern_out_param_optional_var -> tkVar, identifier { CurrentSemanticValue.stn = new var_deconstructor_parameter(ValueStack[ValueStack.Depth-1].id, null, CurrentLocationSpan); } break; - case 619: // pattern_out_param_optional_var -> pattern_optional_var + case 620: // pattern_out_param_optional_var -> pattern_optional_var { CurrentSemanticValue.stn = new recursive_deconstructor_parameter(ValueStack[ValueStack.Depth-1].stn as pattern_node, CurrentLocationSpan); } break; - case 620: // simple_expr_or_nothing -> simple_expr + case 621: // simple_expr_or_nothing -> simple_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 621: // simple_expr_or_nothing -> /* empty */ + case 622: // simple_expr_or_nothing -> /* empty */ { CurrentSemanticValue.ex = null; } break; - case 622: // const_expr_or_nothing -> const_expr + case 623: // const_expr_or_nothing -> const_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 623: // const_expr_or_nothing -> /* empty */ + case 624: // const_expr_or_nothing -> /* empty */ { CurrentSemanticValue.ex = null; } break; - case 624: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing + case 625: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing { CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); } break; - case 625: // format_expr -> tkColon, simple_expr_or_nothing + case 626: // format_expr -> tkColon, simple_expr_or_nothing { CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); } break; - case 626: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing, tkColon, + case 627: // format_expr -> simple_expr, tkColon, simple_expr_or_nothing, tkColon, // simple_expr { CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 627: // format_expr -> tkColon, simple_expr_or_nothing, tkColon, simple_expr + case 628: // format_expr -> tkColon, simple_expr_or_nothing, tkColon, simple_expr { CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 628: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing + case 629: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing { CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); } break; - case 629: // format_const_expr -> tkColon, const_expr_or_nothing + case 630: // format_const_expr -> tkColon, const_expr_or_nothing { CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); } break; - case 630: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing, tkColon, + case 631: // format_const_expr -> const_expr, tkColon, const_expr_or_nothing, tkColon, // const_expr { CurrentSemanticValue.ex = new format_expr(ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 631: // format_const_expr -> tkColon, const_expr_or_nothing, tkColon, const_expr + case 632: // format_const_expr -> tkColon, const_expr_or_nothing, tkColon, const_expr { CurrentSemanticValue.ex = new format_expr(null, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 632: // relop -> tkEqual + case 633: // relop -> tkEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 633: // relop -> tkNotEqual + case 634: // relop -> tkNotEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 634: // relop -> tkLower + case 635: // relop -> tkLower { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 635: // relop -> tkGreater + case 636: // relop -> tkGreater { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 636: // relop -> tkLowerEqual + case 637: // relop -> tkLowerEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 637: // relop -> tkGreaterEqual + case 638: // relop -> tkGreaterEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 638: // relop -> tkIn + case 639: // relop -> tkIn { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 639: // simple_expr -> term + case 640: // simple_expr -> term { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 640: // simple_expr -> simple_expr, addop, term + case 641: // simple_expr -> simple_expr, addop, term { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 641: // addop -> tkPlus + case 642: // addop -> tkPlus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 642: // addop -> tkMinus + case 643: // addop -> tkMinus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 643: // addop -> tkOr + case 644: // addop -> tkOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 644: // addop -> tkXor + case 645: // addop -> tkXor { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 645: // addop -> tkCSharpStyleOr + case 646: // addop -> tkCSharpStyleOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 646: // typecast_op -> tkAs + case 647: // typecast_op -> tkAs { CurrentSemanticValue.ob = op_typecast.as_op; } break; - case 647: // typecast_op -> tkIs + case 648: // typecast_op -> tkIs { CurrentSemanticValue.ob = op_typecast.is_op; } break; - case 648: // as_is_expr -> is_expr + case 649: // as_is_expr -> is_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 649: // as_is_expr -> as_expr + case 650: // as_is_expr -> as_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 650: // as_expr -> term, tkAs, simple_or_template_type_reference + case 651: // as_expr -> term, tkAs, simple_or_template_type_reference { CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, op_typecast.as_op, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 651: // is_expr -> term, tkIs, simple_or_template_type_reference + case 652: // is_expr -> term, tkIs, simple_or_template_type_reference { CurrentSemanticValue.ex = NewAsIsExpr(ValueStack[ValueStack.Depth-3].ex, op_typecast.is_op, ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 652: // simple_term -> factor + case 653: // simple_term -> factor { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 653: // power_expr -> simple_term, tkStarStar, factor + case 654: // power_expr -> simple_term, tkStarStar, factor { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 654: // term -> factor + case 655: // term -> factor { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 655: // term -> new_expr + case 656: // term -> new_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 656: // term -> power_expr + case 657: // term -> power_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 657: // term -> term, mulop, factor + case 658: // term -> term, mulop, factor { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 658: // term -> term, mulop, power_expr + case 659: // term -> term, mulop, power_expr { CurrentSemanticValue.ex = new bin_expr(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].ex,(ValueStack[ValueStack.Depth-2].op).type, CurrentLocationSpan); } break; - case 659: // term -> as_is_expr + case 660: // term -> as_is_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 660: // mulop -> tkStar + case 661: // mulop -> tkStar { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 661: // mulop -> tkSlash + case 662: // mulop -> tkSlash { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 662: // mulop -> tkDiv + case 663: // mulop -> tkDiv { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 663: // mulop -> tkMod + case 664: // mulop -> tkMod { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 664: // mulop -> tkShl + case 665: // mulop -> tkShl { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 665: // mulop -> tkShr + case 666: // mulop -> tkShr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 666: // mulop -> tkAnd + case 667: // mulop -> tkAnd { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 667: // default_expr -> tkDefault, tkRoundOpen, simple_or_template_type_reference, + case 668: // default_expr -> tkDefault, tkRoundOpen, simple_or_template_type_reference, // tkRoundClose { CurrentSemanticValue.ex = new default_operator(ValueStack[ValueStack.Depth-2].td as named_type_reference, CurrentLocationSpan); } break; - case 668: // tuple -> tkRoundOpen, expr_l1, tkComma, expr_l1_list, lambda_type_ref, + case 669: // tuple -> tkRoundOpen, expr_l1, tkComma, expr_l1_list, lambda_type_ref, // optional_full_lambda_fp_list, tkRoundClose { /*if ($5 != null) @@ -5800,29 +5719,29 @@ public partial class GPPGParser: ShiftReduceParser tkNil + case 670: // factor -> tkNil { CurrentSemanticValue.ex = new nil_const(); CurrentSemanticValue.ex.source_context = CurrentLocationSpan; } break; - case 670: // factor -> literal_or_number + case 671: // factor -> literal_or_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 671: // factor -> default_expr + case 672: // factor -> default_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 672: // factor -> tkSquareOpen, elem_list, tkSquareClose + case 673: // factor -> tkSquareOpen, elem_list, tkSquareClose { CurrentSemanticValue.ex = new pascal_set_constant(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); } break; - case 673: // factor -> tkNot, factor + case 674: // factor -> tkNot, factor { CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 674: // factor -> sign, factor + case 675: // factor -> sign, factor { if (ValueStack[ValueStack.Depth-2].op.type == Operators.Minus) { @@ -5849,91 +5768,91 @@ public partial class GPPGParser: ShiftReduceParser var_reference + case 676: // factor -> var_reference { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 676: // factor -> tuple + case 677: // factor -> tuple { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 677: // literal_or_number -> literal + case 678: // literal_or_number -> literal { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 678: // literal_or_number -> unsigned_number + case 679: // literal_or_number -> unsigned_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 679: // var_question_point -> variable, tkQuestionPoint, variable + case 680: // var_question_point -> variable, tkQuestionPoint, variable { CurrentSemanticValue.ex = new dot_question_node(ValueStack[ValueStack.Depth-3].ex as addressed_value,ValueStack[ValueStack.Depth-1].ex as addressed_value,CurrentLocationSpan); } break; - case 680: // var_question_point -> variable, tkQuestionPoint, var_question_point + case 681: // var_question_point -> variable, tkQuestionPoint, var_question_point { CurrentSemanticValue.ex = new dot_question_node(ValueStack[ValueStack.Depth-3].ex as addressed_value,ValueStack[ValueStack.Depth-1].ex as addressed_value,CurrentLocationSpan); } break; - case 681: // var_reference -> var_address, variable + case 682: // var_reference -> var_address, variable { CurrentSemanticValue.ex = NewVarReference(ValueStack[ValueStack.Depth-2].stn as get_address, ValueStack[ValueStack.Depth-1].ex as addressed_value, CurrentLocationSpan); } break; - case 682: // var_reference -> variable + case 683: // var_reference -> variable { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 683: // var_reference -> var_question_point + case 684: // var_reference -> var_question_point { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 684: // var_address -> tkAddressOf + case 685: // var_address -> tkAddressOf { CurrentSemanticValue.stn = NewVarAddress(CurrentLocationSpan); } break; - case 685: // var_address -> var_address, tkAddressOf + case 686: // var_address -> var_address, tkAddressOf { CurrentSemanticValue.stn = NewVarAddress(ValueStack[ValueStack.Depth-2].stn as get_address, CurrentLocationSpan); } break; - case 686: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket + case 687: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket { CurrentSemanticValue.stn = new attribute(null, ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as expression_list, CurrentLocationSpan); } break; - case 687: // attribute_variable -> template_type, optional_expr_list_with_bracket + case 688: // attribute_variable -> template_type, optional_expr_list_with_bracket { CurrentSemanticValue.stn = new attribute(null, ValueStack[ValueStack.Depth-2].td as named_type_reference, ValueStack[ValueStack.Depth-1].stn as expression_list, CurrentLocationSpan); } break; - case 688: // dotted_identifier -> identifier + case 689: // dotted_identifier -> identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 689: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword + case 690: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword { CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 690: // variable_as_type -> dotted_identifier + case 691: // variable_as_type -> dotted_identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex;} break; - case 691: // variable_as_type -> dotted_identifier, template_type_params + case 692: // variable_as_type -> dotted_identifier, template_type_params { CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-2].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); } break; - case 692: // variable_or_literal_or_number -> variable + case 693: // variable_or_literal_or_number -> variable { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 693: // variable_or_literal_or_number -> literal_or_number + case 694: // variable_or_literal_or_number -> literal_or_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 694: // variable -> identifier + case 695: // variable -> identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 695: // variable -> operator_name_ident + case 696: // variable -> operator_name_ident { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 696: // variable -> tkInherited, identifier + case 697: // variable -> tkInherited, identifier { CurrentSemanticValue.ex = new inherited_ident(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 697: // variable -> tkRoundOpen, expr, tkRoundClose + case 698: // variable -> tkRoundOpen, expr, tkRoundClose { if (!parsertools.build_tree_for_formatter) { @@ -5943,18 +5862,18 @@ public partial class GPPGParser: ShiftReduceParser sizeof_expr + case 699: // variable -> sizeof_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 699: // variable -> typeof_expr + case 700: // variable -> typeof_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 700: // variable -> literal_or_number, tkPoint, identifier_or_keyword + case 701: // variable -> literal_or_number, tkPoint, identifier_or_keyword { CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 701: // variable -> variable_or_literal_or_number, tkSquareOpen, expr_list, + case 702: // variable -> variable_or_literal_or_number, tkSquareOpen, expr_list, // tkSquareClose { var el = ValueStack[ValueStack.Depth-2].stn as expression_list; // SSM 10/03/16 @@ -5973,7 +5892,7 @@ public partial class GPPGParser: ShiftReduceParser variable, tkQuestionSquareOpen, format_expr, tkSquareClose + case 703: // variable -> variable, tkQuestionSquareOpen, format_expr, tkSquareClose { var fe = ValueStack[ValueStack.Depth-2].ex as format_expr; // SSM 9/01/17 if (!parsertools.build_tree_for_formatter) @@ -5986,71 +5905,71 @@ public partial class GPPGParser: ShiftReduceParser variable, tkRoundOpen, optional_expr_list, tkRoundClose + case 704: // variable -> variable, tkRoundOpen, optional_expr_list, tkRoundClose { CurrentSemanticValue.ex = new method_call(ValueStack[ValueStack.Depth-4].ex as addressed_value,ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); } break; - case 704: // variable -> variable, tkPoint, identifier_keyword_operatorname + case 705: // variable -> variable, tkPoint, identifier_keyword_operatorname { CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 705: // variable -> tuple, tkPoint, identifier_keyword_operatorname + case 706: // variable -> tuple, tkPoint, identifier_keyword_operatorname { CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 706: // variable -> variable, tkDeref + case 707: // variable -> variable, tkDeref { CurrentSemanticValue.ex = new roof_dereference(ValueStack[ValueStack.Depth-2].ex as addressed_value,CurrentLocationSpan); } break; - case 707: // variable -> variable, tkAmpersend, template_type_params + case 708: // variable -> variable, tkAmpersend, template_type_params { CurrentSemanticValue.ex = new ident_with_templateparams(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].stn as template_param_list, CurrentLocationSpan); } break; - case 708: // optional_expr_list -> expr_list + case 709: // optional_expr_list -> expr_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 709: // optional_expr_list -> /* empty */ + case 710: // optional_expr_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 710: // elem_list -> elem_list1 + case 711: // elem_list -> elem_list1 { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 711: // elem_list -> /* empty */ + case 712: // elem_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 712: // elem_list1 -> elem + case 713: // elem_list1 -> elem { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 713: // elem_list1 -> elem_list1, tkComma, elem + case 714: // elem_list1 -> elem_list1, tkComma, elem { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 714: // elem -> expr + case 715: // elem -> expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 715: // elem -> expr, tkDotDot, expr + case 716: // elem -> expr, tkDotDot, expr { CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 716: // one_literal -> tkStringLiteral + case 717: // one_literal -> tkStringLiteral { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 717: // one_literal -> tkAsciiChar + case 718: // one_literal -> tkAsciiChar { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 718: // literal -> literal_list + case 719: // literal -> literal_list { CurrentSemanticValue.ex = NewLiteral(ValueStack[ValueStack.Depth-1].stn as literal_const_line); } break; - case 719: // literal -> tkFormatStringLiteral + case 720: // literal -> tkFormatStringLiteral { if (parsertools.build_tree_for_formatter) { @@ -6062,12 +5981,12 @@ public partial class GPPGParser: ShiftReduceParser one_literal + case 721: // literal_list -> one_literal { CurrentSemanticValue.stn = new literal_const_line(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); } break; - case 721: // literal_list -> literal_list, one_literal + case 722: // literal_list -> literal_list, one_literal { var line = ValueStack[ValueStack.Depth-2].stn as literal_const_line; if (line.literals.Last() is string_const && ValueStack[ValueStack.Depth-1].ex is string_const) @@ -6075,446 +5994,446 @@ public partial class GPPGParser: ShiftReduceParser tkOperator, overload_operator + case 723: // operator_name_ident -> tkOperator, overload_operator { CurrentSemanticValue.ex = new operator_name_ident((ValueStack[ValueStack.Depth-1].op as op_type_node).text, (ValueStack[ValueStack.Depth-1].op as op_type_node).type, CurrentLocationSpan); } break; - case 723: // optional_method_modificators -> tkSemiColon + case 724: // optional_method_modificators -> tkSemiColon { CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); } break; - case 724: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon + case 725: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon { //parsertools.AddModifier((procedure_attributes_list)$2, proc_attribute.attr_overload); CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 725: // optional_method_modificators1 -> /* empty */ + case 726: // optional_method_modificators1 -> /* empty */ { CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); } break; - case 726: // optional_method_modificators1 -> tkSemiColon, meth_modificators + case 727: // optional_method_modificators1 -> tkSemiColon, meth_modificators { //parsertools.AddModifier((procedure_attributes_list)$2, proc_attribute.attr_overload); CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 727: // meth_modificators -> meth_modificator + case 728: // meth_modificators -> meth_modificator { CurrentSemanticValue.stn = new procedure_attributes_list(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); } break; - case 728: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator + case 729: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as procedure_attributes_list).Add(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); } break; - case 729: // identifier -> tkIdentifier + case 730: // identifier -> tkIdentifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 730: // identifier -> property_specifier_directives + case 731: // identifier -> property_specifier_directives { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 731: // identifier -> non_reserved + case 732: // identifier -> non_reserved { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 732: // identifier_or_keyword -> identifier + case 733: // identifier_or_keyword -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 733: // identifier_or_keyword -> keyword + case 734: // identifier_or_keyword -> keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 734: // identifier_or_keyword -> reserved_keyword + case 735: // identifier_or_keyword -> reserved_keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 735: // identifier_keyword_operatorname -> identifier + case 736: // identifier_keyword_operatorname -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 736: // identifier_keyword_operatorname -> keyword + case 737: // identifier_keyword_operatorname -> keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 737: // identifier_keyword_operatorname -> operator_name_ident + case 738: // identifier_keyword_operatorname -> operator_name_ident { CurrentSemanticValue.id = (ident)ValueStack[ValueStack.Depth-1].ex; } break; - case 738: // meth_modificator -> tkAbstract + case 739: // meth_modificator -> tkAbstract { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 739: // meth_modificator -> tkOverload + case 740: // meth_modificator -> tkOverload { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; parsertools.AddWarningFromResource("OVERLOAD_IS_NOT_USED", ValueStack[ValueStack.Depth-1].id.source_context); } break; - case 740: // meth_modificator -> tkReintroduce + case 741: // meth_modificator -> tkReintroduce { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 741: // meth_modificator -> tkOverride + case 742: // meth_modificator -> tkOverride { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 742: // meth_modificator -> tkExtensionMethod + case 743: // meth_modificator -> tkExtensionMethod { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 743: // meth_modificator -> tkVirtual + case 744: // meth_modificator -> tkVirtual { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 744: // property_modificator -> tkVirtual + case 745: // property_modificator -> tkVirtual { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 745: // property_modificator -> tkOverride + case 746: // property_modificator -> tkOverride { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 746: // property_modificator -> tkAbstract + case 747: // property_modificator -> tkAbstract { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 747: // property_specifier_directives -> tkRead + case 748: // property_specifier_directives -> tkRead { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 748: // property_specifier_directives -> tkWrite + case 749: // property_specifier_directives -> tkWrite { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 749: // non_reserved -> tkName + case 750: // non_reserved -> tkName { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 750: // non_reserved -> tkNew + case 751: // non_reserved -> tkNew { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 751: // visibility_specifier -> tkInternal + case 752: // visibility_specifier -> tkInternal { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 752: // visibility_specifier -> tkPublic + case 753: // visibility_specifier -> tkPublic { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 753: // visibility_specifier -> tkProtected + case 754: // visibility_specifier -> tkProtected { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 754: // visibility_specifier -> tkPrivate + case 755: // visibility_specifier -> tkPrivate { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 755: // keyword -> visibility_specifier + case 756: // keyword -> visibility_specifier { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 756: // keyword -> tkSealed + case 757: // keyword -> tkSealed { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 757: // keyword -> tkTemplate + case 758: // keyword -> tkTemplate { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 758: // keyword -> tkOr + case 759: // keyword -> tkOr { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 759: // keyword -> tkTypeOf + case 760: // keyword -> tkTypeOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 760: // keyword -> tkSizeOf + case 761: // keyword -> tkSizeOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 761: // keyword -> tkDefault + case 762: // keyword -> tkDefault { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 762: // keyword -> tkWhere + case 763: // keyword -> tkWhere { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 763: // keyword -> tkXor + case 764: // keyword -> tkXor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 764: // keyword -> tkAnd + case 765: // keyword -> tkAnd { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 765: // keyword -> tkDiv + case 766: // keyword -> tkDiv { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 766: // keyword -> tkMod + case 767: // keyword -> tkMod { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 767: // keyword -> tkShl + case 768: // keyword -> tkShl { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 768: // keyword -> tkShr + case 769: // keyword -> tkShr { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 769: // keyword -> tkNot + case 770: // keyword -> tkNot { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 770: // keyword -> tkAs + case 771: // keyword -> tkAs { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 771: // keyword -> tkIn + case 772: // keyword -> tkIn { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 772: // keyword -> tkIs + case 773: // keyword -> tkIs { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 773: // keyword -> tkArray + case 774: // keyword -> tkArray { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 774: // keyword -> tkSequence + case 775: // keyword -> tkSequence { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 775: // keyword -> tkBegin + case 776: // keyword -> tkBegin { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 776: // keyword -> tkCase + case 777: // keyword -> tkCase { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 777: // keyword -> tkClass + case 778: // keyword -> tkClass { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 778: // keyword -> tkConst + case 779: // keyword -> tkConst { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 779: // keyword -> tkConstructor + case 780: // keyword -> tkConstructor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 780: // keyword -> tkDestructor + case 781: // keyword -> tkDestructor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 781: // keyword -> tkDownto + case 782: // keyword -> tkDownto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 782: // keyword -> tkDo + case 783: // keyword -> tkDo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 783: // keyword -> tkElse + case 784: // keyword -> tkElse { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 784: // keyword -> tkExcept + case 785: // keyword -> tkExcept { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 785: // keyword -> tkFile + case 786: // keyword -> tkFile { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 786: // keyword -> tkAuto + case 787: // keyword -> tkAuto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 787: // keyword -> tkFinalization + case 788: // keyword -> tkFinalization { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 788: // keyword -> tkFinally + case 789: // keyword -> tkFinally { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 789: // keyword -> tkFor + case 790: // keyword -> tkFor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 790: // keyword -> tkForeach + case 791: // keyword -> tkForeach { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 791: // keyword -> tkFunction + case 792: // keyword -> tkFunction { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 792: // keyword -> tkIf + case 793: // keyword -> tkIf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 793: // keyword -> tkImplementation + case 794: // keyword -> tkImplementation { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 794: // keyword -> tkInherited + case 795: // keyword -> tkInherited { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 795: // keyword -> tkInitialization + case 796: // keyword -> tkInitialization { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 796: // keyword -> tkInterface + case 797: // keyword -> tkInterface { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 797: // keyword -> tkProcedure + case 798: // keyword -> tkProcedure { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 798: // keyword -> tkProperty + case 799: // keyword -> tkProperty { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 799: // keyword -> tkRaise + case 800: // keyword -> tkRaise { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 800: // keyword -> tkRecord + case 801: // keyword -> tkRecord { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 801: // keyword -> tkRepeat + case 802: // keyword -> tkRepeat { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 802: // keyword -> tkSet + case 803: // keyword -> tkSet { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 803: // keyword -> tkTry + case 804: // keyword -> tkTry { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 804: // keyword -> tkType + case 805: // keyword -> tkType { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 805: // keyword -> tkStatic + case 806: // keyword -> tkStatic { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 806: // keyword -> tkThen + case 807: // keyword -> tkThen { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 807: // keyword -> tkTo + case 808: // keyword -> tkTo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 808: // keyword -> tkUntil + case 809: // keyword -> tkUntil { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 809: // keyword -> tkUses + case 810: // keyword -> tkUses { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 810: // keyword -> tkVar + case 811: // keyword -> tkVar { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 811: // keyword -> tkWhile + case 812: // keyword -> tkWhile { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 812: // keyword -> tkWith + case 813: // keyword -> tkWith { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 813: // keyword -> tkNil + case 814: // keyword -> tkNil { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 814: // keyword -> tkGoto + case 815: // keyword -> tkGoto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 815: // keyword -> tkOf + case 816: // keyword -> tkOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 816: // keyword -> tkLabel + case 817: // keyword -> tkLabel { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 817: // keyword -> tkProgram + case 818: // keyword -> tkProgram { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 818: // keyword -> tkUnit + case 819: // keyword -> tkUnit { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 819: // keyword -> tkLibrary + case 820: // keyword -> tkLibrary { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 820: // keyword -> tkNamespace + case 821: // keyword -> tkNamespace { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 821: // keyword -> tkExternal + case 822: // keyword -> tkExternal { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 822: // keyword -> tkParams + case 823: // keyword -> tkParams { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 823: // keyword -> tkEvent + case 824: // keyword -> tkEvent { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 824: // keyword -> tkYield + case 825: // keyword -> tkYield { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 825: // keyword -> tkMatch + case 826: // keyword -> tkMatch { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 826: // keyword -> tkWhen + case 827: // keyword -> tkWhen { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 827: // reserved_keyword -> tkOperator + case 828: // reserved_keyword -> tkOperator { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 828: // reserved_keyword -> tkEnd + case 829: // reserved_keyword -> tkEnd { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 829: // overload_operator -> tkMinus + case 830: // overload_operator -> tkMinus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 830: // overload_operator -> tkPlus + case 831: // overload_operator -> tkPlus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 831: // overload_operator -> tkSlash + case 832: // overload_operator -> tkSlash { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 832: // overload_operator -> tkStar + case 833: // overload_operator -> tkStar { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 833: // overload_operator -> tkEqual + case 834: // overload_operator -> tkEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 834: // overload_operator -> tkGreater + case 835: // overload_operator -> tkGreater { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 835: // overload_operator -> tkGreaterEqual + case 836: // overload_operator -> tkGreaterEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 836: // overload_operator -> tkLower + case 837: // overload_operator -> tkLower { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 837: // overload_operator -> tkLowerEqual + case 838: // overload_operator -> tkLowerEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 838: // overload_operator -> tkNotEqual + case 839: // overload_operator -> tkNotEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 839: // overload_operator -> tkOr + case 840: // overload_operator -> tkOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 840: // overload_operator -> tkXor + case 841: // overload_operator -> tkXor { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 841: // overload_operator -> tkAnd + case 842: // overload_operator -> tkAnd { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 842: // overload_operator -> tkDiv + case 843: // overload_operator -> tkDiv { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 843: // overload_operator -> tkMod + case 844: // overload_operator -> tkMod { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 844: // overload_operator -> tkShl + case 845: // overload_operator -> tkShl { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 845: // overload_operator -> tkShr + case 846: // overload_operator -> tkShr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 846: // overload_operator -> tkNot + case 847: // overload_operator -> tkNot { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 847: // overload_operator -> tkIn + case 848: // overload_operator -> tkIn { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 848: // overload_operator -> tkImplicit + case 849: // overload_operator -> tkImplicit { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 849: // overload_operator -> tkExplicit + case 850: // overload_operator -> tkExplicit { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 850: // overload_operator -> assign_operator + case 851: // overload_operator -> assign_operator { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 851: // overload_operator -> tkStarStar + case 852: // overload_operator -> tkStarStar { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 852: // assign_operator -> tkAssign + case 853: // assign_operator -> tkAssign { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 853: // assign_operator -> tkPlusEqual + case 854: // assign_operator -> tkPlusEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 854: // assign_operator -> tkMinusEqual + case 855: // assign_operator -> tkMinusEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 855: // assign_operator -> tkMultEqual + case 856: // assign_operator -> tkMultEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 856: // assign_operator -> tkDivEqual + case 857: // assign_operator -> tkDivEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 857: // func_decl_lambda -> identifier, tkArrow, lambda_function_body + case 858: // func_decl_lambda -> identifier, tkArrow, lambda_function_body { var idList = new ident_list(ValueStack[ValueStack.Depth-3].id, LocationStack[LocationStack.Depth-3]); var formalPars = new formal_parameters(new typed_parameters(idList, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), LocationStack[LocationStack.Depth-3]), parametr_kind.none, null, LocationStack[LocationStack.Depth-3]), LocationStack[LocationStack.Depth-3]); CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), formalPars, new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), LocationStack[LocationStack.Depth-3]), ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 858: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref_noproctype, + case 859: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref_noproctype, // tkArrow, lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, CurrentLocationSpan); } break; - case 859: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, + case 860: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, // lambda_type_ref_noproctype, tkArrow, lambda_function_body { var idList = new ident_list(ValueStack[ValueStack.Depth-7].id, LocationStack[LocationStack.Depth-7]); @@ -6523,7 +6442,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, + case 861: // func_decl_lambda -> tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, // tkRoundClose, lambda_type_ref_noproctype, tkArrow, // lambda_function_body { @@ -6534,7 +6453,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, + case 862: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, // full_lambda_fp_list, tkRoundClose, // lambda_type_ref_noproctype, tkArrow, lambda_function_body { @@ -6546,7 +6465,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, expr_l1, tkComma, expr_l1_list, + case 863: // func_decl_lambda -> tkRoundOpen, expr_l1, tkComma, expr_l1_list, // lambda_type_ref, optional_full_lambda_fp_list, // tkRoundClose, rem_lambda { @@ -6608,61 +6527,61 @@ public partial class GPPGParser: ShiftReduceParser expl_func_decl_lambda + case 864: // func_decl_lambda -> expl_func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 864: // optional_full_lambda_fp_list -> /* empty */ + case 865: // optional_full_lambda_fp_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 865: // optional_full_lambda_fp_list -> tkSemiColon, full_lambda_fp_list + case 866: // optional_full_lambda_fp_list -> tkSemiColon, full_lambda_fp_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 866: // rem_lambda -> lambda_type_ref_noproctype, tkArrow, lambda_function_body + case 867: // rem_lambda -> lambda_type_ref_noproctype, tkArrow, lambda_function_body { CurrentSemanticValue.ob = new pair_type_stlist(ValueStack[ValueStack.Depth-3].td,ValueStack[ValueStack.Depth-1].stn as statement_list); } break; - case 867: // expl_func_decl_lambda -> tkFunction, lambda_type_ref, tkArrow, + case 868: // expl_func_decl_lambda -> tkFunction, lambda_type_ref, tkArrow, // lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, 1, CurrentLocationSpan); } break; - case 868: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, lambda_type_ref, + case 869: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, lambda_type_ref, // tkArrow, lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, 1, CurrentLocationSpan); } break; - case 869: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, + case 870: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, // tkRoundClose, lambda_type_ref, tkArrow, // lambda_function_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), ValueStack[ValueStack.Depth-5].stn as formal_parameters, ValueStack[ValueStack.Depth-3].td, ValueStack[ValueStack.Depth-1].stn as statement_list, 1, CurrentLocationSpan); } break; - case 870: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body + case 871: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, 2, CurrentLocationSpan); } break; - case 871: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, + case 872: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, // lambda_procedure_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), null, null, ValueStack[ValueStack.Depth-1].stn as statement_list, 2, CurrentLocationSpan); } break; - case 872: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, + case 873: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, // tkRoundClose, tkArrow, lambda_procedure_body { CurrentSemanticValue.ex = new function_lambda_definition(lambdaHelper.CreateLambdaName(), ValueStack[ValueStack.Depth-4].stn as formal_parameters, null, ValueStack[ValueStack.Depth-1].stn as statement_list, 2, CurrentLocationSpan); } break; - case 873: // full_lambda_fp_list -> lambda_simple_fp_sect + case 874: // full_lambda_fp_list -> lambda_simple_fp_sect { var typed_pars = ValueStack[ValueStack.Depth-1].stn as typed_parameters; if (typed_pars.vars_type is lambda_inferred_type) @@ -6682,97 +6601,97 @@ public partial class GPPGParser: ShiftReduceParser full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect + case 875: // full_lambda_fp_list -> full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect { CurrentSemanticValue.stn =(ValueStack[ValueStack.Depth-3].stn as formal_parameters).Add(ValueStack[ValueStack.Depth-1].stn as typed_parameters, CurrentLocationSpan); } break; - case 875: // lambda_simple_fp_sect -> ident_list, lambda_type_ref + case 876: // lambda_simple_fp_sect -> ident_list, lambda_type_ref { CurrentSemanticValue.stn = new typed_parameters(ValueStack[ValueStack.Depth-2].stn as ident_list, ValueStack[ValueStack.Depth-1].td, parametr_kind.none, null, CurrentLocationSpan); } break; - case 876: // lambda_type_ref -> /* empty */ + case 877: // lambda_type_ref -> /* empty */ { CurrentSemanticValue.td = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); } break; - case 877: // lambda_type_ref -> tkColon, fptype + case 878: // lambda_type_ref -> tkColon, fptype { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 878: // lambda_type_ref_noproctype -> /* empty */ + case 879: // lambda_type_ref_noproctype -> /* empty */ { CurrentSemanticValue.td = new lambda_inferred_type(new PascalABCCompiler.TreeRealization.lambda_any_type_node(), null); } break; - case 879: // lambda_type_ref_noproctype -> tkColon, fptype_noproctype + case 880: // lambda_type_ref_noproctype -> tkColon, fptype_noproctype { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 880: // common_lambda_body -> compound_stmt + case 881: // common_lambda_body -> compound_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 881: // common_lambda_body -> if_stmt + case 882: // common_lambda_body -> if_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 882: // common_lambda_body -> while_stmt + case 883: // common_lambda_body -> while_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 883: // common_lambda_body -> repeat_stmt + case 884: // common_lambda_body -> repeat_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 884: // common_lambda_body -> for_stmt + case 885: // common_lambda_body -> for_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 885: // common_lambda_body -> foreach_stmt + case 886: // common_lambda_body -> foreach_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 886: // common_lambda_body -> loop_stmt + case 887: // common_lambda_body -> loop_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 887: // common_lambda_body -> case_stmt + case 888: // common_lambda_body -> case_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 888: // common_lambda_body -> try_stmt + case 889: // common_lambda_body -> try_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 889: // common_lambda_body -> lock_stmt + case 890: // common_lambda_body -> lock_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 890: // common_lambda_body -> yield_stmt + case 891: // common_lambda_body -> yield_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 891: // common_lambda_body -> raise_stmt + case 892: // common_lambda_body -> raise_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 892: // lambda_function_body -> expr_l1 + case 893: // lambda_function_body -> expr_l1 { var id = SyntaxVisitors.ExprHasNameVisitor.HasName(ValueStack[ValueStack.Depth-1].ex, "Result"); if (id != null) @@ -6784,22 +6703,22 @@ public partial class GPPGParser: ShiftReduceParser common_lambda_body + case 894: // lambda_function_body -> common_lambda_body { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 894: // lambda_procedure_body -> proc_call + case 895: // lambda_procedure_body -> proc_call { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 895: // lambda_procedure_body -> assignment + case 896: // lambda_procedure_body -> assignment { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 896: // lambda_procedure_body -> common_lambda_body + case 897: // lambda_procedure_body -> common_lambda_body { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } diff --git a/SyntaxTreeConverters/StandardSyntaxConverter.cs b/SyntaxTreeConverters/StandardSyntaxConverter.cs index 8813e71bf..d17eda6f0 100644 --- a/SyntaxTreeConverters/StandardSyntaxConverter.cs +++ b/SyntaxTreeConverters/StandardSyntaxConverter.cs @@ -57,6 +57,9 @@ namespace PascalABCCompiler.SyntaxTreeConverters // SingleDeconstructChecker.New.ProcessNode(root); // SSM 21.10.18 - пока разрешил множественные деконструкторы. Если будут проблемы - запретить PatternsDesugaringVisitor.New.ProcessNode(root); + // simple_property + PropertyDesugarVisitor.New.ProcessNode(root); + // Всё, связанное с yield CapturedNamesHelper.Reset(); MarkMethodHasYieldAndCheckSomeErrorsVisitor.New.ProcessNode(root); diff --git a/SyntaxVisitors/SugarVisitors/PropertyDesugarVisitor.cs b/SyntaxVisitors/SugarVisitors/PropertyDesugarVisitor.cs new file mode 100644 index 000000000..14245c320 --- /dev/null +++ b/SyntaxVisitors/SugarVisitors/PropertyDesugarVisitor.cs @@ -0,0 +1,196 @@ +using PascalABCCompiler.SyntaxTree; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; + +namespace SyntaxVisitors.SugarVisitors +{ + public class PropertyDesugarVisitor : BaseChangeVisitor + { + public static PropertyDesugarVisitor New + { + get { return new PropertyDesugarVisitor(); } + } + + public override void visit(simple_property _simple_property) + { + var property_parent_node = _simple_property.Parent; + while (property_parent_node != null && property_parent_node.GetType() != typeof(class_members)) + { + property_parent_node = property_parent_node.Parent; + } + class_members property_class_members = property_parent_node as class_members; + + while (property_parent_node != null && property_parent_node.GetType() != typeof(class_body_list)) + { + property_parent_node = property_parent_node.Parent; + } + class_body_list class_body = property_parent_node as class_body_list; + + while (property_parent_node != null && property_parent_node.GetType() != typeof(class_definition)) + { + property_parent_node = property_parent_node.Parent; + } + class_definition class_def = property_parent_node as class_definition; + + var property_type = _simple_property.property_type; + var read_accessor = _simple_property.accessors?.read_accessor; + var write_accessor = _simple_property.accessors?.write_accessor; + var new_class_members = new class_members(access_modifer.private_modifer); + + if (class_def.keyword == class_keyword.Interface && _simple_property.is_auto) + { + throw new SyntaxVisitorError( + "INVALID_INTERFACE_MEMBER", _simple_property.source_context); + } + + if (class_def.keyword == class_keyword.Interface && + read_accessor != null && + (read_accessor.pr != null || read_accessor.accessor_name != null)) + { + throw new SyntaxVisitorError( + "INVALID_INTERFACE_MEMBER", read_accessor.source_context); + } + + if (class_def.keyword == class_keyword.Interface && + write_accessor != null && + (write_accessor.pr != null || write_accessor.accessor_name != null)) + { + throw new SyntaxVisitorError( + "INVALID_INTERFACE_MEMBER", write_accessor.source_context); + } + + if (_simple_property.is_auto) + { + AutoPropertyDesugaring(_simple_property, new_class_members); + } + + // pr != null => extended read accessor + if (read_accessor != null && read_accessor.pr != null) + { + ExtendedReadAccessorDesugaring(read_accessor, _simple_property, new_class_members); + } + + // pr != null => extended write accessor + if (write_accessor != null && write_accessor.pr != null) + { + ExtendedWriteAccessorDesugaring(write_accessor, _simple_property, new_class_members); + } + + if (new_class_members.Count > 0) + { + class_body.InsertBefore(property_class_members, new_class_members); + } + } + + private void AutoPropertyDesugaring(simple_property simple_property, + class_members members) + { + var id = NewId("#PField", simple_property.source_context); + var accessors = new property_accessors(); + accessors.write_accessor = new write_accessor_name(id, null, null, simple_property.source_context); + accessors.read_accessor = new read_accessor_name(id, null, null, simple_property.source_context); + simple_property.accessors = accessors; + + List l = new List() { id }; + var var_def_statement = new var_def_statement( + new ident_list(l, simple_property.source_context), + simple_property.property_type, + null, + definition_attribute.None, + false, + simple_property.source_context); + members.Add(var_def_statement); + } + + private void ExtendedReadAccessorDesugaring(read_accessor_name read_accessor, + simple_property simple_property, + class_members members) + { + var read_accessor_procedure = read_accessor.pr as procedure_definition; + var func_header = (read_accessor_procedure.proc_header as function_header); + func_header.return_type = simple_property.property_type; + + //extended indexed property + if (simple_property.parameter_list != null) + { + var func_header_params = new List(); + var func_header_types = new List(); + foreach (var param in simple_property.parameter_list.parameters) + { + foreach (var ident in param.names.idents) + { + func_header_params.Add(ident); + func_header_types.Add(param.type); + } + } + func_header.parameters = + SyntaxTreeBuilder.BuildFormalParameters( + func_header_params, + func_header_types); + } + + members.Add(read_accessor_procedure); + if (simple_property.attr == definition_attribute.Static) + { + read_accessor_procedure.proc_header.class_keyword = true; + var proc_attr = new procedure_attribute(proc_attribute.attr_static); + proc_attr.source_context = read_accessor_procedure.proc_header.source_context; + read_accessor_procedure.proc_header.proc_attributes = new procedure_attributes_list(proc_attr); + } + } + + private void ExtendedWriteAccessorDesugaring(write_accessor_name write_accessor, + simple_property simple_property, + class_members members) + { + var write_accessor_procedure = write_accessor.pr as procedure_definition; + + //extended indexed property + if (simple_property.parameter_list != null) + { + var proc_header_params = new List(); + var proc_header_types = new List(); + + foreach (var param in simple_property.parameter_list.parameters) + { + foreach (var ident in param.names.idents) + { + proc_header_params.Add(ident); + proc_header_types.Add(param.type); + } + } + proc_header_params.Add(new ident("value")); + proc_header_types.Add(simple_property.property_type); + + write_accessor_procedure.proc_header.parameters = + SyntaxTreeBuilder.BuildFormalParameters( + proc_header_params, + proc_header_types); + } + else + { + write_accessor_procedure.proc_header.parameters.params_list[0].vars_type = simple_property.property_type; + } + + members.Add(write_accessor_procedure); + if (simple_property.attr == definition_attribute.Static) + { + write_accessor_procedure.proc_header.class_keyword = true; + var proc_attr = new procedure_attribute(proc_attribute.attr_static); + proc_attr.source_context = write_accessor_procedure.proc_header.source_context; + write_accessor_procedure.proc_header.proc_attributes = new procedure_attributes_list(proc_attr); + } + } + + //random id generator + private int postfix = 0; + public ident NewId(string prefix, SourceContext sc = null) + { + postfix++; + return new ident(prefix + postfix.ToString(), sc); + } + + } +} diff --git a/SyntaxVisitors/SugarVisitors/TupleVisitor.cs b/SyntaxVisitors/SugarVisitors/TupleVisitor.cs index e9b15a0ea..31120ef49 100644 --- a/SyntaxVisitors/SugarVisitors/TupleVisitor.cs +++ b/SyntaxVisitors/SugarVisitors/TupleVisitor.cs @@ -18,7 +18,7 @@ namespace SyntaxVisitors.SugarVisitors public override void visit(read_accessor_name wn) { - + DefaultVisit(wn); } public override void visit(unnamed_type_object u) diff --git a/SyntaxVisitors/SyntaxVisitors.csproj b/SyntaxVisitors/SyntaxVisitors.csproj index 695908b45..43ffb85af 100644 --- a/SyntaxVisitors/SyntaxVisitors.csproj +++ b/SyntaxVisitors/SyntaxVisitors.csproj @@ -53,6 +53,7 @@ + diff --git a/TestSuite/autoproperty1.pas b/TestSuite/autoproperty1.pas new file mode 100644 index 000000000..aaf4f4489 --- /dev/null +++ b/TestSuite/autoproperty1.pas @@ -0,0 +1,16 @@ +type + TBaseClass = class + auto property p1: byte; + end; + + TClass = class(TBaseClass) + end; + +begin + var o: TBaseClass := new TClass; + var o1: TBaseClass := new TBaseClass; + o.p1 := 2; + o1.p1 := 3; + assert(o.p1 = 2); + assert(o1.p1 = 3); +end. diff --git a/TestSuite/autoproperty2.pas b/TestSuite/autoproperty2.pas new file mode 100644 index 000000000..a695ac467 --- /dev/null +++ b/TestSuite/autoproperty2.pas @@ -0,0 +1,19 @@ +type + TBaseClass = class + auto property p1: byte; + auto property p2: integer; + auto property p3: sequence of integer; + end; + + TClass = class(TBaseClass) + end; + +begin + var o: TBaseClass := new TClass; + o.p1 := 2; + o.p2 := 398; + o.p3 := Seq(1,2,3); + assert(o.p1 = 2); + assert(o.p2 = 398); + assert(o.p3.SequenceEqual(Seq(1,2,3))); +end. \ No newline at end of file diff --git a/TestSuite/autoproperty3.pas b/TestSuite/autoproperty3.pas new file mode 100644 index 000000000..ad77a6b1e --- /dev/null +++ b/TestSuite/autoproperty3.pas @@ -0,0 +1,22 @@ +type + TBaseClass = abstract class + auto property p1: byte; + end; + + TClass1 = class(TBaseClass) + auto property p2: integer; + end; + + TClass2 = class(TClass1) + auto property p3: sequence of integer; + end; + +begin + var o: TClass2 := new TClass2; + o.p1 := 2; + o.p2 := 398; + o.p3 := Seq(1, 2, 3); + assert(o.p1 = 2); + assert(o.p2 = 398); + assert(o.p3.SequenceEqual(Seq(1, 2, 3))); +end. \ No newline at end of file diff --git a/TestSuite/autoproperty4.pas b/TestSuite/autoproperty4.pas new file mode 100644 index 000000000..d608409e5 --- /dev/null +++ b/TestSuite/autoproperty4.pas @@ -0,0 +1,24 @@ +type + TClass0 = record + protected auto property p1: byte; + end; + + TClass1 = record + public auto property p2: integer; + end; + + TClass2 = record + public auto property p3: sequence of integer; + end; + +begin + var o1 := new TClass0(); + var o2 := new TClass1(); + var o3 := new TClass2(); + o1.p1 := 123; + o2.p2 := 398; + o3.p3 := Seq(1, 2, 3); + assert(o1.p1 = 123); + assert(o2.p2 = 398); + assert(o3.p3.SequenceEqual(Seq(1, 2, 3))); +end. \ No newline at end of file diff --git a/TestSuite/errors/err0259.exe b/TestSuite/errors/err0259.exe new file mode 100644 index 000000000..e69de29bb diff --git a/TestSuite/extendedindexedproperty1.pas b/TestSuite/extendedindexedproperty1.pas new file mode 100644 index 000000000..e9e517653 --- /dev/null +++ b/TestSuite/extendedindexedproperty1.pas @@ -0,0 +1,16 @@ +type + TExample = class + private a := new integer[10,10]; + + property p[i, j: integer]: integer read a[i, j] write begin a[i,j] := value; end; + end; + +begin + var c := new TExample(); + c.p[3,2] := 10; + c.p[0,0] := -2; + assert(c.p[3,2] = 10); + assert(c.p[0,0] = -2); + assert(c.p[1,3] = 0); + assert(c.p[9,9] = 0); +end. \ No newline at end of file diff --git a/TestSuite/extendedindexedproperty2.pas b/TestSuite/extendedindexedproperty2.pas new file mode 100644 index 000000000..e3b43eed9 --- /dev/null +++ b/TestSuite/extendedindexedproperty2.pas @@ -0,0 +1,17 @@ +type + TExample = record + private a := new integer[10,10]; + + property p[i, j: integer]: integer read a[i, j] write begin a[i,j] := value; end; + end; + +begin + var c := new TExample(); + for var i:=0 to 9 do + for var j:=0 to 9 do + c.p[j, i] := i+j*j; + + for var i:=0 to 9 do + for var j:=0 to 9 do + assert(c.p[j, i] = i+j*j); +end. \ No newline at end of file diff --git a/TestSuite/extendedindexedproperty3.pas b/TestSuite/extendedindexedproperty3.pas new file mode 100644 index 000000000..0ca55131b --- /dev/null +++ b/TestSuite/extendedindexedproperty3.pas @@ -0,0 +1,26 @@ +type + TBase = abstract class + protected a := new integer[10,10,10]; + end; + + TExample = class(TBase) + public property p[i, j: integer; k: integer]: integer + read a[i, j, k] write begin a[i,j,value] := k*k+i+j; end; + end; + +begin + var c := new TExample(); + var k := 5; + for var i:=0 to 9 do + for var j:=0 to 9 do + c.p[i, j, k] := 0; + + for var i:=0 to 9 do + for var j:=0 to 9 do + assert(c.p[i, j, 0] = 25 + i + j); + + for var i:=0 to 9 do + for var j:=0 to 9 do + for var d:=1 to 9 do + assert(c.p[i, j, d] = 0); +end. \ No newline at end of file diff --git a/TestSuite/formatter_tests/input/autoproperty1.pas b/TestSuite/formatter_tests/input/autoproperty1.pas new file mode 100644 index 000000000..fca6fd1be --- /dev/null +++ b/TestSuite/formatter_tests/input/autoproperty1.pas @@ -0,0 +1,14 @@ +type +TBaseClass = class +auto property p1: byte; +end; +TClass = class(TBaseClass) +end; +begin +var o: TBaseClass := new TClass; +var o1: TBaseClass := new TBaseClass; +o.p1 := 2; +o1.p1 := 3; +assert(o.p1 = 2); +assert(o1.p1 = 3); +end. diff --git a/TestSuite/formatter_tests/input/extendedindexedproperty3.pas b/TestSuite/formatter_tests/input/extendedindexedproperty3.pas new file mode 100644 index 000000000..8c33c1670 --- /dev/null +++ b/TestSuite/formatter_tests/input/extendedindexedproperty3.pas @@ -0,0 +1,24 @@ +type +TBase = abstract class +protected a := new integer[10,10,10]; +end; +TExample = class(TBase) +public property p[i, j: integer; k: integer]: integer +read a[i, j, k] write begin a[i,j,value] := k*k+i+j; end; +end; + +begin +var c := new TExample(); +var k := 5; +for var i:=0 to 9 do +for var j:=0 to 9 do +c.p[i, j, k] := 0; + +for var i:=0 to 9 do +for var j:=0 to 9 do +assert(c.p[i, j, 0] = 25 + i + j); +for var i:=0 to 9 do +for var j:=0 to 9 do +for var d:=1 to 9 do +assert(c.p[i, j, d] = 0); +end. \ No newline at end of file diff --git a/TestSuite/formatter_tests/should/autoproperty1.pas b/TestSuite/formatter_tests/should/autoproperty1.pas new file mode 100644 index 000000000..43d482f22 --- /dev/null +++ b/TestSuite/formatter_tests/should/autoproperty1.pas @@ -0,0 +1,15 @@ +type + TBaseClass = class + auto property p1: byte; + end; + TClass = class(TBaseClass) + end; + +begin + var o: TBaseClass := new TClass; + var o1: TBaseClass := new TBaseClass; + o.p1 := 2; + o1.p1 := 3; + assert(o.p1 = 2); + assert(o1.p1 = 3); +end. diff --git a/TestSuite/formatter_tests/should/extendedindexedproperty3.pas b/TestSuite/formatter_tests/should/extendedindexedproperty3.pas new file mode 100644 index 000000000..3eb6c7f6e --- /dev/null +++ b/TestSuite/formatter_tests/should/extendedindexedproperty3.pas @@ -0,0 +1,24 @@ +type + TBase = abstract class + protected a := new integer[10, 10, 10]; + end; + TExample = class(TBase) + public property p[i, j: integer; k: integer]: integer + read a[i, j, k] write begin a[i, j, value] := k * k + i + j; end; + end; + +begin + var c := new TExample(); + var k := 5; + for var i := 0 to 9 do + for var j := 0 to 9 do + c.p[i, j, k] := 0; + + for var i := 0 to 9 do + for var j := 0 to 9 do + assert(c.p[i, j, 0] = 25 + i + j); + for var i := 0 to 9 do + for var j := 0 to 9 do + for var d := 1 to 9 do + assert(c.p[i, j, d] = 0); +end. \ No newline at end of file diff --git a/_BuildDebug.bat b/_BuildDebug.bat index 00ce611f6..df0223c2a 100644 --- a/_BuildDebug.bat +++ b/_BuildDebug.bat @@ -1,5 +1,7 @@ if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" ( "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" PascalABCNET.sln +) else if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" ( +"%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" PascalABCNET.sln ) else ( "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" PascalABCNET.sln ) diff --git a/_Clean.bat b/_Clean.bat index 1aa5198a9..d5c92805c 100644 --- a/_Clean.bat +++ b/_Clean.bat @@ -1,5 +1,7 @@ if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" ( "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" /t:clean PascalABCNET.sln +) else if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" ( +"%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" /t:clean PascalABCNET.sln ) else ( "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" /t:clean PascalABCNET.sln ) diff --git a/_ReBuildDebug.bat b/_ReBuildDebug.bat index 198176964..5c914d53c 100644 --- a/_ReBuildDebug.bat +++ b/_ReBuildDebug.bat @@ -1,5 +1,7 @@ if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" ( "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" /t:rebuild PascalABCNET.sln +) else if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" ( +"%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" /t:rebuild PascalABCNET.sln ) else ( "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" /t:rebuild PascalABCNET.sln ) diff --git a/_RebuildReleaseAndRunTests.bat b/_RebuildReleaseAndRunTests.bat index 24e33ade6..864f87d31 100644 --- a/_RebuildReleaseAndRunTests.bat +++ b/_RebuildReleaseAndRunTests.bat @@ -1,5 +1,7 @@ if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" ( "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\msbuild.exe" /t:rebuild /property:Configuration=Release /p:Platform="Any CPU" PascalABCNET.sln +) else if exist "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" ( +"%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Professional\MSBuild\15.0\Bin\msbuild.exe" /t:rebuild /property:Configuration=Release /p:Platform="Any CPU" PascalABCNET.sln ) else ( "%ProgramFiles(x86)%\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" /t:rebuild /property:Configuration=Release /p:Platform="Any CPU" PascalABCNET.sln )