From 8cca068f014656f7dc4ee437957592a90a62b7b0 Mon Sep 17 00:00:00 2001 From: Sun Serega Date: Thu, 9 May 2024 12:06:15 +0200 Subject: [PATCH 01/13] fix #3116 --- Compiler/Compiler.cs | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Compiler/Compiler.cs b/Compiler/Compiler.cs index a57adaa53..197efbc2d 100644 --- a/Compiler/Compiler.cs +++ b/Compiler/Compiler.cs @@ -2739,16 +2739,19 @@ namespace PascalABCCompiler if (!PCUFileNamesDictionary.TryGetValue(cacheKey, out var fileNameWithPriority)) { - if (FindFileWithExtensionInDirs(fileName, out _, currentPath) is string resultFileName1) + if (Path.GetExtension(fileName) != CompilerOptions.CompiledUnitExtension) + fileNameWithPriority = null; + + else if (FindFileWithExtensionInDirs(fileName, out _, currentPath) is string resultFileName1) fileNameWithPriority = Tuple.Create(resultFileName1, 1); - else if (FindFileWithExtensionInDirs(Path.GetFileName(fileName), out _, CompilerOptions.OutputDirectory) is string resultFileName2) + else if (CompilerOptions.OutputDirectory != project.Path && FindFileWithExtensionInDirs(Path.GetFileName(fileName), out _, CompilerOptions.OutputDirectory) is string resultFileName2) fileNameWithPriority = Tuple.Create(resultFileName2, 2); else if (FindFileWithExtensionInDirs(fileName, out var dirIndex, CompilerOptions.SearchDirectories.ToArray()) is string resultFileName3) fileNameWithPriority = Tuple.Create(resultFileName3, 3 + dirIndex); else fileNameWithPriority = null; - PCUFileNamesDictionary[cacheKey] = fileNameWithPriority; + PCUFileNamesDictionary[cacheKey] = fileNameWithPriority; } folderPriority = fileNameWithPriority?.Item2 ?? 0; @@ -2760,8 +2763,9 @@ namespace PascalABCCompiler var cacheKey = Tuple.Create(fileName.ToLower(), currentPath?.ToLower()); if (!SourceFileNamesDictionary.TryGetValue(cacheKey, out var fileNameWithPriority)) - { - if (FindSourceFileNameInDirs(fileName, out _, currentPath) is string resultFileName1) + { + + if (FindSourceFileNameInDirs(fileName, out _, currentPath) is string resultFileName1) fileNameWithPriority = Tuple.Create(resultFileName1, 1); else if (FindSourceFileNameInDirs(fileName, out var dirIndex, CompilerOptions.SearchDirectories.ToArray()) is string resultFileName2) fileNameWithPriority = Tuple.Create(resultFileName2, 3 + dirIndex); From 71266a7b92409d39516c4412a99ab2d34f8a9b08 Mon Sep 17 00:00:00 2001 From: Sun Serega Date: Thu, 9 May 2024 12:12:02 +0200 Subject: [PATCH 02/13] (the rest of the fix) --- Compiler/Compiler.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Compiler/Compiler.cs b/Compiler/Compiler.cs index 197efbc2d..bcabbb7cb 100644 --- a/Compiler/Compiler.cs +++ b/Compiler/Compiler.cs @@ -2744,7 +2744,7 @@ namespace PascalABCCompiler else if (FindFileWithExtensionInDirs(fileName, out _, currentPath) is string resultFileName1) fileNameWithPriority = Tuple.Create(resultFileName1, 1); - else if (CompilerOptions.OutputDirectory != project.Path && FindFileWithExtensionInDirs(Path.GetFileName(fileName), out _, CompilerOptions.OutputDirectory) is string resultFileName2) + else if (CompilerOptions.OutputDirectory != CompilerOptions.SourceFileDirectory && FindFileWithExtensionInDirs(Path.GetFileName(fileName), out _, CompilerOptions.OutputDirectory) is string resultFileName2) fileNameWithPriority = Tuple.Create(resultFileName2, 2); else if (FindFileWithExtensionInDirs(fileName, out var dirIndex, CompilerOptions.SearchDirectories.ToArray()) is string resultFileName3) fileNameWithPriority = Tuple.Create(resultFileName3, 3 + dirIndex); From 9f8f982cc20e39fb3cf46449602d90a71972c4af Mon Sep 17 00:00:00 2001 From: AlexanderZemlyak <92867056+AlexanderZemlyak@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:06:34 +0300 Subject: [PATCH 03/13] Delete xml documentation of standard modules (#3140) --- TreeConverter/TreeConversion/syntax_tree_visitor.cs | 7 +++++-- bin/Lib/ABCObjects.pas | 1 - bin/Lib/ABCObjects.xml | 5 ----- bin/Lib/CRT.pas | 1 - bin/Lib/CRT.xml | 5 ----- bin/Lib/GraphABC.pas | 1 - bin/Lib/GraphABC.xml | 5 ----- bin/Lib/PABCSystem.pas | 2 -- bin/Lib/PABCSystem.xml | 5 ----- 9 files changed, 5 insertions(+), 27 deletions(-) delete mode 100644 bin/Lib/ABCObjects.xml delete mode 100644 bin/Lib/CRT.xml delete mode 100644 bin/Lib/GraphABC.xml delete mode 100644 bin/Lib/PABCSystem.xml diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 3c516006a..61a06225f 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -111,6 +111,8 @@ namespace PascalABCCompiler.TreeConverter { //convertion_data_and_alghoritms.__i = 0; Initialize(initializationData); + + this.docs = initializationData.docs; //comp_units=UsedUnits; //visit(SyntaxUnit //SyntaxTreeToSemanticTreeConverter.interface_using_list = namespaces; @@ -122,6 +124,9 @@ namespace PascalABCCompiler.TreeConverter { Initialize(initializationData); + if (this.docs != null) + this.docs = initializationData.docs; + using_list.AddRange(initializationData.interfaceNamespaces); interface_using_list.AddRange(initializationData.interfaceNamespaces); using_list.AddRange(initializationData.implementationNamespaces); @@ -150,8 +155,6 @@ namespace PascalABCCompiler.TreeConverter SymbolTable.CaseSensitive = SemanticRulesConstants.SymbolTableCaseSensitive; - if (docs != null) - this.docs = initializationData.docs; this.debug = initializationData.debug; this.debugging = initializationData.debugging; this.for_intellisense = initializationData.forIntellisense; diff --git a/bin/Lib/ABCObjects.pas b/bin/Lib/ABCObjects.pas index ef2d4971a..708b732b5 100644 --- a/bin/Lib/ABCObjects.pas +++ b/bin/Lib/ABCObjects.pas @@ -10,7 +10,6 @@ unit ABCObjects; //{$apptype windows} {$reference '%GAC%\System.Windows.Forms.dll'} {$reference '%GAC%\System.Drawing.dll'} -{$gendoc true} interface diff --git a/bin/Lib/ABCObjects.xml b/bin/Lib/ABCObjects.xml deleted file mode 100644 index 90226e328..000000000 --- a/bin/Lib/ABCObjects.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/bin/Lib/CRT.pas b/bin/Lib/CRT.pas index e934f1d11..d2c161d6d 100644 --- a/bin/Lib/CRT.pas +++ b/bin/Lib/CRT.pas @@ -7,7 +7,6 @@ unit CRT; {$apptype console} -{$gendoc true} interface diff --git a/bin/Lib/CRT.xml b/bin/Lib/CRT.xml deleted file mode 100644 index 56c7dbfac..000000000 --- a/bin/Lib/CRT.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/bin/Lib/GraphABC.pas b/bin/Lib/GraphABC.pas index 970f5802e..5dbbe0e22 100644 --- a/bin/Lib/GraphABC.pas +++ b/bin/Lib/GraphABC.pas @@ -8,7 +8,6 @@ unit GraphABC; {$apptype windows} {$reference '%GAC%\System.Windows.Forms.dll'} {$reference '%GAC%\System.Drawing.dll'} -{$gendoc true} interface diff --git a/bin/Lib/GraphABC.xml b/bin/Lib/GraphABC.xml deleted file mode 100644 index 254fd01fe..000000000 --- a/bin/Lib/GraphABC.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/bin/Lib/PABCSystem.pas b/bin/Lib/PABCSystem.pas index fbdee0e67..9b503384c 100644 --- a/bin/Lib/PABCSystem.pas +++ b/bin/Lib/PABCSystem.pas @@ -7,8 +7,6 @@ unit PABCSystem; {$zerobasedstrings off} -{$gendoc true} - // Default Application type {$apptype console} diff --git a/bin/Lib/PABCSystem.xml b/bin/Lib/PABCSystem.xml deleted file mode 100644 index 09c905ca8..000000000 --- a/bin/Lib/PABCSystem.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file From acab4c7c016a3391ce7ca254cfe23e5cb2fdcc83 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 9 Jun 2024 10:50:26 +0200 Subject: [PATCH 04/13] #3091 --- TestSuite/errors/err0538.pas | 8 ++++++++ TreeConverter/TreeConversion/syntax_tree_visitor.cs | 2 ++ 2 files changed, 10 insertions(+) create mode 100644 TestSuite/errors/err0538.pas diff --git a/TestSuite/errors/err0538.pas b/TestSuite/errors/err0538.pas new file mode 100644 index 000000000..a0f78db91 --- /dev/null +++ b/TestSuite/errors/err0538.pas @@ -0,0 +1,8 @@ +//!Повторно объявленный идентификатор name +type + name = (name); + +begin + // Ожидался тип + var v1: name; +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 61a06225f..69f142444 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -12211,6 +12211,8 @@ namespace PascalABCCompiler.TreeConverter context.check_name_free(name, loc); is_direct_type_decl = true; type_node tn = convert_strong(_type_declaration.type_def); + if (_type_declaration.type_def is enum_type_definition) + context.check_name_free(name, loc); assign_doc_info(tn,_type_declaration); is_direct_type_decl = false; if (_type_declaration.type_def is SyntaxTree.named_type_reference|| From dbf22ca9e8d1f4caa8970f726206f767845758aa Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 9 Jun 2024 12:03:39 +0200 Subject: [PATCH 05/13] #3125 --- .../RenameSameBlockLocalVarsVisitor.cs | 2 +- TestSuite/yield8.pas | 17 +++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) create mode 100644 TestSuite/yield8.pas diff --git a/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs b/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs index b0777dd3b..9eae9e30b 100644 --- a/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs +++ b/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs @@ -129,7 +129,7 @@ namespace SyntaxVisitors Replace(var_def, newVS); listNodes[listNodes.Count - 1] = newVS; //SSM 8.11.18 - ProcessNode(newVS.inital_value); // SSM 10.06.2020 #2103 + //ProcessNode(newVS.inital_value); // SSM 10.06.2020 #2103 //base.visit(newVS); // SSM 10.06.2020 - зачем обходить всё? } diff --git a/TestSuite/yield8.pas b/TestSuite/yield8.pas new file mode 100644 index 000000000..dcd744296 --- /dev/null +++ b/TestSuite/yield8.pas @@ -0,0 +1,17 @@ +function V(n: byte) := 1; + +function f1: sequence of integer; +begin + //Ошибка: Ожидалось имя процедуры или функции + var v := V(0); + + // Если закомментировать эту строчку - предыдущая строчка работает + yield v; +end; + +begin + var i := 0; + foreach var j in f1 do + i := j; + assert(i = 1); +end. \ No newline at end of file From b844e02ff53c29675236273d6b676cfa78fe1c83 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 9 Jun 2024 12:10:43 +0200 Subject: [PATCH 06/13] revert #3125 --- .../YieldVisitors/RenameSameBlockLocalVarsVisitor.cs | 2 +- TestSuite/yield8.pas | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs b/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs index 9eae9e30b..b0777dd3b 100644 --- a/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs +++ b/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs @@ -129,7 +129,7 @@ namespace SyntaxVisitors Replace(var_def, newVS); listNodes[listNodes.Count - 1] = newVS; //SSM 8.11.18 - //ProcessNode(newVS.inital_value); // SSM 10.06.2020 #2103 + ProcessNode(newVS.inital_value); // SSM 10.06.2020 #2103 //base.visit(newVS); // SSM 10.06.2020 - зачем обходить всё? } diff --git a/TestSuite/yield8.pas b/TestSuite/yield8.pas index dcd744296..ef3c78fac 100644 --- a/TestSuite/yield8.pas +++ b/TestSuite/yield8.pas @@ -3,8 +3,7 @@ function f1: sequence of integer; begin //Ошибка: Ожидалось имя процедуры или функции - var v := V(0); - + var v := 1;//V(0); // Если закомментировать эту строчку - предыдущая строчка работает yield v; end; From e5f60689cd7bf53ee228606a9eeec7cb492789ad Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 9 Jun 2024 12:30:20 +0200 Subject: [PATCH 07/13] #3125 --- .../RenameSameBlockLocalVarsVisitor.cs | 7 ++++++- TestSuite/yield8.pas | 15 ++++++++++++++- 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs b/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs index b0777dd3b..f051721f1 100644 --- a/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs +++ b/SyntaxVisitors/YieldVisitors/RenameSameBlockLocalVarsVisitor.cs @@ -113,13 +113,16 @@ namespace SyntaxVisitors return; } + var newNameCache = new Dictionary(); + var newLocalNames = var_def.vars.idents.Select(id => { var low = id.name.ToLower(); var newName = this.CreateNewVariableName(low); //BlockNamesStack[CurrentLevel].Add(low, newName); - BlockNamesStack[CurrentLevel][low] = newName; + //BlockNamesStack[CurrentLevel][low] = newName; + newNameCache[low] = newName; return new ident(newName, id.source_context); }); @@ -130,6 +133,8 @@ namespace SyntaxVisitors Replace(var_def, newVS); listNodes[listNodes.Count - 1] = newVS; //SSM 8.11.18 ProcessNode(newVS.inital_value); // SSM 10.06.2020 #2103 + foreach (var key in newNameCache.Keys) + BlockNamesStack[CurrentLevel][key] = newNameCache[key]; //base.visit(newVS); // SSM 10.06.2020 - зачем обходить всё? } diff --git a/TestSuite/yield8.pas b/TestSuite/yield8.pas index ef3c78fac..d58afdcbb 100644 --- a/TestSuite/yield8.pas +++ b/TestSuite/yield8.pas @@ -3,14 +3,27 @@ function f1: sequence of integer; begin //Ошибка: Ожидалось имя процедуры или функции - var v := 1;//V(0); + var v := V(0); // Если закомментировать эту строчку - предыдущая строчка работает yield v; end; +function f2: sequence of integer; +begin + //Ошибка: Ожидалось имя процедуры или функции + var v := V(0); + var w := v + 1; + // Если закомментировать эту строчку - предыдущая строчка работает + yield w; +end; + begin var i := 0; foreach var j in f1 do i := j; assert(i = 1); + + foreach var j in f2 do + i := j; + assert(i = 2); end. \ No newline at end of file From 8bddc9e62a092b82bc236c6e93269d5f7890afe2 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 9 Jun 2024 19:35:35 +0200 Subject: [PATCH 08/13] #3123 --- NETGenerator/NETGenerator.cs | 14 ++++++++++---- TestSuite/errors/err0539.pas | 11 +++++++++++ TestSuite/recinit3.pas | 11 +++++++++++ .../TreeConversion/syntax_tree_visitor.cs | 5 +++-- 4 files changed, 35 insertions(+), 6 deletions(-) create mode 100644 TestSuite/errors/err0539.pas create mode 100644 TestSuite/recinit3.pas diff --git a/NETGenerator/NETGenerator.cs b/NETGenerator/NETGenerator.cs index 3de9348f9..2cac39046 100644 --- a/NETGenerator/NETGenerator.cs +++ b/NETGenerator/NETGenerator.cs @@ -4707,9 +4707,12 @@ namespace PascalABCCompiler.NETGenerator { ICommonTypeNode ctn = init_value.type as ICommonTypeNode; IExpressionNode[] FieldValues = init_value.FieldValues; - ICommonClassFieldNode[] Fields = ctn.fields; + List Fields = new List(); + foreach (var field in ctn.fields) + if (field.polymorphic_state != polymorphic_state.ps_static) + Fields.Add(field); - for (int i = 0; i < Fields.Length; i++) + for (int i = 0; i < Fields.Count; i++) { FldInfo field = helper.GetField(Fields[i]); if (FieldValues[i] is IArrayInitializer) @@ -4750,9 +4753,12 @@ namespace PascalABCCompiler.NETGenerator { ICommonTypeNode ctn = init_value.type as ICommonTypeNode; IConstantNode[] FieldValues = init_value.FieldValues; - ICommonClassFieldNode[] Fields = ctn.fields; + List Fields = new List(); + foreach (var field in ctn.fields) + if (field.polymorphic_state != polymorphic_state.ps_static) + Fields.Add(field); - for (int i = 0; i < Fields.Length; i++) + for (int i = 0; i < Fields.Count; i++) { FldInfo field = helper.GetField(Fields[i]); if (FieldValues[i] is IArrayConstantNode) diff --git a/TestSuite/errors/err0539.pas b/TestSuite/errors/err0539.pas new file mode 100644 index 000000000..e0e25e2b0 --- /dev/null +++ b/TestSuite/errors/err0539.pas @@ -0,0 +1,11 @@ +//!Количество полей не совпадает с количеством полей в записи +type + r1 = record + a: byte; + static b: word; + end; + +begin + // Работает, но не должно + var a: r1 := (a: 1; b: 2); +end. \ No newline at end of file diff --git a/TestSuite/recinit3.pas b/TestSuite/recinit3.pas new file mode 100644 index 000000000..956111e24 --- /dev/null +++ b/TestSuite/recinit3.pas @@ -0,0 +1,11 @@ +type + r1 = record + a: byte; + static b: word; + end; + +begin + //Ошибка: Количество полей не совпадает с количеством полей в записи + var a: r1 := (a: 1); + assert(a.a = 1); +end. \ No newline at end of file diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 69f142444..162e1e9cd 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -15597,13 +15597,14 @@ namespace PascalABCCompiler.TreeConverter private record_initializer ConvertRecordInitializer(common_type_node ctn, record_initializer constant) { location loc = constant.location; + var non_static_fields = ctn.fields.TakeWhile(x => !x.IsStatic).ToArray(); if (!ctn.is_value_type) AddError(loc, "RECORD_CONST_NOT_ALLOWED_{0}", ctn.name); - if (ctn.fields.Count != constant.record_const_definition_list.Count) + if (non_static_fields.Length != constant.record_const_definition_list.Count) AddError(loc, "INVALID_RECORD_CONST_FIELD_COUNT"); constant.type = ctn; constant.field_values.Clear(); - for (int i = 0; i < ctn.fields.Count; i++) + for (int i = 0; i < non_static_fields.Length; i++) { class_field cf = ctn.fields[i]; if (cf.name.ToLower() != constant.record_const_definition_list[i].name.name.ToLower()) From 502f74467aded7d77af7a297101d1cd1d9149992 Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Sun, 9 Jun 2024 21:30:02 +0200 Subject: [PATCH 09/13] #3123 --- TreeConverter/TreeConversion/syntax_tree_visitor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/TreeConverter/TreeConversion/syntax_tree_visitor.cs b/TreeConverter/TreeConversion/syntax_tree_visitor.cs index 162e1e9cd..e0d4d0612 100644 --- a/TreeConverter/TreeConversion/syntax_tree_visitor.cs +++ b/TreeConverter/TreeConversion/syntax_tree_visitor.cs @@ -15597,7 +15597,7 @@ namespace PascalABCCompiler.TreeConverter private record_initializer ConvertRecordInitializer(common_type_node ctn, record_initializer constant) { location loc = constant.location; - var non_static_fields = ctn.fields.TakeWhile(x => !x.IsStatic).ToArray(); + var non_static_fields = ctn.fields.Where(x => !x.IsStatic).ToArray(); if (!ctn.is_value_type) AddError(loc, "RECORD_CONST_NOT_ALLOWED_{0}", ctn.name); if (non_static_fields.Length != constant.record_const_definition_list.Count) From 9cb14c8dd123fda3962b59c1e1c832b87c4cfdea Mon Sep 17 00:00:00 2001 From: Ivan Bondarev Date: Mon, 10 Jun 2024 20:59:03 +0200 Subject: [PATCH 10/13] #3127 --- Compiler/Compiler.cs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Compiler/Compiler.cs b/Compiler/Compiler.cs index 54331365f..3c97424ae 100644 --- a/Compiler/Compiler.cs +++ b/Compiler/Compiler.cs @@ -3366,8 +3366,18 @@ namespace PascalABCCompiler // It's not always possible to solve by re-ordering the references, since there are cases of // mutually-dependent assemblies (i.e. dependency loops) in the wild. foreach (var reference in referenceDirectives) - PreloadReference(reference); - + { + try + { + PreloadReference(reference); + } + catch (FileLoadException ex) + { + throw new CommonCompilerError(ex.Message, compilationUnit.SyntaxTree.file_name, reference.location.begin_line_num, reference.location.end_line_num); + } + } + + foreach (var reference in referenceDirectives) CompileReference(dlls, reference); From 41177e7bcd62a24ba4bd5cd1d7ea3cf05c7da215 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Sat, 15 Jun 2024 19:25:19 +0300 Subject: [PATCH 11/13] del doc --- Localization/DefaultLang.resources | Bin 101866 -> 102073 bytes TestSuite/CompilationSamples/ABCObjects.pas | 1 - TestSuite/CompilationSamples/CRT.pas | 1 - TestSuite/CompilationSamples/GraphABC.pas | 1 - TestSuite/CompilationSamples/PABCSystem.pas | 2 -- 5 files changed, 5 deletions(-) diff --git a/Localization/DefaultLang.resources b/Localization/DefaultLang.resources index 13b78889db13e579af4d88eeb3c0fbf10de205f5..f65cae7905c3a80c1de480ae1affb7e3b271977f 100644 GIT binary patch delta 218 zcmaDgn{DS@wh0dyuWo!;>}Qvno>^RyTI86Q;+&sXQk0()kW-qTnWvYMSi;Mt8W7~_ z<{6=C%gd#&9|TpZkeHXE098CWkWr#O$kp95IK(w5-qFt`-r3(TB*@<q!lU2s-@ShO j^sNFfmz#f(FQy5+Twn*4=9OgTrZz|UZ;$e4oL~n4!`)#) delta 23 fcmdlvm+jSTwh0dy*)~2b_G?xS*sdJFIL!_Kf9VOQ diff --git a/TestSuite/CompilationSamples/ABCObjects.pas b/TestSuite/CompilationSamples/ABCObjects.pas index ef2d4971a..708b732b5 100644 --- a/TestSuite/CompilationSamples/ABCObjects.pas +++ b/TestSuite/CompilationSamples/ABCObjects.pas @@ -10,7 +10,6 @@ unit ABCObjects; //{$apptype windows} {$reference '%GAC%\System.Windows.Forms.dll'} {$reference '%GAC%\System.Drawing.dll'} -{$gendoc true} interface diff --git a/TestSuite/CompilationSamples/CRT.pas b/TestSuite/CompilationSamples/CRT.pas index e934f1d11..d2c161d6d 100644 --- a/TestSuite/CompilationSamples/CRT.pas +++ b/TestSuite/CompilationSamples/CRT.pas @@ -7,7 +7,6 @@ unit CRT; {$apptype console} -{$gendoc true} interface diff --git a/TestSuite/CompilationSamples/GraphABC.pas b/TestSuite/CompilationSamples/GraphABC.pas index 970f5802e..5dbbe0e22 100644 --- a/TestSuite/CompilationSamples/GraphABC.pas +++ b/TestSuite/CompilationSamples/GraphABC.pas @@ -8,7 +8,6 @@ unit GraphABC; {$apptype windows} {$reference '%GAC%\System.Windows.Forms.dll'} {$reference '%GAC%\System.Drawing.dll'} -{$gendoc true} interface diff --git a/TestSuite/CompilationSamples/PABCSystem.pas b/TestSuite/CompilationSamples/PABCSystem.pas index fbdee0e67..9b503384c 100644 --- a/TestSuite/CompilationSamples/PABCSystem.pas +++ b/TestSuite/CompilationSamples/PABCSystem.pas @@ -7,8 +7,6 @@ unit PABCSystem; {$zerobasedstrings off} -{$gendoc true} - // Default Application type {$apptype console} From a5ec24d9a0b3c7b21dbe7018e86df15a80ffd9f7 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Sat, 15 Jun 2024 19:26:46 +0300 Subject: [PATCH 12/13] =?UTF-8?q?await=20=D0=BF=D0=B5=D1=80=D0=B5=D0=BC?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=B8=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Languages/Pascal/PascalABCParserNewSaushkin/ABCPascal.y | 6 ++++-- Languages/Pascal/PascalABCParserNewSaushkin/PABC.ymc | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascal.y b/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascal.y index ebc8d14d3..3f4cf26a9 100644 --- a/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascal.y +++ b/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascal.y @@ -2761,6 +2761,8 @@ unlabelled_stmt { $$ = $1; } | proc_call { $$ = $1; } + | tkAwait expr_l1 + { $$ = new await_node_statement(new await_node($2,@$),@$); } | goto_stmt { $$ = $1; } | compound_stmt @@ -3373,8 +3375,6 @@ expr_l1_for_lambda expr_dq : relop_expr { $$ = $1; } - | tkAwait relop_expr - { $$ = $2; } | expr_dq tkDoubleQuestion relop_expr { $$ = new double_question_node($1 as expression, $3 as expression, @$);} ; @@ -4158,6 +4158,8 @@ factor $$ = new nil_const(); $$.source_context = @$; } + | tkAwait factor + { $$ = new await_node($2 as expression, @$); } | literal_or_number { $$ = $1; } | default_expr diff --git a/Languages/Pascal/PascalABCParserNewSaushkin/PABC.ymc b/Languages/Pascal/PascalABCParserNewSaushkin/PABC.ymc index b5d315699..73c49eec8 100644 --- a/Languages/Pascal/PascalABCParserNewSaushkin/PABC.ymc +++ b/Languages/Pascal/PascalABCParserNewSaushkin/PABC.ymc @@ -378,6 +378,8 @@ script= + + From e0e7924134b557dd5a5b9d7e25ffa0ab33c2cb84 Mon Sep 17 00:00:00 2001 From: Mikhalkovich Stanislav Date: Sat, 15 Jun 2024 19:27:27 +0300 Subject: [PATCH 13/13] =?UTF-8?q?=D0=9F=D0=B5=D1=80=D0=B5=D0=B3=D0=B5?= =?UTF-8?q?=D0=BD=D0=B5=D1=80=D0=B8=D1=80=D0=BE=D0=B2=D0=B0=D0=BB=20=D0=B3?= =?UTF-8?q?=D1=80=D0=B0=D0=BC=D0=BC=D0=B0=D1=82=D0=B8=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PascalABCParserNewSaushkin/ABCPascal.cs | 6 +- .../ABCPascalYacc.cs | 4828 +++++++++-------- 2 files changed, 2420 insertions(+), 2414 deletions(-) diff --git a/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascal.cs b/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascal.cs index 5f1bb305c..b6e5a58bc 100644 --- a/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascal.cs +++ b/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascal.cs @@ -1,9 +1,9 @@ // // This CSharp output file generated by Gardens Point LEX // Version: 1.1.3.301 -// Machine: DESKTOP-V3E9T2U -// DateTime: 25.05.2024 22:13:44 -// UserName: alex +// Machine: DESKTOP-G8V08V4 +// DateTime: 15.06.2024 19:27:08 +// UserName: ????????? // GPLEX input file // GPLEX frame file // diff --git a/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascalYacc.cs b/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascalYacc.cs index 43dd19986..1ff4498ad 100644 --- a/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascalYacc.cs +++ b/Languages/Pascal/PascalABCParserNewSaushkin/ABCPascalYacc.cs @@ -1,9 +1,9 @@ // (see accompanying GPPGcopyright.rtf) // GPPG version 1.3.6 -// Machine: DESKTOP-V3E9T2U -// DateTime: 25.05.2024 22:13:45 -// UserName: alex +// Machine: DESKTOP-G8V08V4 +// DateTime: 15.06.2024 19:27:09 +// UserName: ????????? // Input file // options: no-lines gplex @@ -72,8 +72,8 @@ public partial class GPPGParser: ShiftReduceParser aliasses; #pragma warning restore 649 - private static Rule[] rules = new Rule[1028]; - private static State[] states = new State[1704]; + private static Rule[] rules = new Rule[1029]; + private static State[] states = new State[1706]; 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", @@ -170,13 +170,13 @@ public partial class GPPGParser: ShiftReduceParser proc_call { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 496: // unlabelled_stmt -> goto_stmt + case 496: // unlabelled_stmt -> tkAwait, expr_l1 +{ CurrentSemanticValue.stn = new await_node_statement(new await_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan),CurrentLocationSpan); } + break; + case 497: // unlabelled_stmt -> goto_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 497: // unlabelled_stmt -> compound_stmt + case 498: // unlabelled_stmt -> compound_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 498: // unlabelled_stmt -> if_stmt + case 499: // unlabelled_stmt -> if_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 499: // unlabelled_stmt -> case_stmt + case 500: // unlabelled_stmt -> case_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 500: // unlabelled_stmt -> repeat_stmt + case 501: // unlabelled_stmt -> repeat_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 501: // unlabelled_stmt -> while_stmt + case 502: // unlabelled_stmt -> while_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 502: // unlabelled_stmt -> for_stmt + case 503: // unlabelled_stmt -> for_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 503: // unlabelled_stmt -> with_stmt + case 504: // unlabelled_stmt -> with_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 504: // unlabelled_stmt -> inherited_message + case 505: // unlabelled_stmt -> inherited_message { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 505: // unlabelled_stmt -> try_stmt + case 506: // unlabelled_stmt -> try_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 506: // unlabelled_stmt -> raise_stmt + case 507: // unlabelled_stmt -> raise_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 507: // unlabelled_stmt -> foreach_stmt + case 508: // unlabelled_stmt -> foreach_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 508: // unlabelled_stmt -> var_stmt + case 509: // unlabelled_stmt -> var_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 509: // unlabelled_stmt -> expr_as_stmt + case 510: // unlabelled_stmt -> expr_as_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 510: // unlabelled_stmt -> lock_stmt + case 511: // unlabelled_stmt -> lock_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 511: // unlabelled_stmt -> yield_stmt + case 512: // unlabelled_stmt -> yield_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 512: // unlabelled_stmt -> yield_sequence_stmt + case 513: // unlabelled_stmt -> yield_sequence_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 513: // unlabelled_stmt -> loop_stmt + case 514: // unlabelled_stmt -> loop_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 514: // unlabelled_stmt -> match_with + case 515: // unlabelled_stmt -> match_with { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 515: // loop_stmt -> tkLoop, expr_l1, tkDo, unlabelled_stmt + case 516: // loop_stmt -> tkLoop, expr_l1, tkDo, unlabelled_stmt { CurrentSemanticValue.stn = new loop_stmt(ValueStack[ValueStack.Depth-3].ex,ValueStack[ValueStack.Depth-1].stn as statement,CurrentLocationSpan); } break; - case 516: // yield_stmt -> tkYield, expr_l1_func_decl_lambda + case 517: // yield_stmt -> tkYield, expr_l1_func_decl_lambda { CurrentSemanticValue.stn = new yield_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); } break; - case 517: // yield_sequence_stmt -> tkYield, tkSequence, expr_l1_func_decl_lambda + case 518: // yield_sequence_stmt -> tkYield, tkSequence, expr_l1_func_decl_lambda { CurrentSemanticValue.stn = new yield_sequence_node(ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); } break; - case 518: // var_stmt -> tkVar, var_decl_part + case 519: // var_stmt -> tkVar, var_decl_part { CurrentSemanticValue.stn = new var_statement(ValueStack[ValueStack.Depth-1].stn as var_def_statement, CurrentLocationSpan); } break; - case 519: // var_stmt -> tkRoundOpen, tkVar, identifier, tkComma, var_ident_list, + case 520: // var_stmt -> tkRoundOpen, tkVar, identifier, tkComma, var_ident_list, // tkRoundClose, tkAssign, expr { (ValueStack[ValueStack.Depth-4].ob as ident_list).Insert(0,ValueStack[ValueStack.Depth-6].id); @@ -5420,7 +5426,7 @@ public partial class GPPGParser: ShiftReduceParser tkVar, tkRoundOpen, identifier, tkComma, ident_list, tkRoundClose, + case 521: // 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); @@ -5428,14 +5434,14 @@ public partial class GPPGParser: ShiftReduceParser var_reference, assign_operator, expr_with_func_decl_lambda + case 522: // assignment -> var_reference, assign_operator, expr_with_func_decl_lambda { if (!(ValueStack[ValueStack.Depth-3].ex is addressed_value)) parserTools.AddErrorFromResource("LEFT_SIDE_CANNOT_BE_ASSIGNED_TO",CurrentLocationSpan); 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 522: // assignment -> tkRoundOpen, variable, tkComma, variable_list, tkRoundClose, + case 523: // assignment -> tkRoundOpen, variable, tkComma, variable_list, tkRoundClose, // assign_operator, expr { if (ValueStack[ValueStack.Depth-2].op.type != Operators.Assignment) @@ -5445,41 +5451,41 @@ public partial class GPPGParser: ShiftReduceParser variable + case 524: // variable_list -> variable { CurrentSemanticValue.ob = new addressed_value_list(ValueStack[ValueStack.Depth-1].ex as addressed_value,LocationStack[LocationStack.Depth-1]); } break; - case 524: // variable_list -> variable_list, tkComma, variable + case 525: // 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 525: // var_ident_list -> tkVar, identifier + case 526: // var_ident_list -> tkVar, identifier { CurrentSemanticValue.ob = new ident_list(ValueStack[ValueStack.Depth-1].id,CurrentLocationSpan); } break; - case 526: // var_ident_list -> var_ident_list, tkComma, tkVar, identifier + case 527: // 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 527: // proc_call -> var_reference + case 528: // 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 528: // goto_stmt -> tkGoto, label_name + case 529: // goto_stmt -> tkGoto, label_name { CurrentSemanticValue.stn = new goto_statement(ValueStack[ValueStack.Depth-1].id, CurrentLocationSpan); } break; - case 529: // compound_stmt -> tkBegin, stmt_list, tkEnd + case 530: // 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; @@ -5487,124 +5493,124 @@ public partial class GPPGParser: ShiftReduceParser stmt + case 531: // stmt_list -> stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, LocationStack[LocationStack.Depth-1]); } break; - case 531: // stmt_list -> stmt_list, tkSemiColon, stmt + case 532: // 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 532: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt + case 533: // 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 533: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt, tkElse, unlabelled_stmt + case 534: // if_stmt -> tkIf, expr_l1, tkThen, unlabelled_stmt, tkElse, unlabelled_stmt { 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 534: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, else_case, tkEnd + case 535: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, else_case, tkEnd { 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 535: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, tkSemiColon, else_case, + case 536: // match_with -> tkMatch, expr_l1, tkWith, pattern_cases, tkSemiColon, else_case, // tkEnd { 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 536: // pattern_cases -> pattern_case + case 537: // pattern_cases -> pattern_case { CurrentSemanticValue.stn = new pattern_cases(ValueStack[ValueStack.Depth-1].stn as pattern_case); } break; - case 537: // pattern_cases -> pattern_cases, tkSemiColon, pattern_case + case 538: // 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 538: // pattern_case -> pattern_optional_var, tkWhen, expr_l1, tkColon, unlabelled_stmt + case 539: // pattern_case -> pattern_optional_var, tkWhen, expr_l1, tkColon, unlabelled_stmt { 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 539: // pattern_case -> deconstruction_or_const_pattern, tkColon, unlabelled_stmt + case 540: // pattern_case -> deconstruction_or_const_pattern, 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 540: // pattern_case -> collection_pattern, tkColon, unlabelled_stmt + case 541: // pattern_case -> collection_pattern, 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 541: // pattern_case -> tuple_pattern, tkWhen, expr_l1, tkColon, unlabelled_stmt + case 542: // pattern_case -> tuple_pattern, 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 542: // pattern_case -> tuple_pattern, tkColon, unlabelled_stmt + case 543: // pattern_case -> tuple_pattern, 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 543: // case_stmt -> tkCase, expr_l1, tkOf, case_list, else_case, tkEnd + case 544: // case_stmt -> tkCase, expr_l1, tkOf, case_list, else_case, tkEnd { 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 544: // case_stmt -> tkCase, expr_l1, tkOf, case_list, tkSemiColon, else_case, tkEnd + case 545: // case_stmt -> tkCase, expr_l1, tkOf, case_list, tkSemiColon, else_case, tkEnd { 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 545: // case_stmt -> tkCase, expr_l1, tkOf, else_case, tkEnd + case 546: // 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 546: // case_list -> case_item + case 547: // 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 547: // case_list -> case_list, tkSemiColon, case_item + case 548: // 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 548: // case_item -> case_label_list, tkColon, unlabelled_stmt + case 549: // 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 549: // case_label_list -> case_label + case 550: // case_label_list -> case_label { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 550: // case_label_list -> case_label_list, tkComma, case_label + case 551: // 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 551: // case_label -> const_elem + case 552: // case_label -> const_elem { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 552: // else_case -> /* empty */ + case 553: // else_case -> /* empty */ { CurrentSemanticValue.stn = null;} break; - case 553: // else_case -> tkElse, stmt_list + case 554: // else_case -> tkElse, stmt_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 554: // repeat_stmt -> tkRepeat, stmt_list, tkUntil, expr + case 555: // repeat_stmt -> tkRepeat, stmt_list, tkUntil, expr { 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; @@ -5612,47 +5618,47 @@ public partial class GPPGParser: ShiftReduceParser tkWhile, expr_l1, optional_tk_do, unlabelled_stmt + case 556: // 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 556: // optional_tk_do -> tkDo + case 557: // optional_tk_do -> tkDo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 557: // optional_tk_do -> /* empty */ + case 558: // optional_tk_do -> /* empty */ { CurrentSemanticValue.ti = null; } break; - case 558: // lock_stmt -> tkLock, expr_l1, tkDo, unlabelled_stmt + case 559: // 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 559: // index_or_nothing -> tkIndex, tkIdentifier + case 560: // index_or_nothing -> tkIndex, tkIdentifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 560: // index_or_nothing -> /* empty */ + case 561: // index_or_nothing -> /* empty */ { CurrentSemanticValue.id = null; } break; - case 561: // optional_type_specification -> tkColon, type_ref + case 562: // optional_type_specification -> tkColon, type_ref { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 562: // optional_type_specification -> /* empty */ + case 563: // optional_type_specification -> /* empty */ { CurrentSemanticValue.td = null; } break; - case 563: // optional_var -> tkVar + case 564: // optional_var -> tkVar { CurrentSemanticValue.ob = true; } break; - case 564: // optional_var -> /* empty */ + case 565: // optional_var -> /* empty */ { CurrentSemanticValue.ob = false; } break; - case 565: // for_cycle_type -> tkTo + case 566: // for_cycle_type -> tkTo { CurrentSemanticValue.ob = for_cycle_type.to; } break; - case 566: // for_cycle_type -> tkDownto + case 567: // for_cycle_type -> tkDownto { CurrentSemanticValue.ob = for_cycle_type.downto; } break; - case 567: // foreach_stmt -> tkForeach, identifier, optional_type_specification, tkIn, + case 568: // foreach_stmt -> tkForeach, identifier, optional_type_specification, tkIn, // expr_l1, index_or_nothing, tkDo, unlabelled_stmt { CurrentSemanticValue.stn = new foreach_stmt(ValueStack[ValueStack.Depth-7].id, ValueStack[ValueStack.Depth-6].td, ValueStack[ValueStack.Depth-4].ex, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].id, CurrentLocationSpan); @@ -5660,7 +5666,7 @@ public partial class GPPGParser: ShiftReduceParser tkForeach, tkVar, identifier, optional_type_specification, tkIn, + case 569: // foreach_stmt -> tkForeach, tkVar, identifier, optional_type_specification, tkIn, // expr_l1, index_or_nothing, tkDo, unlabelled_stmt { if (ValueStack[ValueStack.Depth-6].td == null) @@ -5668,7 +5674,7 @@ public partial class GPPGParser: ShiftReduceParser tkForeach, tkVar, tkRoundOpen, ident_list, tkRoundClose, tkIn, + case 570: // foreach_stmt -> tkForeach, tkVar, tkRoundOpen, ident_list, tkRoundClose, tkIn, // expr_l1, index_or_nothing, tkDo, unlabelled_stmt { if (parserTools.buildTreeForFormatter) @@ -5692,46 +5698,46 @@ public partial class GPPGParser: ShiftReduceParser tkFor, optional_var, identifier, optional_type_specification, + case 571: // for_stmt -> tkFor, optional_var, identifier, optional_type_specification, // tkAssign, expr_l1, for_cycle_type, expr_l1, optional_tk_do, // unlabelled_stmt { CurrentSemanticValue.stn = NewForStmt((bool)ValueStack[ValueStack.Depth-9].ob, ValueStack[ValueStack.Depth-8].id, ValueStack[ValueStack.Depth-7].td, ValueStack[ValueStack.Depth-5].ex, (for_cycle_type)ValueStack[ValueStack.Depth-4].ob, ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-2].ti, ValueStack[ValueStack.Depth-1].stn as statement, null, CurrentLocationSpan); } break; - case 571: // for_stmt -> tkFor, optional_var, identifier, optional_type_specification, + case 572: // for_stmt -> tkFor, optional_var, identifier, optional_type_specification, // tkAssign, expr_l1, for_cycle_type, expr_l1, tkStep, expr_l1, tkDo, // unlabelled_stmt { CurrentSemanticValue.stn = NewForStmt((bool)ValueStack[ValueStack.Depth-11].ob, ValueStack[ValueStack.Depth-10].id, ValueStack[ValueStack.Depth-9].td, ValueStack[ValueStack.Depth-7].ex, (for_cycle_type)ValueStack[ValueStack.Depth-6].ob, ValueStack[ValueStack.Depth-5].ex, ValueStack[ValueStack.Depth-4].ti, ValueStack[ValueStack.Depth-1].stn as statement, ValueStack[ValueStack.Depth-3].ex, CurrentLocationSpan); } break; - case 572: // with_stmt -> tkWith, expr_list, tkDo, unlabelled_stmt + case 573: // 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 573: // inherited_message -> tkInherited + case 574: // inherited_message -> tkInherited { CurrentSemanticValue.stn = new inherited_message(); CurrentSemanticValue.stn.source_context = CurrentLocationSpan; } break; - case 574: // try_stmt -> tkTry, stmt_list, try_handler + case 575: // 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 575: // try_handler -> tkFinally, stmt_list, tkEnd + case 576: // 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 576: // try_handler -> tkExcept, exception_block, tkEnd + case 577: // 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) @@ -5741,168 +5747,165 @@ public partial class GPPGParser: ShiftReduceParser exception_handler_list, exception_block_else_branch + case 578: // 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 578: // exception_block -> exception_handler_list, tkSemiColon, + case 579: // 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 579: // exception_block -> stmt_list + case 580: // 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 580: // exception_handler_list -> exception_handler + case 581: // exception_handler_list -> exception_handler { CurrentSemanticValue.stn = new exception_handler_list(ValueStack[ValueStack.Depth-1].stn as exception_handler, CurrentLocationSpan); } break; - case 581: // exception_handler_list -> exception_handler_list, tkSemiColon, + case 582: // 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 582: // exception_block_else_branch -> /* empty */ + case 583: // exception_block_else_branch -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 583: // exception_block_else_branch -> tkElse, stmt_list + case 584: // exception_block_else_branch -> tkElse, stmt_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 584: // exception_handler -> tkOn, exception_identifier, tkDo, unlabelled_stmt + case 585: // exception_handler -> tkOn, exception_identifier, tkDo, unlabelled_stmt { 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 585: // exception_identifier -> exception_class_type_identifier + case 586: // exception_identifier -> exception_class_type_identifier { CurrentSemanticValue.stn = new exception_ident(null, (named_type_reference)ValueStack[ValueStack.Depth-1].td, CurrentLocationSpan); } break; - case 586: // exception_identifier -> exception_variable, tkColon, + case 587: // 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 587: // exception_class_type_identifier -> simple_type_identifier + case 588: // exception_class_type_identifier -> simple_type_identifier { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 588: // exception_variable -> identifier + case 589: // exception_variable -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 589: // raise_stmt -> tkRaise + case 590: // raise_stmt -> tkRaise { CurrentSemanticValue.stn = new raise_stmt(); CurrentSemanticValue.stn.source_context = CurrentLocationSpan; } break; - case 590: // raise_stmt -> tkRaise, expr + case 591: // raise_stmt -> tkRaise, expr { CurrentSemanticValue.stn = new raise_stmt(ValueStack[ValueStack.Depth-1].ex, null, CurrentLocationSpan); } break; - case 591: // expr_list -> expr_with_func_decl_lambda + case 592: // expr_list -> expr_with_func_decl_lambda { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 592: // expr_list -> expr_list, tkComma, expr_with_func_decl_lambda + case 593: // expr_list -> expr_list, tkComma, expr_with_func_decl_lambda { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 593: // expr_list_func_param -> expr_with_func_decl_lambda_ass + case 594: // expr_list_func_param -> expr_with_func_decl_lambda_ass { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 594: // expr_list_func_param -> expr_list_func_param, tkComma, + case 595: // expr_list_func_param -> expr_list_func_param, tkComma, // expr_with_func_decl_lambda_ass { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 595: // expr_as_stmt -> allowable_expr_as_stmt + case 596: // expr_as_stmt -> allowable_expr_as_stmt { CurrentSemanticValue.stn = new expression_as_statement(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 596: // allowable_expr_as_stmt -> new_expr + case 597: // allowable_expr_as_stmt -> new_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 597: // expr_with_func_decl_lambda -> expr + case 598: // expr_with_func_decl_lambda -> expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 598: // expr_with_func_decl_lambda -> func_decl_lambda + case 599: // expr_with_func_decl_lambda -> func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 599: // expr_with_func_decl_lambda -> tkInherited + case 600: // expr_with_func_decl_lambda -> tkInherited { CurrentSemanticValue.ex = new inherited_ident("", CurrentLocationSpan); } break; - case 600: // expr_with_func_decl_lambda_ass -> expr + case 601: // expr_with_func_decl_lambda_ass -> expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 601: // expr_with_func_decl_lambda_ass -> identifier, tkAssign, expr_l1 + case 602: // expr_with_func_decl_lambda_ass -> identifier, tkAssign, expr_l1 { CurrentSemanticValue.ex = new name_assign_expr(ValueStack[ValueStack.Depth-3].id,ValueStack[ValueStack.Depth-1].ex,CurrentLocationSpan); } break; - case 602: // expr_with_func_decl_lambda_ass -> func_decl_lambda + case 603: // expr_with_func_decl_lambda_ass -> func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 603: // expr_with_func_decl_lambda_ass -> tkInherited + case 604: // expr_with_func_decl_lambda_ass -> tkInherited { CurrentSemanticValue.ex = new inherited_ident("", CurrentLocationSpan); } break; - case 604: // expr -> expr_l1 + case 605: // expr -> expr_l1 { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 605: // expr -> format_expr + case 606: // expr -> format_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 606: // expr_l1 -> expr_dq + case 607: // expr_l1 -> expr_dq { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 607: // expr_l1 -> question_expr + case 608: // expr_l1 -> question_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 608: // expr_l1 -> new_question_expr + case 609: // expr_l1 -> new_question_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 609: // expr_l1_for_question_expr -> expr_dq + case 610: // expr_l1_for_question_expr -> expr_dq { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 610: // expr_l1_for_question_expr -> question_expr + case 611: // expr_l1_for_question_expr -> question_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 611: // expr_l1_for_new_question_expr -> expr_dq + case 612: // expr_l1_for_new_question_expr -> expr_dq { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 612: // expr_l1_for_new_question_expr -> new_question_expr + case 613: // expr_l1_for_new_question_expr -> new_question_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 613: // expr_l1_func_decl_lambda -> expr_l1 + case 614: // expr_l1_func_decl_lambda -> expr_l1 { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 614: // expr_l1_func_decl_lambda -> func_decl_lambda + case 615: // expr_l1_func_decl_lambda -> func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 615: // expr_l1_for_lambda -> expr_dq + case 616: // expr_l1_for_lambda -> expr_dq { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 616: // expr_l1_for_lambda -> question_expr + case 617: // expr_l1_for_lambda -> question_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 617: // expr_l1_for_lambda -> func_decl_lambda + case 618: // expr_l1_for_lambda -> func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 618: // expr_dq -> relop_expr -{ CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } - break; - case 619: // expr_dq -> tkAwait, relop_expr + case 619: // expr_dq -> relop_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; case 620: // expr_dq -> expr_dq, tkDoubleQuestion, relop_expr @@ -6668,23 +6671,26 @@ public partial class GPPGParser: ShiftReduceParser literal_or_number + case 763: // factor -> tkAwait, factor +{ CurrentSemanticValue.ex = new await_node(ValueStack[ValueStack.Depth-1].ex as expression, CurrentLocationSpan); } + break; + case 764: // factor -> literal_or_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 764: // factor -> default_expr + case 765: // factor -> default_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 765: // factor -> tkSquareOpen, elem_list, tkSquareClose + case 766: // factor -> tkSquareOpen, elem_list, tkSquareClose { CurrentSemanticValue.ex = new pascal_set_constant(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); } break; - case 766: // factor -> tkNot, factor + case 767: // factor -> tkNot, factor { CurrentSemanticValue.ex = new un_expr(ValueStack[ValueStack.Depth-1].ex, ValueStack[ValueStack.Depth-2].op.type, CurrentLocationSpan); } break; - case 767: // factor -> sign, factor + case 768: // factor -> sign, factor { if (ValueStack[ValueStack.Depth-2].op.type == Operators.Minus) { @@ -6710,109 +6716,109 @@ public partial class GPPGParser: ShiftReduceParser tkDeref, factor + case 769: // factor -> tkDeref, factor { CurrentSemanticValue.ex = new index(ValueStack[ValueStack.Depth-1].ex, true, CurrentLocationSpan); } break; - case 769: // factor -> var_reference + case 770: // factor -> var_reference { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 770: // factor -> tuple + case 771: // factor -> tuple { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 771: // literal_or_number -> literal + case 772: // literal_or_number -> literal { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 772: // literal_or_number -> unsigned_number + case 773: // literal_or_number -> unsigned_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 773: // var_question_point -> variable, tkQuestionPoint, variable + case 774: // 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 774: // var_question_point -> variable, tkQuestionPoint, var_question_point + case 775: // 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 775: // var_reference -> var_address, variable + case 776: // 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 776: // var_reference -> variable + case 777: // var_reference -> variable { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 777: // var_reference -> var_question_point + case 778: // var_reference -> var_question_point { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 778: // var_reference -> tkRoundOpen, tkVar, identifier, tkAssign, expr_dq, + case 779: // var_reference -> tkRoundOpen, tkVar, identifier, tkAssign, expr_dq, // tkRoundClose { CurrentSemanticValue.ex = new let_var_expr(ValueStack[ValueStack.Depth-4].id,ValueStack[ValueStack.Depth-2].ex,CurrentLocationSpan); } break; - case 779: // var_address -> tkAddressOf + case 780: // var_address -> tkAddressOf { CurrentSemanticValue.stn = NewVarAddress(CurrentLocationSpan); } break; - case 780: // var_address -> var_address, tkAddressOf + case 781: // var_address -> var_address, tkAddressOf { CurrentSemanticValue.stn = NewVarAddress(ValueStack[ValueStack.Depth-2].stn as get_address, CurrentLocationSpan); } break; - case 781: // attribute_variable -> simple_type_identifier, optional_expr_list_with_bracket + case 782: // 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 782: // attribute_variable -> template_type, optional_expr_list_with_bracket + case 783: // 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 783: // dotted_identifier -> identifier + case 784: // dotted_identifier -> identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 784: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword + case 785: // dotted_identifier -> dotted_identifier, tkPoint, identifier_or_keyword { if (ValueStack[ValueStack.Depth-3].ex is index) parserTools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}", LocationStack[LocationStack.Depth-3], "^"); CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 785: // variable_as_type -> dotted_identifier + case 786: // variable_as_type -> dotted_identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex;} break; - case 786: // variable_as_type -> dotted_identifier, template_type_params + case 787: // 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 787: // variable_or_literal_or_number -> variable + case 788: // variable_or_literal_or_number -> variable { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 788: // variable_or_literal_or_number -> literal_or_number + case 789: // variable_or_literal_or_number -> literal_or_number { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 789: // var_with_init_for_expr_with_let -> tkVar, identifier, tkAssign, expr, + case 790: // var_with_init_for_expr_with_let -> tkVar, identifier, tkAssign, expr, // tkSemiColon { CurrentSemanticValue.stn = new assign(ValueStack[ValueStack.Depth-4].id as addressed_value, ValueStack[ValueStack.Depth-2].ex, Operators.Assignment, CurrentLocationSpan); } break; - case 790: // var_with_init_for_expr_with_let_list -> var_with_init_for_expr_with_let + case 791: // var_with_init_for_expr_with_let_list -> var_with_init_for_expr_with_let { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 791: // var_with_init_for_expr_with_let_list -> var_with_init_for_expr_with_let_list, + case 792: // var_with_init_for_expr_with_let_list -> var_with_init_for_expr_with_let_list, // var_with_init_for_expr_with_let { ValueStack[ValueStack.Depth-2].stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-2].stn; } break; - case 792: // proc_func_call -> variable, tkRoundOpen, optional_expr_list_func_param, + case 793: // proc_func_call -> variable, tkRoundOpen, optional_expr_list_func_param, // tkRoundClose { if (ValueStack[ValueStack.Depth-4].ex is index) @@ -6820,18 +6826,18 @@ public partial class GPPGParser: ShiftReduceParser identifier + case 794: // variable -> identifier { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].id; } break; - case 794: // variable -> operator_name_ident + case 795: // variable -> operator_name_ident { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 795: // variable -> tkInherited, identifier + case 796: // variable -> tkInherited, identifier { CurrentSemanticValue.ex = new inherited_ident(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 796: // variable -> tkRoundOpen, expr, tkRoundClose + case 797: // variable -> tkRoundOpen, expr, tkRoundClose { if (!parserTools.buildTreeForFormatter) { @@ -6841,7 +6847,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, var_with_init_for_expr_with_let_list, expr, + case 798: // variable -> tkRoundOpen, var_with_init_for_expr_with_let_list, expr, // tkRoundClose { if (!parserTools.buildTreeForFormatter) @@ -6852,20 +6858,20 @@ public partial class GPPGParser: ShiftReduceParser sizeof_expr + case 799: // variable -> sizeof_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 799: // variable -> typeof_expr + case 800: // variable -> typeof_expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 800: // variable -> literal_or_number, tkPoint, identifier_or_keyword + case 801: // variable -> literal_or_number, tkPoint, identifier_or_keyword { if (ValueStack[ValueStack.Depth-3].ex is index) parserTools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}", LocationStack[LocationStack.Depth-3], "^"); CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 801: // variable -> variable_or_literal_or_number, tkSquareOpen, expr_list, + case 802: // variable -> variable_or_literal_or_number, tkSquareOpen, expr_list, // tkSquareClose { var el = ValueStack[ValueStack.Depth-2].stn as expression_list; // SSM 10/03/16 @@ -6911,7 +6917,7 @@ public partial class GPPGParser: ShiftReduceParser variable_or_literal_or_number, tkQuestionSquareOpen, format_expr, + case 803: // variable -> variable_or_literal_or_number, tkQuestionSquareOpen, format_expr, // tkSquareClose { var fe = ValueStack[ValueStack.Depth-2].ex as format_expr; // SSM 9/01/17 @@ -6925,82 +6931,82 @@ public partial class GPPGParser: ShiftReduceParser tkVertParen, elem_list, tkVertParen + case 804: // variable -> tkVertParen, elem_list, tkVertParen { CurrentSemanticValue.ex = new array_const_new(ValueStack[ValueStack.Depth-2].stn as expression_list, CurrentLocationSpan); } break; - case 804: // variable -> proc_func_call + case 805: // variable -> proc_func_call { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 805: // variable -> variable, tkPoint, identifier_keyword_operatorname + case 806: // variable -> variable, tkPoint, identifier_keyword_operatorname { if (ValueStack[ValueStack.Depth-3].ex is index) parserTools.AddErrorFromResource("UNEXPECTED_SYMBOL{0}", LocationStack[LocationStack.Depth-3], "^"); CurrentSemanticValue.ex = new dot_node(ValueStack[ValueStack.Depth-3].ex as addressed_value, ValueStack[ValueStack.Depth-1].id as addressed_value, CurrentLocationSpan); } break; - case 806: // variable -> tuple, tkPoint, identifier_keyword_operatorname + case 807: // 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 807: // variable -> variable, tkDeref + case 808: // variable -> variable, tkDeref { CurrentSemanticValue.ex = new roof_dereference(ValueStack[ValueStack.Depth-2].ex as addressed_value,CurrentLocationSpan); } break; - case 808: // variable -> variable, tkAmpersend, template_type_params + case 809: // 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 809: // optional_expr_list -> expr_list + case 810: // optional_expr_list -> expr_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 810: // optional_expr_list -> /* empty */ + case 811: // optional_expr_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 811: // optional_expr_list_func_param -> expr_list_func_param + case 812: // optional_expr_list_func_param -> expr_list_func_param { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 812: // optional_expr_list_func_param -> /* empty */ + case 813: // optional_expr_list_func_param -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 813: // elem_list -> elem_list1 + case 814: // elem_list -> elem_list1 { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 814: // elem_list -> /* empty */ + case 815: // elem_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 815: // elem_list1 -> elem + case 816: // elem_list1 -> elem { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 816: // elem_list1 -> elem_list1, tkComma, elem + case 817: // 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 817: // elem -> expr + case 818: // elem -> expr { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 818: // elem -> expr, tkDotDot, expr + case 819: // elem -> expr, tkDotDot, expr { CurrentSemanticValue.ex = new diapason_expr(ValueStack[ValueStack.Depth-3].ex, ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 819: // one_literal -> tkStringLiteral + case 820: // one_literal -> tkStringLiteral { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 820: // one_literal -> tkAsciiChar + case 821: // one_literal -> tkAsciiChar { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].stn as literal; } break; - case 821: // literal -> literal_list + case 822: // literal -> literal_list { CurrentSemanticValue.ex = NewLiteral(ValueStack[ValueStack.Depth-1].stn as literal_const_line); } break; - case 822: // literal -> tkFormatStringLiteral + case 823: // literal -> tkFormatStringLiteral { if (parserTools.buildTreeForFormatter) { @@ -7012,7 +7018,7 @@ public partial class GPPGParser: ShiftReduceParser tkMultilineStringLiteral + case 824: // literal -> tkMultilineStringLiteral { if (parserTools.buildTreeForFormatter) { @@ -7026,12 +7032,12 @@ public partial class GPPGParser: ShiftReduceParser one_literal + case 825: // literal_list -> one_literal { CurrentSemanticValue.stn = new literal_const_line(ValueStack[ValueStack.Depth-1].ex as literal, CurrentLocationSpan); } break; - case 825: // literal_list -> literal_list, one_literal + case 826: // 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) @@ -7039,481 +7045,481 @@ public partial class GPPGParser: ShiftReduceParser tkOperator, overload_operator + case 827: // 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 827: // optional_method_modificators -> tkSemiColon + case 828: // optional_method_modificators -> tkSemiColon { CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); } break; - case 828: // optional_method_modificators -> tkSemiColon, meth_modificators, tkSemiColon + case 829: // 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 829: // optional_method_modificators1 -> /* empty */ + case 830: // optional_method_modificators1 -> /* empty */ { CurrentSemanticValue.stn = new procedure_attributes_list(new List(),CurrentLocationSpan); } break; - case 830: // optional_method_modificators1 -> tkSemiColon, meth_modificators + case 831: // 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 831: // meth_modificators -> meth_modificator + case 832: // meth_modificators -> meth_modificator { CurrentSemanticValue.stn = new procedure_attributes_list(ValueStack[ValueStack.Depth-1].id as procedure_attribute, CurrentLocationSpan); } break; - case 832: // meth_modificators -> meth_modificators, tkSemiColon, meth_modificator + case 833: // 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 833: // identifier -> tkIdentifier + case 834: // identifier -> tkIdentifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 834: // identifier -> property_specifier_directives + case 835: // identifier -> property_specifier_directives { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 835: // identifier -> non_reserved + case 836: // identifier -> non_reserved { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 836: // identifier -> tkStep + case 837: // identifier -> tkStep { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 837: // identifier -> tkIndex + case 838: // identifier -> tkIndex { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 838: // identifier_or_keyword -> identifier + case 839: // identifier_or_keyword -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 839: // identifier_or_keyword -> keyword + case 840: // identifier_or_keyword -> keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 840: // identifier_or_keyword -> reserved_keyword + case 841: // identifier_or_keyword -> reserved_keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 841: // identifier_keyword_operatorname -> identifier + case 842: // identifier_keyword_operatorname -> identifier { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 842: // identifier_keyword_operatorname -> keyword + case 843: // identifier_keyword_operatorname -> keyword { CurrentSemanticValue.id = new ident(ValueStack[ValueStack.Depth-1].ti.text, CurrentLocationSpan); } break; - case 843: // identifier_keyword_operatorname -> operator_name_ident + case 844: // identifier_keyword_operatorname -> operator_name_ident { CurrentSemanticValue.id = (ident)ValueStack[ValueStack.Depth-1].ex; } break; - case 844: // meth_modificator -> tkAbstract + case 845: // meth_modificator -> tkAbstract { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 845: // meth_modificator -> tkOverload + case 846: // 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 846: // meth_modificator -> tkReintroduce + case 847: // meth_modificator -> tkReintroduce { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 847: // meth_modificator -> tkOverride + case 848: // meth_modificator -> tkOverride { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 848: // meth_modificator -> tkExtensionMethod + case 849: // meth_modificator -> tkExtensionMethod { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 849: // meth_modificator -> tkVirtual + case 850: // meth_modificator -> tkVirtual { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 850: // property_modificator -> tkVirtual + case 851: // property_modificator -> tkVirtual { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 851: // property_modificator -> tkOverride + case 852: // property_modificator -> tkOverride { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 852: // property_modificator -> tkAbstract + case 853: // property_modificator -> tkAbstract { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 853: // property_modificator -> tkReintroduce + case 854: // property_modificator -> tkReintroduce { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 854: // property_specifier_directives -> tkRead + case 855: // property_specifier_directives -> tkRead { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 855: // property_specifier_directives -> tkWrite + case 856: // property_specifier_directives -> tkWrite { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 856: // non_reserved -> tkName + case 857: // non_reserved -> tkName { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 857: // non_reserved -> tkNew + case 858: // non_reserved -> tkNew { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 858: // visibility_specifier -> tkInternal + case 859: // visibility_specifier -> tkInternal { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 859: // visibility_specifier -> tkPublic + case 860: // visibility_specifier -> tkPublic { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 860: // visibility_specifier -> tkProtected + case 861: // visibility_specifier -> tkProtected { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 861: // visibility_specifier -> tkPrivate + case 862: // visibility_specifier -> tkPrivate { CurrentSemanticValue.id = ValueStack[ValueStack.Depth-1].id; } break; - case 862: // keyword -> visibility_specifier + case 863: // keyword -> visibility_specifier { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 863: // keyword -> tkSealed + case 864: // keyword -> tkSealed { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 864: // keyword -> tkTemplate + case 865: // keyword -> tkTemplate { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 865: // keyword -> tkOr + case 866: // keyword -> tkOr { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 866: // keyword -> tkTypeOf + case 867: // keyword -> tkTypeOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 867: // keyword -> tkSizeOf + case 868: // keyword -> tkSizeOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 868: // keyword -> tkDefault + case 869: // keyword -> tkDefault { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 869: // keyword -> tkWhere + case 870: // keyword -> tkWhere { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 870: // keyword -> tkXor + case 871: // keyword -> tkXor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 871: // keyword -> tkAnd + case 872: // keyword -> tkAnd { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 872: // keyword -> tkDiv + case 873: // keyword -> tkDiv { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 873: // keyword -> tkMod + case 874: // keyword -> tkMod { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 874: // keyword -> tkShl + case 875: // keyword -> tkShl { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 875: // keyword -> tkShr + case 876: // keyword -> tkShr { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 876: // keyword -> tkNot + case 877: // keyword -> tkNot { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 877: // keyword -> tkAs + case 878: // keyword -> tkAs { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 878: // keyword -> tkIn + case 879: // keyword -> tkIn { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 879: // keyword -> tkIs + case 880: // keyword -> tkIs { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 880: // keyword -> tkArray + case 881: // keyword -> tkArray { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 881: // keyword -> tkSequence + case 882: // keyword -> tkSequence { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 882: // keyword -> tkBegin + case 883: // keyword -> tkBegin { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 883: // keyword -> tkCase + case 884: // keyword -> tkCase { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 884: // keyword -> tkClass + case 885: // keyword -> tkClass { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 885: // keyword -> tkConst + case 886: // keyword -> tkConst { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 886: // keyword -> tkConstructor + case 887: // keyword -> tkConstructor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 887: // keyword -> tkDestructor + case 888: // keyword -> tkDestructor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 888: // keyword -> tkDownto + case 889: // keyword -> tkDownto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 889: // keyword -> tkDo + case 890: // keyword -> tkDo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 890: // keyword -> tkElse + case 891: // keyword -> tkElse { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 891: // keyword -> tkEnd + case 892: // keyword -> tkEnd { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 892: // keyword -> tkExcept + case 893: // keyword -> tkExcept { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 893: // keyword -> tkFile + case 894: // keyword -> tkFile { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 894: // keyword -> tkAuto + case 895: // keyword -> tkAuto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 895: // keyword -> tkFinalization + case 896: // keyword -> tkFinalization { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 896: // keyword -> tkFinally + case 897: // keyword -> tkFinally { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 897: // keyword -> tkFor + case 898: // keyword -> tkFor { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 898: // keyword -> tkForeach + case 899: // keyword -> tkForeach { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 899: // keyword -> tkFunction + case 900: // keyword -> tkFunction { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 900: // keyword -> tkIf + case 901: // keyword -> tkIf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 901: // keyword -> tkImplementation + case 902: // keyword -> tkImplementation { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 902: // keyword -> tkInherited + case 903: // keyword -> tkInherited { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 903: // keyword -> tkInitialization + case 904: // keyword -> tkInitialization { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 904: // keyword -> tkInterface + case 905: // keyword -> tkInterface { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 905: // keyword -> tkProcedure + case 906: // keyword -> tkProcedure { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 906: // keyword -> tkProperty + case 907: // keyword -> tkProperty { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 907: // keyword -> tkRaise + case 908: // keyword -> tkRaise { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 908: // keyword -> tkRecord + case 909: // keyword -> tkRecord { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 909: // keyword -> tkRepeat + case 910: // keyword -> tkRepeat { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 910: // keyword -> tkSet + case 911: // keyword -> tkSet { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 911: // keyword -> tkTry + case 912: // keyword -> tkTry { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 912: // keyword -> tkType + case 913: // keyword -> tkType { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 913: // keyword -> tkStatic + case 914: // keyword -> tkStatic { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 914: // keyword -> tkThen + case 915: // keyword -> tkThen { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 915: // keyword -> tkTo + case 916: // keyword -> tkTo { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 916: // keyword -> tkUntil + case 917: // keyword -> tkUntil { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 917: // keyword -> tkUses + case 918: // keyword -> tkUses { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 918: // keyword -> tkVar + case 919: // keyword -> tkVar { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 919: // keyword -> tkWhile + case 920: // keyword -> tkWhile { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 920: // keyword -> tkWith + case 921: // keyword -> tkWith { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 921: // keyword -> tkNil + case 922: // keyword -> tkNil { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 922: // keyword -> tkGoto + case 923: // keyword -> tkGoto { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 923: // keyword -> tkOf + case 924: // keyword -> tkOf { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 924: // keyword -> tkLabel + case 925: // keyword -> tkLabel { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 925: // keyword -> tkProgram + case 926: // keyword -> tkProgram { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 926: // keyword -> tkUnit + case 927: // keyword -> tkUnit { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 927: // keyword -> tkLibrary + case 928: // keyword -> tkLibrary { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 928: // keyword -> tkNamespace + case 929: // keyword -> tkNamespace { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 929: // keyword -> tkExternal + case 930: // keyword -> tkExternal { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 930: // keyword -> tkParams + case 931: // keyword -> tkParams { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 931: // keyword -> tkEvent + case 932: // keyword -> tkEvent { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 932: // keyword -> tkYield + case 933: // keyword -> tkYield { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 933: // keyword -> tkMatch + case 934: // keyword -> tkMatch { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 934: // keyword -> tkWhen + case 935: // keyword -> tkWhen { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 935: // keyword -> tkPartial + case 936: // keyword -> tkPartial { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 936: // keyword -> tkAbstract + case 937: // keyword -> tkAbstract { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 937: // keyword -> tkLock + case 938: // keyword -> tkLock { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 938: // keyword -> tkImplicit + case 939: // keyword -> tkImplicit { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 939: // keyword -> tkExplicit + case 940: // keyword -> tkExplicit { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].op; } break; - case 940: // keyword -> tkOn + case 941: // keyword -> tkOn { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 941: // keyword -> tkVirtual + case 942: // keyword -> tkVirtual { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 942: // keyword -> tkOverride + case 943: // keyword -> tkOverride { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 943: // keyword -> tkLoop + case 944: // keyword -> tkLoop { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 944: // keyword -> tkExtensionMethod + case 945: // keyword -> tkExtensionMethod { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 945: // keyword -> tkOverload + case 946: // keyword -> tkOverload { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 946: // keyword -> tkReintroduce + case 947: // keyword -> tkReintroduce { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 947: // keyword -> tkForward + case 948: // keyword -> tkForward { CurrentSemanticValue.ti = new token_info(ValueStack[ValueStack.Depth-1].id.name, CurrentLocationSpan); } break; - case 948: // reserved_keyword -> tkOperator + case 949: // reserved_keyword -> tkOperator { CurrentSemanticValue.ti = ValueStack[ValueStack.Depth-1].ti; } break; - case 949: // overload_operator -> tkMinus + case 950: // overload_operator -> tkMinus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 950: // overload_operator -> tkPlus + case 951: // overload_operator -> tkPlus { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 951: // overload_operator -> tkSlash + case 952: // overload_operator -> tkSlash { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 952: // overload_operator -> tkStar + case 953: // overload_operator -> tkStar { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 953: // overload_operator -> tkEqual + case 954: // overload_operator -> tkEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 954: // overload_operator -> tkGreater + case 955: // overload_operator -> tkGreater { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 955: // overload_operator -> tkGreaterEqual + case 956: // overload_operator -> tkGreaterEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 956: // overload_operator -> tkLower + case 957: // overload_operator -> tkLower { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 957: // overload_operator -> tkLowerEqual + case 958: // overload_operator -> tkLowerEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 958: // overload_operator -> tkNotEqual + case 959: // overload_operator -> tkNotEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 959: // overload_operator -> tkOr + case 960: // overload_operator -> tkOr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 960: // overload_operator -> tkXor + case 961: // overload_operator -> tkXor { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 961: // overload_operator -> tkAnd + case 962: // overload_operator -> tkAnd { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 962: // overload_operator -> tkDiv + case 963: // overload_operator -> tkDiv { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 963: // overload_operator -> tkMod + case 964: // overload_operator -> tkMod { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 964: // overload_operator -> tkShl + case 965: // overload_operator -> tkShl { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 965: // overload_operator -> tkShr + case 966: // overload_operator -> tkShr { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 966: // overload_operator -> tkNot + case 967: // overload_operator -> tkNot { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 967: // overload_operator -> tkIn + case 968: // overload_operator -> tkIn { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 968: // overload_operator -> tkImplicit + case 969: // overload_operator -> tkImplicit { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 969: // overload_operator -> tkExplicit + case 970: // overload_operator -> tkExplicit { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 970: // overload_operator -> assign_operator + case 971: // overload_operator -> assign_operator { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 971: // overload_operator -> tkStarStar + case 972: // overload_operator -> tkStarStar { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 972: // assign_operator -> tkAssign + case 973: // assign_operator -> tkAssign { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 973: // assign_operator -> tkPlusEqual + case 974: // assign_operator -> tkPlusEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 974: // assign_operator -> tkMinusEqual + case 975: // assign_operator -> tkMinusEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 975: // assign_operator -> tkMultEqual + case 976: // assign_operator -> tkMultEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 976: // assign_operator -> tkDivEqual + case 977: // assign_operator -> tkDivEqual { CurrentSemanticValue.op = ValueStack[ValueStack.Depth-1].op; } break; - case 977: // lambda_unpacked_params -> tkBackSlashRoundOpen, + case 978: // lambda_unpacked_params -> tkBackSlashRoundOpen, // lambda_list_of_unpacked_params_or_id, tkComma, // lambda_unpacked_params_or_id, tkRoundClose { @@ -7522,24 +7528,24 @@ public partial class GPPGParser: ShiftReduceParser lambda_unpacked_params + case 979: // lambda_unpacked_params_or_id -> lambda_unpacked_params { CurrentSemanticValue.ob = new ident_or_list(ValueStack[ValueStack.Depth-1].ex as unpacked_list_of_ident_or_list); } break; - case 979: // lambda_unpacked_params_or_id -> identifier + case 980: // lambda_unpacked_params_or_id -> identifier { CurrentSemanticValue.ob = new ident_or_list(ValueStack[ValueStack.Depth-1].id as ident); } break; - case 980: // lambda_list_of_unpacked_params_or_id -> lambda_unpacked_params_or_id + case 981: // lambda_list_of_unpacked_params_or_id -> lambda_unpacked_params_or_id { CurrentSemanticValue.ob = new unpacked_list_of_ident_or_list(); (CurrentSemanticValue.ob as unpacked_list_of_ident_or_list).Add(ValueStack[ValueStack.Depth-1].ob as ident_or_list); (CurrentSemanticValue.ob as unpacked_list_of_ident_or_list).source_context = LocationStack[LocationStack.Depth-1]; } break; - case 981: // lambda_list_of_unpacked_params_or_id -> lambda_list_of_unpacked_params_or_id, + case 982: // lambda_list_of_unpacked_params_or_id -> lambda_list_of_unpacked_params_or_id, // tkComma, lambda_unpacked_params_or_id { CurrentSemanticValue.ob = ValueStack[ValueStack.Depth-3].ob; @@ -7547,24 +7553,24 @@ public partial class GPPGParser: ShiftReduceParser expr_l1 + case 983: // expr_l1_or_unpacked -> expr_l1 { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 983: // expr_l1_or_unpacked -> lambda_unpacked_params + case 984: // expr_l1_or_unpacked -> lambda_unpacked_params { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 984: // expr_l1_or_unpacked_list -> expr_l1_or_unpacked + case 985: // expr_l1_or_unpacked_list -> expr_l1_or_unpacked { CurrentSemanticValue.stn = new expression_list(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 985: // expr_l1_or_unpacked_list -> expr_l1_or_unpacked_list, tkComma, + case 986: // expr_l1_or_unpacked_list -> expr_l1_or_unpacked_list, tkComma, // expr_l1_or_unpacked { CurrentSemanticValue.stn = (ValueStack[ValueStack.Depth-3].stn as expression_list).Add(ValueStack[ValueStack.Depth-1].ex, CurrentLocationSpan); } break; - case 986: // func_decl_lambda -> identifier, tkArrow, lambda_function_body + case 987: // 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 lambda_any_type_node_syntax(), LocationStack[LocationStack.Depth-3]), parametr_kind.none, null, LocationStack[LocationStack.Depth-3]), LocationStack[LocationStack.Depth-3]); @@ -7575,7 +7581,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, tkRoundClose, lambda_type_ref_noproctype, + case 988: // func_decl_lambda -> tkRoundOpen, tkRoundClose, lambda_type_ref_noproctype, // tkArrow, lambda_function_body { // �?дес�? надо анализи�?ова�?�? по �?ел�? и либо ос�?авля�?�? lambda_inferred_type, либо дела�?�? его null! @@ -7585,7 +7591,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkColon, fptype, tkRoundClose, + case 989: // 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]); @@ -7597,7 +7603,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, + case 990: // func_decl_lambda -> tkRoundOpen, identifier, tkSemiColon, full_lambda_fp_list, // tkRoundClose, lambda_type_ref_noproctype, tkArrow, // lambda_function_body { @@ -7611,7 +7617,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, + case 991: // func_decl_lambda -> tkRoundOpen, identifier, tkColon, fptype, tkSemiColon, // full_lambda_fp_list, tkRoundClose, // lambda_type_ref_noproctype, tkArrow, lambda_function_body { @@ -7626,7 +7632,7 @@ public partial class GPPGParser: ShiftReduceParser tkRoundOpen, expr_l1_or_unpacked, tkComma, + case 992: // func_decl_lambda -> tkRoundOpen, expr_l1_or_unpacked, tkComma, // expr_l1_or_unpacked_list, lambda_type_ref, // optional_full_lambda_fp_list, tkRoundClose, rem_lambda { @@ -7736,7 +7742,7 @@ public partial class GPPGParser: ShiftReduceParser lambda_unpacked_params, rem_lambda + case 993: // func_decl_lambda -> lambda_unpacked_params, rem_lambda { var pair = ValueStack[ValueStack.Depth-1].ob as pair_type_stlist; // пока �?о�?мал�?н�?е па�?аме�?�?�? - null. Раск�?оем и�? са�?а�?н�?м визи�?о�?ом @@ -7748,62 +7754,62 @@ public partial class GPPGParser: ShiftReduceParser expl_func_decl_lambda + case 994: // func_decl_lambda -> expl_func_decl_lambda { CurrentSemanticValue.ex = ValueStack[ValueStack.Depth-1].ex; } break; - case 994: // optional_full_lambda_fp_list -> /* empty */ + case 995: // optional_full_lambda_fp_list -> /* empty */ { CurrentSemanticValue.stn = null; } break; - case 995: // optional_full_lambda_fp_list -> tkSemiColon, full_lambda_fp_list + case 996: // optional_full_lambda_fp_list -> tkSemiColon, full_lambda_fp_list { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 996: // rem_lambda -> lambda_type_ref_noproctype, tkArrow, lambda_function_body + case 997: // 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 997: // expl_func_decl_lambda -> tkFunction, lambda_type_ref_noproctype, tkArrow, + case 998: // expl_func_decl_lambda -> tkFunction, 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, 1, CurrentLocationSpan); } break; - case 998: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, tkRoundClose, + case 999: // expl_func_decl_lambda -> tkFunction, 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, 1, CurrentLocationSpan); } break; - case 999: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, - // tkRoundClose, lambda_type_ref_noproctype, tkArrow, - // lambda_function_body + case 1000: // expl_func_decl_lambda -> tkFunction, tkRoundOpen, full_lambda_fp_list, + // tkRoundClose, lambda_type_ref_noproctype, 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 1000: // expl_func_decl_lambda -> tkProcedure, tkArrow, lambda_procedure_body + case 1001: // 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 1001: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, tkRoundClose, tkArrow, + case 1002: // 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 1002: // expl_func_decl_lambda -> tkProcedure, tkRoundOpen, full_lambda_fp_list, + case 1003: // 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 1003: // full_lambda_fp_list -> lambda_simple_fp_sect + case 1004: // 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) @@ -7823,102 +7829,102 @@ public partial class GPPGParser: ShiftReduceParser full_lambda_fp_list, tkSemiColon, lambda_simple_fp_sect + case 1005: // 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 1005: // lambda_simple_fp_sect -> ident_list, lambda_type_ref + case 1006: // 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 1006: // lambda_type_ref -> /* empty */ + case 1007: // lambda_type_ref -> /* empty */ { CurrentSemanticValue.td = new lambda_inferred_type(new lambda_any_type_node_syntax(), null); } break; - case 1007: // lambda_type_ref -> tkColon, fptype + case 1008: // lambda_type_ref -> tkColon, fptype { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 1008: // lambda_type_ref_noproctype -> /* empty */ + case 1009: // lambda_type_ref_noproctype -> /* empty */ { CurrentSemanticValue.td = new lambda_inferred_type(new lambda_any_type_node_syntax(), null); } break; - case 1009: // lambda_type_ref_noproctype -> tkColon, fptype_noproctype + case 1010: // lambda_type_ref_noproctype -> tkColon, fptype_noproctype { CurrentSemanticValue.td = ValueStack[ValueStack.Depth-1].td; } break; - case 1010: // common_lambda_body -> compound_stmt + case 1011: // common_lambda_body -> compound_stmt { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 1011: // common_lambda_body -> if_stmt + case 1012: // common_lambda_body -> if_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1012: // common_lambda_body -> while_stmt + case 1013: // common_lambda_body -> while_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1013: // common_lambda_body -> repeat_stmt + case 1014: // common_lambda_body -> repeat_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1014: // common_lambda_body -> for_stmt + case 1015: // common_lambda_body -> for_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1015: // common_lambda_body -> foreach_stmt + case 1016: // common_lambda_body -> foreach_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1016: // common_lambda_body -> loop_stmt + case 1017: // common_lambda_body -> loop_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1017: // common_lambda_body -> case_stmt + case 1018: // common_lambda_body -> case_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1018: // common_lambda_body -> try_stmt + case 1019: // common_lambda_body -> try_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1019: // common_lambda_body -> lock_stmt + case 1020: // common_lambda_body -> lock_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1020: // common_lambda_body -> raise_stmt + case 1021: // common_lambda_body -> raise_stmt { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1021: // common_lambda_body -> yield_stmt + case 1022: // common_lambda_body -> yield_stmt { parserTools.AddErrorFromResource("YIELD_STATEMENT_CANNOT_BE_USED_IN_LAMBDA_BODY", CurrentLocationSpan); } break; - case 1022: // common_lambda_body -> tkRoundOpen, assignment, tkRoundClose + case 1023: // common_lambda_body -> tkRoundOpen, assignment, tkRoundClose { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-2].stn as statement, LocationStack[LocationStack.Depth-2]); } break; - case 1023: // lambda_function_body -> expr_l1_for_lambda + case 1024: // lambda_function_body -> expr_l1_for_lambda { var id = SyntaxVisitors.HasNameVisitor.HasName(ValueStack[ValueStack.Depth-1].ex, "Result"); if (id != null) @@ -7930,22 +7936,22 @@ public partial class GPPGParser: ShiftReduceParser common_lambda_body + case 1025: // lambda_function_body -> common_lambda_body { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; } break; - case 1025: // lambda_procedure_body -> proc_call + case 1026: // lambda_procedure_body -> proc_call { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1026: // lambda_procedure_body -> assignment + case 1027: // lambda_procedure_body -> assignment { CurrentSemanticValue.stn = new statement_list(ValueStack[ValueStack.Depth-1].stn as statement, CurrentLocationSpan); } break; - case 1027: // lambda_procedure_body -> common_lambda_body + case 1028: // lambda_procedure_body -> common_lambda_body { CurrentSemanticValue.stn = ValueStack[ValueStack.Depth-1].stn; }