diff --git a/CanonSharp.Benchmark/Benchmarks/GrammarParserBenchmark.cs b/CanonSharp.Benchmark/Benchmarks/GrammarParserBenchmark.cs new file mode 100644 index 0000000..0ffddc6 --- /dev/null +++ b/CanonSharp.Benchmark/Benchmarks/GrammarParserBenchmark.cs @@ -0,0 +1,73 @@ +using BenchmarkDotNet.Attributes; +using CanonSharp.Benchmark.Canon.Core; +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.GrammarParser; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; +using CanonSharp.Benchmark.Canon.Core.SyntaxNodes; +using CanonSharp.Pascal.Parser; +using CanonSharp.Pascal.Scanner; + +namespace CanonSharp.Benchmark.Benchmarks; + +public class GrammarParserBenchmark +{ + private readonly List _inputFiles = []; + + // CanonSharp + private readonly LexicalScanner _scanner = new(); + private readonly GrammarParser _parser = new(); + + // Canon + private readonly IGrammarParser _grammarParser = GeneratedGrammarParser.Instance; + + public GrammarParserBenchmark() + { + _inputFiles.AddRange(ReadOpenSet()); + } + + [Benchmark] + [ArgumentsSource(nameof(InputFiles))] + public Pascal.SyntaxTree.Program CanonSharpParse(int index) + { + IEnumerable tokens = _scanner.Tokenize(new StringReadState(_inputFiles[index])); + return _parser.Parse(tokens); + } + + [Benchmark] + [ArgumentsSource(nameof(InputFiles))] + public ProgramStruct CanonParse(int index) + { + Lexer lexer = new(); + IEnumerable tokens = lexer.Tokenize(new StringSourceReader(_inputFiles[index])); + + return _grammarParser.Analyse(tokens); + } + + public IEnumerable InputFiles() + { + for (int i = 0; i < _inputFiles.Count; i++) + { + yield return i; + } + } + + private static List ReadOpenSet() + { + DirectoryInfo baseDirectory = new("/home/ricardo/Documents/Code/CSharp/CanonSharp/OpenSet"); + if (!baseDirectory.Exists) + { + throw new InvalidOperationException("Can't find 'OpenSet' directory."); + } + + List result = []; + + foreach (FileInfo file in baseDirectory.EnumerateFiles()) + { + using StreamReader reader = file.OpenText(); + + result.Add(reader.ReadToEnd()); + } + + return result; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/Abstractions/IGrammarParser.cs b/CanonSharp.Benchmark/Canon.Core/Abstractions/IGrammarParser.cs new file mode 100644 index 0000000..a760e04 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Abstractions/IGrammarParser.cs @@ -0,0 +1,82 @@ +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.Exceptions; +using CanonSharp.Benchmark.Canon.Core.GrammarParser; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; +using CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +namespace CanonSharp.Benchmark.Canon.Core.Abstractions; + +/// +/// 语法分析器接口 +/// +public interface IGrammarParser +{ + public ITransformer BeginTransformer { get; } + + public NonTerminator Begin { get; } + + /// + /// 分析指定的词法记号流并构建对应的语法树 + /// + /// 输入的词法记号流 + /// 语法树的根节点 + /// 语法分析错误 + public ProgramStruct Analyse(IEnumerable tokens) + { + Stack stack = []; + stack.Push(new AnalyseState(BeginTransformer, SyntaxNodeBase.Create(SemanticToken.End))); + + using IEnumerator enumerator = tokens.GetEnumerator(); + if (!enumerator.MoveNext()) + { + throw new InvalidOperationException("Input token list is empty"); + } + + while (true) + { + AnalyseState top = stack.Peek(); + + // 首先尝试进行移进 + if (top.State.ShiftTable.TryGetValue(enumerator.Current, out ITransformer? next)) + { + stack.Push(new AnalyseState(next, SyntaxNodeBase.Create(enumerator.Current))); + if (enumerator.MoveNext()) + { + continue; + } + else + { + throw new GrammarException(stack.Peek().State); + } + } + + // 再进行归约 + if (top.State.ReduceTable.TryGetValue(enumerator.Current, out ReduceInformation? information)) + { + if (information.Left == Begin) + { + // 如果是归约到起始符 + // 那么就直接返回不继续进行归约 + return top.Node.Convert(); + } + + List children = []; + NonTerminatorType leftType = information.Left.Type; + for (int i = 0; i < information.Length; i++) + { + children.Add(stack.Pop().Node); + } + + // 为了符合生成式的顺序而倒序 + children.Reverse(); + stack.Push(new AnalyseState(stack.Peek().State.ShiftTable[information.Left], + SyntaxNodeBase.Create(leftType, children))); + continue; + } + + throw new GrammarException(stack.Peek().State, enumerator.Current); + } + } + + private record AnalyseState(ITransformer State, SyntaxNodeBase Node); +} diff --git a/CanonSharp.Benchmark/Canon.Core/Abstractions/ILexer.cs b/CanonSharp.Benchmark/Canon.Core/Abstractions/ILexer.cs new file mode 100644 index 0000000..3dc28b1 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Abstractions/ILexer.cs @@ -0,0 +1,11 @@ +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.Abstractions; + +/// +/// 词法分析器接口 +/// +public interface ILexer +{ + public IEnumerable Tokenize(ISourceReader reader); +} diff --git a/CanonSharp.Benchmark/Canon.Core/Abstractions/ISourceReader.cs b/CanonSharp.Benchmark/Canon.Core/Abstractions/ISourceReader.cs new file mode 100644 index 0000000..50e88e1 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Abstractions/ISourceReader.cs @@ -0,0 +1,45 @@ +using System.Diagnostics.CodeAnalysis; + +namespace CanonSharp.Benchmark.Canon.Core.Abstractions; + +/// +/// 读取源代码的接口 +/// +public interface ISourceReader +{ + public char Current { get; } + + /// + /// 源文件名称 + /// + public string FileName { get; } + + /// + /// 当前读取字符的行号 + /// + public uint Line { get; } + + /// + /// 当前读取字符的列号 + /// + public uint Pos { get; } + + /// + /// 回退一个字符 + /// + /// 回退是否成功 + public bool Retract(); + + /// + /// 前进一个字符 + /// + /// + public bool MoveNext(); + + /// + /// 读取下一个字符但是移进 + /// + /// 读取到的下一个字符 + /// 是否能够读取下一个字符 + public bool TryPeekChar([NotNullWhen(true)] out char? c); +} diff --git a/CanonSharp.Benchmark/Canon.Core/Abstractions/ITransformer.cs b/CanonSharp.Benchmark/Canon.Core/Abstractions/ITransformer.cs new file mode 100644 index 0000000..ce74d9c --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Abstractions/ITransformer.cs @@ -0,0 +1,33 @@ +using CanonSharp.Benchmark.Canon.Core.GrammarParser; + +namespace CanonSharp.Benchmark.Canon.Core.Abstractions; + +/// +/// 进行归约需要的信息 +/// +/// 归约的长度 +/// 归约得到的左部符号 +public record ReduceInformation(int Length, NonTerminator Left) +{ + public string GenerateCode() + { + return $"new ReduceInformation({Length}, {Left.GenerateCode()})"; + } +} +/// +/// 状态的各种迁移信息 +/// +public interface ITransformer +{ + public string Name { get; } + + /// + /// 进行移进的信息 + /// + public IDictionary ShiftTable { get; } + + /// + /// 进行归约的信息 + /// + public IDictionary ReduceTable { get; } +} diff --git a/CanonSharp.Benchmark/Canon.Core/Abstractions/SyntaxNodeVisitor.cs b/CanonSharp.Benchmark/Canon.Core/Abstractions/SyntaxNodeVisitor.cs new file mode 100644 index 0000000..afa8d19 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Abstractions/SyntaxNodeVisitor.cs @@ -0,0 +1,302 @@ +using CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +namespace CanonSharp.Benchmark.Canon.Core.Abstractions; + +public abstract class SyntaxNodeVisitor +{ + public virtual void PreVisit(AddOperator addOperator) + { + } + + public virtual void PostVisit(AddOperator addOperator) + { + } + + public virtual void PreVisit(BasicType basicType) + { + } + + public virtual void PostVisit(BasicType basicType) + { + } + + public virtual void PreVisit(CompoundStatement compoundStatement) + { + } + + public virtual void PostVisit(CompoundStatement compoundStatement) + { + } + + public virtual void PreVisit(ConstDeclaration constDeclaration) + { + } + + public virtual void PostVisit(ConstDeclaration constDeclaration) + { + } + + public virtual void PreVisit(ConstDeclarations constDeclarations) + { + } + + public virtual void PostVisit(ConstDeclarations constDeclarations) + { + } + + public virtual void PreVisit(ConstValue constValue) + { + } + + public virtual void PostVisit(ConstValue constValue) + { + } + + public virtual void PreVisit(ElsePart elsePart) + { + } + + public virtual void PostVisit(ElsePart elsePart) + { + } + + public virtual void PreVisit(Expression expression) + { + } + + public virtual void PostVisit(Expression expression) + { + } + + public virtual void PreVisit(ExpressionList expressionList) + { + } + + public virtual void PostVisit(ExpressionList expressionList) + { + } + + public virtual void PreVisit(Factor factor) + { + } + + public virtual void PostVisit(Factor factor) + { + } + + public virtual void PreVisit(FormalParameter formalParameter) + { + } + + public virtual void PostVisit(FormalParameter formalParameter) + { + } + + public virtual void PreVisit(IdentifierList identifierList) + { + } + + public virtual void PostVisit(IdentifierList identifierList) + { + } + + public virtual void PreVisit(IdentifierVarPart identifierVarPart) + { + } + + public virtual void PostVisit(IdentifierVarPart identifierVarPart) + { + } + + public virtual void PreVisit(MultiplyOperator multiplyOperator) + { + } + + public virtual void PostVisit(MultiplyOperator multiplyOperator) + { + } + + public virtual void PreVisit(Parameter parameter) + { + } + + public virtual void PostVisit(Parameter parameter) + { + } + + public virtual void PreVisit(ParameterList parameterList) + { + } + + public virtual void PostVisit(ParameterList parameterList) + { + } + + public virtual void PreVisit(Period period) + { + } + + public virtual void PostVisit(Period period) + { + } + + public virtual void PreVisit(ProcedureCall procedureCall) + { + } + + public virtual void PostVisit(ProcedureCall procedureCall) + { + } + + public virtual void PreVisit(ProgramBody programBody) + { + } + + public virtual void PostVisit(ProgramBody programBody) + { + } + + public virtual void PreVisit(ProgramHead programHead) + { + } + + public virtual void PostVisit(ProgramHead programHead) + { + } + + public virtual void PreVisit(ProgramStruct programStruct) + { + } + + public virtual void PostVisit(ProgramStruct programStruct) + { + } + + public virtual void PreVisit(RelationOperator relationOperator) + { + } + + public virtual void PostVisit(RelationOperator relationOperator) + { + } + + public virtual void PreVisit(SimpleExpression simpleExpression) + { + } + + public virtual void PostVisit(SimpleExpression simpleExpression) + { + } + + public virtual void PreVisit(Statement statement) + { + } + + public virtual void PostVisit(Statement statement) + { + } + + public virtual void PreVisit(StatementList statementList) + { + } + + public virtual void PostVisit(StatementList statementList) + { + } + + public virtual void PreVisit(Subprogram subprogram) + { + } + + public virtual void PostVisit(Subprogram subprogram) + { + } + + public virtual void PreVisit(SubprogramBody subprogramBody) + { + } + + public virtual void PostVisit(SubprogramBody subprogramBody) + { + } + + public virtual void PreVisit(SubprogramDeclarations subprogramDeclarations) + { + } + + public virtual void PostVisit(SubprogramDeclarations subprogramDeclarations) + { + } + + public virtual void PreVisit(SubprogramHead subprogramHead) + { + } + + public virtual void PostVisit(SubprogramHead subprogramHead) + { + } + + public virtual void PreVisit(Term term) + { + } + + public virtual void PostVisit(Term term) + { + } + + public virtual void PreVisit(TypeSyntaxNode typeSyntaxNode) + { + } + + public virtual void PostVisit(TypeSyntaxNode typeSyntaxNode) + { + } + + public virtual void PreVisit(ValueParameter valueParameter) + { + } + + public virtual void PostVisit(ValueParameter valueParameter) + { + } + + public virtual void PreVisit(VarDeclaration varDeclaration) + { + } + + public virtual void PostVisit(VarDeclaration varDeclaration) + { + } + + public virtual void PreVisit(VarDeclarations varDeclarations) + { + } + + public virtual void PostVisit(VarDeclarations varDeclarations) + { + } + + public virtual void PreVisit(Variable variable) + { + } + + public virtual void PostVisit(Variable variable) + { + } + + public virtual void PreVisit(VarParameter varParameter) + { + } + + public virtual void PostVisit(VarParameter varParameter) + { + } + + public virtual void PreVisit(TerminatedSyntaxNode terminatedSyntaxNode) + { + } + + public virtual void PostVisit(TerminatedSyntaxNode terminatedSyntaxNode) + { + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/Enums/BasicType.cs b/CanonSharp.Benchmark/Canon.Core/Enums/BasicType.cs new file mode 100644 index 0000000..a97694d --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Enums/BasicType.cs @@ -0,0 +1,25 @@ +namespace CanonSharp.Benchmark.Canon.Core.Enums; + +public enum BasicType +{ + /// + /// 整数类型 + /// + Integer, + /// + /// 浮点数类型 + /// + Real, + /// + /// 布尔类型 + /// + Boolean, + /// + /// 字符类型 + /// + Character, + /// + /// 空类型 + /// + Void +} diff --git a/CanonSharp.Benchmark/Canon.Core/Enums/ErrorEnums.cs b/CanonSharp.Benchmark/Canon.Core/Enums/ErrorEnums.cs new file mode 100644 index 0000000..7af02a4 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Enums/ErrorEnums.cs @@ -0,0 +1,11 @@ +namespace CanonSharp.Benchmark.Canon.Core.Enums; + +public enum LexemeErrorType +{ + IllegalNumberFormat,//数字格式不正确 + UnknownCharacterOrString,//源代码包含无法识别的字符或字符串 + UnclosedStringLiteral,//字符串字面量未闭合 + UnclosedComment,//注释未闭合 + InvalidEscapeSequence,//无效的转义字符 + IllegalOperator,//非法的操作符 +} diff --git a/CanonSharp.Benchmark/Canon.Core/Enums/GrammarEnums.cs b/CanonSharp.Benchmark/Canon.Core/Enums/GrammarEnums.cs new file mode 100644 index 0000000..e22f699 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Enums/GrammarEnums.cs @@ -0,0 +1,45 @@ +namespace CanonSharp.Benchmark.Canon.Core.Enums; + +public enum NonTerminatorType +{ + /// + /// 拓广文法 + /// + StartNonTerminator, + ProgramStruct, + ProgramHead, + ProgramBody, + IdentifierList, + ConstDeclarations, + VarDeclarations, + SubprogramDeclarations, + CompoundStatement, + ConstDeclaration, + ConstValue, + VarDeclaration, + Type, + BasicType, + Period, + Subprogram, + SubprogramHead, + SubprogramBody, + FormalParameter, + ParameterList, + Parameter, + VarParameter, + ValueParameter, + StatementList, + Statement, + Variable, + Expression, + ProcedureCall, + ElsePart, + ExpressionList, + SimpleExpression, + Term, + Factor, + AddOperator, + MultiplyOperator, + RelationOperator, + IdVarPart +} diff --git a/CanonSharp.Benchmark/Canon.Core/Enums/SemanticEnums.cs b/CanonSharp.Benchmark/Canon.Core/Enums/SemanticEnums.cs new file mode 100644 index 0000000..8dc935e --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Enums/SemanticEnums.cs @@ -0,0 +1,105 @@ +namespace CanonSharp.Benchmark.Canon.Core.Enums; + +public enum SemanticTokenType +{ + Keyword, + Number, + Operator, + Delimiter, + Identifier, + Character, + String, + Empty, + /// + /// 语法分析中的栈底符号 + /// + End +} + +public enum DelimiterType +{ + Comma, + Period, + Colon, + Semicolon, + LeftParenthesis, + RightParenthesis, + LeftSquareBracket, + RightSquareBracket, + SingleQuotation, + DoubleQuotation, + /// + /// 访问记录字段用的点 x.a + /// + Dot, + /// + /// 数组声明上下界之间的分隔符 1..50 + /// + DoubleDots +} + +public enum KeywordType +{ + Program, + Const, + Var, + Procedure, + Function, + Begin, + End, + Array, + Of, + If, + Then, + Else, + For, + To, + Do, + Integer, + Real, + Boolean, + Character, + Divide, + Not, + Mod, + And, + Or, + True, + False, + While +} + +public enum OperatorType +{ + Equal, + NotEqual, + Less, + LessEqual, + Greater, + GreaterEqual, + Plus, + Minus, + Multiply, + Divide, + Assign +} + +public enum NumberType +{ + Integer, + Real, + Hex +} + +public enum StateType +{ + Start, + Comment, + Word, + Num, + Delimiter, + Operator, + BreakPoint, + Unknown, + Done +} diff --git a/CanonSharp.Benchmark/Canon.Core/Exceptions/CanonException.cs b/CanonSharp.Benchmark/Canon.Core/Exceptions/CanonException.cs new file mode 100644 index 0000000..a43c73c --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Exceptions/CanonException.cs @@ -0,0 +1,19 @@ +namespace CanonSharp.Benchmark.Canon.Core.Exceptions; + +/// +/// 编译器中的统一异常基类 +/// +public class CanonException : Exception +{ + public CanonException() + { + } + + public CanonException(string message) : base(message) + { + } + + public CanonException(string message, Exception innerException) : base(message, innerException) + { + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/Exceptions/GrammarException.cs b/CanonSharp.Benchmark/Canon.Core/Exceptions/GrammarException.cs new file mode 100644 index 0000000..fd0ad5f --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Exceptions/GrammarException.cs @@ -0,0 +1,71 @@ +using System.Text; +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.GrammarParser; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.Exceptions; + +/// +/// 语法分析中引发的异常 +/// +public class GrammarException : CanonException +{ + public override string Message { get; } + + /// + /// 语法分析错误时的分析状态 + /// + public ITransformer CurrentState { get; } + + /// + /// 语法分析错误时的输入符号 + /// + public SemanticToken CurrentToken { get; } + + public GrammarException(ITransformer currentState) + { + CurrentState = currentState; + CurrentToken = SemanticToken.End; + + StringBuilder builder = new(); + builder.Append("Except "); + + foreach (TerminatorBase terminatorBase in ListNextTerminators(CurrentState)) + { + builder.Append('\'').Append(terminatorBase).Append("' "); + } + + Message = builder.ToString(); + } + + public GrammarException(ITransformer currentState, SemanticToken currentToken) + { + CurrentState = currentState; + CurrentToken = currentToken; + + StringBuilder builder = new(); + builder.Append("Expect "); + + foreach (TerminatorBase terminatorBase in ListNextTerminators(CurrentState)) + { + builder.Append('\'').Append(terminatorBase).Append("',"); + } + + if (!CurrentToken.Equals(SemanticToken.End)) + { + builder.Append("but '").Append(CurrentToken.LiteralValue).Append("' found."); + } + + Message = builder.ToString(); + } + + private static List ListNextTerminators(ITransformer state) + { + List result = []; + + result.AddRange(state.ShiftTable.Keys); + result.AddRange(state.ReduceTable.Keys); + + return result; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/Exceptions/LexemeException.cs b/CanonSharp.Benchmark/Canon.Core/Exceptions/LexemeException.cs new file mode 100644 index 0000000..980dc4c --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Exceptions/LexemeException.cs @@ -0,0 +1,34 @@ +namespace CanonSharp.Benchmark.Canon.Core.Exceptions; +using Enums; +/// +/// 词法分析中引发的异常 +/// +public class LexemeException : CanonException +{ + public LexemeErrorType ErrorType { get; } + + public uint Line { get; } + + public uint CharPosition { get; } + + private readonly string _message; + + /// 错误类型 + /// 单词的行号 + /// 单词的列号 + /// 错误信息 + public LexemeException(LexemeErrorType errorType, uint line, uint charPosition, string message) + { + ErrorType = errorType; + Line = line; + CharPosition = charPosition; + _message = message; + } + + public override string Message => ToString(); + + public override string ToString() + { + return $"LexemeException: ErrorType={ErrorType}, Line={Line}, CharPosition={CharPosition}, Message={_message}\n"; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/Exceptions/ReduceAndShiftConflictException.cs b/CanonSharp.Benchmark/Canon.Core/Exceptions/ReduceAndShiftConflictException.cs new file mode 100644 index 0000000..fc10630 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Exceptions/ReduceAndShiftConflictException.cs @@ -0,0 +1,6 @@ +namespace CanonSharp.Benchmark.Canon.Core.Exceptions; + +public class ReduceAndShiftConflictException : Exception +{ + +} diff --git a/CanonSharp.Benchmark/Canon.Core/Exceptions/ReduceConflictException.cs b/CanonSharp.Benchmark/Canon.Core/Exceptions/ReduceConflictException.cs new file mode 100644 index 0000000..217fc55 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/Exceptions/ReduceConflictException.cs @@ -0,0 +1,17 @@ +using CanonSharp.Benchmark.Canon.Core.GrammarParser; + +namespace CanonSharp.Benchmark.Canon.Core.Exceptions; + +public class ReduceConflictException(LrState originState, Terminator lookAhead, NonTerminator left1, NonTerminator left2) + : Exception +{ + public LrState OriginState { get; } = originState; + + public Terminator LookAhead { get; } = lookAhead; + + public NonTerminator Left1 { get; } = left1; + + public NonTerminator Left2 { get; } = left2; + + public override string Message => "Reduce Conflict!"; +} diff --git a/CanonSharp.Benchmark/Canon.Core/GrammarParser/Expression.cs b/CanonSharp.Benchmark/Canon.Core/GrammarParser/Expression.cs new file mode 100644 index 0000000..caaddbb --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/GrammarParser/Expression.cs @@ -0,0 +1,117 @@ +namespace CanonSharp.Benchmark.Canon.Core.GrammarParser; + +/// +/// LR语法中的一个表达式,例如 'program_struct -> ~program_head ; program_body' +/// 其中'~'标识当前移进到达的位置 +/// +public class Expression : IEquatable +{ + /// + /// 表达式的左部 + /// + public required NonTerminator Left { get; init; } + + /// + /// 表达式的向前看字符串 + /// + public required Terminator LookAhead { get; init; } + + /// + /// 表达式的右部 + /// + public required List Right { get; init; } + + /// + /// 当前移进的位置 + /// + public required int Pos { get; init; } + + public bool Equals(Expression? other) + { + if (other is null) + { + return false; + } + + if (Right.Count != other.Right.Count) + { + return false; + } + + for (int i = 0; i < Right.Count; i++) + { + if (Right[i].IsTerminated != other.Right[i].IsTerminated) + { + return false; + } + + if (!Right[i].Equals(other.Right[i])) + { + return false; + } + } + + return Left == other.Left + && LookAhead == other.LookAhead + && Pos == other.Pos; + } + + public override bool Equals(object? obj) + { + if (obj is not Expression other) + { + return false; + } + + return Equals(other); + } + + public override int GetHashCode() + { + int hash = Left.GetHashCode(); + hash ^= LookAhead.GetHashCode(); + hash ^= Pos.GetHashCode(); + + foreach (TerminatorBase terminator in Right) + { + hash ^= terminator.GetHashCode(); + } + + return hash; + } + + public override string ToString() + { + string result = $"{Left} -> "; + + for (int i = 0; i < Right.Count; i++) + { + if (i == Pos) + { + result += '~'; + } + + result += ' '; + result += Right[i].ToString(); + } + + if (Pos == Right.Count) + { + result += '~'; + } + + result += $", {LookAhead}"; + + return result; + } + + public static bool operator ==(Expression a, Expression b) + { + return a.Equals(b); + } + + public static bool operator !=(Expression a, Expression b) + { + return !a.Equals(b); + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/GrammarParser/GeneratedParser.g.cs b/CanonSharp.Benchmark/Canon.Core/GrammarParser/GeneratedParser.g.cs new file mode 100644 index 0000000..49a1dee --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/GrammarParser/GeneratedParser.g.cs @@ -0,0 +1,777 @@ +#nullable enable +using CanonSharp.Benchmark.Canon.Core.GrammarParser; +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.GrammarParser; + +public class GeneratedTransformer : ITransformer +{ + private IDictionary _shiftPointers; + + public string Name { get; } + + public IDictionary ReduceTable { get; } + + public IDictionary ShiftTable { get; } + + public GeneratedTransformer(Dictionary shiftTable, + Dictionary reduceTable, string name) + { + ReduceTable = reduceTable; + ShiftTable = new Dictionary(); + _shiftPointers = shiftTable; + Name = name; + } + + public GeneratedTransformer() + { + ReduceTable = new Dictionary(); + ShiftTable = new Dictionary(); + _shiftPointers = new Dictionary(); + Name = Guid.NewGuid().ToString(); + } + + public void ConstructShiftTable(Dictionary transformers) + { + foreach (KeyValuePair pair in _shiftPointers) + { + ShiftTable.Add(pair.Key, transformers[pair.Value]); + } + } + + public override bool Equals(object? obj) + { + if (obj is not GeneratedTransformer other) + { + return false; + } + + return Name == other.Name; + } + + public override int GetHashCode() => Name.GetHashCode(); +} +public class GeneratedGrammarParser : IGrammarParser +{ + private static readonly Dictionary s_transformers = new() + { + { "59d736fd-fe3f-42d7-9c76-7dab621a50ad", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ProgramStruct), "6a1b6afe-030a-4f04-b984-d60ce54ee902"}, { new NonTerminator(NonTerminatorType.ProgramHead), "bcccfbd3-94af-4a1e-afcb-396a16a48dad"}, { new Terminator(KeywordType.Program), "ac8e0bb9-90c9-4833-8423-d16fde25b4e4"},}, new Dictionary{ }, "59d736fd-fe3f-42d7-9c76-7dab621a50ad") }, + { "6a1b6afe-030a-4f04-b984-d60ce54ee902", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.EndTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.StartNonTerminator))}, }, "6a1b6afe-030a-4f04-b984-d60ce54ee902") }, + { "bcccfbd3-94af-4a1e-afcb-396a16a48dad", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.Semicolon), "577a0dee-e956-4d99-8fbd-97acdd8ac3df"},}, new Dictionary{ }, "bcccfbd3-94af-4a1e-afcb-396a16a48dad") }, + { "ac8e0bb9-90c9-4833-8423-d16fde25b4e4", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "59d063e7-5c98-4b59-8af2-5473669c7075"},}, new Dictionary{ }, "ac8e0bb9-90c9-4833-8423-d16fde25b4e4") }, + { "577a0dee-e956-4d99-8fbd-97acdd8ac3df", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ProgramBody), "b596af0c-8c70-4c67-a7a4-89f3c7a8cc88"}, { new NonTerminator(NonTerminatorType.ConstDeclarations), "5d75f56b-048c-4862-adda-a14a224c08ca"}, { new Terminator(KeywordType.Const), "f55acf61-ed4f-461f-83ee-0e53ce0bd6ba"},}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ConstDeclarations))}, { new Terminator(KeywordType.Procedure), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ConstDeclarations))}, { new Terminator(KeywordType.Function), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ConstDeclarations))}, { new Terminator(KeywordType.Var), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ConstDeclarations))}, }, "577a0dee-e956-4d99-8fbd-97acdd8ac3df") }, + { "59d063e7-5c98-4b59-8af2-5473669c7075", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "ecdfa4a0-2f6b-476c-a295-723c2d60ff8d"},}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ProgramHead))}, }, "59d063e7-5c98-4b59-8af2-5473669c7075") }, + { "b596af0c-8c70-4c67-a7a4-89f3c7a8cc88", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.Period), "ad01e9f1-bad7-4bcf-9dca-805ab2171806"},}, new Dictionary{ }, "b596af0c-8c70-4c67-a7a4-89f3c7a8cc88") }, + { "5d75f56b-048c-4862-adda-a14a224c08ca", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.VarDeclarations), "c6ce8b6f-a592-4a31-ba67-4aec25a67cbf"}, { new Terminator(KeywordType.Var), "3426388e-1ef0-4441-8b6c-137b3ff20e15"},}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(0, new NonTerminator(NonTerminatorType.VarDeclarations))}, { new Terminator(KeywordType.Procedure), new ReduceInformation(0, new NonTerminator(NonTerminatorType.VarDeclarations))}, { new Terminator(KeywordType.Function), new ReduceInformation(0, new NonTerminator(NonTerminatorType.VarDeclarations))}, }, "5d75f56b-048c-4862-adda-a14a224c08ca") }, + { "f55acf61-ed4f-461f-83ee-0e53ce0bd6ba", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ConstDeclaration), "5bcb98b1-6c7b-4044-b5d8-b7b3ea23b87a"}, { Terminator.IdentifierTerminator, "25b20cba-1c07-4cbe-b5d0-b0d8c34bbca2"},}, new Dictionary{ }, "f55acf61-ed4f-461f-83ee-0e53ce0bd6ba") }, + { "ecdfa4a0-2f6b-476c-a295-723c2d60ff8d", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.IdentifierList), "b3d5ad96-ee5b-46d0-b2f4-514a739f5103"}, { new Terminator(DelimiterType.Comma), "9e52587c-5111-4ddb-94d4-a05b5d00b197"}, { new Terminator(DelimiterType.Colon), "4425a57e-bfcf-40cd-b071-9983c243fd62"},}, new Dictionary{ }, "ecdfa4a0-2f6b-476c-a295-723c2d60ff8d") }, + { "ad01e9f1-bad7-4bcf-9dca-805ab2171806", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.EndTerminator, new ReduceInformation(4, new NonTerminator(NonTerminatorType.ProgramStruct))}, }, "ad01e9f1-bad7-4bcf-9dca-805ab2171806") }, + { "c6ce8b6f-a592-4a31-ba67-4aec25a67cbf", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SubprogramDeclarations), "0608de2c-3663-448f-a3f5-dc4f063ea290"},}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(0, new NonTerminator(NonTerminatorType.SubprogramDeclarations))}, { new Terminator(KeywordType.Procedure), new ReduceInformation(0, new NonTerminator(NonTerminatorType.SubprogramDeclarations))}, { new Terminator(KeywordType.Function), new ReduceInformation(0, new NonTerminator(NonTerminatorType.SubprogramDeclarations))}, }, "c6ce8b6f-a592-4a31-ba67-4aec25a67cbf") }, + { "3426388e-1ef0-4441-8b6c-137b3ff20e15", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.VarDeclaration), "057e302c-ad0f-4420-b83e-b1ffa782e661"}, { Terminator.IdentifierTerminator, "280b6b74-5a4e-4937-b054-e8f1b11b44a9"},}, new Dictionary{ }, "3426388e-1ef0-4441-8b6c-137b3ff20e15") }, + { "5bcb98b1-6c7b-4044-b5d8-b7b3ea23b87a", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.Semicolon), "0aa3f83d-77eb-4fe5-bc48-ecdab97b11a5"},}, new Dictionary{ }, "5bcb98b1-6c7b-4044-b5d8-b7b3ea23b87a") }, + { "25b20cba-1c07-4cbe-b5d0-b0d8c34bbca2", new GeneratedTransformer(new Dictionary{ { new Terminator(OperatorType.Equal), "84f6795f-5b58-4618-af2a-39d70eed2b87"},}, new Dictionary{ }, "25b20cba-1c07-4cbe-b5d0-b0d8c34bbca2") }, + { "b3d5ad96-ee5b-46d0-b2f4-514a739f5103", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "f8793bc9-e468-4851-a691-f305c9d78233"},}, new Dictionary{ }, "b3d5ad96-ee5b-46d0-b2f4-514a739f5103") }, + { "9e52587c-5111-4ddb-94d4-a05b5d00b197", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "ac4e077d-f788-4823-b63f-e4e05048f027"},}, new Dictionary{ }, "9e52587c-5111-4ddb-94d4-a05b5d00b197") }, + { "4425a57e-bfcf-40cd-b071-9983c243fd62", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Type), "504222f6-9d09-4476-aef4-cdd6ac44b23b"}, { new NonTerminator(NonTerminatorType.BasicType), "c92add7c-ff3d-4ede-90c4-10219694083b"}, { new Terminator(KeywordType.Array), "4657db25-505c-4877-8063-94cc653d883c"}, { new Terminator(KeywordType.Integer), "569fea77-5df5-4718-a037-ebf833537bf1"}, { new Terminator(KeywordType.Real), "cab00cd6-e738-4376-b34c-43ed1332a950"}, { new Terminator(KeywordType.Boolean), "14f66661-e8a9-45fe-8089-23d0b7358194"}, { new Terminator(KeywordType.Character), "a8d781f8-e7f2-4d98-9b0d-38ae3572acb4"},}, new Dictionary{ }, "4425a57e-bfcf-40cd-b071-9983c243fd62") }, + { "0608de2c-3663-448f-a3f5-dc4f063ea290", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.CompoundStatement), "d5184082-64ca-4fa9-b8f1-ee4efddec45b"}, { new Terminator(KeywordType.Begin), "f7f3f0e0-a7c8-475e-9619-7c9c6084da8c"}, { new NonTerminator(NonTerminatorType.Subprogram), "f3a1febf-50b7-4a35-99a2-9fb5b66f400c"}, { new NonTerminator(NonTerminatorType.SubprogramHead), "356af75d-b822-4684-b106-3bcf0440cd11"}, { new Terminator(KeywordType.Procedure), "d6cd14f8-dd5b-4400-931d-3dec9a3fdac5"}, { new Terminator(KeywordType.Function), "2e65a4b7-b6de-4e60-88c4-bf24a725b30f"},}, new Dictionary{ }, "0608de2c-3663-448f-a3f5-dc4f063ea290") }, + { "057e302c-ad0f-4420-b83e-b1ffa782e661", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.Semicolon), "464aa67f-4ee7-4e66-8187-02e097f4f0a0"},}, new Dictionary{ }, "057e302c-ad0f-4420-b83e-b1ffa782e661") }, + { "280b6b74-5a4e-4937-b054-e8f1b11b44a9", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.IdentifierList), "558c4f76-a686-4e3e-b504-852457072b68"}, { new Terminator(DelimiterType.Comma), "ae79a553-bf53-4d8b-b03c-5877d4f75839"}, { new Terminator(DelimiterType.Colon), "117374a0-c24c-4af2-90a9-311a3ae32c29"},}, new Dictionary{ }, "280b6b74-5a4e-4937-b054-e8f1b11b44a9") }, + { "0aa3f83d-77eb-4fe5-bc48-ecdab97b11a5", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "09b6a8d2-888d-452e-ad86-0c969667bd9e"},}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ConstDeclarations))}, { new Terminator(KeywordType.Procedure), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ConstDeclarations))}, { new Terminator(KeywordType.Function), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ConstDeclarations))}, { new Terminator(KeywordType.Var), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ConstDeclarations))}, }, "0aa3f83d-77eb-4fe5-bc48-ecdab97b11a5") }, + { "84f6795f-5b58-4618-af2a-39d70eed2b87", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ConstValue), "3aa43172-e410-4737-b649-f27a1ba97921"}, { new Terminator(OperatorType.Plus), "5888495c-8446-4ec8-96eb-c4cdfb0bd6a0"}, { new Terminator(OperatorType.Minus), "64974682-989b-498d-9e68-9b395805b4e6"}, { Terminator.NumberTerminator, "126f6c5e-da0c-4677-a142-2f39ae846df8"}, { Terminator.CharacterTerminator, "c55e0eac-aef4-4cf6-88c7-9179144bc94c"}, { new Terminator(KeywordType.True), "c772c7a4-8711-49c0-8087-5075cdfe0f5d"}, { new Terminator(KeywordType.False), "40101384-1db0-414d-81af-7ad77e249a70"},}, new Dictionary{ }, "84f6795f-5b58-4618-af2a-39d70eed2b87") }, + { "f8793bc9-e468-4851-a691-f305c9d78233", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(5, new NonTerminator(NonTerminatorType.ProgramHead))}, }, "f8793bc9-e468-4851-a691-f305c9d78233") }, + { "ac4e077d-f788-4823-b63f-e4e05048f027", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.IdentifierList), "75b75d4e-46f6-4ac3-ad4a-043c9852f8b9"}, { new Terminator(DelimiterType.Comma), "9e52587c-5111-4ddb-94d4-a05b5d00b197"}, { new Terminator(DelimiterType.Colon), "4425a57e-bfcf-40cd-b071-9983c243fd62"},}, new Dictionary{ }, "ac4e077d-f788-4823-b63f-e4e05048f027") }, + { "504222f6-9d09-4476-aef4-cdd6ac44b23b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.IdentifierList))}, }, "504222f6-9d09-4476-aef4-cdd6ac44b23b") }, + { "c92add7c-ff3d-4ede-90c4-10219694083b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Type))}, }, "c92add7c-ff3d-4ede-90c4-10219694083b") }, + { "4657db25-505c-4877-8063-94cc653d883c", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftSquareBracket), "d14de8ba-c5a3-4571-a24c-9461015ccef5"},}, new Dictionary{ }, "4657db25-505c-4877-8063-94cc653d883c") }, + { "569fea77-5df5-4718-a037-ebf833537bf1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "569fea77-5df5-4718-a037-ebf833537bf1") }, + { "cab00cd6-e738-4376-b34c-43ed1332a950", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "cab00cd6-e738-4376-b34c-43ed1332a950") }, + { "14f66661-e8a9-45fe-8089-23d0b7358194", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "14f66661-e8a9-45fe-8089-23d0b7358194") }, + { "a8d781f8-e7f2-4d98-9b0d-38ae3572acb4", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "a8d781f8-e7f2-4d98-9b0d-38ae3572acb4") }, + { "d5184082-64ca-4fa9-b8f1-ee4efddec45b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Period), new ReduceInformation(4, new NonTerminator(NonTerminatorType.ProgramBody))}, }, "d5184082-64ca-4fa9-b8f1-ee4efddec45b") }, + { "f7f3f0e0-a7c8-475e-9619-7c9c6084da8c", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.StatementList), "dc0f8a89-9f48-4f80-95c9-7f84e5cde36d"}, { new NonTerminator(NonTerminatorType.Statement), "f77dde55-48b4-4353-a3c3-37677c20bd47"}, { new NonTerminator(NonTerminatorType.Variable), "ae30128e-efd3-4103-9828-59d8da47b869"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "cc93b19c-954a-4e6d-9ffe-b1d796b56b27"}, { new Terminator(KeywordType.If), "bd6a5146-d6d4-453b-9442-d2d146452e94"}, { new Terminator(KeywordType.For), "138ba7eb-e0e3-403c-a842-2268411e11cc"}, { new Terminator(KeywordType.While), "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad"}, { Terminator.IdentifierTerminator, "b128ff00-00cc-46f4-b962-7e7174f1fb28"}, { new Terminator(KeywordType.Begin), "ac1bf4c3-ab39-4ece-a684-e40886b7c49d"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "f7f3f0e0-a7c8-475e-9619-7c9c6084da8c") }, + { "f3a1febf-50b7-4a35-99a2-9fb5b66f400c", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.Semicolon), "39c9a22c-d37b-4c5c-a4a8-f6d6b537943a"},}, new Dictionary{ }, "f3a1febf-50b7-4a35-99a2-9fb5b66f400c") }, + { "356af75d-b822-4684-b106-3bcf0440cd11", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.Semicolon), "aba17088-2922-42e6-900e-67e50c36c442"},}, new Dictionary{ }, "356af75d-b822-4684-b106-3bcf0440cd11") }, + { "d6cd14f8-dd5b-4400-931d-3dec9a3fdac5", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "d932d3de-4f64-4208-a5bc-945e23000ee3"},}, new Dictionary{ }, "d6cd14f8-dd5b-4400-931d-3dec9a3fdac5") }, + { "2e65a4b7-b6de-4e60-88c4-bf24a725b30f", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "3487a814-f0e4-411c-812e-8fa822639b75"},}, new Dictionary{ }, "2e65a4b7-b6de-4e60-88c4-bf24a725b30f") }, + { "464aa67f-4ee7-4e66-8187-02e097f4f0a0", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "3bf41f0d-a029-47ff-be8d-6c9bed085d4c"},}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(3, new NonTerminator(NonTerminatorType.VarDeclarations))}, { new Terminator(KeywordType.Procedure), new ReduceInformation(3, new NonTerminator(NonTerminatorType.VarDeclarations))}, { new Terminator(KeywordType.Function), new ReduceInformation(3, new NonTerminator(NonTerminatorType.VarDeclarations))}, }, "464aa67f-4ee7-4e66-8187-02e097f4f0a0") }, + { "558c4f76-a686-4e3e-b504-852457072b68", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.VarDeclaration))}, }, "558c4f76-a686-4e3e-b504-852457072b68") }, + { "ae79a553-bf53-4d8b-b03c-5877d4f75839", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "67bd0348-de26-4a7a-830f-57dcaee6d804"},}, new Dictionary{ }, "ae79a553-bf53-4d8b-b03c-5877d4f75839") }, + { "117374a0-c24c-4af2-90a9-311a3ae32c29", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Type), "d272d3e0-2b60-4677-8ce5-1abc2a862329"}, { new NonTerminator(NonTerminatorType.BasicType), "b9609cb2-72af-4e2d-89bb-f3df73b9a643"}, { new Terminator(KeywordType.Array), "f11a29f5-3585-4afd-aae1-c3d3ea221f9d"}, { new Terminator(KeywordType.Integer), "53fb2178-3ce3-41bf-b111-74899ad57bab"}, { new Terminator(KeywordType.Real), "f0bab41c-04a7-4c56-b111-ef249f8f888c"}, { new Terminator(KeywordType.Boolean), "ce45f10b-d787-4ea7-9a1b-be114506cc7b"}, { new Terminator(KeywordType.Character), "687ec48b-b819-4790-a279-957de0b38494"},}, new Dictionary{ }, "117374a0-c24c-4af2-90a9-311a3ae32c29") }, + { "09b6a8d2-888d-452e-ad86-0c969667bd9e", new GeneratedTransformer(new Dictionary{ { new Terminator(OperatorType.Equal), "26c45f31-d114-4001-bef8-d32585b6b7ce"},}, new Dictionary{ }, "09b6a8d2-888d-452e-ad86-0c969667bd9e") }, + { "3aa43172-e410-4737-b649-f27a1ba97921", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ConstDeclaration))}, }, "3aa43172-e410-4737-b649-f27a1ba97921") }, + { "5888495c-8446-4ec8-96eb-c4cdfb0bd6a0", new GeneratedTransformer(new Dictionary{ { Terminator.NumberTerminator, "a237837c-8331-4711-bc1c-8203a0581f75"},}, new Dictionary{ }, "5888495c-8446-4ec8-96eb-c4cdfb0bd6a0") }, + { "64974682-989b-498d-9e68-9b395805b4e6", new GeneratedTransformer(new Dictionary{ { Terminator.NumberTerminator, "499b1bcf-b2be-47b3-b18a-7f50ca48e702"},}, new Dictionary{ }, "64974682-989b-498d-9e68-9b395805b4e6") }, + { "126f6c5e-da0c-4677-a142-2f39ae846df8", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ConstValue))}, }, "126f6c5e-da0c-4677-a142-2f39ae846df8") }, + { "c55e0eac-aef4-4cf6-88c7-9179144bc94c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ConstValue))}, }, "c55e0eac-aef4-4cf6-88c7-9179144bc94c") }, + { "c772c7a4-8711-49c0-8087-5075cdfe0f5d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ConstValue))}, }, "c772c7a4-8711-49c0-8087-5075cdfe0f5d") }, + { "40101384-1db0-414d-81af-7ad77e249a70", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ConstValue))}, }, "40101384-1db0-414d-81af-7ad77e249a70") }, + { "75b75d4e-46f6-4ac3-ad4a-043c9852f8b9", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdentifierList))}, }, "75b75d4e-46f6-4ac3-ad4a-043c9852f8b9") }, + { "d14de8ba-c5a3-4571-a24c-9461015ccef5", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Period), "3c043fda-efe1-49cd-ab2a-0b921b618c65"}, { Terminator.NumberTerminator, "1d59d28d-3de6-4b9b-aec2-b237c4a2e6dc"},}, new Dictionary{ }, "d14de8ba-c5a3-4571-a24c-9461015ccef5") }, + { "dc0f8a89-9f48-4f80-95c9-7f84e5cde36d", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.End), "6dc9b39a-ee80-4f6e-8e63-5af2f232ce73"}, { new Terminator(DelimiterType.Semicolon), "d7c0ed7a-1000-4e5d-9348-1077a94bf3f4"},}, new Dictionary{ }, "dc0f8a89-9f48-4f80-95c9-7f84e5cde36d") }, + { "f77dde55-48b4-4353-a3c3-37677c20bd47", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.StatementList))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.StatementList))}, }, "f77dde55-48b4-4353-a3c3-37677c20bd47") }, + { "ae30128e-efd3-4103-9828-59d8da47b869", new GeneratedTransformer(new Dictionary{ { new Terminator(OperatorType.Assign), "754b1e8a-2dd0-427b-8432-8803da25365a"},}, new Dictionary{ }, "ae30128e-efd3-4103-9828-59d8da47b869") }, + { "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, }, "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5") }, + { "cc93b19c-954a-4e6d-9ffe-b1d796b56b27", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, }, "cc93b19c-954a-4e6d-9ffe-b1d796b56b27") }, + { "bd6a5146-d6d4-453b-9442-d2d146452e94", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "9fc8abd8-8d69-4d11-a3b6-4dda6ed5b94b"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "4dde76cc-98f5-4ad2-b620-4bf0784bdfc2"}, { new NonTerminator(NonTerminatorType.Term), "2231c4a1-166c-4a9d-a192-0a6f61c69e0a"}, { new NonTerminator(NonTerminatorType.Factor), "15ec65fb-8226-4e0b-9eb4-cdcb95aa1bbf"}, { Terminator.NumberTerminator, "6ee62975-5e32-49ab-a007-124b7506c1dc"}, { new NonTerminator(NonTerminatorType.Variable), "bac3ff40-f069-4e49-b93e-49f067a6fffe"}, { new Terminator(DelimiterType.LeftParenthesis), "d33fe735-f418-4cd6-8430-d08c745447a6"}, { Terminator.IdentifierTerminator, "d7196c33-a63c-4a03-b4e4-c03bb0237729"}, { new Terminator(KeywordType.Not), "41932ced-262a-4a2d-8366-fba91da5a371"}, { new Terminator(OperatorType.Minus), "73ba7b97-7970-4d14-864f-82e10cee8622"}, { new Terminator(OperatorType.Plus), "340cb8fb-7fab-4d27-9190-b9d470c24232"}, { new Terminator(KeywordType.True), "a9a49511-4cbd-4f2d-9f8e-d7c14498737d"}, { new Terminator(KeywordType.False), "446ce9df-7ec8-4a19-b6fa-0379ddc65f9d"},}, new Dictionary{ }, "bd6a5146-d6d4-453b-9442-d2d146452e94") }, + { "138ba7eb-e0e3-403c-a842-2268411e11cc", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "568c369e-15d8-487c-9b8d-701dfd8e28f3"},}, new Dictionary{ }, "138ba7eb-e0e3-403c-a842-2268411e11cc") }, + { "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "e144fbb1-95ba-42de-9e67-0cbe04e38065"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "605e6610-c7fd-4688-914d-554d4e1f0467"}, { new NonTerminator(NonTerminatorType.Term), "ecf78c42-792d-4d48-8f88-e1cd8e101dd0"}, { new NonTerminator(NonTerminatorType.Factor), "17ce7de7-ab8c-4389-a0a2-d215ebdc96b1"}, { Terminator.NumberTerminator, "2b65415f-fb75-427d-a310-39b44b8db03a"}, { new NonTerminator(NonTerminatorType.Variable), "80bf23b2-58db-4d1a-84d2-bec3e73c0429"}, { new Terminator(DelimiterType.LeftParenthesis), "1cd421b5-16d2-469d-bb62-1a97353ec366"}, { Terminator.IdentifierTerminator, "db36538c-6d08-4417-a589-ca40963ee1c5"}, { new Terminator(KeywordType.Not), "47a918c3-1ad6-4fb3-aa15-e10f85953c5d"}, { new Terminator(OperatorType.Minus), "4a9f4005-1b1b-445e-905a-389a24c88d05"}, { new Terminator(OperatorType.Plus), "d6df8a91-452b-46a5-b35e-18cb2be98261"}, { new Terminator(KeywordType.True), "c9085b14-74b4-4630-8f90-1009eb9f7674"}, { new Terminator(KeywordType.False), "44c59546-5b4e-48b3-a3eb-de499bb1a988"},}, new Dictionary{ }, "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad") }, + { "b128ff00-00cc-46f4-b962-7e7174f1fb28", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.IdVarPart), "cb2faf98-22c9-41de-9363-062d1cd8b143"}, { new Terminator(DelimiterType.LeftSquareBracket), "1d4b60ea-bd48-4214-88b6-e64152da03fa"}, { new Terminator(DelimiterType.LeftParenthesis), "99786a06-52c0-4235-a04f-65a037bae8ec"},}, new Dictionary{ { new Terminator(OperatorType.Assign), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ProcedureCall))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ProcedureCall))}, }, "b128ff00-00cc-46f4-b962-7e7174f1fb28") }, + { "ac1bf4c3-ab39-4ece-a684-e40886b7c49d", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.StatementList), "d4b9257d-cc97-4168-9b85-787d8172ccaa"}, { new NonTerminator(NonTerminatorType.Statement), "f77dde55-48b4-4353-a3c3-37677c20bd47"}, { new NonTerminator(NonTerminatorType.Variable), "ae30128e-efd3-4103-9828-59d8da47b869"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "cc93b19c-954a-4e6d-9ffe-b1d796b56b27"}, { new Terminator(KeywordType.If), "bd6a5146-d6d4-453b-9442-d2d146452e94"}, { new Terminator(KeywordType.For), "138ba7eb-e0e3-403c-a842-2268411e11cc"}, { new Terminator(KeywordType.While), "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad"}, { Terminator.IdentifierTerminator, "b128ff00-00cc-46f4-b962-7e7174f1fb28"}, { new Terminator(KeywordType.Begin), "ac1bf4c3-ab39-4ece-a684-e40886b7c49d"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "ac1bf4c3-ab39-4ece-a684-e40886b7c49d") }, + { "39c9a22c-d37b-4c5c-a4a8-f6d6b537943a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SubprogramDeclarations))}, { new Terminator(KeywordType.Procedure), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SubprogramDeclarations))}, { new Terminator(KeywordType.Function), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SubprogramDeclarations))}, }, "39c9a22c-d37b-4c5c-a4a8-f6d6b537943a") }, + { "aba17088-2922-42e6-900e-67e50c36c442", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SubprogramBody), "46a2a510-ef6d-49d8-aac8-b3249b8a0f30"}, { new NonTerminator(NonTerminatorType.ConstDeclarations), "7fab4367-5d13-48d0-9402-2701a9f12ae1"}, { new Terminator(KeywordType.Const), "ff0a937b-3380-47bd-90c1-6932016e5c1a"},}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ConstDeclarations))}, { new Terminator(KeywordType.Var), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ConstDeclarations))}, }, "aba17088-2922-42e6-900e-67e50c36c442") }, + { "d932d3de-4f64-4208-a5bc-945e23000ee3", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.FormalParameter), "080fca0d-0105-4281-9d99-4876e0d13c4a"}, { new Terminator(DelimiterType.LeftParenthesis), "8b65673e-a3a5-4123-8ff9-75cea90a1e23"},}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.FormalParameter))}, }, "d932d3de-4f64-4208-a5bc-945e23000ee3") }, + { "3487a814-f0e4-411c-812e-8fa822639b75", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.FormalParameter), "782b3e4a-b18e-42cc-a837-e39cb05c923c"}, { new Terminator(DelimiterType.LeftParenthesis), "94dea7a4-91c7-4aee-810c-d714e7c94aac"},}, new Dictionary{ { new Terminator(DelimiterType.Colon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.FormalParameter))}, }, "3487a814-f0e4-411c-812e-8fa822639b75") }, + { "3bf41f0d-a029-47ff-be8d-6c9bed085d4c", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.IdentifierList), "bf18e59e-ede6-4df1-b6cc-b8f01e241d5a"}, { new Terminator(DelimiterType.Comma), "ae79a553-bf53-4d8b-b03c-5877d4f75839"}, { new Terminator(DelimiterType.Colon), "117374a0-c24c-4af2-90a9-311a3ae32c29"},}, new Dictionary{ }, "3bf41f0d-a029-47ff-be8d-6c9bed085d4c") }, + { "67bd0348-de26-4a7a-830f-57dcaee6d804", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.IdentifierList), "a2bb433e-490b-421c-900c-9ee2bb1ba573"}, { new Terminator(DelimiterType.Comma), "ae79a553-bf53-4d8b-b03c-5877d4f75839"}, { new Terminator(DelimiterType.Colon), "117374a0-c24c-4af2-90a9-311a3ae32c29"},}, new Dictionary{ }, "67bd0348-de26-4a7a-830f-57dcaee6d804") }, + { "d272d3e0-2b60-4677-8ce5-1abc2a862329", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.IdentifierList))}, }, "d272d3e0-2b60-4677-8ce5-1abc2a862329") }, + { "b9609cb2-72af-4e2d-89bb-f3df73b9a643", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Type))}, }, "b9609cb2-72af-4e2d-89bb-f3df73b9a643") }, + { "f11a29f5-3585-4afd-aae1-c3d3ea221f9d", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftSquareBracket), "8ce41908-5fa9-4090-9f73-0619c5cdd916"},}, new Dictionary{ }, "f11a29f5-3585-4afd-aae1-c3d3ea221f9d") }, + { "53fb2178-3ce3-41bf-b111-74899ad57bab", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "53fb2178-3ce3-41bf-b111-74899ad57bab") }, + { "f0bab41c-04a7-4c56-b111-ef249f8f888c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "f0bab41c-04a7-4c56-b111-ef249f8f888c") }, + { "ce45f10b-d787-4ea7-9a1b-be114506cc7b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "ce45f10b-d787-4ea7-9a1b-be114506cc7b") }, + { "687ec48b-b819-4790-a279-957de0b38494", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "687ec48b-b819-4790-a279-957de0b38494") }, + { "26c45f31-d114-4001-bef8-d32585b6b7ce", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ConstValue), "e3658ebd-2cd0-44b8-998c-026dd9283b29"}, { new Terminator(OperatorType.Plus), "5888495c-8446-4ec8-96eb-c4cdfb0bd6a0"}, { new Terminator(OperatorType.Minus), "64974682-989b-498d-9e68-9b395805b4e6"}, { Terminator.NumberTerminator, "126f6c5e-da0c-4677-a142-2f39ae846df8"}, { Terminator.CharacterTerminator, "c55e0eac-aef4-4cf6-88c7-9179144bc94c"}, { new Terminator(KeywordType.True), "c772c7a4-8711-49c0-8087-5075cdfe0f5d"}, { new Terminator(KeywordType.False), "40101384-1db0-414d-81af-7ad77e249a70"},}, new Dictionary{ }, "26c45f31-d114-4001-bef8-d32585b6b7ce") }, + { "a237837c-8331-4711-bc1c-8203a0581f75", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ConstValue))}, }, "a237837c-8331-4711-bc1c-8203a0581f75") }, + { "499b1bcf-b2be-47b3-b18a-7f50ca48e702", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ConstValue))}, }, "499b1bcf-b2be-47b3-b18a-7f50ca48e702") }, + { "3c043fda-efe1-49cd-ab2a-0b921b618c65", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "e2623b85-81c9-44d6-9563-4c8a0b65e302"}, { new Terminator(DelimiterType.Comma), "c2bd4f6a-1204-4250-9472-219492cfb89b"},}, new Dictionary{ }, "3c043fda-efe1-49cd-ab2a-0b921b618c65") }, + { "1d59d28d-3de6-4b9b-aec2-b237c4a2e6dc", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.DoubleDots), "370fcba4-83a3-4921-b115-bb26e6871285"},}, new Dictionary{ }, "1d59d28d-3de6-4b9b-aec2-b237c4a2e6dc") }, + { "6dc9b39a-ee80-4f6e-8e63-5af2f232ce73", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Period), new ReduceInformation(3, new NonTerminator(NonTerminatorType.CompoundStatement))}, }, "6dc9b39a-ee80-4f6e-8e63-5af2f232ce73") }, + { "d7c0ed7a-1000-4e5d-9348-1077a94bf3f4", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Statement), "684a67d4-c18e-48e7-afc1-9a0a0d1e1752"}, { new NonTerminator(NonTerminatorType.Variable), "ae30128e-efd3-4103-9828-59d8da47b869"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "cc93b19c-954a-4e6d-9ffe-b1d796b56b27"}, { new Terminator(KeywordType.If), "bd6a5146-d6d4-453b-9442-d2d146452e94"}, { new Terminator(KeywordType.For), "138ba7eb-e0e3-403c-a842-2268411e11cc"}, { new Terminator(KeywordType.While), "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad"}, { Terminator.IdentifierTerminator, "b128ff00-00cc-46f4-b962-7e7174f1fb28"}, { new Terminator(KeywordType.Begin), "ac1bf4c3-ab39-4ece-a684-e40886b7c49d"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "d7c0ed7a-1000-4e5d-9348-1077a94bf3f4") }, + { "754b1e8a-2dd0-427b-8432-8803da25365a", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "8f382f5b-6c98-4b81-b87f-de546d611e90"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "e6cbc19e-7b86-4c78-9ece-4d6bcbfac85a"}, { new NonTerminator(NonTerminatorType.Term), "1122c8c0-4d87-47c1-9d0e-00be92c85d2b"}, { new NonTerminator(NonTerminatorType.Factor), "0ac68032-8218-4afe-a892-68fe4b01ea75"}, { Terminator.NumberTerminator, "8372929f-18a1-42eb-9c56-cdf6b496ab7f"}, { new NonTerminator(NonTerminatorType.Variable), "5eb809a9-364a-4c59-b743-12bff178dcb4"}, { new Terminator(DelimiterType.LeftParenthesis), "31c16865-7977-428f-b0d4-ae5d3ddaf083"}, { Terminator.IdentifierTerminator, "7c517b7f-b3b9-449d-b2e2-4029db449b2b"}, { new Terminator(KeywordType.Not), "8cfe4e5d-b0e0-435c-815e-28e5cdfa237b"}, { new Terminator(OperatorType.Minus), "40916387-5e18-4fcb-83c5-5f1c3d466e52"}, { new Terminator(OperatorType.Plus), "7f3f76ea-4668-486a-a787-4241ae9fff0f"}, { new Terminator(KeywordType.True), "d99f0be4-ea5d-4e5e-b704-9b538b366113"}, { new Terminator(KeywordType.False), "a319032c-8e25-4276-a480-396f2aeae3a6"},}, new Dictionary{ }, "754b1e8a-2dd0-427b-8432-8803da25365a") }, + { "9fc8abd8-8d69-4d11-a3b6-4dda6ed5b94b", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.Then), "5fc21166-21d1-429b-8e1a-99eaff04d94e"},}, new Dictionary{ }, "9fc8abd8-8d69-4d11-a3b6-4dda6ed5b94b") }, + { "4dde76cc-98f5-4ad2-b620-4bf0784bdfc2", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.RelationOperator), "6e573b43-71e9-476b-b719-f38a9f200ede"}, { new Terminator(OperatorType.Equal), "59e0b42f-0f19-4905-bda8-027e4043f4af"}, { new Terminator(OperatorType.NotEqual), "7863edae-4a97-4391-96b2-2e884ec9446a"}, { new Terminator(OperatorType.Less), "16951dba-a455-4455-ae09-e1f402e42c72"}, { new Terminator(OperatorType.LessEqual), "e510cf8d-4628-45cd-aea4-8b27b1e67c4a"}, { new Terminator(OperatorType.Greater), "59406bfc-b725-4683-80e7-445c998f005a"}, { new Terminator(OperatorType.GreaterEqual), "8f8ba332-6060-40ce-9e86-bdb7a7e3f793"}, { new NonTerminator(NonTerminatorType.AddOperator), "455280c0-2150-41fd-be99-25f1605f5f2c"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, }, "4dde76cc-98f5-4ad2-b620-4bf0784bdfc2") }, + { "2231c4a1-166c-4a9d-a192-0a6f61c69e0a", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "fe7976c2-8b96-4a3c-8d9c-d39df033d42f"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "2231c4a1-166c-4a9d-a192-0a6f61c69e0a") }, + { "15ec65fb-8226-4e0b-9eb4-cdcb95aa1bbf", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "15ec65fb-8226-4e0b-9eb4-cdcb95aa1bbf") }, + { "6ee62975-5e32-49ab-a007-124b7506c1dc", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "6ee62975-5e32-49ab-a007-124b7506c1dc") }, + { "bac3ff40-f069-4e49-b93e-49f067a6fffe", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "bac3ff40-f069-4e49-b93e-49f067a6fffe") }, + { "d33fe735-f418-4cd6-8430-d08c745447a6", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "9ea9d11f-c1a3-4fc3-be39-28074fa32344"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "d33fe735-f418-4cd6-8430-d08c745447a6") }, + { "d7196c33-a63c-4a03-b4e4-c03bb0237729", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "5b31c571-6115-461a-b87a-d13ed77489a6"}, { new NonTerminator(NonTerminatorType.IdVarPart), "39fb0cb2-d4a7-496b-a31d-5819688d93e1"}, { new Terminator(DelimiterType.LeftSquareBracket), "0135a0ef-9913-4d0c-af3c-542c2431e2a0"},}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "d7196c33-a63c-4a03-b4e4-c03bb0237729") }, + { "41932ced-262a-4a2d-8366-fba91da5a371", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "dfb5c168-e5b9-4805-b28f-e420d0629c18"}, { Terminator.NumberTerminator, "6ee62975-5e32-49ab-a007-124b7506c1dc"}, { new NonTerminator(NonTerminatorType.Variable), "bac3ff40-f069-4e49-b93e-49f067a6fffe"}, { new Terminator(DelimiterType.LeftParenthesis), "d33fe735-f418-4cd6-8430-d08c745447a6"}, { Terminator.IdentifierTerminator, "d7196c33-a63c-4a03-b4e4-c03bb0237729"}, { new Terminator(KeywordType.Not), "41932ced-262a-4a2d-8366-fba91da5a371"}, { new Terminator(OperatorType.Minus), "73ba7b97-7970-4d14-864f-82e10cee8622"}, { new Terminator(OperatorType.Plus), "340cb8fb-7fab-4d27-9190-b9d470c24232"}, { new Terminator(KeywordType.True), "a9a49511-4cbd-4f2d-9f8e-d7c14498737d"}, { new Terminator(KeywordType.False), "446ce9df-7ec8-4a19-b6fa-0379ddc65f9d"},}, new Dictionary{ }, "41932ced-262a-4a2d-8366-fba91da5a371") }, + { "73ba7b97-7970-4d14-864f-82e10cee8622", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "1eb8a073-fb7d-4ee8-abfb-17c4c0640f6c"}, { Terminator.NumberTerminator, "6ee62975-5e32-49ab-a007-124b7506c1dc"}, { new NonTerminator(NonTerminatorType.Variable), "bac3ff40-f069-4e49-b93e-49f067a6fffe"}, { new Terminator(DelimiterType.LeftParenthesis), "d33fe735-f418-4cd6-8430-d08c745447a6"}, { Terminator.IdentifierTerminator, "d7196c33-a63c-4a03-b4e4-c03bb0237729"}, { new Terminator(KeywordType.Not), "41932ced-262a-4a2d-8366-fba91da5a371"}, { new Terminator(OperatorType.Minus), "73ba7b97-7970-4d14-864f-82e10cee8622"}, { new Terminator(OperatorType.Plus), "340cb8fb-7fab-4d27-9190-b9d470c24232"}, { new Terminator(KeywordType.True), "a9a49511-4cbd-4f2d-9f8e-d7c14498737d"}, { new Terminator(KeywordType.False), "446ce9df-7ec8-4a19-b6fa-0379ddc65f9d"},}, new Dictionary{ }, "73ba7b97-7970-4d14-864f-82e10cee8622") }, + { "340cb8fb-7fab-4d27-9190-b9d470c24232", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "c2070796-4057-4fdf-b63f-7b2a3fdf12b6"}, { Terminator.NumberTerminator, "6ee62975-5e32-49ab-a007-124b7506c1dc"}, { new NonTerminator(NonTerminatorType.Variable), "bac3ff40-f069-4e49-b93e-49f067a6fffe"}, { new Terminator(DelimiterType.LeftParenthesis), "d33fe735-f418-4cd6-8430-d08c745447a6"}, { Terminator.IdentifierTerminator, "d7196c33-a63c-4a03-b4e4-c03bb0237729"}, { new Terminator(KeywordType.Not), "41932ced-262a-4a2d-8366-fba91da5a371"}, { new Terminator(OperatorType.Minus), "73ba7b97-7970-4d14-864f-82e10cee8622"}, { new Terminator(OperatorType.Plus), "340cb8fb-7fab-4d27-9190-b9d470c24232"}, { new Terminator(KeywordType.True), "a9a49511-4cbd-4f2d-9f8e-d7c14498737d"}, { new Terminator(KeywordType.False), "446ce9df-7ec8-4a19-b6fa-0379ddc65f9d"},}, new Dictionary{ }, "340cb8fb-7fab-4d27-9190-b9d470c24232") }, + { "a9a49511-4cbd-4f2d-9f8e-d7c14498737d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "a9a49511-4cbd-4f2d-9f8e-d7c14498737d") }, + { "446ce9df-7ec8-4a19-b6fa-0379ddc65f9d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "446ce9df-7ec8-4a19-b6fa-0379ddc65f9d") }, + { "568c369e-15d8-487c-9b8d-701dfd8e28f3", new GeneratedTransformer(new Dictionary{ { new Terminator(OperatorType.Assign), "76b175a2-a316-4897-b378-efd7d8346267"},}, new Dictionary{ }, "568c369e-15d8-487c-9b8d-701dfd8e28f3") }, + { "e144fbb1-95ba-42de-9e67-0cbe04e38065", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.Do), "c3a7155c-462e-4f12-a238-df352baf278b"},}, new Dictionary{ }, "e144fbb1-95ba-42de-9e67-0cbe04e38065") }, + { "605e6610-c7fd-4688-914d-554d4e1f0467", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.RelationOperator), "262723e9-f656-4fa7-a18f-41562428e4c1"}, { new Terminator(OperatorType.Equal), "59e0b42f-0f19-4905-bda8-027e4043f4af"}, { new Terminator(OperatorType.NotEqual), "7863edae-4a97-4391-96b2-2e884ec9446a"}, { new Terminator(OperatorType.Less), "16951dba-a455-4455-ae09-e1f402e42c72"}, { new Terminator(OperatorType.LessEqual), "e510cf8d-4628-45cd-aea4-8b27b1e67c4a"}, { new Terminator(OperatorType.Greater), "59406bfc-b725-4683-80e7-445c998f005a"}, { new Terminator(OperatorType.GreaterEqual), "8f8ba332-6060-40ce-9e86-bdb7a7e3f793"}, { new NonTerminator(NonTerminatorType.AddOperator), "7aa132fa-db77-4325-905c-f44864489918"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, }, "605e6610-c7fd-4688-914d-554d4e1f0467") }, + { "ecf78c42-792d-4d48-8f88-e1cd8e101dd0", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "1c13de51-4b5f-47e8-86e1-0179943b6887"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "ecf78c42-792d-4d48-8f88-e1cd8e101dd0") }, + { "17ce7de7-ab8c-4389-a0a2-d215ebdc96b1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "17ce7de7-ab8c-4389-a0a2-d215ebdc96b1") }, + { "2b65415f-fb75-427d-a310-39b44b8db03a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "2b65415f-fb75-427d-a310-39b44b8db03a") }, + { "80bf23b2-58db-4d1a-84d2-bec3e73c0429", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "80bf23b2-58db-4d1a-84d2-bec3e73c0429") }, + { "1cd421b5-16d2-469d-bb62-1a97353ec366", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "ef761f6e-5731-4cc7-a0a5-db341f087d56"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "1cd421b5-16d2-469d-bb62-1a97353ec366") }, + { "db36538c-6d08-4417-a589-ca40963ee1c5", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "649ddb60-ee22-48b8-8ef2-b4968fd04ec2"}, { new NonTerminator(NonTerminatorType.IdVarPart), "40cadde7-9695-4841-938d-a0be7f9de39c"}, { new Terminator(DelimiterType.LeftSquareBracket), "4526905d-bcf0-4fbc-8ca3-52cde02dfb30"},}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "db36538c-6d08-4417-a589-ca40963ee1c5") }, + { "47a918c3-1ad6-4fb3-aa15-e10f85953c5d", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "5ac6d830-5ebb-41ec-87f2-626df0b42f6a"}, { Terminator.NumberTerminator, "2b65415f-fb75-427d-a310-39b44b8db03a"}, { new NonTerminator(NonTerminatorType.Variable), "80bf23b2-58db-4d1a-84d2-bec3e73c0429"}, { new Terminator(DelimiterType.LeftParenthesis), "1cd421b5-16d2-469d-bb62-1a97353ec366"}, { Terminator.IdentifierTerminator, "db36538c-6d08-4417-a589-ca40963ee1c5"}, { new Terminator(KeywordType.Not), "47a918c3-1ad6-4fb3-aa15-e10f85953c5d"}, { new Terminator(OperatorType.Minus), "4a9f4005-1b1b-445e-905a-389a24c88d05"}, { new Terminator(OperatorType.Plus), "d6df8a91-452b-46a5-b35e-18cb2be98261"}, { new Terminator(KeywordType.True), "c9085b14-74b4-4630-8f90-1009eb9f7674"}, { new Terminator(KeywordType.False), "44c59546-5b4e-48b3-a3eb-de499bb1a988"},}, new Dictionary{ }, "47a918c3-1ad6-4fb3-aa15-e10f85953c5d") }, + { "4a9f4005-1b1b-445e-905a-389a24c88d05", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "58a91787-22ce-4338-990f-f95dd112537d"}, { Terminator.NumberTerminator, "2b65415f-fb75-427d-a310-39b44b8db03a"}, { new NonTerminator(NonTerminatorType.Variable), "80bf23b2-58db-4d1a-84d2-bec3e73c0429"}, { new Terminator(DelimiterType.LeftParenthesis), "1cd421b5-16d2-469d-bb62-1a97353ec366"}, { Terminator.IdentifierTerminator, "db36538c-6d08-4417-a589-ca40963ee1c5"}, { new Terminator(KeywordType.Not), "47a918c3-1ad6-4fb3-aa15-e10f85953c5d"}, { new Terminator(OperatorType.Minus), "4a9f4005-1b1b-445e-905a-389a24c88d05"}, { new Terminator(OperatorType.Plus), "d6df8a91-452b-46a5-b35e-18cb2be98261"}, { new Terminator(KeywordType.True), "c9085b14-74b4-4630-8f90-1009eb9f7674"}, { new Terminator(KeywordType.False), "44c59546-5b4e-48b3-a3eb-de499bb1a988"},}, new Dictionary{ }, "4a9f4005-1b1b-445e-905a-389a24c88d05") }, + { "d6df8a91-452b-46a5-b35e-18cb2be98261", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "af0aa7a6-9012-4843-838d-d824103f506e"}, { Terminator.NumberTerminator, "2b65415f-fb75-427d-a310-39b44b8db03a"}, { new NonTerminator(NonTerminatorType.Variable), "80bf23b2-58db-4d1a-84d2-bec3e73c0429"}, { new Terminator(DelimiterType.LeftParenthesis), "1cd421b5-16d2-469d-bb62-1a97353ec366"}, { Terminator.IdentifierTerminator, "db36538c-6d08-4417-a589-ca40963ee1c5"}, { new Terminator(KeywordType.Not), "47a918c3-1ad6-4fb3-aa15-e10f85953c5d"}, { new Terminator(OperatorType.Minus), "4a9f4005-1b1b-445e-905a-389a24c88d05"}, { new Terminator(OperatorType.Plus), "d6df8a91-452b-46a5-b35e-18cb2be98261"}, { new Terminator(KeywordType.True), "c9085b14-74b4-4630-8f90-1009eb9f7674"}, { new Terminator(KeywordType.False), "44c59546-5b4e-48b3-a3eb-de499bb1a988"},}, new Dictionary{ }, "d6df8a91-452b-46a5-b35e-18cb2be98261") }, + { "c9085b14-74b4-4630-8f90-1009eb9f7674", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "c9085b14-74b4-4630-8f90-1009eb9f7674") }, + { "44c59546-5b4e-48b3-a3eb-de499bb1a988", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "44c59546-5b4e-48b3-a3eb-de499bb1a988") }, + { "cb2faf98-22c9-41de-9363-062d1cd8b143", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(OperatorType.Assign), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "cb2faf98-22c9-41de-9363-062d1cd8b143") }, + { "1d4b60ea-bd48-4214-88b6-e64152da03fa", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "766f234b-2b99-4e74-8468-c9c095d55b70"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "1d4b60ea-bd48-4214-88b6-e64152da03fa") }, + { "99786a06-52c0-4235-a04f-65a037bae8ec", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "cb29a8e8-f913-4340-b41e-f64c539267b0"}, { new NonTerminator(NonTerminatorType.ExpressionList), "85e7e371-cbb3-4d90-aeb1-0e3e3c879ce0"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "99786a06-52c0-4235-a04f-65a037bae8ec") }, + { "d4b9257d-cc97-4168-9b85-787d8172ccaa", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.End), "ef0634e1-0d3f-41f0-bff3-57bf4e2884e6"}, { new Terminator(DelimiterType.Semicolon), "d7c0ed7a-1000-4e5d-9348-1077a94bf3f4"},}, new Dictionary{ }, "d4b9257d-cc97-4168-9b85-787d8172ccaa") }, + { "46a2a510-ef6d-49d8-aac8-b3249b8a0f30", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Subprogram))}, }, "46a2a510-ef6d-49d8-aac8-b3249b8a0f30") }, + { "7fab4367-5d13-48d0-9402-2701a9f12ae1", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.VarDeclarations), "faad7a30-d814-4fd5-90e8-c086f9a0e648"}, { new Terminator(KeywordType.Var), "03ea86f5-4260-4120-901a-b29f96c9e9f2"},}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(0, new NonTerminator(NonTerminatorType.VarDeclarations))}, }, "7fab4367-5d13-48d0-9402-2701a9f12ae1") }, + { "ff0a937b-3380-47bd-90c1-6932016e5c1a", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ConstDeclaration), "93550301-a8ab-4493-8423-46cc83abe0cd"}, { Terminator.IdentifierTerminator, "25b20cba-1c07-4cbe-b5d0-b0d8c34bbca2"},}, new Dictionary{ }, "ff0a937b-3380-47bd-90c1-6932016e5c1a") }, + { "080fca0d-0105-4281-9d99-4876e0d13c4a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SubprogramHead))}, }, "080fca0d-0105-4281-9d99-4876e0d13c4a") }, + { "8b65673e-a3a5-4123-8ff9-75cea90a1e23", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "f038691f-4133-4728-bd63-eedbb65b0a7e"}, { new NonTerminator(NonTerminatorType.ParameterList), "f29e8573-114f-49a5-9d6b-6315292319b4"}, { new NonTerminator(NonTerminatorType.Parameter), "ab3d74e2-19c7-4f7e-8d3c-9826e996d18f"}, { new NonTerminator(NonTerminatorType.VarParameter), "a1cc7797-e56e-43e0-b3dd-dcb9ce0116cc"}, { new NonTerminator(NonTerminatorType.ValueParameter), "7007b3eb-8197-4235-a415-cb0afeb5e530"}, { new Terminator(KeywordType.Var), "a6f74335-800b-4ee9-bd3c-0ce9bcfc3612"}, { Terminator.IdentifierTerminator, "3725ab6a-0044-4165-85f8-852735c5eed3"},}, new Dictionary{ }, "8b65673e-a3a5-4123-8ff9-75cea90a1e23") }, + { "782b3e4a-b18e-42cc-a837-e39cb05c923c", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.Colon), "59527a1a-de12-484e-9461-0b5863383f5b"},}, new Dictionary{ }, "782b3e4a-b18e-42cc-a837-e39cb05c923c") }, + { "94dea7a4-91c7-4aee-810c-d714e7c94aac", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "c1dde178-9eec-47d8-8180-fc87cc1865dc"}, { new NonTerminator(NonTerminatorType.ParameterList), "77142180-a1da-40cd-b722-e9d2d01d1fa4"}, { new NonTerminator(NonTerminatorType.Parameter), "ab3d74e2-19c7-4f7e-8d3c-9826e996d18f"}, { new NonTerminator(NonTerminatorType.VarParameter), "a1cc7797-e56e-43e0-b3dd-dcb9ce0116cc"}, { new NonTerminator(NonTerminatorType.ValueParameter), "7007b3eb-8197-4235-a415-cb0afeb5e530"}, { new Terminator(KeywordType.Var), "a6f74335-800b-4ee9-bd3c-0ce9bcfc3612"}, { Terminator.IdentifierTerminator, "3725ab6a-0044-4165-85f8-852735c5eed3"},}, new Dictionary{ }, "94dea7a4-91c7-4aee-810c-d714e7c94aac") }, + { "bf18e59e-ede6-4df1-b6cc-b8f01e241d5a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(4, new NonTerminator(NonTerminatorType.VarDeclaration))}, }, "bf18e59e-ede6-4df1-b6cc-b8f01e241d5a") }, + { "a2bb433e-490b-421c-900c-9ee2bb1ba573", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdentifierList))}, }, "a2bb433e-490b-421c-900c-9ee2bb1ba573") }, + { "8ce41908-5fa9-4090-9f73-0619c5cdd916", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Period), "cf4d7c50-28fd-4021-8a19-ad8fa3f37c67"}, { Terminator.NumberTerminator, "1d59d28d-3de6-4b9b-aec2-b237c4a2e6dc"},}, new Dictionary{ }, "8ce41908-5fa9-4090-9f73-0619c5cdd916") }, + { "e3658ebd-2cd0-44b8-998c-026dd9283b29", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(5, new NonTerminator(NonTerminatorType.ConstDeclaration))}, }, "e3658ebd-2cd0-44b8-998c-026dd9283b29") }, + { "e2623b85-81c9-44d6-9563-4c8a0b65e302", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.Of), "1332454e-b3a5-4813-b6e5-e5f72f7304b5"},}, new Dictionary{ }, "e2623b85-81c9-44d6-9563-4c8a0b65e302") }, + { "c2bd4f6a-1204-4250-9472-219492cfb89b", new GeneratedTransformer(new Dictionary{ { Terminator.NumberTerminator, "cba2bd3d-a0e0-4d1d-9cf3-d7e7cc4c608d"},}, new Dictionary{ }, "c2bd4f6a-1204-4250-9472-219492cfb89b") }, + { "370fcba4-83a3-4921-b115-bb26e6871285", new GeneratedTransformer(new Dictionary{ { Terminator.NumberTerminator, "53aabf52-fdfd-4fa4-9450-bbf3ef645f23"},}, new Dictionary{ }, "370fcba4-83a3-4921-b115-bb26e6871285") }, + { "684a67d4-c18e-48e7-afc1-9a0a0d1e1752", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.StatementList))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.StatementList))}, }, "684a67d4-c18e-48e7-afc1-9a0a0d1e1752") }, + { "8f382f5b-6c98-4b81-b87f-de546d611e90", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Statement))}, }, "8f382f5b-6c98-4b81-b87f-de546d611e90") }, + { "e6cbc19e-7b86-4c78-9ece-4d6bcbfac85a", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.RelationOperator), "2fd865f8-145a-4a09-bc6a-f8e392402031"}, { new Terminator(OperatorType.Equal), "59e0b42f-0f19-4905-bda8-027e4043f4af"}, { new Terminator(OperatorType.NotEqual), "7863edae-4a97-4391-96b2-2e884ec9446a"}, { new Terminator(OperatorType.Less), "16951dba-a455-4455-ae09-e1f402e42c72"}, { new Terminator(OperatorType.LessEqual), "e510cf8d-4628-45cd-aea4-8b27b1e67c4a"}, { new Terminator(OperatorType.Greater), "59406bfc-b725-4683-80e7-445c998f005a"}, { new Terminator(OperatorType.GreaterEqual), "8f8ba332-6060-40ce-9e86-bdb7a7e3f793"}, { new NonTerminator(NonTerminatorType.AddOperator), "e31aba3d-0343-4f1d-a8f0-9230001b9231"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, }, "e6cbc19e-7b86-4c78-9ece-4d6bcbfac85a") }, + { "1122c8c0-4d87-47c1-9d0e-00be92c85d2b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "94df7fe4-5160-4cd6-b591-b6aed9f9680b"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "1122c8c0-4d87-47c1-9d0e-00be92c85d2b") }, + { "0ac68032-8218-4afe-a892-68fe4b01ea75", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "0ac68032-8218-4afe-a892-68fe4b01ea75") }, + { "8372929f-18a1-42eb-9c56-cdf6b496ab7f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "8372929f-18a1-42eb-9c56-cdf6b496ab7f") }, + { "5eb809a9-364a-4c59-b743-12bff178dcb4", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "5eb809a9-364a-4c59-b743-12bff178dcb4") }, + { "31c16865-7977-428f-b0d4-ae5d3ddaf083", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "01e94f98-621a-4e26-b0a8-6bac22d690e0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "31c16865-7977-428f-b0d4-ae5d3ddaf083") }, + { "7c517b7f-b3b9-449d-b2e2-4029db449b2b", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "6f1aca56-c74b-4803-98a4-2a38b4b14c09"}, { new NonTerminator(NonTerminatorType.IdVarPart), "37f959d9-f414-48e7-8128-443906eb3249"}, { new Terminator(DelimiterType.LeftSquareBracket), "52b6e6a9-452f-4f0e-96b1-6dc918e7e161"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "7c517b7f-b3b9-449d-b2e2-4029db449b2b") }, + { "8cfe4e5d-b0e0-435c-815e-28e5cdfa237b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "7222e8f0-4384-41a2-833b-2748ce5171c4"}, { Terminator.NumberTerminator, "8372929f-18a1-42eb-9c56-cdf6b496ab7f"}, { new NonTerminator(NonTerminatorType.Variable), "5eb809a9-364a-4c59-b743-12bff178dcb4"}, { new Terminator(DelimiterType.LeftParenthesis), "31c16865-7977-428f-b0d4-ae5d3ddaf083"}, { Terminator.IdentifierTerminator, "7c517b7f-b3b9-449d-b2e2-4029db449b2b"}, { new Terminator(KeywordType.Not), "8cfe4e5d-b0e0-435c-815e-28e5cdfa237b"}, { new Terminator(OperatorType.Minus), "40916387-5e18-4fcb-83c5-5f1c3d466e52"}, { new Terminator(OperatorType.Plus), "7f3f76ea-4668-486a-a787-4241ae9fff0f"}, { new Terminator(KeywordType.True), "d99f0be4-ea5d-4e5e-b704-9b538b366113"}, { new Terminator(KeywordType.False), "a319032c-8e25-4276-a480-396f2aeae3a6"},}, new Dictionary{ }, "8cfe4e5d-b0e0-435c-815e-28e5cdfa237b") }, + { "40916387-5e18-4fcb-83c5-5f1c3d466e52", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "d19d36d4-dbf0-46a2-9284-a3714ae698c0"}, { Terminator.NumberTerminator, "8372929f-18a1-42eb-9c56-cdf6b496ab7f"}, { new NonTerminator(NonTerminatorType.Variable), "5eb809a9-364a-4c59-b743-12bff178dcb4"}, { new Terminator(DelimiterType.LeftParenthesis), "31c16865-7977-428f-b0d4-ae5d3ddaf083"}, { Terminator.IdentifierTerminator, "7c517b7f-b3b9-449d-b2e2-4029db449b2b"}, { new Terminator(KeywordType.Not), "8cfe4e5d-b0e0-435c-815e-28e5cdfa237b"}, { new Terminator(OperatorType.Minus), "40916387-5e18-4fcb-83c5-5f1c3d466e52"}, { new Terminator(OperatorType.Plus), "7f3f76ea-4668-486a-a787-4241ae9fff0f"}, { new Terminator(KeywordType.True), "d99f0be4-ea5d-4e5e-b704-9b538b366113"}, { new Terminator(KeywordType.False), "a319032c-8e25-4276-a480-396f2aeae3a6"},}, new Dictionary{ }, "40916387-5e18-4fcb-83c5-5f1c3d466e52") }, + { "7f3f76ea-4668-486a-a787-4241ae9fff0f", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "30e8b3a8-57ed-4c58-a634-a666a35838f8"}, { Terminator.NumberTerminator, "8372929f-18a1-42eb-9c56-cdf6b496ab7f"}, { new NonTerminator(NonTerminatorType.Variable), "5eb809a9-364a-4c59-b743-12bff178dcb4"}, { new Terminator(DelimiterType.LeftParenthesis), "31c16865-7977-428f-b0d4-ae5d3ddaf083"}, { Terminator.IdentifierTerminator, "7c517b7f-b3b9-449d-b2e2-4029db449b2b"}, { new Terminator(KeywordType.Not), "8cfe4e5d-b0e0-435c-815e-28e5cdfa237b"}, { new Terminator(OperatorType.Minus), "40916387-5e18-4fcb-83c5-5f1c3d466e52"}, { new Terminator(OperatorType.Plus), "7f3f76ea-4668-486a-a787-4241ae9fff0f"}, { new Terminator(KeywordType.True), "d99f0be4-ea5d-4e5e-b704-9b538b366113"}, { new Terminator(KeywordType.False), "a319032c-8e25-4276-a480-396f2aeae3a6"},}, new Dictionary{ }, "7f3f76ea-4668-486a-a787-4241ae9fff0f") }, + { "d99f0be4-ea5d-4e5e-b704-9b538b366113", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "d99f0be4-ea5d-4e5e-b704-9b538b366113") }, + { "a319032c-8e25-4276-a480-396f2aeae3a6", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "a319032c-8e25-4276-a480-396f2aeae3a6") }, + { "5fc21166-21d1-429b-8e1a-99eaff04d94e", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Statement), "84cb6a9e-2732-4e1b-8b6d-9c06fb3ca7b4"}, { new NonTerminator(NonTerminatorType.Variable), "2003d515-90bb-4516-b5f4-2a4cedf0fad3"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "39958051-a99c-49c9-8d22-79d2456b0c78"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "f3c84ef3-69cf-4881-822f-d2a6f0a8f160"}, { new Terminator(KeywordType.If), "2436839b-20b6-4147-af90-9c877a35feea"}, { new Terminator(KeywordType.For), "6afb4fc5-5847-4ac1-8489-830a122891f2"}, { new Terminator(KeywordType.While), "3e60e08c-33fc-4674-961c-18019584f9ba"}, { Terminator.IdentifierTerminator, "24a23c8f-9000-443b-9fd0-cb6464a74efa"}, { new Terminator(KeywordType.Begin), "554d0078-799c-4218-9588-712cf3fe3c14"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "5fc21166-21d1-429b-8e1a-99eaff04d94e") }, + { "6e573b43-71e9-476b-b719-f38a9f200ede", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SimpleExpression), "6b1864a6-0e6d-4ead-8f5d-5d65a05384cb"}, { new NonTerminator(NonTerminatorType.Term), "2b50054b-9d22-4a3f-8301-d4ac1b214b4c"}, { new NonTerminator(NonTerminatorType.Factor), "d8983d6e-a324-42b1-abda-e5e9b48f6c68"}, { Terminator.NumberTerminator, "cab4c63c-f4c2-42a6-8d55-15ef272d21b0"}, { new NonTerminator(NonTerminatorType.Variable), "7a2443d4-1bf4-47e0-aa00-769764338863"}, { new Terminator(DelimiterType.LeftParenthesis), "23d5b6c0-049a-44cb-810b-a148cf517a6a"}, { Terminator.IdentifierTerminator, "64c0f4db-301a-4e69-b2ff-a804bfc7a354"}, { new Terminator(KeywordType.Not), "1472348b-7588-4000-892e-1b4c1c2898c5"}, { new Terminator(OperatorType.Minus), "7a0d66f9-433e-45cc-a555-5baffc6e4a77"}, { new Terminator(OperatorType.Plus), "abce178f-4211-4c54-9300-e03398fc4b96"}, { new Terminator(KeywordType.True), "535aa9c8-1930-4f35-8779-ea515e1f8ac6"}, { new Terminator(KeywordType.False), "761bbd44-be16-4366-be63-884e0dcee59e"},}, new Dictionary{ }, "6e573b43-71e9-476b-b719-f38a9f200ede") }, + { "59e0b42f-0f19-4905-bda8-027e4043f4af", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, }, "59e0b42f-0f19-4905-bda8-027e4043f4af") }, + { "7863edae-4a97-4391-96b2-2e884ec9446a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, }, "7863edae-4a97-4391-96b2-2e884ec9446a") }, + { "16951dba-a455-4455-ae09-e1f402e42c72", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, }, "16951dba-a455-4455-ae09-e1f402e42c72") }, + { "e510cf8d-4628-45cd-aea4-8b27b1e67c4a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, }, "e510cf8d-4628-45cd-aea4-8b27b1e67c4a") }, + { "59406bfc-b725-4683-80e7-445c998f005a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, }, "59406bfc-b725-4683-80e7-445c998f005a") }, + { "8f8ba332-6060-40ce-9e86-bdb7a7e3f793", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.RelationOperator))}, }, "8f8ba332-6060-40ce-9e86-bdb7a7e3f793") }, + { "455280c0-2150-41fd-be99-25f1605f5f2c", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "37371454-69a0-4bb3-b072-1bc567364aec"}, { new NonTerminator(NonTerminatorType.Factor), "15ec65fb-8226-4e0b-9eb4-cdcb95aa1bbf"}, { Terminator.NumberTerminator, "6ee62975-5e32-49ab-a007-124b7506c1dc"}, { new NonTerminator(NonTerminatorType.Variable), "bac3ff40-f069-4e49-b93e-49f067a6fffe"}, { new Terminator(DelimiterType.LeftParenthesis), "d33fe735-f418-4cd6-8430-d08c745447a6"}, { Terminator.IdentifierTerminator, "d7196c33-a63c-4a03-b4e4-c03bb0237729"}, { new Terminator(KeywordType.Not), "41932ced-262a-4a2d-8366-fba91da5a371"}, { new Terminator(OperatorType.Minus), "73ba7b97-7970-4d14-864f-82e10cee8622"}, { new Terminator(OperatorType.Plus), "340cb8fb-7fab-4d27-9190-b9d470c24232"}, { new Terminator(KeywordType.True), "a9a49511-4cbd-4f2d-9f8e-d7c14498737d"}, { new Terminator(KeywordType.False), "446ce9df-7ec8-4a19-b6fa-0379ddc65f9d"},}, new Dictionary{ }, "455280c0-2150-41fd-be99-25f1605f5f2c") }, + { "ff07e7b0-2318-47ab-b5b3-62d38c00a279", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, }, "ff07e7b0-2318-47ab-b5b3-62d38c00a279") }, + { "5df57e00-07dc-4d54-9421-a3d931a3df6f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, }, "5df57e00-07dc-4d54-9421-a3d931a3df6f") }, + { "81a1e4b9-aff3-4e40-8c7b-890e05350f4a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.AddOperator))}, }, "81a1e4b9-aff3-4e40-8c7b-890e05350f4a") }, + { "fe7976c2-8b96-4a3c-8d9c-d39df033d42f", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "2323e297-0ba6-44ce-a116-44cf128b60da"}, { Terminator.NumberTerminator, "6ee62975-5e32-49ab-a007-124b7506c1dc"}, { new NonTerminator(NonTerminatorType.Variable), "bac3ff40-f069-4e49-b93e-49f067a6fffe"}, { new Terminator(DelimiterType.LeftParenthesis), "d33fe735-f418-4cd6-8430-d08c745447a6"}, { Terminator.IdentifierTerminator, "d7196c33-a63c-4a03-b4e4-c03bb0237729"}, { new Terminator(KeywordType.Not), "41932ced-262a-4a2d-8366-fba91da5a371"}, { new Terminator(OperatorType.Minus), "73ba7b97-7970-4d14-864f-82e10cee8622"}, { new Terminator(OperatorType.Plus), "340cb8fb-7fab-4d27-9190-b9d470c24232"}, { new Terminator(KeywordType.True), "a9a49511-4cbd-4f2d-9f8e-d7c14498737d"}, { new Terminator(KeywordType.False), "446ce9df-7ec8-4a19-b6fa-0379ddc65f9d"},}, new Dictionary{ }, "fe7976c2-8b96-4a3c-8d9c-d39df033d42f") }, + { "f804a71b-b820-43aa-be44-f8a295bde558", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, }, "f804a71b-b820-43aa-be44-f8a295bde558") }, + { "8b737830-70f6-4bec-97a5-6296481bf768", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, }, "8b737830-70f6-4bec-97a5-6296481bf768") }, + { "3505d411-753d-4ad5-baa6-5ce42611bdf5", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, }, "3505d411-753d-4ad5-baa6-5ce42611bdf5") }, + { "12058fc7-adfa-4bfa-8590-10cae139c4ef", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, }, "12058fc7-adfa-4bfa-8590-10cae139c4ef") }, + { "43b7afac-75b0-4e50-94f1-52e653362a16", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { Terminator.NumberTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { Terminator.IdentifierTerminator, new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(DelimiterType.LeftParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.Not), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.True), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, { new Terminator(KeywordType.False), new ReduceInformation(1, new NonTerminator(NonTerminatorType.MultiplyOperator))}, }, "43b7afac-75b0-4e50-94f1-52e653362a16") }, + { "9ea9d11f-c1a3-4fc3-be39-28074fa32344", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "168bae91-f78b-49ea-8907-9d29c962343f"},}, new Dictionary{ }, "9ea9d11f-c1a3-4fc3-be39-28074fa32344") }, + { "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.RelationOperator), "22f51367-b481-4782-9757-0a8e8a79af93"}, { new Terminator(OperatorType.Equal), "59e0b42f-0f19-4905-bda8-027e4043f4af"}, { new Terminator(OperatorType.NotEqual), "7863edae-4a97-4391-96b2-2e884ec9446a"}, { new Terminator(OperatorType.Less), "16951dba-a455-4455-ae09-e1f402e42c72"}, { new Terminator(OperatorType.LessEqual), "e510cf8d-4628-45cd-aea4-8b27b1e67c4a"}, { new Terminator(OperatorType.Greater), "59406bfc-b725-4683-80e7-445c998f005a"}, { new Terminator(OperatorType.GreaterEqual), "8f8ba332-6060-40ce-9e86-bdb7a7e3f793"}, { new NonTerminator(NonTerminatorType.AddOperator), "8f2909ee-3fc4-4ae4-9d5d-e81b9d5b0989"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, }, "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c") }, + { "14e8d50f-f839-47bc-8625-00061a186a05", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "2601e0f6-f43b-4d6c-8e4d-e91a592d67b5"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "14e8d50f-f839-47bc-8625-00061a186a05") }, + { "a556177c-acc4-4abb-843b-1217bc959c0a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "a556177c-acc4-4abb-843b-1217bc959c0a") }, + { "3ea3c950-0614-4e77-875b-198db9b5dec1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "3ea3c950-0614-4e77-875b-198db9b5dec1") }, + { "25279cd9-10d3-491c-b22b-ab6d219987b1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "25279cd9-10d3-491c-b22b-ab6d219987b1") }, + { "34905681-5c09-48bb-98d9-c7d0f1220b9f", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "d0e6277a-b96b-4f3f-be22-2991c809852b"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "34905681-5c09-48bb-98d9-c7d0f1220b9f") }, + { "1afab765-abab-4ee5-8e81-afb4057ed142", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "86898790-5c7b-4d4b-895f-adfdc2f5926a"}, { new NonTerminator(NonTerminatorType.IdVarPart), "d9fb70ba-3f04-4fd3-a7be-f2d7f64b40fe"}, { new Terminator(DelimiterType.LeftSquareBracket), "a5abf3c5-3044-4350-ba90-8d4b3fce6f52"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "1afab765-abab-4ee5-8e81-afb4057ed142") }, + { "9c2adb6e-9a6a-4732-a2ec-db4f9110891b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "3d0615ec-68b6-4d5f-98f0-36c7c5b15ac4"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "9c2adb6e-9a6a-4732-a2ec-db4f9110891b") }, + { "c9c87e1a-2f2c-453e-978b-d36fb68ca681", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "7399ceb2-ea9f-4ea2-812d-b3d42b6466d0"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "c9c87e1a-2f2c-453e-978b-d36fb68ca681") }, + { "c9b6ac1b-3387-4e86-a381-f2142b65e4b4", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "f7b22a84-64db-4655-8c2d-e51593725b63"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "c9b6ac1b-3387-4e86-a381-f2142b65e4b4") }, + { "407254a3-f259-4d76-959f-cc762a30e5e7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "407254a3-f259-4d76-959f-cc762a30e5e7") }, + { "fbee4454-02b0-44fc-a152-e08a97231e3a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "fbee4454-02b0-44fc-a152-e08a97231e3a") }, + { "5b31c571-6115-461a-b87a-d13ed77489a6", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "867872bf-45ee-4d6b-9769-fd2b57eceba1"}, { new NonTerminator(NonTerminatorType.ExpressionList), "857ad6f5-4e80-4519-a022-19066c1d24cf"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "5b31c571-6115-461a-b87a-d13ed77489a6") }, + { "39fb0cb2-d4a7-496b-a31d-5819688d93e1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "39fb0cb2-d4a7-496b-a31d-5819688d93e1") }, + { "0135a0ef-9913-4d0c-af3c-542c2431e2a0", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "d6a9be9f-fda9-4c55-a106-80540580a3d5"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "0135a0ef-9913-4d0c-af3c-542c2431e2a0") }, + { "dfb5c168-e5b9-4805-b28f-e420d0629c18", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "dfb5c168-e5b9-4805-b28f-e420d0629c18") }, + { "1eb8a073-fb7d-4ee8-abfb-17c4c0640f6c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "1eb8a073-fb7d-4ee8-abfb-17c4c0640f6c") }, + { "c2070796-4057-4fdf-b63f-7b2a3fdf12b6", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "c2070796-4057-4fdf-b63f-7b2a3fdf12b6") }, + { "76b175a2-a316-4897-b378-efd7d8346267", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "a65c3d77-5617-4761-81a9-4c577341a439"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b87c5446-1019-4031-b302-7abb9764f456"}, { new NonTerminator(NonTerminatorType.Term), "9f627a23-8645-4cd3-a1e5-813cf0e39f5e"}, { new NonTerminator(NonTerminatorType.Factor), "277e1067-8bdd-4e98-b081-283debc883c7"}, { Terminator.NumberTerminator, "1c953f12-cf14-406e-903e-470824dc97ad"}, { new NonTerminator(NonTerminatorType.Variable), "d73b91e5-02cd-42df-a433-79911f49ccd3"}, { new Terminator(DelimiterType.LeftParenthesis), "48f64dba-33fb-4f85-831c-a4b339f7eaa9"}, { Terminator.IdentifierTerminator, "80ffb3c9-cb71-4997-919f-6dbec21ef615"}, { new Terminator(KeywordType.Not), "ba066289-25d2-4d2d-9fa4-cb70f146976f"}, { new Terminator(OperatorType.Minus), "da7f037a-28cb-4723-bfae-e492d20e6613"}, { new Terminator(OperatorType.Plus), "8236a0b9-fcba-4ed2-9896-c83039b99c76"}, { new Terminator(KeywordType.True), "c5c55305-06ae-4eb6-8dd0-066ab4045fcd"}, { new Terminator(KeywordType.False), "7c79955e-3e28-407b-9bef-fad899315e52"},}, new Dictionary{ }, "76b175a2-a316-4897-b378-efd7d8346267") }, + { "c3a7155c-462e-4f12-a238-df352baf278b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Statement), "d1977eb6-08aa-4a64-b5ac-749e2dd30a08"}, { new NonTerminator(NonTerminatorType.Variable), "ae30128e-efd3-4103-9828-59d8da47b869"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "cc93b19c-954a-4e6d-9ffe-b1d796b56b27"}, { new Terminator(KeywordType.If), "bd6a5146-d6d4-453b-9442-d2d146452e94"}, { new Terminator(KeywordType.For), "138ba7eb-e0e3-403c-a842-2268411e11cc"}, { new Terminator(KeywordType.While), "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad"}, { Terminator.IdentifierTerminator, "b128ff00-00cc-46f4-b962-7e7174f1fb28"}, { new Terminator(KeywordType.Begin), "ac1bf4c3-ab39-4ece-a684-e40886b7c49d"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "c3a7155c-462e-4f12-a238-df352baf278b") }, + { "262723e9-f656-4fa7-a18f-41562428e4c1", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SimpleExpression), "43fb9243-dc99-4eb1-883f-65c6186471ee"}, { new NonTerminator(NonTerminatorType.Term), "59b0e133-71b4-45a3-83c1-8971fe651bcc"}, { new NonTerminator(NonTerminatorType.Factor), "604834f5-b217-434f-9367-7bfed56ab9b0"}, { Terminator.NumberTerminator, "a10429b4-24eb-467f-a608-b98aa8db3e67"}, { new NonTerminator(NonTerminatorType.Variable), "fd00f009-580f-4160-ae7b-6beff969944f"}, { new Terminator(DelimiterType.LeftParenthesis), "2cb1384f-a831-4ccb-8764-eb3365de539f"}, { Terminator.IdentifierTerminator, "9a0f0758-e53a-4a96-9702-9c4220cbc1f0"}, { new Terminator(KeywordType.Not), "55680e38-d0da-441a-b95d-23649cea1617"}, { new Terminator(OperatorType.Minus), "75a3607c-680a-4a2f-9c66-bc05dff3c7f1"}, { new Terminator(OperatorType.Plus), "a21176fc-2cc4-42c8-b918-6ace257cad4d"}, { new Terminator(KeywordType.True), "216bfda7-db41-4a83-9aa9-49047e81ff99"}, { new Terminator(KeywordType.False), "1a83cf74-2f22-4578-bacb-ac3b3e307f30"},}, new Dictionary{ }, "262723e9-f656-4fa7-a18f-41562428e4c1") }, + { "7aa132fa-db77-4325-905c-f44864489918", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "2849ea39-bcb5-4c15-9f21-310c3c1db53e"}, { new NonTerminator(NonTerminatorType.Factor), "17ce7de7-ab8c-4389-a0a2-d215ebdc96b1"}, { Terminator.NumberTerminator, "2b65415f-fb75-427d-a310-39b44b8db03a"}, { new NonTerminator(NonTerminatorType.Variable), "80bf23b2-58db-4d1a-84d2-bec3e73c0429"}, { new Terminator(DelimiterType.LeftParenthesis), "1cd421b5-16d2-469d-bb62-1a97353ec366"}, { Terminator.IdentifierTerminator, "db36538c-6d08-4417-a589-ca40963ee1c5"}, { new Terminator(KeywordType.Not), "47a918c3-1ad6-4fb3-aa15-e10f85953c5d"}, { new Terminator(OperatorType.Minus), "4a9f4005-1b1b-445e-905a-389a24c88d05"}, { new Terminator(OperatorType.Plus), "d6df8a91-452b-46a5-b35e-18cb2be98261"}, { new Terminator(KeywordType.True), "c9085b14-74b4-4630-8f90-1009eb9f7674"}, { new Terminator(KeywordType.False), "44c59546-5b4e-48b3-a3eb-de499bb1a988"},}, new Dictionary{ }, "7aa132fa-db77-4325-905c-f44864489918") }, + { "1c13de51-4b5f-47e8-86e1-0179943b6887", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "8dbe4e2c-c11c-45c8-b074-53e60be3ea20"}, { Terminator.NumberTerminator, "2b65415f-fb75-427d-a310-39b44b8db03a"}, { new NonTerminator(NonTerminatorType.Variable), "80bf23b2-58db-4d1a-84d2-bec3e73c0429"}, { new Terminator(DelimiterType.LeftParenthesis), "1cd421b5-16d2-469d-bb62-1a97353ec366"}, { Terminator.IdentifierTerminator, "db36538c-6d08-4417-a589-ca40963ee1c5"}, { new Terminator(KeywordType.Not), "47a918c3-1ad6-4fb3-aa15-e10f85953c5d"}, { new Terminator(OperatorType.Minus), "4a9f4005-1b1b-445e-905a-389a24c88d05"}, { new Terminator(OperatorType.Plus), "d6df8a91-452b-46a5-b35e-18cb2be98261"}, { new Terminator(KeywordType.True), "c9085b14-74b4-4630-8f90-1009eb9f7674"}, { new Terminator(KeywordType.False), "44c59546-5b4e-48b3-a3eb-de499bb1a988"},}, new Dictionary{ }, "1c13de51-4b5f-47e8-86e1-0179943b6887") }, + { "ef761f6e-5731-4cc7-a0a5-db341f087d56", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "080c9bbf-6992-42eb-9283-477c62b29ed8"},}, new Dictionary{ }, "ef761f6e-5731-4cc7-a0a5-db341f087d56") }, + { "649ddb60-ee22-48b8-8ef2-b4968fd04ec2", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "f6eef27a-a544-438e-9401-ee1d329edfae"}, { new NonTerminator(NonTerminatorType.ExpressionList), "9ec9e564-451f-42b5-8167-b460d9f017e2"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "649ddb60-ee22-48b8-8ef2-b4968fd04ec2") }, + { "40cadde7-9695-4841-938d-a0be7f9de39c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "40cadde7-9695-4841-938d-a0be7f9de39c") }, + { "4526905d-bcf0-4fbc-8ca3-52cde02dfb30", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "0598be14-ca9b-4e4e-a8f0-fa2b4a328206"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "4526905d-bcf0-4fbc-8ca3-52cde02dfb30") }, + { "5ac6d830-5ebb-41ec-87f2-626df0b42f6a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "5ac6d830-5ebb-41ec-87f2-626df0b42f6a") }, + { "58a91787-22ce-4338-990f-f95dd112537d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "58a91787-22ce-4338-990f-f95dd112537d") }, + { "af0aa7a6-9012-4843-838d-d824103f506e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "af0aa7a6-9012-4843-838d-d824103f506e") }, + { "766f234b-2b99-4e74-8468-c9c095d55b70", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "39ddeae6-dd11-43a1-9fbc-e64452469d23"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "766f234b-2b99-4e74-8468-c9c095d55b70") }, + { "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ExpressionList))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ExpressionList))}, }, "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2") }, + { "2cb1744c-c440-4a4b-96d5-de8bf99406c5", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.RelationOperator), "70777a5f-d416-4536-a439-9f6a25b1e3b3"}, { new Terminator(OperatorType.Equal), "59e0b42f-0f19-4905-bda8-027e4043f4af"}, { new Terminator(OperatorType.NotEqual), "7863edae-4a97-4391-96b2-2e884ec9446a"}, { new Terminator(OperatorType.Less), "16951dba-a455-4455-ae09-e1f402e42c72"}, { new Terminator(OperatorType.LessEqual), "e510cf8d-4628-45cd-aea4-8b27b1e67c4a"}, { new Terminator(OperatorType.Greater), "59406bfc-b725-4683-80e7-445c998f005a"}, { new Terminator(OperatorType.GreaterEqual), "8f8ba332-6060-40ce-9e86-bdb7a7e3f793"}, { new NonTerminator(NonTerminatorType.AddOperator), "02ee4aa2-e583-4265-a92e-a32ddb443116"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, }, "2cb1744c-c440-4a4b-96d5-de8bf99406c5") }, + { "f995f955-70b5-42d4-8abd-c14d8abf1b85", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "47ffd406-53c9-4960-9673-b91d67c6b194"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "f995f955-70b5-42d4-8abd-c14d8abf1b85") }, + { "e5c504d5-3b0f-40f9-8667-5e2cb304f89b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "e5c504d5-3b0f-40f9-8667-5e2cb304f89b") }, + { "d0117e0b-f480-459d-8474-d2167983bc1a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "d0117e0b-f480-459d-8474-d2167983bc1a") }, + { "4b621297-900b-4d2b-a080-eb3b76f9622c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "4b621297-900b-4d2b-a080-eb3b76f9622c") }, + { "e696d593-3e5a-469f-ac63-2f4798ddd4c1", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "59618cd7-7879-4b9f-bc63-65bd9c76777b"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "e696d593-3e5a-469f-ac63-2f4798ddd4c1") }, + { "a7aa1b0d-692d-4711-9b1b-bf0beeff9348", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "9032e67e-801b-40b3-b9cb-11e1520e7541"}, { new NonTerminator(NonTerminatorType.IdVarPart), "04b72690-477c-4710-93d3-91c4bba6f269"}, { new Terminator(DelimiterType.LeftSquareBracket), "6c1237a0-4351-4409-93b8-bc3f71130644"},}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348") }, + { "9972f94a-15f5-4545-b21e-f6b80df89fc4", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "c14e7212-7c5d-4721-8bda-06258999dc3f"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "9972f94a-15f5-4545-b21e-f6b80df89fc4") }, + { "25ee3621-0f2e-400f-a56e-b58c6924b370", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "905f6f19-14dd-4f2e-9d43-6a20248a8b88"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "25ee3621-0f2e-400f-a56e-b58c6924b370") }, + { "c0e51999-5060-441b-b2df-88f948fae74d", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "78dc179a-8471-4472-ae09-e6d7aeaf2a4e"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "c0e51999-5060-441b-b2df-88f948fae74d") }, + { "0c8fe83a-34ff-44f6-80e5-e5bf7880e290", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "0c8fe83a-34ff-44f6-80e5-e5bf7880e290") }, + { "0b8cf87d-78e3-4c75-9f8f-075571e83bce", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "0b8cf87d-78e3-4c75-9f8f-075571e83bce") }, + { "cb29a8e8-f913-4340-b41e-f64c539267b0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ProcedureCall))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ProcedureCall))}, }, "cb29a8e8-f913-4340-b41e-f64c539267b0") }, + { "85e7e371-cbb3-4d90-aeb1-0e3e3c879ce0", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "98263477-27f9-44a7-a708-3203c0d5319c"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "85e7e371-cbb3-4d90-aeb1-0e3e3c879ce0") }, + { "c8c09e44-9689-4e17-a45f-d2479165b0d0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ExpressionList))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ExpressionList))}, }, "c8c09e44-9689-4e17-a45f-d2479165b0d0") }, + { "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.RelationOperator), "3b2d1116-a526-446a-84b9-4e201bee85f2"}, { new Terminator(OperatorType.Equal), "59e0b42f-0f19-4905-bda8-027e4043f4af"}, { new Terminator(OperatorType.NotEqual), "7863edae-4a97-4391-96b2-2e884ec9446a"}, { new Terminator(OperatorType.Less), "16951dba-a455-4455-ae09-e1f402e42c72"}, { new Terminator(OperatorType.LessEqual), "e510cf8d-4628-45cd-aea4-8b27b1e67c4a"}, { new Terminator(OperatorType.Greater), "59406bfc-b725-4683-80e7-445c998f005a"}, { new Terminator(OperatorType.GreaterEqual), "8f8ba332-6060-40ce-9e86-bdb7a7e3f793"}, { new NonTerminator(NonTerminatorType.AddOperator), "f5f86e69-f2ba-4d6e-89f6-6ed01a7e785c"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, }, "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c") }, + { "f37e5e71-a874-42d7-a89e-3e84a834a262", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "8a192745-a8a6-426a-8612-92e78beda675"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "f37e5e71-a874-42d7-a89e-3e84a834a262") }, + { "25602278-82f6-44fe-b07b-29c2e2980630", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "25602278-82f6-44fe-b07b-29c2e2980630") }, + { "575cc8d6-a444-4bd3-a19b-fcaebf49abae", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "575cc8d6-a444-4bd3-a19b-fcaebf49abae") }, + { "17c015c2-df70-4687-a339-5f3814f0b949", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "17c015c2-df70-4687-a339-5f3814f0b949") }, + { "43bdb409-df12-4668-897e-2ce4b1c7bf34", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "b7ee5e7b-0ef6-4d00-9e3a-f16c122a24bc"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "43bdb409-df12-4668-897e-2ce4b1c7bf34") }, + { "fc464fa7-cb96-4341-85f1-fc41468c1e4c", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "164fcaa3-90eb-4672-bfe2-7aa5309e4bd1"}, { new NonTerminator(NonTerminatorType.IdVarPart), "62d98822-e412-4c61-91ef-6811955d1f78"}, { new Terminator(DelimiterType.LeftSquareBracket), "f6b5d426-4680-4eb7-a920-9416e4fb0f07"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "fc464fa7-cb96-4341-85f1-fc41468c1e4c") }, + { "39095386-9038-4dcc-b6f4-7042fbaf2194", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "4f70570d-fb17-4089-b22c-e253a429aa92"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "39095386-9038-4dcc-b6f4-7042fbaf2194") }, + { "1fa9a151-e468-4fe1-b3e2-c0282840644e", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "7f5a2bec-9062-4ab0-b7db-9fd6dabb3cfe"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "1fa9a151-e468-4fe1-b3e2-c0282840644e") }, + { "e129dcf3-7aab-403a-8dae-2f11d720a236", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "81129e0f-0d42-4880-ae52-eb4cda31f3d9"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "e129dcf3-7aab-403a-8dae-2f11d720a236") }, + { "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21") }, + { "7c46e9b6-1238-402a-974c-808571dfa726", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "7c46e9b6-1238-402a-974c-808571dfa726") }, + { "ef0634e1-0d3f-41f0-bff3-57bf4e2884e6", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.CompoundStatement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.CompoundStatement))}, }, "ef0634e1-0d3f-41f0-bff3-57bf4e2884e6") }, + { "faad7a30-d814-4fd5-90e8-c086f9a0e648", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.CompoundStatement), "9a78ea77-a497-4811-93cb-953b89acbff6"}, { new Terminator(KeywordType.Begin), "d2d51360-7c78-47bf-9b9c-bd2f8ebcbe36"},}, new Dictionary{ }, "faad7a30-d814-4fd5-90e8-c086f9a0e648") }, + { "03ea86f5-4260-4120-901a-b29f96c9e9f2", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.VarDeclaration), "0d0cb9c4-d375-4849-8f3e-dd1c10443eaf"}, { Terminator.IdentifierTerminator, "280b6b74-5a4e-4937-b054-e8f1b11b44a9"},}, new Dictionary{ }, "03ea86f5-4260-4120-901a-b29f96c9e9f2") }, + { "93550301-a8ab-4493-8423-46cc83abe0cd", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.Semicolon), "02599944-c7af-4ba8-b425-3a24ad54e246"},}, new Dictionary{ }, "93550301-a8ab-4493-8423-46cc83abe0cd") }, + { "f038691f-4133-4728-bd63-eedbb65b0a7e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.FormalParameter))}, }, "f038691f-4133-4728-bd63-eedbb65b0a7e") }, + { "f29e8573-114f-49a5-9d6b-6315292319b4", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "1379f589-cdbc-40af-8d00-35d0cabc32a5"}, { new Terminator(DelimiterType.Semicolon), "c3d72a2d-8b54-494c-a717-851cb19bd26b"},}, new Dictionary{ }, "f29e8573-114f-49a5-9d6b-6315292319b4") }, + { "ab3d74e2-19c7-4f7e-8d3c-9826e996d18f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ParameterList))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ParameterList))}, }, "ab3d74e2-19c7-4f7e-8d3c-9826e996d18f") }, + { "a1cc7797-e56e-43e0-b3dd-dcb9ce0116cc", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Parameter))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Parameter))}, }, "a1cc7797-e56e-43e0-b3dd-dcb9ce0116cc") }, + { "7007b3eb-8197-4235-a415-cb0afeb5e530", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Parameter))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Parameter))}, }, "7007b3eb-8197-4235-a415-cb0afeb5e530") }, + { "a6f74335-800b-4ee9-bd3c-0ce9bcfc3612", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ValueParameter), "f98ee752-f401-4e1b-9e8e-957adc9790aa"}, { Terminator.IdentifierTerminator, "3725ab6a-0044-4165-85f8-852735c5eed3"},}, new Dictionary{ }, "a6f74335-800b-4ee9-bd3c-0ce9bcfc3612") }, + { "3725ab6a-0044-4165-85f8-852735c5eed3", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.IdentifierList), "5bc910a4-45f8-4ad9-b963-d37940c5cff1"}, { new Terminator(DelimiterType.Comma), "5c435b00-58fa-424f-8d80-44581d6495d4"}, { new Terminator(DelimiterType.Colon), "f364b470-5153-4353-abce-800b8bb3b8cf"},}, new Dictionary{ }, "3725ab6a-0044-4165-85f8-852735c5eed3") }, + { "59527a1a-de12-484e-9461-0b5863383f5b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.BasicType), "cd649cdd-8ef7-457e-be13-7f701e3a0f47"}, { new Terminator(KeywordType.Integer), "53fb2178-3ce3-41bf-b111-74899ad57bab"}, { new Terminator(KeywordType.Real), "f0bab41c-04a7-4c56-b111-ef249f8f888c"}, { new Terminator(KeywordType.Boolean), "ce45f10b-d787-4ea7-9a1b-be114506cc7b"}, { new Terminator(KeywordType.Character), "687ec48b-b819-4790-a279-957de0b38494"},}, new Dictionary{ }, "59527a1a-de12-484e-9461-0b5863383f5b") }, + { "c1dde178-9eec-47d8-8180-fc87cc1865dc", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Colon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.FormalParameter))}, }, "c1dde178-9eec-47d8-8180-fc87cc1865dc") }, + { "77142180-a1da-40cd-b722-e9d2d01d1fa4", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "061214f5-f509-4581-becb-61ff1ca50f83"}, { new Terminator(DelimiterType.Semicolon), "c3d72a2d-8b54-494c-a717-851cb19bd26b"},}, new Dictionary{ }, "77142180-a1da-40cd-b722-e9d2d01d1fa4") }, + { "cf4d7c50-28fd-4021-8a19-ad8fa3f37c67", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "71a04de2-97f3-4363-9ad0-1637eb4a5fcf"}, { new Terminator(DelimiterType.Comma), "c2bd4f6a-1204-4250-9472-219492cfb89b"},}, new Dictionary{ }, "cf4d7c50-28fd-4021-8a19-ad8fa3f37c67") }, + { "1332454e-b3a5-4813-b6e5-e5f72f7304b5", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.BasicType), "63584f3e-27ad-4ea9-b9ef-318d82688721"}, { new Terminator(KeywordType.Integer), "569fea77-5df5-4718-a037-ebf833537bf1"}, { new Terminator(KeywordType.Real), "cab00cd6-e738-4376-b34c-43ed1332a950"}, { new Terminator(KeywordType.Boolean), "14f66661-e8a9-45fe-8089-23d0b7358194"}, { new Terminator(KeywordType.Character), "a8d781f8-e7f2-4d98-9b0d-38ae3572acb4"},}, new Dictionary{ }, "1332454e-b3a5-4813-b6e5-e5f72f7304b5") }, + { "cba2bd3d-a0e0-4d1d-9cf3-d7e7cc4c608d", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.DoubleDots), "a8b5942a-ccf0-47a1-ab95-aa537e18f756"},}, new Dictionary{ }, "cba2bd3d-a0e0-4d1d-9cf3-d7e7cc4c608d") }, + { "53aabf52-fdfd-4fa4-9450-bbf3ef645f23", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Period))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Period))}, }, "53aabf52-fdfd-4fa4-9450-bbf3ef645f23") }, + { "2fd865f8-145a-4a09-bc6a-f8e392402031", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SimpleExpression), "852581dd-146e-47ab-8131-d60341bc30d0"}, { new NonTerminator(NonTerminatorType.Term), "b14b62af-065d-46c9-83a5-5e219aa5601f"}, { new NonTerminator(NonTerminatorType.Factor), "cb214466-4f8c-4be6-8c5a-aee7453b58fc"}, { Terminator.NumberTerminator, "2b088aca-1f66-4735-b43b-647ff6a817d6"}, { new NonTerminator(NonTerminatorType.Variable), "54dd46eb-09e8-4045-bfb0-72a0ea4d7fae"}, { new Terminator(DelimiterType.LeftParenthesis), "d558e501-5024-4375-a3d0-1120f9e59757"}, { Terminator.IdentifierTerminator, "19aac92d-1326-45bb-9cde-26c15dfeb3f9"}, { new Terminator(KeywordType.Not), "e2e34c26-1bd4-4a5d-b527-d0f0decad4c8"}, { new Terminator(OperatorType.Minus), "a3509be7-9dc3-4f48-8d60-ec0e43bc2a6a"}, { new Terminator(OperatorType.Plus), "f0af15b7-edf7-40bc-a9ab-3e992e2d6e07"}, { new Terminator(KeywordType.True), "56c6a91a-0bd1-4c5f-b613-af29bc731cf9"}, { new Terminator(KeywordType.False), "0a1f52df-4d6e-431d-8333-cfc432ac9896"},}, new Dictionary{ }, "2fd865f8-145a-4a09-bc6a-f8e392402031") }, + { "e31aba3d-0343-4f1d-a8f0-9230001b9231", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "aff24bec-adef-4a43-8c74-8f5841e96af0"}, { new NonTerminator(NonTerminatorType.Factor), "0ac68032-8218-4afe-a892-68fe4b01ea75"}, { Terminator.NumberTerminator, "8372929f-18a1-42eb-9c56-cdf6b496ab7f"}, { new NonTerminator(NonTerminatorType.Variable), "5eb809a9-364a-4c59-b743-12bff178dcb4"}, { new Terminator(DelimiterType.LeftParenthesis), "31c16865-7977-428f-b0d4-ae5d3ddaf083"}, { Terminator.IdentifierTerminator, "7c517b7f-b3b9-449d-b2e2-4029db449b2b"}, { new Terminator(KeywordType.Not), "8cfe4e5d-b0e0-435c-815e-28e5cdfa237b"}, { new Terminator(OperatorType.Minus), "40916387-5e18-4fcb-83c5-5f1c3d466e52"}, { new Terminator(OperatorType.Plus), "7f3f76ea-4668-486a-a787-4241ae9fff0f"}, { new Terminator(KeywordType.True), "d99f0be4-ea5d-4e5e-b704-9b538b366113"}, { new Terminator(KeywordType.False), "a319032c-8e25-4276-a480-396f2aeae3a6"},}, new Dictionary{ }, "e31aba3d-0343-4f1d-a8f0-9230001b9231") }, + { "94df7fe4-5160-4cd6-b591-b6aed9f9680b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "7e9d877a-b291-44a7-818b-55eee3312aed"}, { Terminator.NumberTerminator, "8372929f-18a1-42eb-9c56-cdf6b496ab7f"}, { new NonTerminator(NonTerminatorType.Variable), "5eb809a9-364a-4c59-b743-12bff178dcb4"}, { new Terminator(DelimiterType.LeftParenthesis), "31c16865-7977-428f-b0d4-ae5d3ddaf083"}, { Terminator.IdentifierTerminator, "7c517b7f-b3b9-449d-b2e2-4029db449b2b"}, { new Terminator(KeywordType.Not), "8cfe4e5d-b0e0-435c-815e-28e5cdfa237b"}, { new Terminator(OperatorType.Minus), "40916387-5e18-4fcb-83c5-5f1c3d466e52"}, { new Terminator(OperatorType.Plus), "7f3f76ea-4668-486a-a787-4241ae9fff0f"}, { new Terminator(KeywordType.True), "d99f0be4-ea5d-4e5e-b704-9b538b366113"}, { new Terminator(KeywordType.False), "a319032c-8e25-4276-a480-396f2aeae3a6"},}, new Dictionary{ }, "94df7fe4-5160-4cd6-b591-b6aed9f9680b") }, + { "01e94f98-621a-4e26-b0a8-6bac22d690e0", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "96892e49-473e-478e-9fb1-00e9821e5c49"},}, new Dictionary{ }, "01e94f98-621a-4e26-b0a8-6bac22d690e0") }, + { "6f1aca56-c74b-4803-98a4-2a38b4b14c09", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "c79358b6-9450-4cc2-8884-c0a980afe48d"}, { new NonTerminator(NonTerminatorType.ExpressionList), "ae02945c-d62c-404c-9543-9f3a6f983471"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "6f1aca56-c74b-4803-98a4-2a38b4b14c09") }, + { "37f959d9-f414-48e7-8128-443906eb3249", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "37f959d9-f414-48e7-8128-443906eb3249") }, + { "52b6e6a9-452f-4f0e-96b1-6dc918e7e161", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "9b836f90-31a9-4f71-8e88-5eda74534766"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "52b6e6a9-452f-4f0e-96b1-6dc918e7e161") }, + { "7222e8f0-4384-41a2-833b-2748ce5171c4", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "7222e8f0-4384-41a2-833b-2748ce5171c4") }, + { "d19d36d4-dbf0-46a2-9284-a3714ae698c0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "d19d36d4-dbf0-46a2-9284-a3714ae698c0") }, + { "30e8b3a8-57ed-4c58-a634-a666a35838f8", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "30e8b3a8-57ed-4c58-a634-a666a35838f8") }, + { "84cb6a9e-2732-4e1b-8b6d-9c06fb3ca7b4", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ElsePart), "133abdc1-d6c9-46d6-9e3b-ca7b3ce3a4fb"}, { new Terminator(KeywordType.Else), "7e653eb8-6970-4f0d-8a9e-eba566ae8058"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ElsePart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ElsePart))}, }, "84cb6a9e-2732-4e1b-8b6d-9c06fb3ca7b4") }, + { "2003d515-90bb-4516-b5f4-2a4cedf0fad3", new GeneratedTransformer(new Dictionary{ { new Terminator(OperatorType.Assign), "f30c5737-c53a-4cb4-9dde-bbfe4d10865a"},}, new Dictionary{ }, "2003d515-90bb-4516-b5f4-2a4cedf0fad3") }, + { "39958051-a99c-49c9-8d22-79d2456b0c78", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, }, "39958051-a99c-49c9-8d22-79d2456b0c78") }, + { "f3c84ef3-69cf-4881-822f-d2a6f0a8f160", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Statement))}, }, "f3c84ef3-69cf-4881-822f-d2a6f0a8f160") }, + { "2436839b-20b6-4147-af90-9c877a35feea", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "6c6783c3-aed7-4475-95d5-49e9c8c81e7f"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "4dde76cc-98f5-4ad2-b620-4bf0784bdfc2"}, { new NonTerminator(NonTerminatorType.Term), "2231c4a1-166c-4a9d-a192-0a6f61c69e0a"}, { new NonTerminator(NonTerminatorType.Factor), "15ec65fb-8226-4e0b-9eb4-cdcb95aa1bbf"}, { Terminator.NumberTerminator, "6ee62975-5e32-49ab-a007-124b7506c1dc"}, { new NonTerminator(NonTerminatorType.Variable), "bac3ff40-f069-4e49-b93e-49f067a6fffe"}, { new Terminator(DelimiterType.LeftParenthesis), "d33fe735-f418-4cd6-8430-d08c745447a6"}, { Terminator.IdentifierTerminator, "d7196c33-a63c-4a03-b4e4-c03bb0237729"}, { new Terminator(KeywordType.Not), "41932ced-262a-4a2d-8366-fba91da5a371"}, { new Terminator(OperatorType.Minus), "73ba7b97-7970-4d14-864f-82e10cee8622"}, { new Terminator(OperatorType.Plus), "340cb8fb-7fab-4d27-9190-b9d470c24232"}, { new Terminator(KeywordType.True), "a9a49511-4cbd-4f2d-9f8e-d7c14498737d"}, { new Terminator(KeywordType.False), "446ce9df-7ec8-4a19-b6fa-0379ddc65f9d"},}, new Dictionary{ }, "2436839b-20b6-4147-af90-9c877a35feea") }, + { "6afb4fc5-5847-4ac1-8489-830a122891f2", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "21426d69-e56d-4439-83bb-e69dcaffad37"},}, new Dictionary{ }, "6afb4fc5-5847-4ac1-8489-830a122891f2") }, + { "3e60e08c-33fc-4674-961c-18019584f9ba", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "94f46443-712c-4c41-9e5e-6cf4b560be22"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "605e6610-c7fd-4688-914d-554d4e1f0467"}, { new NonTerminator(NonTerminatorType.Term), "ecf78c42-792d-4d48-8f88-e1cd8e101dd0"}, { new NonTerminator(NonTerminatorType.Factor), "17ce7de7-ab8c-4389-a0a2-d215ebdc96b1"}, { Terminator.NumberTerminator, "2b65415f-fb75-427d-a310-39b44b8db03a"}, { new NonTerminator(NonTerminatorType.Variable), "80bf23b2-58db-4d1a-84d2-bec3e73c0429"}, { new Terminator(DelimiterType.LeftParenthesis), "1cd421b5-16d2-469d-bb62-1a97353ec366"}, { Terminator.IdentifierTerminator, "db36538c-6d08-4417-a589-ca40963ee1c5"}, { new Terminator(KeywordType.Not), "47a918c3-1ad6-4fb3-aa15-e10f85953c5d"}, { new Terminator(OperatorType.Minus), "4a9f4005-1b1b-445e-905a-389a24c88d05"}, { new Terminator(OperatorType.Plus), "d6df8a91-452b-46a5-b35e-18cb2be98261"}, { new Terminator(KeywordType.True), "c9085b14-74b4-4630-8f90-1009eb9f7674"}, { new Terminator(KeywordType.False), "44c59546-5b4e-48b3-a3eb-de499bb1a988"},}, new Dictionary{ }, "3e60e08c-33fc-4674-961c-18019584f9ba") }, + { "24a23c8f-9000-443b-9fd0-cb6464a74efa", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.IdVarPart), "cb2faf98-22c9-41de-9363-062d1cd8b143"}, { new Terminator(DelimiterType.LeftSquareBracket), "1d4b60ea-bd48-4214-88b6-e64152da03fa"}, { new Terminator(DelimiterType.LeftParenthesis), "cad891ad-68c5-4680-bd73-dbb28cb1d111"},}, new Dictionary{ { new Terminator(OperatorType.Assign), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ProcedureCall))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ProcedureCall))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.ProcedureCall))}, }, "24a23c8f-9000-443b-9fd0-cb6464a74efa") }, + { "554d0078-799c-4218-9588-712cf3fe3c14", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.StatementList), "7a572a21-cc15-47b2-820a-ce3923e0e0d6"}, { new NonTerminator(NonTerminatorType.Statement), "f77dde55-48b4-4353-a3c3-37677c20bd47"}, { new NonTerminator(NonTerminatorType.Variable), "ae30128e-efd3-4103-9828-59d8da47b869"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "cc93b19c-954a-4e6d-9ffe-b1d796b56b27"}, { new Terminator(KeywordType.If), "bd6a5146-d6d4-453b-9442-d2d146452e94"}, { new Terminator(KeywordType.For), "138ba7eb-e0e3-403c-a842-2268411e11cc"}, { new Terminator(KeywordType.While), "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad"}, { Terminator.IdentifierTerminator, "b128ff00-00cc-46f4-b962-7e7174f1fb28"}, { new Terminator(KeywordType.Begin), "ac1bf4c3-ab39-4ece-a684-e40886b7c49d"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "554d0078-799c-4218-9588-712cf3fe3c14") }, + { "6b1864a6-0e6d-4ead-8f5d-5d65a05384cb", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.AddOperator), "a0bbf310-e7e2-42a3-813b-d06c31fdb7c3"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, }, "6b1864a6-0e6d-4ead-8f5d-5d65a05384cb") }, + { "2b50054b-9d22-4a3f-8301-d4ac1b214b4c", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "813f9fbb-0bdb-4a1d-b917-636d300ada96"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "2b50054b-9d22-4a3f-8301-d4ac1b214b4c") }, + { "d8983d6e-a324-42b1-abda-e5e9b48f6c68", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "d8983d6e-a324-42b1-abda-e5e9b48f6c68") }, + { "cab4c63c-f4c2-42a6-8d55-15ef272d21b0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "cab4c63c-f4c2-42a6-8d55-15ef272d21b0") }, + { "7a2443d4-1bf4-47e0-aa00-769764338863", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "7a2443d4-1bf4-47e0-aa00-769764338863") }, + { "23d5b6c0-049a-44cb-810b-a148cf517a6a", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "85faa6ce-d0e2-4fc6-afe2-f2f763e6a48a"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "23d5b6c0-049a-44cb-810b-a148cf517a6a") }, + { "64c0f4db-301a-4e69-b2ff-a804bfc7a354", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "88fdcea8-031a-4add-aa35-1245f70dc560"}, { new NonTerminator(NonTerminatorType.IdVarPart), "ac89b2d3-62ab-4724-adf5-eab3759cc1bf"}, { new Terminator(DelimiterType.LeftSquareBracket), "6506a140-e53f-4029-87c7-1364f07abb74"},}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "64c0f4db-301a-4e69-b2ff-a804bfc7a354") }, + { "1472348b-7588-4000-892e-1b4c1c2898c5", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "bc474ec4-5cf4-4447-88b0-7d7f6c11f118"}, { Terminator.NumberTerminator, "cab4c63c-f4c2-42a6-8d55-15ef272d21b0"}, { new NonTerminator(NonTerminatorType.Variable), "7a2443d4-1bf4-47e0-aa00-769764338863"}, { new Terminator(DelimiterType.LeftParenthesis), "23d5b6c0-049a-44cb-810b-a148cf517a6a"}, { Terminator.IdentifierTerminator, "64c0f4db-301a-4e69-b2ff-a804bfc7a354"}, { new Terminator(KeywordType.Not), "1472348b-7588-4000-892e-1b4c1c2898c5"}, { new Terminator(OperatorType.Minus), "7a0d66f9-433e-45cc-a555-5baffc6e4a77"}, { new Terminator(OperatorType.Plus), "abce178f-4211-4c54-9300-e03398fc4b96"}, { new Terminator(KeywordType.True), "535aa9c8-1930-4f35-8779-ea515e1f8ac6"}, { new Terminator(KeywordType.False), "761bbd44-be16-4366-be63-884e0dcee59e"},}, new Dictionary{ }, "1472348b-7588-4000-892e-1b4c1c2898c5") }, + { "7a0d66f9-433e-45cc-a555-5baffc6e4a77", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "7d5c5d91-b1f5-4ca8-afef-981d103924ff"}, { Terminator.NumberTerminator, "cab4c63c-f4c2-42a6-8d55-15ef272d21b0"}, { new NonTerminator(NonTerminatorType.Variable), "7a2443d4-1bf4-47e0-aa00-769764338863"}, { new Terminator(DelimiterType.LeftParenthesis), "23d5b6c0-049a-44cb-810b-a148cf517a6a"}, { Terminator.IdentifierTerminator, "64c0f4db-301a-4e69-b2ff-a804bfc7a354"}, { new Terminator(KeywordType.Not), "1472348b-7588-4000-892e-1b4c1c2898c5"}, { new Terminator(OperatorType.Minus), "7a0d66f9-433e-45cc-a555-5baffc6e4a77"}, { new Terminator(OperatorType.Plus), "abce178f-4211-4c54-9300-e03398fc4b96"}, { new Terminator(KeywordType.True), "535aa9c8-1930-4f35-8779-ea515e1f8ac6"}, { new Terminator(KeywordType.False), "761bbd44-be16-4366-be63-884e0dcee59e"},}, new Dictionary{ }, "7a0d66f9-433e-45cc-a555-5baffc6e4a77") }, + { "abce178f-4211-4c54-9300-e03398fc4b96", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "abd5dbd2-4931-438f-9b63-1f3f4ccf034f"}, { Terminator.NumberTerminator, "cab4c63c-f4c2-42a6-8d55-15ef272d21b0"}, { new NonTerminator(NonTerminatorType.Variable), "7a2443d4-1bf4-47e0-aa00-769764338863"}, { new Terminator(DelimiterType.LeftParenthesis), "23d5b6c0-049a-44cb-810b-a148cf517a6a"}, { Terminator.IdentifierTerminator, "64c0f4db-301a-4e69-b2ff-a804bfc7a354"}, { new Terminator(KeywordType.Not), "1472348b-7588-4000-892e-1b4c1c2898c5"}, { new Terminator(OperatorType.Minus), "7a0d66f9-433e-45cc-a555-5baffc6e4a77"}, { new Terminator(OperatorType.Plus), "abce178f-4211-4c54-9300-e03398fc4b96"}, { new Terminator(KeywordType.True), "535aa9c8-1930-4f35-8779-ea515e1f8ac6"}, { new Terminator(KeywordType.False), "761bbd44-be16-4366-be63-884e0dcee59e"},}, new Dictionary{ }, "abce178f-4211-4c54-9300-e03398fc4b96") }, + { "535aa9c8-1930-4f35-8779-ea515e1f8ac6", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "535aa9c8-1930-4f35-8779-ea515e1f8ac6") }, + { "761bbd44-be16-4366-be63-884e0dcee59e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "761bbd44-be16-4366-be63-884e0dcee59e") }, + { "37371454-69a0-4bb3-b072-1bc567364aec", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "fe7976c2-8b96-4a3c-8d9c-d39df033d42f"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "37371454-69a0-4bb3-b072-1bc567364aec") }, + { "2323e297-0ba6-44ce-a116-44cf128b60da", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "2323e297-0ba6-44ce-a116-44cf128b60da") }, + { "168bae91-f78b-49ea-8907-9d29c962343f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "168bae91-f78b-49ea-8907-9d29c962343f") }, + { "22f51367-b481-4782-9757-0a8e8a79af93", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SimpleExpression), "df00649b-8c0e-4f9d-abf4-0e9c682b9a20"}, { new NonTerminator(NonTerminatorType.Term), "9bf6096a-4090-46e0-9c21-2f91bbbd84a8"}, { new NonTerminator(NonTerminatorType.Factor), "3f40e54a-b21e-48fe-b0b5-d57112cf5d6d"}, { Terminator.NumberTerminator, "7391be4b-1fb0-46de-bf0f-bbd6f4ac3049"}, { new NonTerminator(NonTerminatorType.Variable), "051e59bb-12b5-4040-a8ed-e3d6deabeb5e"}, { new Terminator(DelimiterType.LeftParenthesis), "acf16c49-de5a-497f-bc11-fefdcf938c88"}, { Terminator.IdentifierTerminator, "25e4d48e-dd03-4e03-9a71-5577abba56e6"}, { new Terminator(KeywordType.Not), "4590ba99-bea5-4252-9711-968ce1ba80a8"}, { new Terminator(OperatorType.Minus), "4518e39d-ab76-43b2-976b-ada9559918e6"}, { new Terminator(OperatorType.Plus), "b6e23807-1de0-44f0-a845-a82038db0c6e"}, { new Terminator(KeywordType.True), "23140283-9c44-4e07-811e-014f70593d7d"}, { new Terminator(KeywordType.False), "dc7fb2dd-cdc3-4592-8191-c7e2732548d1"},}, new Dictionary{ }, "22f51367-b481-4782-9757-0a8e8a79af93") }, + { "8f2909ee-3fc4-4ae4-9d5d-e81b9d5b0989", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "e0b97216-1322-402d-8421-5d4dd2e6c8c7"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "8f2909ee-3fc4-4ae4-9d5d-e81b9d5b0989") }, + { "2601e0f6-f43b-4d6c-8e4d-e91a592d67b5", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "52b0cd30-c38e-4604-bf0b-7b440312308b"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "2601e0f6-f43b-4d6c-8e4d-e91a592d67b5") }, + { "d0e6277a-b96b-4f3f-be22-2991c809852b", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "a6afe019-2353-491f-8e7e-e74ec4f9060a"},}, new Dictionary{ }, "d0e6277a-b96b-4f3f-be22-2991c809852b") }, + { "86898790-5c7b-4d4b-895f-adfdc2f5926a", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "b3131ead-9c46-4c49-a007-20edab8d6b08"}, { new NonTerminator(NonTerminatorType.ExpressionList), "a64e80cd-c766-4a67-88b5-fb4ff74830bb"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "86898790-5c7b-4d4b-895f-adfdc2f5926a") }, + { "d9fb70ba-3f04-4fd3-a7be-f2d7f64b40fe", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "d9fb70ba-3f04-4fd3-a7be-f2d7f64b40fe") }, + { "a5abf3c5-3044-4350-ba90-8d4b3fce6f52", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "15d5123c-3907-4d3e-96bd-8f5a6658a742"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "a5abf3c5-3044-4350-ba90-8d4b3fce6f52") }, + { "3d0615ec-68b6-4d5f-98f0-36c7c5b15ac4", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "3d0615ec-68b6-4d5f-98f0-36c7c5b15ac4") }, + { "7399ceb2-ea9f-4ea2-812d-b3d42b6466d0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "7399ceb2-ea9f-4ea2-812d-b3d42b6466d0") }, + { "f7b22a84-64db-4655-8c2d-e51593725b63", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "f7b22a84-64db-4655-8c2d-e51593725b63") }, + { "867872bf-45ee-4d6b-9769-fd2b57eceba1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "867872bf-45ee-4d6b-9769-fd2b57eceba1") }, + { "857ad6f5-4e80-4519-a022-19066c1d24cf", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "46da40c0-48e9-468e-9857-618e5a6760e7"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "857ad6f5-4e80-4519-a022-19066c1d24cf") }, + { "d6a9be9f-fda9-4c55-a106-80540580a3d5", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "1c8e1291-f795-4124-a651-17bec23caba2"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "d6a9be9f-fda9-4c55-a106-80540580a3d5") }, + { "a65c3d77-5617-4761-81a9-4c577341a439", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.To), "595db63b-feec-4644-856b-7441b25e1fb1"},}, new Dictionary{ }, "a65c3d77-5617-4761-81a9-4c577341a439") }, + { "b87c5446-1019-4031-b302-7abb9764f456", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.RelationOperator), "44ddaf01-500a-4146-b9e9-32f24062c7d8"}, { new Terminator(OperatorType.Equal), "59e0b42f-0f19-4905-bda8-027e4043f4af"}, { new Terminator(OperatorType.NotEqual), "7863edae-4a97-4391-96b2-2e884ec9446a"}, { new Terminator(OperatorType.Less), "16951dba-a455-4455-ae09-e1f402e42c72"}, { new Terminator(OperatorType.LessEqual), "e510cf8d-4628-45cd-aea4-8b27b1e67c4a"}, { new Terminator(OperatorType.Greater), "59406bfc-b725-4683-80e7-445c998f005a"}, { new Terminator(OperatorType.GreaterEqual), "8f8ba332-6060-40ce-9e86-bdb7a7e3f793"}, { new NonTerminator(NonTerminatorType.AddOperator), "881b6451-4f23-4cac-a70c-9559269fd0ee"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, }, "b87c5446-1019-4031-b302-7abb9764f456") }, + { "9f627a23-8645-4cd3-a1e5-813cf0e39f5e", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "c75f8261-811d-4aa2-b884-5808a8f68ad6"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "9f627a23-8645-4cd3-a1e5-813cf0e39f5e") }, + { "277e1067-8bdd-4e98-b081-283debc883c7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "277e1067-8bdd-4e98-b081-283debc883c7") }, + { "1c953f12-cf14-406e-903e-470824dc97ad", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "1c953f12-cf14-406e-903e-470824dc97ad") }, + { "d73b91e5-02cd-42df-a433-79911f49ccd3", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "d73b91e5-02cd-42df-a433-79911f49ccd3") }, + { "48f64dba-33fb-4f85-831c-a4b339f7eaa9", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "24606fa9-2b6e-4cff-b785-edc6652bd5ba"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "48f64dba-33fb-4f85-831c-a4b339f7eaa9") }, + { "80ffb3c9-cb71-4997-919f-6dbec21ef615", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "ad26c00d-4b80-4437-aa7c-f22ea9f55b5e"}, { new NonTerminator(NonTerminatorType.IdVarPart), "c3c756e1-cf99-445d-93a9-b73b491dbd7a"}, { new Terminator(DelimiterType.LeftSquareBracket), "4b9527ed-50ba-4a72-8c93-2ee35bcfda7e"},}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "80ffb3c9-cb71-4997-919f-6dbec21ef615") }, + { "ba066289-25d2-4d2d-9fa4-cb70f146976f", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "a2573c94-3e54-44e9-9f8b-b2d0e8ea6453"}, { Terminator.NumberTerminator, "1c953f12-cf14-406e-903e-470824dc97ad"}, { new NonTerminator(NonTerminatorType.Variable), "d73b91e5-02cd-42df-a433-79911f49ccd3"}, { new Terminator(DelimiterType.LeftParenthesis), "48f64dba-33fb-4f85-831c-a4b339f7eaa9"}, { Terminator.IdentifierTerminator, "80ffb3c9-cb71-4997-919f-6dbec21ef615"}, { new Terminator(KeywordType.Not), "ba066289-25d2-4d2d-9fa4-cb70f146976f"}, { new Terminator(OperatorType.Minus), "da7f037a-28cb-4723-bfae-e492d20e6613"}, { new Terminator(OperatorType.Plus), "8236a0b9-fcba-4ed2-9896-c83039b99c76"}, { new Terminator(KeywordType.True), "c5c55305-06ae-4eb6-8dd0-066ab4045fcd"}, { new Terminator(KeywordType.False), "7c79955e-3e28-407b-9bef-fad899315e52"},}, new Dictionary{ }, "ba066289-25d2-4d2d-9fa4-cb70f146976f") }, + { "da7f037a-28cb-4723-bfae-e492d20e6613", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "2aece360-9191-4648-a9d1-8edb8e96884a"}, { Terminator.NumberTerminator, "1c953f12-cf14-406e-903e-470824dc97ad"}, { new NonTerminator(NonTerminatorType.Variable), "d73b91e5-02cd-42df-a433-79911f49ccd3"}, { new Terminator(DelimiterType.LeftParenthesis), "48f64dba-33fb-4f85-831c-a4b339f7eaa9"}, { Terminator.IdentifierTerminator, "80ffb3c9-cb71-4997-919f-6dbec21ef615"}, { new Terminator(KeywordType.Not), "ba066289-25d2-4d2d-9fa4-cb70f146976f"}, { new Terminator(OperatorType.Minus), "da7f037a-28cb-4723-bfae-e492d20e6613"}, { new Terminator(OperatorType.Plus), "8236a0b9-fcba-4ed2-9896-c83039b99c76"}, { new Terminator(KeywordType.True), "c5c55305-06ae-4eb6-8dd0-066ab4045fcd"}, { new Terminator(KeywordType.False), "7c79955e-3e28-407b-9bef-fad899315e52"},}, new Dictionary{ }, "da7f037a-28cb-4723-bfae-e492d20e6613") }, + { "8236a0b9-fcba-4ed2-9896-c83039b99c76", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "3fa35bcb-0aa5-452a-9afe-53363fed2b2a"}, { Terminator.NumberTerminator, "1c953f12-cf14-406e-903e-470824dc97ad"}, { new NonTerminator(NonTerminatorType.Variable), "d73b91e5-02cd-42df-a433-79911f49ccd3"}, { new Terminator(DelimiterType.LeftParenthesis), "48f64dba-33fb-4f85-831c-a4b339f7eaa9"}, { Terminator.IdentifierTerminator, "80ffb3c9-cb71-4997-919f-6dbec21ef615"}, { new Terminator(KeywordType.Not), "ba066289-25d2-4d2d-9fa4-cb70f146976f"}, { new Terminator(OperatorType.Minus), "da7f037a-28cb-4723-bfae-e492d20e6613"}, { new Terminator(OperatorType.Plus), "8236a0b9-fcba-4ed2-9896-c83039b99c76"}, { new Terminator(KeywordType.True), "c5c55305-06ae-4eb6-8dd0-066ab4045fcd"}, { new Terminator(KeywordType.False), "7c79955e-3e28-407b-9bef-fad899315e52"},}, new Dictionary{ }, "8236a0b9-fcba-4ed2-9896-c83039b99c76") }, + { "c5c55305-06ae-4eb6-8dd0-066ab4045fcd", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "c5c55305-06ae-4eb6-8dd0-066ab4045fcd") }, + { "7c79955e-3e28-407b-9bef-fad899315e52", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "7c79955e-3e28-407b-9bef-fad899315e52") }, + { "d1977eb6-08aa-4a64-b5ac-749e2dd30a08", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Statement))}, }, "d1977eb6-08aa-4a64-b5ac-749e2dd30a08") }, + { "43fb9243-dc99-4eb1-883f-65c6186471ee", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.AddOperator), "54870ff5-6830-42be-a0a6-ffc6c6501065"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, }, "43fb9243-dc99-4eb1-883f-65c6186471ee") }, + { "59b0e133-71b4-45a3-83c1-8971fe651bcc", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "c8c45668-ae93-4583-bb94-b1fc9655afa2"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "59b0e133-71b4-45a3-83c1-8971fe651bcc") }, + { "604834f5-b217-434f-9367-7bfed56ab9b0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "604834f5-b217-434f-9367-7bfed56ab9b0") }, + { "a10429b4-24eb-467f-a608-b98aa8db3e67", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "a10429b4-24eb-467f-a608-b98aa8db3e67") }, + { "fd00f009-580f-4160-ae7b-6beff969944f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "fd00f009-580f-4160-ae7b-6beff969944f") }, + { "2cb1384f-a831-4ccb-8764-eb3365de539f", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "5df0661a-202c-4346-8e20-72161d614790"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "2cb1384f-a831-4ccb-8764-eb3365de539f") }, + { "9a0f0758-e53a-4a96-9702-9c4220cbc1f0", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "a5492f61-0dd8-4336-97c4-0378a918b307"}, { new NonTerminator(NonTerminatorType.IdVarPart), "8ad5d0ad-3561-4a7a-86c0-07f0c6b90297"}, { new Terminator(DelimiterType.LeftSquareBracket), "5c0cbf48-d7c0-4a91-bfd1-fb8dc9b7081b"},}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "9a0f0758-e53a-4a96-9702-9c4220cbc1f0") }, + { "55680e38-d0da-441a-b95d-23649cea1617", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "6bee4c38-458d-4351-b1e7-134bf67e68ca"}, { Terminator.NumberTerminator, "a10429b4-24eb-467f-a608-b98aa8db3e67"}, { new NonTerminator(NonTerminatorType.Variable), "fd00f009-580f-4160-ae7b-6beff969944f"}, { new Terminator(DelimiterType.LeftParenthesis), "2cb1384f-a831-4ccb-8764-eb3365de539f"}, { Terminator.IdentifierTerminator, "9a0f0758-e53a-4a96-9702-9c4220cbc1f0"}, { new Terminator(KeywordType.Not), "55680e38-d0da-441a-b95d-23649cea1617"}, { new Terminator(OperatorType.Minus), "75a3607c-680a-4a2f-9c66-bc05dff3c7f1"}, { new Terminator(OperatorType.Plus), "a21176fc-2cc4-42c8-b918-6ace257cad4d"}, { new Terminator(KeywordType.True), "216bfda7-db41-4a83-9aa9-49047e81ff99"}, { new Terminator(KeywordType.False), "1a83cf74-2f22-4578-bacb-ac3b3e307f30"},}, new Dictionary{ }, "55680e38-d0da-441a-b95d-23649cea1617") }, + { "75a3607c-680a-4a2f-9c66-bc05dff3c7f1", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "1d95d24a-36da-443b-b49e-cc43d6a59fea"}, { Terminator.NumberTerminator, "a10429b4-24eb-467f-a608-b98aa8db3e67"}, { new NonTerminator(NonTerminatorType.Variable), "fd00f009-580f-4160-ae7b-6beff969944f"}, { new Terminator(DelimiterType.LeftParenthesis), "2cb1384f-a831-4ccb-8764-eb3365de539f"}, { Terminator.IdentifierTerminator, "9a0f0758-e53a-4a96-9702-9c4220cbc1f0"}, { new Terminator(KeywordType.Not), "55680e38-d0da-441a-b95d-23649cea1617"}, { new Terminator(OperatorType.Minus), "75a3607c-680a-4a2f-9c66-bc05dff3c7f1"}, { new Terminator(OperatorType.Plus), "a21176fc-2cc4-42c8-b918-6ace257cad4d"}, { new Terminator(KeywordType.True), "216bfda7-db41-4a83-9aa9-49047e81ff99"}, { new Terminator(KeywordType.False), "1a83cf74-2f22-4578-bacb-ac3b3e307f30"},}, new Dictionary{ }, "75a3607c-680a-4a2f-9c66-bc05dff3c7f1") }, + { "a21176fc-2cc4-42c8-b918-6ace257cad4d", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "e9453497-c7e9-476a-b08a-427f2f43a2be"}, { Terminator.NumberTerminator, "a10429b4-24eb-467f-a608-b98aa8db3e67"}, { new NonTerminator(NonTerminatorType.Variable), "fd00f009-580f-4160-ae7b-6beff969944f"}, { new Terminator(DelimiterType.LeftParenthesis), "2cb1384f-a831-4ccb-8764-eb3365de539f"}, { Terminator.IdentifierTerminator, "9a0f0758-e53a-4a96-9702-9c4220cbc1f0"}, { new Terminator(KeywordType.Not), "55680e38-d0da-441a-b95d-23649cea1617"}, { new Terminator(OperatorType.Minus), "75a3607c-680a-4a2f-9c66-bc05dff3c7f1"}, { new Terminator(OperatorType.Plus), "a21176fc-2cc4-42c8-b918-6ace257cad4d"}, { new Terminator(KeywordType.True), "216bfda7-db41-4a83-9aa9-49047e81ff99"}, { new Terminator(KeywordType.False), "1a83cf74-2f22-4578-bacb-ac3b3e307f30"},}, new Dictionary{ }, "a21176fc-2cc4-42c8-b918-6ace257cad4d") }, + { "216bfda7-db41-4a83-9aa9-49047e81ff99", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "216bfda7-db41-4a83-9aa9-49047e81ff99") }, + { "1a83cf74-2f22-4578-bacb-ac3b3e307f30", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "1a83cf74-2f22-4578-bacb-ac3b3e307f30") }, + { "2849ea39-bcb5-4c15-9f21-310c3c1db53e", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "1c13de51-4b5f-47e8-86e1-0179943b6887"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "2849ea39-bcb5-4c15-9f21-310c3c1db53e") }, + { "8dbe4e2c-c11c-45c8-b074-53e60be3ea20", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "8dbe4e2c-c11c-45c8-b074-53e60be3ea20") }, + { "080c9bbf-6992-42eb-9283-477c62b29ed8", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "080c9bbf-6992-42eb-9283-477c62b29ed8") }, + { "f6eef27a-a544-438e-9401-ee1d329edfae", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "f6eef27a-a544-438e-9401-ee1d329edfae") }, + { "9ec9e564-451f-42b5-8167-b460d9f017e2", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "e30986e4-12d0-4bec-98f4-ed089c500fc7"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "9ec9e564-451f-42b5-8167-b460d9f017e2") }, + { "0598be14-ca9b-4e4e-a8f0-fa2b4a328206", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "d544a1df-406e-4fba-ac51-7404ad8687de"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "0598be14-ca9b-4e4e-a8f0-fa2b4a328206") }, + { "39ddeae6-dd11-43a1-9fbc-e64452469d23", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(OperatorType.Assign), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "39ddeae6-dd11-43a1-9fbc-e64452469d23") }, + { "a5ad624f-614c-4666-8acc-9956c94b8095", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "8c78b70b-be8a-4e05-95d1-df7e72b0b7d7"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "a5ad624f-614c-4666-8acc-9956c94b8095") }, + { "70777a5f-d416-4536-a439-9f6a25b1e3b3", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SimpleExpression), "07f04ab8-b4f5-4324-9792-79151f658da8"}, { new NonTerminator(NonTerminatorType.Term), "b52f9ef7-af24-44c2-ae8e-6ddc1b8bdf10"}, { new NonTerminator(NonTerminatorType.Factor), "0587eecb-ddff-42fd-a87e-a2cc54145a64"}, { Terminator.NumberTerminator, "fc48fd81-e86c-47c7-87c1-2291bc56bb75"}, { new NonTerminator(NonTerminatorType.Variable), "f1d71193-f562-4fd1-818b-760ca17c2a78"}, { new Terminator(DelimiterType.LeftParenthesis), "50d2792d-8a7e-4a8b-9d3d-8f6350311b18"}, { Terminator.IdentifierTerminator, "50da5232-d1a0-40f8-9fda-34dd046dd610"}, { new Terminator(KeywordType.Not), "caf65160-0457-4b3a-8c36-0f078bfe063b"}, { new Terminator(OperatorType.Minus), "8a34f1bb-d7aa-4935-899e-48f6bf60755f"}, { new Terminator(OperatorType.Plus), "bf8528f5-d90a-4b7a-b797-42cf8c7c329c"}, { new Terminator(KeywordType.True), "aebc570e-5571-42ba-8636-4a904d7ae434"}, { new Terminator(KeywordType.False), "cf28c26f-f1d0-458b-8357-51a559013c5c"},}, new Dictionary{ }, "70777a5f-d416-4536-a439-9f6a25b1e3b3") }, + { "02ee4aa2-e583-4265-a92e-a32ddb443116", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "08a66bf3-d20f-4540-9dcf-0d1ef09bf430"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "02ee4aa2-e583-4265-a92e-a32ddb443116") }, + { "47ffd406-53c9-4960-9673-b91d67c6b194", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "8fa2b1f9-c9d2-46b6-a9cb-640ce21f4078"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "47ffd406-53c9-4960-9673-b91d67c6b194") }, + { "59618cd7-7879-4b9f-bc63-65bd9c76777b", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "a5ce048a-d74f-4040-b053-5e2fc82966f0"},}, new Dictionary{ }, "59618cd7-7879-4b9f-bc63-65bd9c76777b") }, + { "9032e67e-801b-40b3-b9cb-11e1520e7541", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "65d89ddb-78df-48ca-9b07-3f744c4f6855"}, { new NonTerminator(NonTerminatorType.ExpressionList), "36a56723-b1cf-4614-8894-164fed30182a"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "9032e67e-801b-40b3-b9cb-11e1520e7541") }, + { "04b72690-477c-4710-93d3-91c4bba6f269", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "04b72690-477c-4710-93d3-91c4bba6f269") }, + { "6c1237a0-4351-4409-93b8-bc3f71130644", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "7373be0a-d03b-453d-948f-6128a46ba03f"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "6c1237a0-4351-4409-93b8-bc3f71130644") }, + { "c14e7212-7c5d-4721-8bda-06258999dc3f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "c14e7212-7c5d-4721-8bda-06258999dc3f") }, + { "905f6f19-14dd-4f2e-9d43-6a20248a8b88", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "905f6f19-14dd-4f2e-9d43-6a20248a8b88") }, + { "78dc179a-8471-4472-ae09-e6d7aeaf2a4e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "78dc179a-8471-4472-ae09-e6d7aeaf2a4e") }, + { "98263477-27f9-44a7-a708-3203c0d5319c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(4, new NonTerminator(NonTerminatorType.ProcedureCall))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(4, new NonTerminator(NonTerminatorType.ProcedureCall))}, }, "98263477-27f9-44a7-a708-3203c0d5319c") }, + { "42adc07d-e305-4673-b588-72af40c98941", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "8676a9cb-9a2e-4de1-aa70-dd7ed3dd12ef"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "42adc07d-e305-4673-b588-72af40c98941") }, + { "3b2d1116-a526-446a-84b9-4e201bee85f2", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SimpleExpression), "1b2f15a7-639f-4f9f-af90-6d5c35391d3d"}, { new NonTerminator(NonTerminatorType.Term), "f6ef1c84-cd0b-4b13-832e-7c032450e234"}, { new NonTerminator(NonTerminatorType.Factor), "0426cda0-e8fd-49e4-8542-5986243370c9"}, { Terminator.NumberTerminator, "2790bace-a273-4647-a94f-0889cbf2b024"}, { new NonTerminator(NonTerminatorType.Variable), "e1ce60b1-d34e-4bbd-9885-33d2953b99d5"}, { new Terminator(DelimiterType.LeftParenthesis), "88f5f65d-5a3e-4cb2-af69-05f8991b71e0"}, { Terminator.IdentifierTerminator, "276093ee-50ea-4890-9204-dd4c42d5a6d9"}, { new Terminator(KeywordType.Not), "d36286b9-630e-4f01-a70c-efc769acec3b"}, { new Terminator(OperatorType.Minus), "e8b2609e-d3b0-4df7-8d30-71682012f622"}, { new Terminator(OperatorType.Plus), "661f8d06-c6c5-416f-8574-c1d3498383ae"}, { new Terminator(KeywordType.True), "bcb4a4ef-48fa-40a6-a57f-b8d6ce5041a6"}, { new Terminator(KeywordType.False), "4adb4190-f200-4444-916a-25f417059cac"},}, new Dictionary{ }, "3b2d1116-a526-446a-84b9-4e201bee85f2") }, + { "f5f86e69-f2ba-4d6e-89f6-6ed01a7e785c", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "d5655891-1b96-4c39-9c4a-b0f709893320"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "f5f86e69-f2ba-4d6e-89f6-6ed01a7e785c") }, + { "8a192745-a8a6-426a-8612-92e78beda675", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "26e97af7-7f48-414a-8fae-645a2f4c54cb"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "8a192745-a8a6-426a-8612-92e78beda675") }, + { "b7ee5e7b-0ef6-4d00-9e3a-f16c122a24bc", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "4b77da3c-d037-499b-9b7d-e16185017ab8"},}, new Dictionary{ }, "b7ee5e7b-0ef6-4d00-9e3a-f16c122a24bc") }, + { "164fcaa3-90eb-4672-bfe2-7aa5309e4bd1", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "40677224-2ce7-4f1c-a479-9eacf105f1aa"}, { new NonTerminator(NonTerminatorType.ExpressionList), "c1331848-bf9b-4159-b002-bb04bb2399d1"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "164fcaa3-90eb-4672-bfe2-7aa5309e4bd1") }, + { "62d98822-e412-4c61-91ef-6811955d1f78", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "62d98822-e412-4c61-91ef-6811955d1f78") }, + { "f6b5d426-4680-4eb7-a920-9416e4fb0f07", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "e5fb5661-704f-433e-84c8-25ee0f40a46e"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "f6b5d426-4680-4eb7-a920-9416e4fb0f07") }, + { "4f70570d-fb17-4089-b22c-e253a429aa92", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "4f70570d-fb17-4089-b22c-e253a429aa92") }, + { "7f5a2bec-9062-4ab0-b7db-9fd6dabb3cfe", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "7f5a2bec-9062-4ab0-b7db-9fd6dabb3cfe") }, + { "81129e0f-0d42-4880-ae52-eb4cda31f3d9", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "81129e0f-0d42-4880-ae52-eb4cda31f3d9") }, + { "9a78ea77-a497-4811-93cb-953b89acbff6", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SubprogramBody))}, }, "9a78ea77-a497-4811-93cb-953b89acbff6") }, + { "d2d51360-7c78-47bf-9b9c-bd2f8ebcbe36", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.StatementList), "86cdc12b-8fcc-46d7-a147-1f6089017344"}, { new NonTerminator(NonTerminatorType.Statement), "f77dde55-48b4-4353-a3c3-37677c20bd47"}, { new NonTerminator(NonTerminatorType.Variable), "ae30128e-efd3-4103-9828-59d8da47b869"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "cc93b19c-954a-4e6d-9ffe-b1d796b56b27"}, { new Terminator(KeywordType.If), "bd6a5146-d6d4-453b-9442-d2d146452e94"}, { new Terminator(KeywordType.For), "138ba7eb-e0e3-403c-a842-2268411e11cc"}, { new Terminator(KeywordType.While), "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad"}, { Terminator.IdentifierTerminator, "b128ff00-00cc-46f4-b962-7e7174f1fb28"}, { new Terminator(KeywordType.Begin), "ac1bf4c3-ab39-4ece-a684-e40886b7c49d"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "d2d51360-7c78-47bf-9b9c-bd2f8ebcbe36") }, + { "0d0cb9c4-d375-4849-8f3e-dd1c10443eaf", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.Semicolon), "af4bc1d2-2918-4737-a024-0122c094d829"},}, new Dictionary{ }, "0d0cb9c4-d375-4849-8f3e-dd1c10443eaf") }, + { "02599944-c7af-4ba8-b425-3a24ad54e246", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "09b6a8d2-888d-452e-ad86-0c969667bd9e"},}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ConstDeclarations))}, { new Terminator(KeywordType.Var), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ConstDeclarations))}, }, "02599944-c7af-4ba8-b425-3a24ad54e246") }, + { "1379f589-cdbc-40af-8d00-35d0cabc32a5", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.FormalParameter))}, }, "1379f589-cdbc-40af-8d00-35d0cabc32a5") }, + { "c3d72a2d-8b54-494c-a717-851cb19bd26b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Parameter), "5ab18416-c1e7-438f-bf53-2a997e6a8bd1"}, { new NonTerminator(NonTerminatorType.VarParameter), "a1cc7797-e56e-43e0-b3dd-dcb9ce0116cc"}, { new NonTerminator(NonTerminatorType.ValueParameter), "7007b3eb-8197-4235-a415-cb0afeb5e530"}, { new Terminator(KeywordType.Var), "a6f74335-800b-4ee9-bd3c-0ce9bcfc3612"}, { Terminator.IdentifierTerminator, "3725ab6a-0044-4165-85f8-852735c5eed3"},}, new Dictionary{ }, "c3d72a2d-8b54-494c-a717-851cb19bd26b") }, + { "f98ee752-f401-4e1b-9e8e-957adc9790aa", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.VarParameter))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.VarParameter))}, }, "f98ee752-f401-4e1b-9e8e-957adc9790aa") }, + { "5bc910a4-45f8-4ad9-b963-d37940c5cff1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ValueParameter))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ValueParameter))}, }, "5bc910a4-45f8-4ad9-b963-d37940c5cff1") }, + { "5c435b00-58fa-424f-8d80-44581d6495d4", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "a0f15d90-d9da-4363-9894-f6af765c23ae"},}, new Dictionary{ }, "5c435b00-58fa-424f-8d80-44581d6495d4") }, + { "f364b470-5153-4353-abce-800b8bb3b8cf", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Type), "523fba32-d7c3-460f-b45b-198c04135267"}, { new NonTerminator(NonTerminatorType.BasicType), "5601d86d-b88e-4ad8-bcef-da4a4b8d20bf"}, { new Terminator(KeywordType.Array), "ab73c218-e084-4462-9670-542048ecbb25"}, { new Terminator(KeywordType.Integer), "265dc661-0c5d-49bc-83a8-648314bd547f"}, { new Terminator(KeywordType.Real), "6ba8980f-fabc-4a45-b031-00a2552ccf73"}, { new Terminator(KeywordType.Boolean), "9c4bbea1-b9b8-4d1a-890c-e2825b218b61"}, { new Terminator(KeywordType.Character), "55b917ca-2312-4e43-9503-c6ab992ce9e2"},}, new Dictionary{ }, "f364b470-5153-4353-abce-800b8bb3b8cf") }, + { "cd649cdd-8ef7-457e-be13-7f701e3a0f47", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(5, new NonTerminator(NonTerminatorType.SubprogramHead))}, }, "cd649cdd-8ef7-457e-be13-7f701e3a0f47") }, + { "061214f5-f509-4581-becb-61ff1ca50f83", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Colon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.FormalParameter))}, }, "061214f5-f509-4581-becb-61ff1ca50f83") }, + { "71a04de2-97f3-4363-9ad0-1637eb4a5fcf", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.Of), "50ad3dfd-cc6a-4d16-ae5b-0cd9c508be48"},}, new Dictionary{ }, "71a04de2-97f3-4363-9ad0-1637eb4a5fcf") }, + { "63584f3e-27ad-4ea9-b9ef-318d82688721", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(6, new NonTerminator(NonTerminatorType.Type))}, }, "63584f3e-27ad-4ea9-b9ef-318d82688721") }, + { "a8b5942a-ccf0-47a1-ab95-aa537e18f756", new GeneratedTransformer(new Dictionary{ { Terminator.NumberTerminator, "48e172a4-1a69-4a35-ba02-a15a0baf339d"},}, new Dictionary{ }, "a8b5942a-ccf0-47a1-ab95-aa537e18f756") }, + { "852581dd-146e-47ab-8131-d60341bc30d0", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.AddOperator), "df5dd4b7-4314-44a2-b102-16d1dc01bded"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, }, "852581dd-146e-47ab-8131-d60341bc30d0") }, + { "b14b62af-065d-46c9-83a5-5e219aa5601f", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "eccb4f85-79e0-41bf-afe4-90e595d76176"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "b14b62af-065d-46c9-83a5-5e219aa5601f") }, + { "cb214466-4f8c-4be6-8c5a-aee7453b58fc", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "cb214466-4f8c-4be6-8c5a-aee7453b58fc") }, + { "2b088aca-1f66-4735-b43b-647ff6a817d6", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "2b088aca-1f66-4735-b43b-647ff6a817d6") }, + { "54dd46eb-09e8-4045-bfb0-72a0ea4d7fae", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "54dd46eb-09e8-4045-bfb0-72a0ea4d7fae") }, + { "d558e501-5024-4375-a3d0-1120f9e59757", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "bb4c62a9-1c43-4c26-8bb0-1156b149c19c"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "d558e501-5024-4375-a3d0-1120f9e59757") }, + { "19aac92d-1326-45bb-9cde-26c15dfeb3f9", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "4d97bdb0-dfde-44ef-9a25-1cc23fa4fd0c"}, { new NonTerminator(NonTerminatorType.IdVarPart), "47d70900-934c-404f-9d0a-4743520d8c81"}, { new Terminator(DelimiterType.LeftSquareBracket), "e6e1354e-8432-4ef5-a58c-e4237bdd4616"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "19aac92d-1326-45bb-9cde-26c15dfeb3f9") }, + { "e2e34c26-1bd4-4a5d-b527-d0f0decad4c8", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "fe686f16-bdeb-4ee6-a328-e15f50c68bc8"}, { Terminator.NumberTerminator, "2b088aca-1f66-4735-b43b-647ff6a817d6"}, { new NonTerminator(NonTerminatorType.Variable), "54dd46eb-09e8-4045-bfb0-72a0ea4d7fae"}, { new Terminator(DelimiterType.LeftParenthesis), "d558e501-5024-4375-a3d0-1120f9e59757"}, { Terminator.IdentifierTerminator, "19aac92d-1326-45bb-9cde-26c15dfeb3f9"}, { new Terminator(KeywordType.Not), "e2e34c26-1bd4-4a5d-b527-d0f0decad4c8"}, { new Terminator(OperatorType.Minus), "a3509be7-9dc3-4f48-8d60-ec0e43bc2a6a"}, { new Terminator(OperatorType.Plus), "f0af15b7-edf7-40bc-a9ab-3e992e2d6e07"}, { new Terminator(KeywordType.True), "56c6a91a-0bd1-4c5f-b613-af29bc731cf9"}, { new Terminator(KeywordType.False), "0a1f52df-4d6e-431d-8333-cfc432ac9896"},}, new Dictionary{ }, "e2e34c26-1bd4-4a5d-b527-d0f0decad4c8") }, + { "a3509be7-9dc3-4f48-8d60-ec0e43bc2a6a", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "a0eddb69-2886-4987-854a-de06b7a6e856"}, { Terminator.NumberTerminator, "2b088aca-1f66-4735-b43b-647ff6a817d6"}, { new NonTerminator(NonTerminatorType.Variable), "54dd46eb-09e8-4045-bfb0-72a0ea4d7fae"}, { new Terminator(DelimiterType.LeftParenthesis), "d558e501-5024-4375-a3d0-1120f9e59757"}, { Terminator.IdentifierTerminator, "19aac92d-1326-45bb-9cde-26c15dfeb3f9"}, { new Terminator(KeywordType.Not), "e2e34c26-1bd4-4a5d-b527-d0f0decad4c8"}, { new Terminator(OperatorType.Minus), "a3509be7-9dc3-4f48-8d60-ec0e43bc2a6a"}, { new Terminator(OperatorType.Plus), "f0af15b7-edf7-40bc-a9ab-3e992e2d6e07"}, { new Terminator(KeywordType.True), "56c6a91a-0bd1-4c5f-b613-af29bc731cf9"}, { new Terminator(KeywordType.False), "0a1f52df-4d6e-431d-8333-cfc432ac9896"},}, new Dictionary{ }, "a3509be7-9dc3-4f48-8d60-ec0e43bc2a6a") }, + { "f0af15b7-edf7-40bc-a9ab-3e992e2d6e07", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "8b36a350-28f2-40f0-888e-9abed7ccc1e2"}, { Terminator.NumberTerminator, "2b088aca-1f66-4735-b43b-647ff6a817d6"}, { new NonTerminator(NonTerminatorType.Variable), "54dd46eb-09e8-4045-bfb0-72a0ea4d7fae"}, { new Terminator(DelimiterType.LeftParenthesis), "d558e501-5024-4375-a3d0-1120f9e59757"}, { Terminator.IdentifierTerminator, "19aac92d-1326-45bb-9cde-26c15dfeb3f9"}, { new Terminator(KeywordType.Not), "e2e34c26-1bd4-4a5d-b527-d0f0decad4c8"}, { new Terminator(OperatorType.Minus), "a3509be7-9dc3-4f48-8d60-ec0e43bc2a6a"}, { new Terminator(OperatorType.Plus), "f0af15b7-edf7-40bc-a9ab-3e992e2d6e07"}, { new Terminator(KeywordType.True), "56c6a91a-0bd1-4c5f-b613-af29bc731cf9"}, { new Terminator(KeywordType.False), "0a1f52df-4d6e-431d-8333-cfc432ac9896"},}, new Dictionary{ }, "f0af15b7-edf7-40bc-a9ab-3e992e2d6e07") }, + { "56c6a91a-0bd1-4c5f-b613-af29bc731cf9", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "56c6a91a-0bd1-4c5f-b613-af29bc731cf9") }, + { "0a1f52df-4d6e-431d-8333-cfc432ac9896", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "0a1f52df-4d6e-431d-8333-cfc432ac9896") }, + { "aff24bec-adef-4a43-8c74-8f5841e96af0", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "94df7fe4-5160-4cd6-b591-b6aed9f9680b"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "aff24bec-adef-4a43-8c74-8f5841e96af0") }, + { "7e9d877a-b291-44a7-818b-55eee3312aed", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "7e9d877a-b291-44a7-818b-55eee3312aed") }, + { "96892e49-473e-478e-9fb1-00e9821e5c49", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "96892e49-473e-478e-9fb1-00e9821e5c49") }, + { "c79358b6-9450-4cc2-8884-c0a980afe48d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "c79358b6-9450-4cc2-8884-c0a980afe48d") }, + { "ae02945c-d62c-404c-9543-9f3a6f983471", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "e12a3e72-3a37-4672-af9f-a2c53884eb07"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "ae02945c-d62c-404c-9543-9f3a6f983471") }, + { "9b836f90-31a9-4f71-8e88-5eda74534766", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "2ea9cdff-25d8-4463-8b91-4eac20d98ff0"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "9b836f90-31a9-4f71-8e88-5eda74534766") }, + { "133abdc1-d6c9-46d6-9e3b-ca7b3ce3a4fb", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(5, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(5, new NonTerminator(NonTerminatorType.Statement))}, }, "133abdc1-d6c9-46d6-9e3b-ca7b3ce3a4fb") }, + { "7e653eb8-6970-4f0d-8a9e-eba566ae8058", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Statement), "19353608-236f-4807-8d7b-86fdf2c9843b"}, { new NonTerminator(NonTerminatorType.Variable), "ae30128e-efd3-4103-9828-59d8da47b869"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "cc93b19c-954a-4e6d-9ffe-b1d796b56b27"}, { new Terminator(KeywordType.If), "bd6a5146-d6d4-453b-9442-d2d146452e94"}, { new Terminator(KeywordType.For), "138ba7eb-e0e3-403c-a842-2268411e11cc"}, { new Terminator(KeywordType.While), "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad"}, { Terminator.IdentifierTerminator, "b128ff00-00cc-46f4-b962-7e7174f1fb28"}, { new Terminator(KeywordType.Begin), "ac1bf4c3-ab39-4ece-a684-e40886b7c49d"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "7e653eb8-6970-4f0d-8a9e-eba566ae8058") }, + { "f30c5737-c53a-4cb4-9dde-bbfe4d10865a", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "d5a238f9-d488-4209-95ee-d3dfb4d13aef"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "23cfab10-ca75-466c-aee2-950f7ce16203"}, { new NonTerminator(NonTerminatorType.Term), "37f255b4-3fd9-4891-8074-5d7752fff099"}, { new NonTerminator(NonTerminatorType.Factor), "08a56a06-7192-4075-aa0d-0002b0bf12d9"}, { Terminator.NumberTerminator, "b8a51109-ebea-4dbc-ad86-c448a2f43c1f"}, { new NonTerminator(NonTerminatorType.Variable), "086ebd59-c5fb-44a4-9deb-ecfe51467ac9"}, { new Terminator(DelimiterType.LeftParenthesis), "7e4af2e1-0d6f-41f6-8a07-b627a3fed888"}, { Terminator.IdentifierTerminator, "29da417b-7dc6-462f-a476-f960661330ba"}, { new Terminator(KeywordType.Not), "30ad608b-ac4f-41fb-a946-4605750613a3"}, { new Terminator(OperatorType.Minus), "2d620968-101e-42c0-849b-634c1150a000"}, { new Terminator(OperatorType.Plus), "46d07f42-3046-4717-a29c-a5b8949b28b8"}, { new Terminator(KeywordType.True), "cb47dfe5-9c4c-4202-a2da-fb81ccd838a1"}, { new Terminator(KeywordType.False), "b8063f1a-fd1a-4af1-b8d2-76cbdbd15061"},}, new Dictionary{ }, "f30c5737-c53a-4cb4-9dde-bbfe4d10865a") }, + { "6c6783c3-aed7-4475-95d5-49e9c8c81e7f", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.Then), "6dd332bd-e5c3-40d1-8053-64f82f76b280"},}, new Dictionary{ }, "6c6783c3-aed7-4475-95d5-49e9c8c81e7f") }, + { "21426d69-e56d-4439-83bb-e69dcaffad37", new GeneratedTransformer(new Dictionary{ { new Terminator(OperatorType.Assign), "98a6ab38-73c3-4ab2-ae90-f54cce6d55ec"},}, new Dictionary{ }, "21426d69-e56d-4439-83bb-e69dcaffad37") }, + { "94f46443-712c-4c41-9e5e-6cf4b560be22", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.Do), "75262cee-1b93-4762-ad47-e4bbfcf170f5"},}, new Dictionary{ }, "94f46443-712c-4c41-9e5e-6cf4b560be22") }, + { "cad891ad-68c5-4680-bd73-dbb28cb1d111", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "34cf88f4-2679-46d5-a4bd-857506ee0049"}, { new NonTerminator(NonTerminatorType.ExpressionList), "468d555b-d10c-4e85-96c8-6e1dd45aad3e"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "cad891ad-68c5-4680-bd73-dbb28cb1d111") }, + { "7a572a21-cc15-47b2-820a-ce3923e0e0d6", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.End), "4d266410-0f1f-4211-98c8-5ad73e7b8805"}, { new Terminator(DelimiterType.Semicolon), "d7c0ed7a-1000-4e5d-9348-1077a94bf3f4"},}, new Dictionary{ }, "7a572a21-cc15-47b2-820a-ce3923e0e0d6") }, + { "a0bbf310-e7e2-42a3-813b-d06c31fdb7c3", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "ead7ee3a-2b9e-491b-a5d1-67feb7e51ec5"}, { new NonTerminator(NonTerminatorType.Factor), "d8983d6e-a324-42b1-abda-e5e9b48f6c68"}, { Terminator.NumberTerminator, "cab4c63c-f4c2-42a6-8d55-15ef272d21b0"}, { new NonTerminator(NonTerminatorType.Variable), "7a2443d4-1bf4-47e0-aa00-769764338863"}, { new Terminator(DelimiterType.LeftParenthesis), "23d5b6c0-049a-44cb-810b-a148cf517a6a"}, { Terminator.IdentifierTerminator, "64c0f4db-301a-4e69-b2ff-a804bfc7a354"}, { new Terminator(KeywordType.Not), "1472348b-7588-4000-892e-1b4c1c2898c5"}, { new Terminator(OperatorType.Minus), "7a0d66f9-433e-45cc-a555-5baffc6e4a77"}, { new Terminator(OperatorType.Plus), "abce178f-4211-4c54-9300-e03398fc4b96"}, { new Terminator(KeywordType.True), "535aa9c8-1930-4f35-8779-ea515e1f8ac6"}, { new Terminator(KeywordType.False), "761bbd44-be16-4366-be63-884e0dcee59e"},}, new Dictionary{ }, "a0bbf310-e7e2-42a3-813b-d06c31fdb7c3") }, + { "813f9fbb-0bdb-4a1d-b917-636d300ada96", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "8501d23e-8165-44d6-b3c7-c2d3dc8a6f27"}, { Terminator.NumberTerminator, "cab4c63c-f4c2-42a6-8d55-15ef272d21b0"}, { new NonTerminator(NonTerminatorType.Variable), "7a2443d4-1bf4-47e0-aa00-769764338863"}, { new Terminator(DelimiterType.LeftParenthesis), "23d5b6c0-049a-44cb-810b-a148cf517a6a"}, { Terminator.IdentifierTerminator, "64c0f4db-301a-4e69-b2ff-a804bfc7a354"}, { new Terminator(KeywordType.Not), "1472348b-7588-4000-892e-1b4c1c2898c5"}, { new Terminator(OperatorType.Minus), "7a0d66f9-433e-45cc-a555-5baffc6e4a77"}, { new Terminator(OperatorType.Plus), "abce178f-4211-4c54-9300-e03398fc4b96"}, { new Terminator(KeywordType.True), "535aa9c8-1930-4f35-8779-ea515e1f8ac6"}, { new Terminator(KeywordType.False), "761bbd44-be16-4366-be63-884e0dcee59e"},}, new Dictionary{ }, "813f9fbb-0bdb-4a1d-b917-636d300ada96") }, + { "85faa6ce-d0e2-4fc6-afe2-f2f763e6a48a", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "9e57ae92-e6fe-4f62-bbbf-01c54cc0f263"},}, new Dictionary{ }, "85faa6ce-d0e2-4fc6-afe2-f2f763e6a48a") }, + { "88fdcea8-031a-4add-aa35-1245f70dc560", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "b72bd367-348f-4fbd-9634-b4577f62e43a"}, { new NonTerminator(NonTerminatorType.ExpressionList), "694346f5-b751-484b-87e0-36acf5eb078d"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "88fdcea8-031a-4add-aa35-1245f70dc560") }, + { "ac89b2d3-62ab-4724-adf5-eab3759cc1bf", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "ac89b2d3-62ab-4724-adf5-eab3759cc1bf") }, + { "6506a140-e53f-4029-87c7-1364f07abb74", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "133ff24f-e11f-450b-ac3a-eaa0bf04dee9"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "6506a140-e53f-4029-87c7-1364f07abb74") }, + { "bc474ec4-5cf4-4447-88b0-7d7f6c11f118", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "bc474ec4-5cf4-4447-88b0-7d7f6c11f118") }, + { "7d5c5d91-b1f5-4ca8-afef-981d103924ff", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "7d5c5d91-b1f5-4ca8-afef-981d103924ff") }, + { "abd5dbd2-4931-438f-9b63-1f3f4ccf034f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "abd5dbd2-4931-438f-9b63-1f3f4ccf034f") }, + { "df00649b-8c0e-4f9d-abf4-0e9c682b9a20", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.AddOperator), "1b8973f4-0863-40a4-b1fd-2f58fd222c7b"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, }, "df00649b-8c0e-4f9d-abf4-0e9c682b9a20") }, + { "9bf6096a-4090-46e0-9c21-2f91bbbd84a8", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "51b6b5d7-42c4-4f55-9c55-72d774cb8f5d"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "9bf6096a-4090-46e0-9c21-2f91bbbd84a8") }, + { "3f40e54a-b21e-48fe-b0b5-d57112cf5d6d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "3f40e54a-b21e-48fe-b0b5-d57112cf5d6d") }, + { "7391be4b-1fb0-46de-bf0f-bbd6f4ac3049", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "7391be4b-1fb0-46de-bf0f-bbd6f4ac3049") }, + { "051e59bb-12b5-4040-a8ed-e3d6deabeb5e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "051e59bb-12b5-4040-a8ed-e3d6deabeb5e") }, + { "acf16c49-de5a-497f-bc11-fefdcf938c88", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "04cd67d7-c346-41e3-aa4b-2a1fd3496108"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "acf16c49-de5a-497f-bc11-fefdcf938c88") }, + { "25e4d48e-dd03-4e03-9a71-5577abba56e6", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "f15133f8-d0f2-4a8d-8b79-573f2d450003"}, { new NonTerminator(NonTerminatorType.IdVarPart), "e7233b40-3e97-411c-90b0-c6891f36223f"}, { new Terminator(DelimiterType.LeftSquareBracket), "3b103296-f9a9-4269-a1d0-ddab20c79956"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "25e4d48e-dd03-4e03-9a71-5577abba56e6") }, + { "4590ba99-bea5-4252-9711-968ce1ba80a8", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "f1027b2f-2acd-4ee0-9faa-07bc33a3e5f0"}, { Terminator.NumberTerminator, "7391be4b-1fb0-46de-bf0f-bbd6f4ac3049"}, { new NonTerminator(NonTerminatorType.Variable), "051e59bb-12b5-4040-a8ed-e3d6deabeb5e"}, { new Terminator(DelimiterType.LeftParenthesis), "acf16c49-de5a-497f-bc11-fefdcf938c88"}, { Terminator.IdentifierTerminator, "25e4d48e-dd03-4e03-9a71-5577abba56e6"}, { new Terminator(KeywordType.Not), "4590ba99-bea5-4252-9711-968ce1ba80a8"}, { new Terminator(OperatorType.Minus), "4518e39d-ab76-43b2-976b-ada9559918e6"}, { new Terminator(OperatorType.Plus), "b6e23807-1de0-44f0-a845-a82038db0c6e"}, { new Terminator(KeywordType.True), "23140283-9c44-4e07-811e-014f70593d7d"}, { new Terminator(KeywordType.False), "dc7fb2dd-cdc3-4592-8191-c7e2732548d1"},}, new Dictionary{ }, "4590ba99-bea5-4252-9711-968ce1ba80a8") }, + { "4518e39d-ab76-43b2-976b-ada9559918e6", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "aeaaed95-4631-443a-a285-8afad64fb8f7"}, { Terminator.NumberTerminator, "7391be4b-1fb0-46de-bf0f-bbd6f4ac3049"}, { new NonTerminator(NonTerminatorType.Variable), "051e59bb-12b5-4040-a8ed-e3d6deabeb5e"}, { new Terminator(DelimiterType.LeftParenthesis), "acf16c49-de5a-497f-bc11-fefdcf938c88"}, { Terminator.IdentifierTerminator, "25e4d48e-dd03-4e03-9a71-5577abba56e6"}, { new Terminator(KeywordType.Not), "4590ba99-bea5-4252-9711-968ce1ba80a8"}, { new Terminator(OperatorType.Minus), "4518e39d-ab76-43b2-976b-ada9559918e6"}, { new Terminator(OperatorType.Plus), "b6e23807-1de0-44f0-a845-a82038db0c6e"}, { new Terminator(KeywordType.True), "23140283-9c44-4e07-811e-014f70593d7d"}, { new Terminator(KeywordType.False), "dc7fb2dd-cdc3-4592-8191-c7e2732548d1"},}, new Dictionary{ }, "4518e39d-ab76-43b2-976b-ada9559918e6") }, + { "b6e23807-1de0-44f0-a845-a82038db0c6e", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "adbc7cc6-fc2e-43ec-af23-e9425652639a"}, { Terminator.NumberTerminator, "7391be4b-1fb0-46de-bf0f-bbd6f4ac3049"}, { new NonTerminator(NonTerminatorType.Variable), "051e59bb-12b5-4040-a8ed-e3d6deabeb5e"}, { new Terminator(DelimiterType.LeftParenthesis), "acf16c49-de5a-497f-bc11-fefdcf938c88"}, { Terminator.IdentifierTerminator, "25e4d48e-dd03-4e03-9a71-5577abba56e6"}, { new Terminator(KeywordType.Not), "4590ba99-bea5-4252-9711-968ce1ba80a8"}, { new Terminator(OperatorType.Minus), "4518e39d-ab76-43b2-976b-ada9559918e6"}, { new Terminator(OperatorType.Plus), "b6e23807-1de0-44f0-a845-a82038db0c6e"}, { new Terminator(KeywordType.True), "23140283-9c44-4e07-811e-014f70593d7d"}, { new Terminator(KeywordType.False), "dc7fb2dd-cdc3-4592-8191-c7e2732548d1"},}, new Dictionary{ }, "b6e23807-1de0-44f0-a845-a82038db0c6e") }, + { "23140283-9c44-4e07-811e-014f70593d7d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "23140283-9c44-4e07-811e-014f70593d7d") }, + { "dc7fb2dd-cdc3-4592-8191-c7e2732548d1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "dc7fb2dd-cdc3-4592-8191-c7e2732548d1") }, + { "e0b97216-1322-402d-8421-5d4dd2e6c8c7", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "2601e0f6-f43b-4d6c-8e4d-e91a592d67b5"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "e0b97216-1322-402d-8421-5d4dd2e6c8c7") }, + { "52b0cd30-c38e-4604-bf0b-7b440312308b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "52b0cd30-c38e-4604-bf0b-7b440312308b") }, + { "a6afe019-2353-491f-8e7e-e74ec4f9060a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "a6afe019-2353-491f-8e7e-e74ec4f9060a") }, + { "b3131ead-9c46-4c49-a007-20edab8d6b08", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "b3131ead-9c46-4c49-a007-20edab8d6b08") }, + { "a64e80cd-c766-4a67-88b5-fb4ff74830bb", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "a0d16d8b-5179-41f4-aa3c-fc1f3b2a6c0e"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "a64e80cd-c766-4a67-88b5-fb4ff74830bb") }, + { "15d5123c-3907-4d3e-96bd-8f5a6658a742", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "8b0a337b-63c9-4bc0-ab31-dd4bf7624d3a"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "15d5123c-3907-4d3e-96bd-8f5a6658a742") }, + { "46da40c0-48e9-468e-9857-618e5a6760e7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "46da40c0-48e9-468e-9857-618e5a6760e7") }, + { "1c8e1291-f795-4124-a651-17bec23caba2", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "1c8e1291-f795-4124-a651-17bec23caba2") }, + { "595db63b-feec-4644-856b-7441b25e1fb1", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "f9156b36-b76d-4ba8-852e-2303fcb1a88f"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "605e6610-c7fd-4688-914d-554d4e1f0467"}, { new NonTerminator(NonTerminatorType.Term), "ecf78c42-792d-4d48-8f88-e1cd8e101dd0"}, { new NonTerminator(NonTerminatorType.Factor), "17ce7de7-ab8c-4389-a0a2-d215ebdc96b1"}, { Terminator.NumberTerminator, "2b65415f-fb75-427d-a310-39b44b8db03a"}, { new NonTerminator(NonTerminatorType.Variable), "80bf23b2-58db-4d1a-84d2-bec3e73c0429"}, { new Terminator(DelimiterType.LeftParenthesis), "1cd421b5-16d2-469d-bb62-1a97353ec366"}, { Terminator.IdentifierTerminator, "db36538c-6d08-4417-a589-ca40963ee1c5"}, { new Terminator(KeywordType.Not), "47a918c3-1ad6-4fb3-aa15-e10f85953c5d"}, { new Terminator(OperatorType.Minus), "4a9f4005-1b1b-445e-905a-389a24c88d05"}, { new Terminator(OperatorType.Plus), "d6df8a91-452b-46a5-b35e-18cb2be98261"}, { new Terminator(KeywordType.True), "c9085b14-74b4-4630-8f90-1009eb9f7674"}, { new Terminator(KeywordType.False), "44c59546-5b4e-48b3-a3eb-de499bb1a988"},}, new Dictionary{ }, "595db63b-feec-4644-856b-7441b25e1fb1") }, + { "44ddaf01-500a-4146-b9e9-32f24062c7d8", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SimpleExpression), "39040f7c-2678-4807-b259-e2e4a2786e3c"}, { new NonTerminator(NonTerminatorType.Term), "c480f64e-d5b8-407a-ae50-c81c38b424b1"}, { new NonTerminator(NonTerminatorType.Factor), "0352fdd2-1b67-477e-93fd-cea1c06f45ee"}, { Terminator.NumberTerminator, "597502bd-bfc5-413e-aaf9-a5279dc2d81f"}, { new NonTerminator(NonTerminatorType.Variable), "68ec7b04-b2ca-44d9-9198-8406d7b95ac8"}, { new Terminator(DelimiterType.LeftParenthesis), "9fcef660-a3cf-4283-8937-042070fc8839"}, { Terminator.IdentifierTerminator, "546a7d7e-9ec6-4d7f-953d-7e90a46b201e"}, { new Terminator(KeywordType.Not), "2b6c5fda-1717-49be-9fa5-41a15c762693"}, { new Terminator(OperatorType.Minus), "00a34300-5ffd-4bdd-9ad4-dbcd7e51d070"}, { new Terminator(OperatorType.Plus), "fd1875ee-3911-4420-a664-eefe46f836cb"}, { new Terminator(KeywordType.True), "1a2a9fee-915f-4190-ba8a-a76d5c6b189f"}, { new Terminator(KeywordType.False), "4d1f706c-e3ac-4c82-aa63-ee5404f45b3a"},}, new Dictionary{ }, "44ddaf01-500a-4146-b9e9-32f24062c7d8") }, + { "881b6451-4f23-4cac-a70c-9559269fd0ee", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "51305026-06e1-402c-a236-06774d259ded"}, { new NonTerminator(NonTerminatorType.Factor), "277e1067-8bdd-4e98-b081-283debc883c7"}, { Terminator.NumberTerminator, "1c953f12-cf14-406e-903e-470824dc97ad"}, { new NonTerminator(NonTerminatorType.Variable), "d73b91e5-02cd-42df-a433-79911f49ccd3"}, { new Terminator(DelimiterType.LeftParenthesis), "48f64dba-33fb-4f85-831c-a4b339f7eaa9"}, { Terminator.IdentifierTerminator, "80ffb3c9-cb71-4997-919f-6dbec21ef615"}, { new Terminator(KeywordType.Not), "ba066289-25d2-4d2d-9fa4-cb70f146976f"}, { new Terminator(OperatorType.Minus), "da7f037a-28cb-4723-bfae-e492d20e6613"}, { new Terminator(OperatorType.Plus), "8236a0b9-fcba-4ed2-9896-c83039b99c76"}, { new Terminator(KeywordType.True), "c5c55305-06ae-4eb6-8dd0-066ab4045fcd"}, { new Terminator(KeywordType.False), "7c79955e-3e28-407b-9bef-fad899315e52"},}, new Dictionary{ }, "881b6451-4f23-4cac-a70c-9559269fd0ee") }, + { "c75f8261-811d-4aa2-b884-5808a8f68ad6", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "bcca27d0-b166-492c-9d16-8cdac6d39c51"}, { Terminator.NumberTerminator, "1c953f12-cf14-406e-903e-470824dc97ad"}, { new NonTerminator(NonTerminatorType.Variable), "d73b91e5-02cd-42df-a433-79911f49ccd3"}, { new Terminator(DelimiterType.LeftParenthesis), "48f64dba-33fb-4f85-831c-a4b339f7eaa9"}, { Terminator.IdentifierTerminator, "80ffb3c9-cb71-4997-919f-6dbec21ef615"}, { new Terminator(KeywordType.Not), "ba066289-25d2-4d2d-9fa4-cb70f146976f"}, { new Terminator(OperatorType.Minus), "da7f037a-28cb-4723-bfae-e492d20e6613"}, { new Terminator(OperatorType.Plus), "8236a0b9-fcba-4ed2-9896-c83039b99c76"}, { new Terminator(KeywordType.True), "c5c55305-06ae-4eb6-8dd0-066ab4045fcd"}, { new Terminator(KeywordType.False), "7c79955e-3e28-407b-9bef-fad899315e52"},}, new Dictionary{ }, "c75f8261-811d-4aa2-b884-5808a8f68ad6") }, + { "24606fa9-2b6e-4cff-b785-edc6652bd5ba", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "203d6b48-7a57-4687-a023-37eb3ac2d56a"},}, new Dictionary{ }, "24606fa9-2b6e-4cff-b785-edc6652bd5ba") }, + { "ad26c00d-4b80-4437-aa7c-f22ea9f55b5e", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "8d57c1ee-e400-4b72-a84d-8eb1973b4cb0"}, { new NonTerminator(NonTerminatorType.ExpressionList), "80d23aab-27ea-4238-9d7e-5686a508a435"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "ad26c00d-4b80-4437-aa7c-f22ea9f55b5e") }, + { "c3c756e1-cf99-445d-93a9-b73b491dbd7a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "c3c756e1-cf99-445d-93a9-b73b491dbd7a") }, + { "4b9527ed-50ba-4a72-8c93-2ee35bcfda7e", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "dcf0d916-2e5a-483f-b927-a15ffc53fe88"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "4b9527ed-50ba-4a72-8c93-2ee35bcfda7e") }, + { "a2573c94-3e54-44e9-9f8b-b2d0e8ea6453", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "a2573c94-3e54-44e9-9f8b-b2d0e8ea6453") }, + { "2aece360-9191-4648-a9d1-8edb8e96884a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "2aece360-9191-4648-a9d1-8edb8e96884a") }, + { "3fa35bcb-0aa5-452a-9afe-53363fed2b2a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "3fa35bcb-0aa5-452a-9afe-53363fed2b2a") }, + { "54870ff5-6830-42be-a0a6-ffc6c6501065", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "0fc5f635-8aab-4685-a94e-96488d590aad"}, { new NonTerminator(NonTerminatorType.Factor), "604834f5-b217-434f-9367-7bfed56ab9b0"}, { Terminator.NumberTerminator, "a10429b4-24eb-467f-a608-b98aa8db3e67"}, { new NonTerminator(NonTerminatorType.Variable), "fd00f009-580f-4160-ae7b-6beff969944f"}, { new Terminator(DelimiterType.LeftParenthesis), "2cb1384f-a831-4ccb-8764-eb3365de539f"}, { Terminator.IdentifierTerminator, "9a0f0758-e53a-4a96-9702-9c4220cbc1f0"}, { new Terminator(KeywordType.Not), "55680e38-d0da-441a-b95d-23649cea1617"}, { new Terminator(OperatorType.Minus), "75a3607c-680a-4a2f-9c66-bc05dff3c7f1"}, { new Terminator(OperatorType.Plus), "a21176fc-2cc4-42c8-b918-6ace257cad4d"}, { new Terminator(KeywordType.True), "216bfda7-db41-4a83-9aa9-49047e81ff99"}, { new Terminator(KeywordType.False), "1a83cf74-2f22-4578-bacb-ac3b3e307f30"},}, new Dictionary{ }, "54870ff5-6830-42be-a0a6-ffc6c6501065") }, + { "c8c45668-ae93-4583-bb94-b1fc9655afa2", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "b29ae352-a17f-4ebf-bbcd-73f68116c839"}, { Terminator.NumberTerminator, "a10429b4-24eb-467f-a608-b98aa8db3e67"}, { new NonTerminator(NonTerminatorType.Variable), "fd00f009-580f-4160-ae7b-6beff969944f"}, { new Terminator(DelimiterType.LeftParenthesis), "2cb1384f-a831-4ccb-8764-eb3365de539f"}, { Terminator.IdentifierTerminator, "9a0f0758-e53a-4a96-9702-9c4220cbc1f0"}, { new Terminator(KeywordType.Not), "55680e38-d0da-441a-b95d-23649cea1617"}, { new Terminator(OperatorType.Minus), "75a3607c-680a-4a2f-9c66-bc05dff3c7f1"}, { new Terminator(OperatorType.Plus), "a21176fc-2cc4-42c8-b918-6ace257cad4d"}, { new Terminator(KeywordType.True), "216bfda7-db41-4a83-9aa9-49047e81ff99"}, { new Terminator(KeywordType.False), "1a83cf74-2f22-4578-bacb-ac3b3e307f30"},}, new Dictionary{ }, "c8c45668-ae93-4583-bb94-b1fc9655afa2") }, + { "5df0661a-202c-4346-8e20-72161d614790", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "42b23697-4fd1-467b-913c-3d535a1a5e2e"},}, new Dictionary{ }, "5df0661a-202c-4346-8e20-72161d614790") }, + { "a5492f61-0dd8-4336-97c4-0378a918b307", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "ad1c4ca8-6ff3-4147-a8fa-d904d54f4bae"}, { new NonTerminator(NonTerminatorType.ExpressionList), "45e57db9-ee65-4d19-a55b-dc8459c17f2f"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "a5492f61-0dd8-4336-97c4-0378a918b307") }, + { "8ad5d0ad-3561-4a7a-86c0-07f0c6b90297", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "8ad5d0ad-3561-4a7a-86c0-07f0c6b90297") }, + { "5c0cbf48-d7c0-4a91-bfd1-fb8dc9b7081b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "166f3c05-4574-4f5b-aa07-4bc34d007f6b"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "5c0cbf48-d7c0-4a91-bfd1-fb8dc9b7081b") }, + { "6bee4c38-458d-4351-b1e7-134bf67e68ca", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "6bee4c38-458d-4351-b1e7-134bf67e68ca") }, + { "1d95d24a-36da-443b-b49e-cc43d6a59fea", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "1d95d24a-36da-443b-b49e-cc43d6a59fea") }, + { "e9453497-c7e9-476a-b08a-427f2f43a2be", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "e9453497-c7e9-476a-b08a-427f2f43a2be") }, + { "e30986e4-12d0-4bec-98f4-ed089c500fc7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "e30986e4-12d0-4bec-98f4-ed089c500fc7") }, + { "d544a1df-406e-4fba-ac51-7404ad8687de", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "d544a1df-406e-4fba-ac51-7404ad8687de") }, + { "8c78b70b-be8a-4e05-95d1-df7e72b0b7d7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ExpressionList))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ExpressionList))}, }, "8c78b70b-be8a-4e05-95d1-df7e72b0b7d7") }, + { "07f04ab8-b4f5-4324-9792-79151f658da8", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.AddOperator), "28ca6f5f-59a1-49b4-aac5-2a4d7b6b6a71"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, }, "07f04ab8-b4f5-4324-9792-79151f658da8") }, + { "b52f9ef7-af24-44c2-ae8e-6ddc1b8bdf10", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "f4bbb2b0-bcb3-4041-a9d4-6375412f9674"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "b52f9ef7-af24-44c2-ae8e-6ddc1b8bdf10") }, + { "0587eecb-ddff-42fd-a87e-a2cc54145a64", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "0587eecb-ddff-42fd-a87e-a2cc54145a64") }, + { "fc48fd81-e86c-47c7-87c1-2291bc56bb75", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "fc48fd81-e86c-47c7-87c1-2291bc56bb75") }, + { "f1d71193-f562-4fd1-818b-760ca17c2a78", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "f1d71193-f562-4fd1-818b-760ca17c2a78") }, + { "50d2792d-8a7e-4a8b-9d3d-8f6350311b18", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "a2209bd2-bc23-4da5-aed3-69ec0c5fd293"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "50d2792d-8a7e-4a8b-9d3d-8f6350311b18") }, + { "50da5232-d1a0-40f8-9fda-34dd046dd610", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "71648cd3-2916-4ca7-9c7f-c7c419d433e7"}, { new NonTerminator(NonTerminatorType.IdVarPart), "f18bcf42-aeab-4132-8dc7-b302cbab30bf"}, { new Terminator(DelimiterType.LeftSquareBracket), "4cbcf837-89dd-44c4-8298-d0863a7a06de"},}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "50da5232-d1a0-40f8-9fda-34dd046dd610") }, + { "caf65160-0457-4b3a-8c36-0f078bfe063b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "7d13108c-7b60-44a7-8cc4-b6c898f358c1"}, { Terminator.NumberTerminator, "fc48fd81-e86c-47c7-87c1-2291bc56bb75"}, { new NonTerminator(NonTerminatorType.Variable), "f1d71193-f562-4fd1-818b-760ca17c2a78"}, { new Terminator(DelimiterType.LeftParenthesis), "50d2792d-8a7e-4a8b-9d3d-8f6350311b18"}, { Terminator.IdentifierTerminator, "50da5232-d1a0-40f8-9fda-34dd046dd610"}, { new Terminator(KeywordType.Not), "caf65160-0457-4b3a-8c36-0f078bfe063b"}, { new Terminator(OperatorType.Minus), "8a34f1bb-d7aa-4935-899e-48f6bf60755f"}, { new Terminator(OperatorType.Plus), "bf8528f5-d90a-4b7a-b797-42cf8c7c329c"}, { new Terminator(KeywordType.True), "aebc570e-5571-42ba-8636-4a904d7ae434"}, { new Terminator(KeywordType.False), "cf28c26f-f1d0-458b-8357-51a559013c5c"},}, new Dictionary{ }, "caf65160-0457-4b3a-8c36-0f078bfe063b") }, + { "8a34f1bb-d7aa-4935-899e-48f6bf60755f", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "768f97d9-bb41-4bb5-9469-444d622921aa"}, { Terminator.NumberTerminator, "fc48fd81-e86c-47c7-87c1-2291bc56bb75"}, { new NonTerminator(NonTerminatorType.Variable), "f1d71193-f562-4fd1-818b-760ca17c2a78"}, { new Terminator(DelimiterType.LeftParenthesis), "50d2792d-8a7e-4a8b-9d3d-8f6350311b18"}, { Terminator.IdentifierTerminator, "50da5232-d1a0-40f8-9fda-34dd046dd610"}, { new Terminator(KeywordType.Not), "caf65160-0457-4b3a-8c36-0f078bfe063b"}, { new Terminator(OperatorType.Minus), "8a34f1bb-d7aa-4935-899e-48f6bf60755f"}, { new Terminator(OperatorType.Plus), "bf8528f5-d90a-4b7a-b797-42cf8c7c329c"}, { new Terminator(KeywordType.True), "aebc570e-5571-42ba-8636-4a904d7ae434"}, { new Terminator(KeywordType.False), "cf28c26f-f1d0-458b-8357-51a559013c5c"},}, new Dictionary{ }, "8a34f1bb-d7aa-4935-899e-48f6bf60755f") }, + { "bf8528f5-d90a-4b7a-b797-42cf8c7c329c", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "66c211a1-3758-4bf7-9a58-91a33a10258c"}, { Terminator.NumberTerminator, "fc48fd81-e86c-47c7-87c1-2291bc56bb75"}, { new NonTerminator(NonTerminatorType.Variable), "f1d71193-f562-4fd1-818b-760ca17c2a78"}, { new Terminator(DelimiterType.LeftParenthesis), "50d2792d-8a7e-4a8b-9d3d-8f6350311b18"}, { Terminator.IdentifierTerminator, "50da5232-d1a0-40f8-9fda-34dd046dd610"}, { new Terminator(KeywordType.Not), "caf65160-0457-4b3a-8c36-0f078bfe063b"}, { new Terminator(OperatorType.Minus), "8a34f1bb-d7aa-4935-899e-48f6bf60755f"}, { new Terminator(OperatorType.Plus), "bf8528f5-d90a-4b7a-b797-42cf8c7c329c"}, { new Terminator(KeywordType.True), "aebc570e-5571-42ba-8636-4a904d7ae434"}, { new Terminator(KeywordType.False), "cf28c26f-f1d0-458b-8357-51a559013c5c"},}, new Dictionary{ }, "bf8528f5-d90a-4b7a-b797-42cf8c7c329c") }, + { "aebc570e-5571-42ba-8636-4a904d7ae434", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "aebc570e-5571-42ba-8636-4a904d7ae434") }, + { "cf28c26f-f1d0-458b-8357-51a559013c5c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "cf28c26f-f1d0-458b-8357-51a559013c5c") }, + { "08a66bf3-d20f-4540-9dcf-0d1ef09bf430", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "47ffd406-53c9-4960-9673-b91d67c6b194"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "08a66bf3-d20f-4540-9dcf-0d1ef09bf430") }, + { "8fa2b1f9-c9d2-46b6-a9cb-640ce21f4078", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "8fa2b1f9-c9d2-46b6-a9cb-640ce21f4078") }, + { "a5ce048a-d74f-4040-b053-5e2fc82966f0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "a5ce048a-d74f-4040-b053-5e2fc82966f0") }, + { "65d89ddb-78df-48ca-9b07-3f744c4f6855", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "65d89ddb-78df-48ca-9b07-3f744c4f6855") }, + { "36a56723-b1cf-4614-8894-164fed30182a", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "50fc22f7-78d7-4abd-8fcc-b4e5d5838f58"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "36a56723-b1cf-4614-8894-164fed30182a") }, + { "7373be0a-d03b-453d-948f-6128a46ba03f", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "68ff2701-5df7-4c5e-ab2b-a71b10befc3f"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "7373be0a-d03b-453d-948f-6128a46ba03f") }, + { "8676a9cb-9a2e-4de1-aa70-dd7ed3dd12ef", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ExpressionList))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ExpressionList))}, }, "8676a9cb-9a2e-4de1-aa70-dd7ed3dd12ef") }, + { "1b2f15a7-639f-4f9f-af90-6d5c35391d3d", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.AddOperator), "b6afc871-9c24-4801-8215-b46bf4f11edc"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, }, "1b2f15a7-639f-4f9f-af90-6d5c35391d3d") }, + { "f6ef1c84-cd0b-4b13-832e-7c032450e234", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "691df913-fa28-4dd5-89c9-b6713b30a142"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "f6ef1c84-cd0b-4b13-832e-7c032450e234") }, + { "0426cda0-e8fd-49e4-8542-5986243370c9", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "0426cda0-e8fd-49e4-8542-5986243370c9") }, + { "2790bace-a273-4647-a94f-0889cbf2b024", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "2790bace-a273-4647-a94f-0889cbf2b024") }, + { "e1ce60b1-d34e-4bbd-9885-33d2953b99d5", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "e1ce60b1-d34e-4bbd-9885-33d2953b99d5") }, + { "88f5f65d-5a3e-4cb2-af69-05f8991b71e0", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "0977bb78-5115-48d5-ae5d-8eabe3d1bde7"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "88f5f65d-5a3e-4cb2-af69-05f8991b71e0") }, + { "276093ee-50ea-4890-9204-dd4c42d5a6d9", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "f52b0f6d-32aa-4e8a-9231-1fe029da1b7f"}, { new NonTerminator(NonTerminatorType.IdVarPart), "159aa037-31d2-4a4d-a3a8-b4c9d1069ba1"}, { new Terminator(DelimiterType.LeftSquareBracket), "f2da23e2-6fe1-4a5e-907c-bd9d8a127417"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "276093ee-50ea-4890-9204-dd4c42d5a6d9") }, + { "d36286b9-630e-4f01-a70c-efc769acec3b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "9a19e16f-7cf6-4a88-a9bc-3b24f1df5760"}, { Terminator.NumberTerminator, "2790bace-a273-4647-a94f-0889cbf2b024"}, { new NonTerminator(NonTerminatorType.Variable), "e1ce60b1-d34e-4bbd-9885-33d2953b99d5"}, { new Terminator(DelimiterType.LeftParenthesis), "88f5f65d-5a3e-4cb2-af69-05f8991b71e0"}, { Terminator.IdentifierTerminator, "276093ee-50ea-4890-9204-dd4c42d5a6d9"}, { new Terminator(KeywordType.Not), "d36286b9-630e-4f01-a70c-efc769acec3b"}, { new Terminator(OperatorType.Minus), "e8b2609e-d3b0-4df7-8d30-71682012f622"}, { new Terminator(OperatorType.Plus), "661f8d06-c6c5-416f-8574-c1d3498383ae"}, { new Terminator(KeywordType.True), "bcb4a4ef-48fa-40a6-a57f-b8d6ce5041a6"}, { new Terminator(KeywordType.False), "4adb4190-f200-4444-916a-25f417059cac"},}, new Dictionary{ }, "d36286b9-630e-4f01-a70c-efc769acec3b") }, + { "e8b2609e-d3b0-4df7-8d30-71682012f622", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "fd8c55af-a67a-43c4-bee2-76cb7f7e4de0"}, { Terminator.NumberTerminator, "2790bace-a273-4647-a94f-0889cbf2b024"}, { new NonTerminator(NonTerminatorType.Variable), "e1ce60b1-d34e-4bbd-9885-33d2953b99d5"}, { new Terminator(DelimiterType.LeftParenthesis), "88f5f65d-5a3e-4cb2-af69-05f8991b71e0"}, { Terminator.IdentifierTerminator, "276093ee-50ea-4890-9204-dd4c42d5a6d9"}, { new Terminator(KeywordType.Not), "d36286b9-630e-4f01-a70c-efc769acec3b"}, { new Terminator(OperatorType.Minus), "e8b2609e-d3b0-4df7-8d30-71682012f622"}, { new Terminator(OperatorType.Plus), "661f8d06-c6c5-416f-8574-c1d3498383ae"}, { new Terminator(KeywordType.True), "bcb4a4ef-48fa-40a6-a57f-b8d6ce5041a6"}, { new Terminator(KeywordType.False), "4adb4190-f200-4444-916a-25f417059cac"},}, new Dictionary{ }, "e8b2609e-d3b0-4df7-8d30-71682012f622") }, + { "661f8d06-c6c5-416f-8574-c1d3498383ae", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "2cb5b4db-5819-426a-a1c1-74800be3b56e"}, { Terminator.NumberTerminator, "2790bace-a273-4647-a94f-0889cbf2b024"}, { new NonTerminator(NonTerminatorType.Variable), "e1ce60b1-d34e-4bbd-9885-33d2953b99d5"}, { new Terminator(DelimiterType.LeftParenthesis), "88f5f65d-5a3e-4cb2-af69-05f8991b71e0"}, { Terminator.IdentifierTerminator, "276093ee-50ea-4890-9204-dd4c42d5a6d9"}, { new Terminator(KeywordType.Not), "d36286b9-630e-4f01-a70c-efc769acec3b"}, { new Terminator(OperatorType.Minus), "e8b2609e-d3b0-4df7-8d30-71682012f622"}, { new Terminator(OperatorType.Plus), "661f8d06-c6c5-416f-8574-c1d3498383ae"}, { new Terminator(KeywordType.True), "bcb4a4ef-48fa-40a6-a57f-b8d6ce5041a6"}, { new Terminator(KeywordType.False), "4adb4190-f200-4444-916a-25f417059cac"},}, new Dictionary{ }, "661f8d06-c6c5-416f-8574-c1d3498383ae") }, + { "bcb4a4ef-48fa-40a6-a57f-b8d6ce5041a6", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "bcb4a4ef-48fa-40a6-a57f-b8d6ce5041a6") }, + { "4adb4190-f200-4444-916a-25f417059cac", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "4adb4190-f200-4444-916a-25f417059cac") }, + { "d5655891-1b96-4c39-9c4a-b0f709893320", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "8a192745-a8a6-426a-8612-92e78beda675"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "d5655891-1b96-4c39-9c4a-b0f709893320") }, + { "26e97af7-7f48-414a-8fae-645a2f4c54cb", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "26e97af7-7f48-414a-8fae-645a2f4c54cb") }, + { "4b77da3c-d037-499b-9b7d-e16185017ab8", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "4b77da3c-d037-499b-9b7d-e16185017ab8") }, + { "40677224-2ce7-4f1c-a479-9eacf105f1aa", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "40677224-2ce7-4f1c-a479-9eacf105f1aa") }, + { "c1331848-bf9b-4159-b002-bb04bb2399d1", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "33af1da2-bcf0-4810-807a-5f83701ead15"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "c1331848-bf9b-4159-b002-bb04bb2399d1") }, + { "e5fb5661-704f-433e-84c8-25ee0f40a46e", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "b3d609c4-af07-4487-8a49-68d1804b5c77"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "e5fb5661-704f-433e-84c8-25ee0f40a46e") }, + { "86cdc12b-8fcc-46d7-a147-1f6089017344", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.End), "76e2bb63-d910-4147-9ffa-eb8b7471d3ae"}, { new Terminator(DelimiterType.Semicolon), "d7c0ed7a-1000-4e5d-9348-1077a94bf3f4"},}, new Dictionary{ }, "86cdc12b-8fcc-46d7-a147-1f6089017344") }, + { "af4bc1d2-2918-4737-a024-0122c094d829", new GeneratedTransformer(new Dictionary{ { Terminator.IdentifierTerminator, "3bf41f0d-a029-47ff-be8d-6c9bed085d4c"},}, new Dictionary{ { new Terminator(KeywordType.Begin), new ReduceInformation(3, new NonTerminator(NonTerminatorType.VarDeclarations))}, }, "af4bc1d2-2918-4737-a024-0122c094d829") }, + { "5ab18416-c1e7-438f-bf53-2a997e6a8bd1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ParameterList))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ParameterList))}, }, "5ab18416-c1e7-438f-bf53-2a997e6a8bd1") }, + { "a0f15d90-d9da-4363-9894-f6af765c23ae", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.IdentifierList), "c7d257fc-4593-4d05-851a-daea5ccf351a"}, { new Terminator(DelimiterType.Comma), "5c435b00-58fa-424f-8d80-44581d6495d4"}, { new Terminator(DelimiterType.Colon), "f364b470-5153-4353-abce-800b8bb3b8cf"},}, new Dictionary{ }, "a0f15d90-d9da-4363-9894-f6af765c23ae") }, + { "523fba32-d7c3-460f-b45b-198c04135267", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.IdentifierList))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.IdentifierList))}, }, "523fba32-d7c3-460f-b45b-198c04135267") }, + { "5601d86d-b88e-4ad8-bcef-da4a4b8d20bf", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Type))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Type))}, }, "5601d86d-b88e-4ad8-bcef-da4a4b8d20bf") }, + { "ab73c218-e084-4462-9670-542048ecbb25", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftSquareBracket), "0340ca99-6908-41ba-af37-5caf29bc08c1"},}, new Dictionary{ }, "ab73c218-e084-4462-9670-542048ecbb25") }, + { "265dc661-0c5d-49bc-83a8-648314bd547f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "265dc661-0c5d-49bc-83a8-648314bd547f") }, + { "6ba8980f-fabc-4a45-b031-00a2552ccf73", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "6ba8980f-fabc-4a45-b031-00a2552ccf73") }, + { "9c4bbea1-b9b8-4d1a-890c-e2825b218b61", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "9c4bbea1-b9b8-4d1a-890c-e2825b218b61") }, + { "55b917ca-2312-4e43-9503-c6ab992ce9e2", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.BasicType))}, }, "55b917ca-2312-4e43-9503-c6ab992ce9e2") }, + { "50ad3dfd-cc6a-4d16-ae5b-0cd9c508be48", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.BasicType), "54ba9775-3dd4-4f76-b5af-cdca98475367"}, { new Terminator(KeywordType.Integer), "53fb2178-3ce3-41bf-b111-74899ad57bab"}, { new Terminator(KeywordType.Real), "f0bab41c-04a7-4c56-b111-ef249f8f888c"}, { new Terminator(KeywordType.Boolean), "ce45f10b-d787-4ea7-9a1b-be114506cc7b"}, { new Terminator(KeywordType.Character), "687ec48b-b819-4790-a279-957de0b38494"},}, new Dictionary{ }, "50ad3dfd-cc6a-4d16-ae5b-0cd9c508be48") }, + { "48e172a4-1a69-4a35-ba02-a15a0baf339d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(5, new NonTerminator(NonTerminatorType.Period))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(5, new NonTerminator(NonTerminatorType.Period))}, }, "48e172a4-1a69-4a35-ba02-a15a0baf339d") }, + { "df5dd4b7-4314-44a2-b102-16d1dc01bded", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "c2888f10-41bf-41a6-a305-d8d17c81b538"}, { new NonTerminator(NonTerminatorType.Factor), "cb214466-4f8c-4be6-8c5a-aee7453b58fc"}, { Terminator.NumberTerminator, "2b088aca-1f66-4735-b43b-647ff6a817d6"}, { new NonTerminator(NonTerminatorType.Variable), "54dd46eb-09e8-4045-bfb0-72a0ea4d7fae"}, { new Terminator(DelimiterType.LeftParenthesis), "d558e501-5024-4375-a3d0-1120f9e59757"}, { Terminator.IdentifierTerminator, "19aac92d-1326-45bb-9cde-26c15dfeb3f9"}, { new Terminator(KeywordType.Not), "e2e34c26-1bd4-4a5d-b527-d0f0decad4c8"}, { new Terminator(OperatorType.Minus), "a3509be7-9dc3-4f48-8d60-ec0e43bc2a6a"}, { new Terminator(OperatorType.Plus), "f0af15b7-edf7-40bc-a9ab-3e992e2d6e07"}, { new Terminator(KeywordType.True), "56c6a91a-0bd1-4c5f-b613-af29bc731cf9"}, { new Terminator(KeywordType.False), "0a1f52df-4d6e-431d-8333-cfc432ac9896"},}, new Dictionary{ }, "df5dd4b7-4314-44a2-b102-16d1dc01bded") }, + { "eccb4f85-79e0-41bf-afe4-90e595d76176", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "90a90ab0-cc22-4807-98a0-ebf59a7e5865"}, { Terminator.NumberTerminator, "2b088aca-1f66-4735-b43b-647ff6a817d6"}, { new NonTerminator(NonTerminatorType.Variable), "54dd46eb-09e8-4045-bfb0-72a0ea4d7fae"}, { new Terminator(DelimiterType.LeftParenthesis), "d558e501-5024-4375-a3d0-1120f9e59757"}, { Terminator.IdentifierTerminator, "19aac92d-1326-45bb-9cde-26c15dfeb3f9"}, { new Terminator(KeywordType.Not), "e2e34c26-1bd4-4a5d-b527-d0f0decad4c8"}, { new Terminator(OperatorType.Minus), "a3509be7-9dc3-4f48-8d60-ec0e43bc2a6a"}, { new Terminator(OperatorType.Plus), "f0af15b7-edf7-40bc-a9ab-3e992e2d6e07"}, { new Terminator(KeywordType.True), "56c6a91a-0bd1-4c5f-b613-af29bc731cf9"}, { new Terminator(KeywordType.False), "0a1f52df-4d6e-431d-8333-cfc432ac9896"},}, new Dictionary{ }, "eccb4f85-79e0-41bf-afe4-90e595d76176") }, + { "bb4c62a9-1c43-4c26-8bb0-1156b149c19c", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "715e739b-044b-43f5-ba18-c6489c75e0de"},}, new Dictionary{ }, "bb4c62a9-1c43-4c26-8bb0-1156b149c19c") }, + { "4d97bdb0-dfde-44ef-9a25-1cc23fa4fd0c", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "8ae5a25a-9aa0-4804-847e-b4a64d20698e"}, { new NonTerminator(NonTerminatorType.ExpressionList), "a230436e-e6de-4dd9-96c3-2d4e4b5e3ceb"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "4d97bdb0-dfde-44ef-9a25-1cc23fa4fd0c") }, + { "47d70900-934c-404f-9d0a-4743520d8c81", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "47d70900-934c-404f-9d0a-4743520d8c81") }, + { "e6e1354e-8432-4ef5-a58c-e4237bdd4616", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "90711a52-036d-48c0-aae1-fd14851af91a"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "e6e1354e-8432-4ef5-a58c-e4237bdd4616") }, + { "fe686f16-bdeb-4ee6-a328-e15f50c68bc8", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "fe686f16-bdeb-4ee6-a328-e15f50c68bc8") }, + { "a0eddb69-2886-4987-854a-de06b7a6e856", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "a0eddb69-2886-4987-854a-de06b7a6e856") }, + { "8b36a350-28f2-40f0-888e-9abed7ccc1e2", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "8b36a350-28f2-40f0-888e-9abed7ccc1e2") }, + { "e12a3e72-3a37-4672-af9f-a2c53884eb07", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "e12a3e72-3a37-4672-af9f-a2c53884eb07") }, + { "2ea9cdff-25d8-4463-8b91-4eac20d98ff0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "2ea9cdff-25d8-4463-8b91-4eac20d98ff0") }, + { "19353608-236f-4807-8d7b-86fdf2c9843b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ElsePart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ElsePart))}, }, "19353608-236f-4807-8d7b-86fdf2c9843b") }, + { "d5a238f9-d488-4209-95ee-d3dfb4d13aef", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Statement))}, }, "d5a238f9-d488-4209-95ee-d3dfb4d13aef") }, + { "23cfab10-ca75-466c-aee2-950f7ce16203", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.RelationOperator), "029b7fc2-adb0-49db-9f07-9218db2aca70"}, { new Terminator(OperatorType.Equal), "59e0b42f-0f19-4905-bda8-027e4043f4af"}, { new Terminator(OperatorType.NotEqual), "7863edae-4a97-4391-96b2-2e884ec9446a"}, { new Terminator(OperatorType.Less), "16951dba-a455-4455-ae09-e1f402e42c72"}, { new Terminator(OperatorType.LessEqual), "e510cf8d-4628-45cd-aea4-8b27b1e67c4a"}, { new Terminator(OperatorType.Greater), "59406bfc-b725-4683-80e7-445c998f005a"}, { new Terminator(OperatorType.GreaterEqual), "8f8ba332-6060-40ce-9e86-bdb7a7e3f793"}, { new NonTerminator(NonTerminatorType.AddOperator), "3f724d20-1266-4230-a1b3-7c4625f5b672"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Expression))}, }, "23cfab10-ca75-466c-aee2-950f7ce16203") }, + { "37f255b4-3fd9-4891-8074-5d7752fff099", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "58aab44d-1d41-4aa5-9a15-8c35b2622033"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "37f255b4-3fd9-4891-8074-5d7752fff099") }, + { "08a56a06-7192-4075-aa0d-0002b0bf12d9", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "08a56a06-7192-4075-aa0d-0002b0bf12d9") }, + { "b8a51109-ebea-4dbc-ad86-c448a2f43c1f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "b8a51109-ebea-4dbc-ad86-c448a2f43c1f") }, + { "086ebd59-c5fb-44a4-9deb-ecfe51467ac9", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "086ebd59-c5fb-44a4-9deb-ecfe51467ac9") }, + { "7e4af2e1-0d6f-41f6-8a07-b627a3fed888", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "60a3504a-b738-4521-92a3-d2a22ce776db"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "7e4af2e1-0d6f-41f6-8a07-b627a3fed888") }, + { "29da417b-7dc6-462f-a476-f960661330ba", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "f5c459d7-abce-4eba-b2f3-1a56d8d15e48"}, { new NonTerminator(NonTerminatorType.IdVarPart), "35c479f7-73bb-4c32-93af-c7e1fa42b4e8"}, { new Terminator(DelimiterType.LeftSquareBracket), "6a76e768-851f-4606-8e4f-35a5501f08f6"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Else), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "29da417b-7dc6-462f-a476-f960661330ba") }, + { "30ad608b-ac4f-41fb-a946-4605750613a3", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "acf6d057-b9e5-4d29-a35a-5d105ad70b0c"}, { Terminator.NumberTerminator, "b8a51109-ebea-4dbc-ad86-c448a2f43c1f"}, { new NonTerminator(NonTerminatorType.Variable), "086ebd59-c5fb-44a4-9deb-ecfe51467ac9"}, { new Terminator(DelimiterType.LeftParenthesis), "7e4af2e1-0d6f-41f6-8a07-b627a3fed888"}, { Terminator.IdentifierTerminator, "29da417b-7dc6-462f-a476-f960661330ba"}, { new Terminator(KeywordType.Not), "30ad608b-ac4f-41fb-a946-4605750613a3"}, { new Terminator(OperatorType.Minus), "2d620968-101e-42c0-849b-634c1150a000"}, { new Terminator(OperatorType.Plus), "46d07f42-3046-4717-a29c-a5b8949b28b8"}, { new Terminator(KeywordType.True), "cb47dfe5-9c4c-4202-a2da-fb81ccd838a1"}, { new Terminator(KeywordType.False), "b8063f1a-fd1a-4af1-b8d2-76cbdbd15061"},}, new Dictionary{ }, "30ad608b-ac4f-41fb-a946-4605750613a3") }, + { "2d620968-101e-42c0-849b-634c1150a000", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "1e66f011-0ed0-4c9c-bafd-9d6f548283e9"}, { Terminator.NumberTerminator, "b8a51109-ebea-4dbc-ad86-c448a2f43c1f"}, { new NonTerminator(NonTerminatorType.Variable), "086ebd59-c5fb-44a4-9deb-ecfe51467ac9"}, { new Terminator(DelimiterType.LeftParenthesis), "7e4af2e1-0d6f-41f6-8a07-b627a3fed888"}, { Terminator.IdentifierTerminator, "29da417b-7dc6-462f-a476-f960661330ba"}, { new Terminator(KeywordType.Not), "30ad608b-ac4f-41fb-a946-4605750613a3"}, { new Terminator(OperatorType.Minus), "2d620968-101e-42c0-849b-634c1150a000"}, { new Terminator(OperatorType.Plus), "46d07f42-3046-4717-a29c-a5b8949b28b8"}, { new Terminator(KeywordType.True), "cb47dfe5-9c4c-4202-a2da-fb81ccd838a1"}, { new Terminator(KeywordType.False), "b8063f1a-fd1a-4af1-b8d2-76cbdbd15061"},}, new Dictionary{ }, "2d620968-101e-42c0-849b-634c1150a000") }, + { "46d07f42-3046-4717-a29c-a5b8949b28b8", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "761f8565-7170-47df-a05a-a5068964ec24"}, { Terminator.NumberTerminator, "b8a51109-ebea-4dbc-ad86-c448a2f43c1f"}, { new NonTerminator(NonTerminatorType.Variable), "086ebd59-c5fb-44a4-9deb-ecfe51467ac9"}, { new Terminator(DelimiterType.LeftParenthesis), "7e4af2e1-0d6f-41f6-8a07-b627a3fed888"}, { Terminator.IdentifierTerminator, "29da417b-7dc6-462f-a476-f960661330ba"}, { new Terminator(KeywordType.Not), "30ad608b-ac4f-41fb-a946-4605750613a3"}, { new Terminator(OperatorType.Minus), "2d620968-101e-42c0-849b-634c1150a000"}, { new Terminator(OperatorType.Plus), "46d07f42-3046-4717-a29c-a5b8949b28b8"}, { new Terminator(KeywordType.True), "cb47dfe5-9c4c-4202-a2da-fb81ccd838a1"}, { new Terminator(KeywordType.False), "b8063f1a-fd1a-4af1-b8d2-76cbdbd15061"},}, new Dictionary{ }, "46d07f42-3046-4717-a29c-a5b8949b28b8") }, + { "cb47dfe5-9c4c-4202-a2da-fb81ccd838a1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "cb47dfe5-9c4c-4202-a2da-fb81ccd838a1") }, + { "b8063f1a-fd1a-4af1-b8d2-76cbdbd15061", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "b8063f1a-fd1a-4af1-b8d2-76cbdbd15061") }, + { "6dd332bd-e5c3-40d1-8053-64f82f76b280", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Statement), "5fbc5866-d2c5-4cef-ac4a-71a104b4a21a"}, { new NonTerminator(NonTerminatorType.Variable), "2003d515-90bb-4516-b5f4-2a4cedf0fad3"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "39958051-a99c-49c9-8d22-79d2456b0c78"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "f3c84ef3-69cf-4881-822f-d2a6f0a8f160"}, { new Terminator(KeywordType.If), "2436839b-20b6-4147-af90-9c877a35feea"}, { new Terminator(KeywordType.For), "6afb4fc5-5847-4ac1-8489-830a122891f2"}, { new Terminator(KeywordType.While), "3e60e08c-33fc-4674-961c-18019584f9ba"}, { Terminator.IdentifierTerminator, "24a23c8f-9000-443b-9fd0-cb6464a74efa"}, { new Terminator(KeywordType.Begin), "554d0078-799c-4218-9588-712cf3fe3c14"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "6dd332bd-e5c3-40d1-8053-64f82f76b280") }, + { "98a6ab38-73c3-4ab2-ae90-f54cce6d55ec", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "4648455d-153c-44b3-bd15-074fd498eb96"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b87c5446-1019-4031-b302-7abb9764f456"}, { new NonTerminator(NonTerminatorType.Term), "9f627a23-8645-4cd3-a1e5-813cf0e39f5e"}, { new NonTerminator(NonTerminatorType.Factor), "277e1067-8bdd-4e98-b081-283debc883c7"}, { Terminator.NumberTerminator, "1c953f12-cf14-406e-903e-470824dc97ad"}, { new NonTerminator(NonTerminatorType.Variable), "d73b91e5-02cd-42df-a433-79911f49ccd3"}, { new Terminator(DelimiterType.LeftParenthesis), "48f64dba-33fb-4f85-831c-a4b339f7eaa9"}, { Terminator.IdentifierTerminator, "80ffb3c9-cb71-4997-919f-6dbec21ef615"}, { new Terminator(KeywordType.Not), "ba066289-25d2-4d2d-9fa4-cb70f146976f"}, { new Terminator(OperatorType.Minus), "da7f037a-28cb-4723-bfae-e492d20e6613"}, { new Terminator(OperatorType.Plus), "8236a0b9-fcba-4ed2-9896-c83039b99c76"}, { new Terminator(KeywordType.True), "c5c55305-06ae-4eb6-8dd0-066ab4045fcd"}, { new Terminator(KeywordType.False), "7c79955e-3e28-407b-9bef-fad899315e52"},}, new Dictionary{ }, "98a6ab38-73c3-4ab2-ae90-f54cce6d55ec") }, + { "75262cee-1b93-4762-ad47-e4bbfcf170f5", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Statement), "9989a193-d784-447c-8817-d6b932e85941"}, { new NonTerminator(NonTerminatorType.Variable), "2003d515-90bb-4516-b5f4-2a4cedf0fad3"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "39958051-a99c-49c9-8d22-79d2456b0c78"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "f3c84ef3-69cf-4881-822f-d2a6f0a8f160"}, { new Terminator(KeywordType.If), "2436839b-20b6-4147-af90-9c877a35feea"}, { new Terminator(KeywordType.For), "6afb4fc5-5847-4ac1-8489-830a122891f2"}, { new Terminator(KeywordType.While), "3e60e08c-33fc-4674-961c-18019584f9ba"}, { Terminator.IdentifierTerminator, "24a23c8f-9000-443b-9fd0-cb6464a74efa"}, { new Terminator(KeywordType.Begin), "554d0078-799c-4218-9588-712cf3fe3c14"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "75262cee-1b93-4762-ad47-e4bbfcf170f5") }, + { "34cf88f4-2679-46d5-a4bd-857506ee0049", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ProcedureCall))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ProcedureCall))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.ProcedureCall))}, }, "34cf88f4-2679-46d5-a4bd-857506ee0049") }, + { "468d555b-d10c-4e85-96c8-6e1dd45aad3e", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "13b43611-f2fe-45d1-8f49-908253d1977b"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "468d555b-d10c-4e85-96c8-6e1dd45aad3e") }, + { "4d266410-0f1f-4211-98c8-5ad73e7b8805", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.CompoundStatement))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.CompoundStatement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.CompoundStatement))}, }, "4d266410-0f1f-4211-98c8-5ad73e7b8805") }, + { "ead7ee3a-2b9e-491b-a5d1-67feb7e51ec5", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "813f9fbb-0bdb-4a1d-b917-636d300ada96"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "ead7ee3a-2b9e-491b-a5d1-67feb7e51ec5") }, + { "8501d23e-8165-44d6-b3c7-c2d3dc8a6f27", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "8501d23e-8165-44d6-b3c7-c2d3dc8a6f27") }, + { "9e57ae92-e6fe-4f62-bbbf-01c54cc0f263", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "9e57ae92-e6fe-4f62-bbbf-01c54cc0f263") }, + { "b72bd367-348f-4fbd-9634-b4577f62e43a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "b72bd367-348f-4fbd-9634-b4577f62e43a") }, + { "694346f5-b751-484b-87e0-36acf5eb078d", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "260f7600-8d79-4546-91c3-df6dcbded3ef"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "694346f5-b751-484b-87e0-36acf5eb078d") }, + { "133ff24f-e11f-450b-ac3a-eaa0bf04dee9", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "b2fd7768-9775-45b0-bc1b-17e914048795"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "133ff24f-e11f-450b-ac3a-eaa0bf04dee9") }, + { "1b8973f4-0863-40a4-b1fd-2f58fd222c7b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "251401db-0a9e-49f7-90fe-efeefb1eb6af"}, { new NonTerminator(NonTerminatorType.Factor), "3f40e54a-b21e-48fe-b0b5-d57112cf5d6d"}, { Terminator.NumberTerminator, "7391be4b-1fb0-46de-bf0f-bbd6f4ac3049"}, { new NonTerminator(NonTerminatorType.Variable), "051e59bb-12b5-4040-a8ed-e3d6deabeb5e"}, { new Terminator(DelimiterType.LeftParenthesis), "acf16c49-de5a-497f-bc11-fefdcf938c88"}, { Terminator.IdentifierTerminator, "25e4d48e-dd03-4e03-9a71-5577abba56e6"}, { new Terminator(KeywordType.Not), "4590ba99-bea5-4252-9711-968ce1ba80a8"}, { new Terminator(OperatorType.Minus), "4518e39d-ab76-43b2-976b-ada9559918e6"}, { new Terminator(OperatorType.Plus), "b6e23807-1de0-44f0-a845-a82038db0c6e"}, { new Terminator(KeywordType.True), "23140283-9c44-4e07-811e-014f70593d7d"}, { new Terminator(KeywordType.False), "dc7fb2dd-cdc3-4592-8191-c7e2732548d1"},}, new Dictionary{ }, "1b8973f4-0863-40a4-b1fd-2f58fd222c7b") }, + { "51b6b5d7-42c4-4f55-9c55-72d774cb8f5d", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "c8f8a271-b110-4599-ab9c-80a71d83082b"}, { Terminator.NumberTerminator, "7391be4b-1fb0-46de-bf0f-bbd6f4ac3049"}, { new NonTerminator(NonTerminatorType.Variable), "051e59bb-12b5-4040-a8ed-e3d6deabeb5e"}, { new Terminator(DelimiterType.LeftParenthesis), "acf16c49-de5a-497f-bc11-fefdcf938c88"}, { Terminator.IdentifierTerminator, "25e4d48e-dd03-4e03-9a71-5577abba56e6"}, { new Terminator(KeywordType.Not), "4590ba99-bea5-4252-9711-968ce1ba80a8"}, { new Terminator(OperatorType.Minus), "4518e39d-ab76-43b2-976b-ada9559918e6"}, { new Terminator(OperatorType.Plus), "b6e23807-1de0-44f0-a845-a82038db0c6e"}, { new Terminator(KeywordType.True), "23140283-9c44-4e07-811e-014f70593d7d"}, { new Terminator(KeywordType.False), "dc7fb2dd-cdc3-4592-8191-c7e2732548d1"},}, new Dictionary{ }, "51b6b5d7-42c4-4f55-9c55-72d774cb8f5d") }, + { "04cd67d7-c346-41e3-aa4b-2a1fd3496108", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "0e60dcef-4cff-4da7-a1a0-c3b0bbee222e"},}, new Dictionary{ }, "04cd67d7-c346-41e3-aa4b-2a1fd3496108") }, + { "f15133f8-d0f2-4a8d-8b79-573f2d450003", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "7f9dd26d-a132-43e8-9617-0c93a1a59236"}, { new NonTerminator(NonTerminatorType.ExpressionList), "c8e76555-d65f-4f12-9859-160727e38cd9"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "f15133f8-d0f2-4a8d-8b79-573f2d450003") }, + { "e7233b40-3e97-411c-90b0-c6891f36223f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "e7233b40-3e97-411c-90b0-c6891f36223f") }, + { "3b103296-f9a9-4269-a1d0-ddab20c79956", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "42d56e66-54e8-4d71-9141-2091243dcfea"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "3b103296-f9a9-4269-a1d0-ddab20c79956") }, + { "f1027b2f-2acd-4ee0-9faa-07bc33a3e5f0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "f1027b2f-2acd-4ee0-9faa-07bc33a3e5f0") }, + { "aeaaed95-4631-443a-a285-8afad64fb8f7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "aeaaed95-4631-443a-a285-8afad64fb8f7") }, + { "adbc7cc6-fc2e-43ec-af23-e9425652639a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "adbc7cc6-fc2e-43ec-af23-e9425652639a") }, + { "a0d16d8b-5179-41f4-aa3c-fc1f3b2a6c0e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "a0d16d8b-5179-41f4-aa3c-fc1f3b2a6c0e") }, + { "8b0a337b-63c9-4bc0-ab31-dd4bf7624d3a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "8b0a337b-63c9-4bc0-ab31-dd4bf7624d3a") }, + { "f9156b36-b76d-4ba8-852e-2303fcb1a88f", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.Do), "d856b55b-0c07-408f-a84c-76d88c472994"},}, new Dictionary{ }, "f9156b36-b76d-4ba8-852e-2303fcb1a88f") }, + { "39040f7c-2678-4807-b259-e2e4a2786e3c", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.AddOperator), "00bc983d-365c-4bdd-9a43-b033f6c5eaba"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, }, "39040f7c-2678-4807-b259-e2e4a2786e3c") }, + { "c480f64e-d5b8-407a-ae50-c81c38b424b1", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "73536a18-df1f-4a4f-81fc-07c2fc3b7ee6"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "c480f64e-d5b8-407a-ae50-c81c38b424b1") }, + { "0352fdd2-1b67-477e-93fd-cea1c06f45ee", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "0352fdd2-1b67-477e-93fd-cea1c06f45ee") }, + { "597502bd-bfc5-413e-aaf9-a5279dc2d81f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "597502bd-bfc5-413e-aaf9-a5279dc2d81f") }, + { "68ec7b04-b2ca-44d9-9198-8406d7b95ac8", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "68ec7b04-b2ca-44d9-9198-8406d7b95ac8") }, + { "9fcef660-a3cf-4283-8937-042070fc8839", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "7b24867c-58d5-4d57-94b0-21d29de29033"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "9fcef660-a3cf-4283-8937-042070fc8839") }, + { "546a7d7e-9ec6-4d7f-953d-7e90a46b201e", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "1eec7470-9757-4b1d-8827-5a7250e8d73d"}, { new NonTerminator(NonTerminatorType.IdVarPart), "c54dc85c-519e-42b0-8d4d-76543d5e280b"}, { new Terminator(DelimiterType.LeftSquareBracket), "a809a163-178c-447b-bf9f-34a6593d5e60"},}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "546a7d7e-9ec6-4d7f-953d-7e90a46b201e") }, + { "2b6c5fda-1717-49be-9fa5-41a15c762693", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "fa3b82cf-9e44-4484-b58a-a00d8d51a2a7"}, { Terminator.NumberTerminator, "597502bd-bfc5-413e-aaf9-a5279dc2d81f"}, { new NonTerminator(NonTerminatorType.Variable), "68ec7b04-b2ca-44d9-9198-8406d7b95ac8"}, { new Terminator(DelimiterType.LeftParenthesis), "9fcef660-a3cf-4283-8937-042070fc8839"}, { Terminator.IdentifierTerminator, "546a7d7e-9ec6-4d7f-953d-7e90a46b201e"}, { new Terminator(KeywordType.Not), "2b6c5fda-1717-49be-9fa5-41a15c762693"}, { new Terminator(OperatorType.Minus), "00a34300-5ffd-4bdd-9ad4-dbcd7e51d070"}, { new Terminator(OperatorType.Plus), "fd1875ee-3911-4420-a664-eefe46f836cb"}, { new Terminator(KeywordType.True), "1a2a9fee-915f-4190-ba8a-a76d5c6b189f"}, { new Terminator(KeywordType.False), "4d1f706c-e3ac-4c82-aa63-ee5404f45b3a"},}, new Dictionary{ }, "2b6c5fda-1717-49be-9fa5-41a15c762693") }, + { "00a34300-5ffd-4bdd-9ad4-dbcd7e51d070", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "f97048d3-4c30-492c-8527-7974eabd9e4a"}, { Terminator.NumberTerminator, "597502bd-bfc5-413e-aaf9-a5279dc2d81f"}, { new NonTerminator(NonTerminatorType.Variable), "68ec7b04-b2ca-44d9-9198-8406d7b95ac8"}, { new Terminator(DelimiterType.LeftParenthesis), "9fcef660-a3cf-4283-8937-042070fc8839"}, { Terminator.IdentifierTerminator, "546a7d7e-9ec6-4d7f-953d-7e90a46b201e"}, { new Terminator(KeywordType.Not), "2b6c5fda-1717-49be-9fa5-41a15c762693"}, { new Terminator(OperatorType.Minus), "00a34300-5ffd-4bdd-9ad4-dbcd7e51d070"}, { new Terminator(OperatorType.Plus), "fd1875ee-3911-4420-a664-eefe46f836cb"}, { new Terminator(KeywordType.True), "1a2a9fee-915f-4190-ba8a-a76d5c6b189f"}, { new Terminator(KeywordType.False), "4d1f706c-e3ac-4c82-aa63-ee5404f45b3a"},}, new Dictionary{ }, "00a34300-5ffd-4bdd-9ad4-dbcd7e51d070") }, + { "fd1875ee-3911-4420-a664-eefe46f836cb", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "f5dbf124-2372-42b6-a9bd-3fa0497df370"}, { Terminator.NumberTerminator, "597502bd-bfc5-413e-aaf9-a5279dc2d81f"}, { new NonTerminator(NonTerminatorType.Variable), "68ec7b04-b2ca-44d9-9198-8406d7b95ac8"}, { new Terminator(DelimiterType.LeftParenthesis), "9fcef660-a3cf-4283-8937-042070fc8839"}, { Terminator.IdentifierTerminator, "546a7d7e-9ec6-4d7f-953d-7e90a46b201e"}, { new Terminator(KeywordType.Not), "2b6c5fda-1717-49be-9fa5-41a15c762693"}, { new Terminator(OperatorType.Minus), "00a34300-5ffd-4bdd-9ad4-dbcd7e51d070"}, { new Terminator(OperatorType.Plus), "fd1875ee-3911-4420-a664-eefe46f836cb"}, { new Terminator(KeywordType.True), "1a2a9fee-915f-4190-ba8a-a76d5c6b189f"}, { new Terminator(KeywordType.False), "4d1f706c-e3ac-4c82-aa63-ee5404f45b3a"},}, new Dictionary{ }, "fd1875ee-3911-4420-a664-eefe46f836cb") }, + { "1a2a9fee-915f-4190-ba8a-a76d5c6b189f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "1a2a9fee-915f-4190-ba8a-a76d5c6b189f") }, + { "4d1f706c-e3ac-4c82-aa63-ee5404f45b3a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "4d1f706c-e3ac-4c82-aa63-ee5404f45b3a") }, + { "51305026-06e1-402c-a236-06774d259ded", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "c75f8261-811d-4aa2-b884-5808a8f68ad6"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "51305026-06e1-402c-a236-06774d259ded") }, + { "bcca27d0-b166-492c-9d16-8cdac6d39c51", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "bcca27d0-b166-492c-9d16-8cdac6d39c51") }, + { "203d6b48-7a57-4687-a023-37eb3ac2d56a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "203d6b48-7a57-4687-a023-37eb3ac2d56a") }, + { "8d57c1ee-e400-4b72-a84d-8eb1973b4cb0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "8d57c1ee-e400-4b72-a84d-8eb1973b4cb0") }, + { "80d23aab-27ea-4238-9d7e-5686a508a435", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "c6e37e87-e769-46da-bd8f-c4879fd81dc5"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "80d23aab-27ea-4238-9d7e-5686a508a435") }, + { "dcf0d916-2e5a-483f-b927-a15ffc53fe88", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "86c64243-6306-4647-bb5a-e73623da4302"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "dcf0d916-2e5a-483f-b927-a15ffc53fe88") }, + { "0fc5f635-8aab-4685-a94e-96488d590aad", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "c8c45668-ae93-4583-bb94-b1fc9655afa2"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "0fc5f635-8aab-4685-a94e-96488d590aad") }, + { "b29ae352-a17f-4ebf-bbcd-73f68116c839", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "b29ae352-a17f-4ebf-bbcd-73f68116c839") }, + { "42b23697-4fd1-467b-913c-3d535a1a5e2e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "42b23697-4fd1-467b-913c-3d535a1a5e2e") }, + { "ad1c4ca8-6ff3-4147-a8fa-d904d54f4bae", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "ad1c4ca8-6ff3-4147-a8fa-d904d54f4bae") }, + { "45e57db9-ee65-4d19-a55b-dc8459c17f2f", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "ea36d651-365e-4e3a-b7b0-dd85c4c5f39e"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "45e57db9-ee65-4d19-a55b-dc8459c17f2f") }, + { "166f3c05-4574-4f5b-aa07-4bc34d007f6b", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "526b4e31-2df9-4c72-a672-90a94c67a580"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "166f3c05-4574-4f5b-aa07-4bc34d007f6b") }, + { "28ca6f5f-59a1-49b4-aac5-2a4d7b6b6a71", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "c2063f2c-47b5-4b72-b490-b11a69a3fc40"}, { new NonTerminator(NonTerminatorType.Factor), "0587eecb-ddff-42fd-a87e-a2cc54145a64"}, { Terminator.NumberTerminator, "fc48fd81-e86c-47c7-87c1-2291bc56bb75"}, { new NonTerminator(NonTerminatorType.Variable), "f1d71193-f562-4fd1-818b-760ca17c2a78"}, { new Terminator(DelimiterType.LeftParenthesis), "50d2792d-8a7e-4a8b-9d3d-8f6350311b18"}, { Terminator.IdentifierTerminator, "50da5232-d1a0-40f8-9fda-34dd046dd610"}, { new Terminator(KeywordType.Not), "caf65160-0457-4b3a-8c36-0f078bfe063b"}, { new Terminator(OperatorType.Minus), "8a34f1bb-d7aa-4935-899e-48f6bf60755f"}, { new Terminator(OperatorType.Plus), "bf8528f5-d90a-4b7a-b797-42cf8c7c329c"}, { new Terminator(KeywordType.True), "aebc570e-5571-42ba-8636-4a904d7ae434"}, { new Terminator(KeywordType.False), "cf28c26f-f1d0-458b-8357-51a559013c5c"},}, new Dictionary{ }, "28ca6f5f-59a1-49b4-aac5-2a4d7b6b6a71") }, + { "f4bbb2b0-bcb3-4041-a9d4-6375412f9674", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "10362f85-cc9b-4050-9955-a9482ac3fe16"}, { Terminator.NumberTerminator, "fc48fd81-e86c-47c7-87c1-2291bc56bb75"}, { new NonTerminator(NonTerminatorType.Variable), "f1d71193-f562-4fd1-818b-760ca17c2a78"}, { new Terminator(DelimiterType.LeftParenthesis), "50d2792d-8a7e-4a8b-9d3d-8f6350311b18"}, { Terminator.IdentifierTerminator, "50da5232-d1a0-40f8-9fda-34dd046dd610"}, { new Terminator(KeywordType.Not), "caf65160-0457-4b3a-8c36-0f078bfe063b"}, { new Terminator(OperatorType.Minus), "8a34f1bb-d7aa-4935-899e-48f6bf60755f"}, { new Terminator(OperatorType.Plus), "bf8528f5-d90a-4b7a-b797-42cf8c7c329c"}, { new Terminator(KeywordType.True), "aebc570e-5571-42ba-8636-4a904d7ae434"}, { new Terminator(KeywordType.False), "cf28c26f-f1d0-458b-8357-51a559013c5c"},}, new Dictionary{ }, "f4bbb2b0-bcb3-4041-a9d4-6375412f9674") }, + { "a2209bd2-bc23-4da5-aed3-69ec0c5fd293", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "b6aa3f74-82b1-4dc8-8c73-eeb0c1c8a0c6"},}, new Dictionary{ }, "a2209bd2-bc23-4da5-aed3-69ec0c5fd293") }, + { "71648cd3-2916-4ca7-9c7f-c7c419d433e7", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "8a0f6966-2ea9-4619-b793-2c7d13abd9fc"}, { new NonTerminator(NonTerminatorType.ExpressionList), "80b4ba84-83d9-49ab-a192-686bf6402fab"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "71648cd3-2916-4ca7-9c7f-c7c419d433e7") }, + { "f18bcf42-aeab-4132-8dc7-b302cbab30bf", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "f18bcf42-aeab-4132-8dc7-b302cbab30bf") }, + { "4cbcf837-89dd-44c4-8298-d0863a7a06de", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "36bf5f53-e314-4234-8816-fca5140f26ab"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "4cbcf837-89dd-44c4-8298-d0863a7a06de") }, + { "7d13108c-7b60-44a7-8cc4-b6c898f358c1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "7d13108c-7b60-44a7-8cc4-b6c898f358c1") }, + { "768f97d9-bb41-4bb5-9469-444d622921aa", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "768f97d9-bb41-4bb5-9469-444d622921aa") }, + { "66c211a1-3758-4bf7-9a58-91a33a10258c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "66c211a1-3758-4bf7-9a58-91a33a10258c") }, + { "50fc22f7-78d7-4abd-8fcc-b4e5d5838f58", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "50fc22f7-78d7-4abd-8fcc-b4e5d5838f58") }, + { "68ff2701-5df7-4c5e-ab2b-a71b10befc3f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "68ff2701-5df7-4c5e-ab2b-a71b10befc3f") }, + { "b6afc871-9c24-4801-8215-b46bf4f11edc", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "b9842ec9-debc-4ba0-9cb5-11f59fa2f61b"}, { new NonTerminator(NonTerminatorType.Factor), "0426cda0-e8fd-49e4-8542-5986243370c9"}, { Terminator.NumberTerminator, "2790bace-a273-4647-a94f-0889cbf2b024"}, { new NonTerminator(NonTerminatorType.Variable), "e1ce60b1-d34e-4bbd-9885-33d2953b99d5"}, { new Terminator(DelimiterType.LeftParenthesis), "88f5f65d-5a3e-4cb2-af69-05f8991b71e0"}, { Terminator.IdentifierTerminator, "276093ee-50ea-4890-9204-dd4c42d5a6d9"}, { new Terminator(KeywordType.Not), "d36286b9-630e-4f01-a70c-efc769acec3b"}, { new Terminator(OperatorType.Minus), "e8b2609e-d3b0-4df7-8d30-71682012f622"}, { new Terminator(OperatorType.Plus), "661f8d06-c6c5-416f-8574-c1d3498383ae"}, { new Terminator(KeywordType.True), "bcb4a4ef-48fa-40a6-a57f-b8d6ce5041a6"}, { new Terminator(KeywordType.False), "4adb4190-f200-4444-916a-25f417059cac"},}, new Dictionary{ }, "b6afc871-9c24-4801-8215-b46bf4f11edc") }, + { "691df913-fa28-4dd5-89c9-b6713b30a142", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "d8bed7ea-b306-4242-ab1b-a4ac02a772f7"}, { Terminator.NumberTerminator, "2790bace-a273-4647-a94f-0889cbf2b024"}, { new NonTerminator(NonTerminatorType.Variable), "e1ce60b1-d34e-4bbd-9885-33d2953b99d5"}, { new Terminator(DelimiterType.LeftParenthesis), "88f5f65d-5a3e-4cb2-af69-05f8991b71e0"}, { Terminator.IdentifierTerminator, "276093ee-50ea-4890-9204-dd4c42d5a6d9"}, { new Terminator(KeywordType.Not), "d36286b9-630e-4f01-a70c-efc769acec3b"}, { new Terminator(OperatorType.Minus), "e8b2609e-d3b0-4df7-8d30-71682012f622"}, { new Terminator(OperatorType.Plus), "661f8d06-c6c5-416f-8574-c1d3498383ae"}, { new Terminator(KeywordType.True), "bcb4a4ef-48fa-40a6-a57f-b8d6ce5041a6"}, { new Terminator(KeywordType.False), "4adb4190-f200-4444-916a-25f417059cac"},}, new Dictionary{ }, "691df913-fa28-4dd5-89c9-b6713b30a142") }, + { "0977bb78-5115-48d5-ae5d-8eabe3d1bde7", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "90121335-308a-4ebb-8070-00e8a9c4025d"},}, new Dictionary{ }, "0977bb78-5115-48d5-ae5d-8eabe3d1bde7") }, + { "f52b0f6d-32aa-4e8a-9231-1fe029da1b7f", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "0909b3db-c7df-4de4-83fd-e068696488f2"}, { new NonTerminator(NonTerminatorType.ExpressionList), "4497e8b0-f729-41ef-af61-21921e12b83b"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "f52b0f6d-32aa-4e8a-9231-1fe029da1b7f") }, + { "159aa037-31d2-4a4d-a3a8-b4c9d1069ba1", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "159aa037-31d2-4a4d-a3a8-b4c9d1069ba1") }, + { "f2da23e2-6fe1-4a5e-907c-bd9d8a127417", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "326cba85-78bb-456d-84a8-1106bf2548a5"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "f2da23e2-6fe1-4a5e-907c-bd9d8a127417") }, + { "9a19e16f-7cf6-4a88-a9bc-3b24f1df5760", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "9a19e16f-7cf6-4a88-a9bc-3b24f1df5760") }, + { "fd8c55af-a67a-43c4-bee2-76cb7f7e4de0", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "fd8c55af-a67a-43c4-bee2-76cb7f7e4de0") }, + { "2cb5b4db-5819-426a-a1c1-74800be3b56e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "2cb5b4db-5819-426a-a1c1-74800be3b56e") }, + { "33af1da2-bcf0-4810-807a-5f83701ead15", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "33af1da2-bcf0-4810-807a-5f83701ead15") }, + { "b3d609c4-af07-4487-8a49-68d1804b5c77", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "b3d609c4-af07-4487-8a49-68d1804b5c77") }, + { "76e2bb63-d910-4147-9ffa-eb8b7471d3ae", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.CompoundStatement))}, }, "76e2bb63-d910-4147-9ffa-eb8b7471d3ae") }, + { "c7d257fc-4593-4d05-851a-daea5ccf351a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdentifierList))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdentifierList))}, }, "c7d257fc-4593-4d05-851a-daea5ccf351a") }, + { "0340ca99-6908-41ba-af37-5caf29bc08c1", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Period), "9502da91-abee-4eb2-a639-fd9285d445d6"}, { Terminator.NumberTerminator, "1d59d28d-3de6-4b9b-aec2-b237c4a2e6dc"},}, new Dictionary{ }, "0340ca99-6908-41ba-af37-5caf29bc08c1") }, + { "54ba9775-3dd4-4f76-b5af-cdca98475367", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.Semicolon), new ReduceInformation(6, new NonTerminator(NonTerminatorType.Type))}, }, "54ba9775-3dd4-4f76-b5af-cdca98475367") }, + { "c2888f10-41bf-41a6-a305-d8d17c81b538", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "eccb4f85-79e0-41bf-afe4-90e595d76176"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "c2888f10-41bf-41a6-a305-d8d17c81b538") }, + { "90a90ab0-cc22-4807-98a0-ebf59a7e5865", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "90a90ab0-cc22-4807-98a0-ebf59a7e5865") }, + { "715e739b-044b-43f5-ba18-c6489c75e0de", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "715e739b-044b-43f5-ba18-c6489c75e0de") }, + { "8ae5a25a-9aa0-4804-847e-b4a64d20698e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "8ae5a25a-9aa0-4804-847e-b4a64d20698e") }, + { "a230436e-e6de-4dd9-96c3-2d4e4b5e3ceb", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "e2100de9-9ca4-4186-9c9a-b7f5a5d77673"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "a230436e-e6de-4dd9-96c3-2d4e4b5e3ceb") }, + { "90711a52-036d-48c0-aae1-fd14851af91a", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "38bc27cd-19cd-4c08-bd58-afae0bf96d9d"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "90711a52-036d-48c0-aae1-fd14851af91a") }, + { "029b7fc2-adb0-49db-9f07-9218db2aca70", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.SimpleExpression), "8b476bcb-7283-4c34-bd71-ed45789d45db"}, { new NonTerminator(NonTerminatorType.Term), "52d5de2b-aa99-46df-8024-06c05db9bcf7"}, { new NonTerminator(NonTerminatorType.Factor), "2e1310d6-5dfb-4058-a6bd-b7050a3b5e8d"}, { Terminator.NumberTerminator, "46eb1309-679a-446d-b404-979ecdd43f0f"}, { new NonTerminator(NonTerminatorType.Variable), "705a9171-8181-44cc-aa97-5b7a38f28e64"}, { new Terminator(DelimiterType.LeftParenthesis), "4c29438d-d6bf-42ec-85e1-245b63194ef8"}, { Terminator.IdentifierTerminator, "61516da4-5be0-44bc-8ca3-d7187ff3b18a"}, { new Terminator(KeywordType.Not), "6afc86e9-61bc-4778-8991-dc784e0f0973"}, { new Terminator(OperatorType.Minus), "f03d8722-683f-4ef1-b73a-5178d4eb69a8"}, { new Terminator(OperatorType.Plus), "b2256f50-1d16-4f7e-a9a8-9f19126afae9"}, { new Terminator(KeywordType.True), "f67e4745-4976-4fe7-905d-46a90c22b203"}, { new Terminator(KeywordType.False), "c46b6833-8c9c-4a43-a314-31853ff921a3"},}, new Dictionary{ }, "029b7fc2-adb0-49db-9f07-9218db2aca70") }, + { "3f724d20-1266-4230-a1b3-7c4625f5b672", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "2fc873e0-76f7-4015-8e3e-9f1226db768d"}, { new NonTerminator(NonTerminatorType.Factor), "08a56a06-7192-4075-aa0d-0002b0bf12d9"}, { Terminator.NumberTerminator, "b8a51109-ebea-4dbc-ad86-c448a2f43c1f"}, { new NonTerminator(NonTerminatorType.Variable), "086ebd59-c5fb-44a4-9deb-ecfe51467ac9"}, { new Terminator(DelimiterType.LeftParenthesis), "7e4af2e1-0d6f-41f6-8a07-b627a3fed888"}, { Terminator.IdentifierTerminator, "29da417b-7dc6-462f-a476-f960661330ba"}, { new Terminator(KeywordType.Not), "30ad608b-ac4f-41fb-a946-4605750613a3"}, { new Terminator(OperatorType.Minus), "2d620968-101e-42c0-849b-634c1150a000"}, { new Terminator(OperatorType.Plus), "46d07f42-3046-4717-a29c-a5b8949b28b8"}, { new Terminator(KeywordType.True), "cb47dfe5-9c4c-4202-a2da-fb81ccd838a1"}, { new Terminator(KeywordType.False), "b8063f1a-fd1a-4af1-b8d2-76cbdbd15061"},}, new Dictionary{ }, "3f724d20-1266-4230-a1b3-7c4625f5b672") }, + { "58aab44d-1d41-4aa5-9a15-8c35b2622033", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "f6cc426b-89ec-48b3-acf2-55523bfbbcd9"}, { Terminator.NumberTerminator, "b8a51109-ebea-4dbc-ad86-c448a2f43c1f"}, { new NonTerminator(NonTerminatorType.Variable), "086ebd59-c5fb-44a4-9deb-ecfe51467ac9"}, { new Terminator(DelimiterType.LeftParenthesis), "7e4af2e1-0d6f-41f6-8a07-b627a3fed888"}, { Terminator.IdentifierTerminator, "29da417b-7dc6-462f-a476-f960661330ba"}, { new Terminator(KeywordType.Not), "30ad608b-ac4f-41fb-a946-4605750613a3"}, { new Terminator(OperatorType.Minus), "2d620968-101e-42c0-849b-634c1150a000"}, { new Terminator(OperatorType.Plus), "46d07f42-3046-4717-a29c-a5b8949b28b8"}, { new Terminator(KeywordType.True), "cb47dfe5-9c4c-4202-a2da-fb81ccd838a1"}, { new Terminator(KeywordType.False), "b8063f1a-fd1a-4af1-b8d2-76cbdbd15061"},}, new Dictionary{ }, "58aab44d-1d41-4aa5-9a15-8c35b2622033") }, + { "60a3504a-b738-4521-92a3-d2a22ce776db", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "34733c80-aa3e-47e6-8f76-0a02deaaaf9c"},}, new Dictionary{ }, "60a3504a-b738-4521-92a3-d2a22ce776db") }, + { "f5c459d7-abce-4eba-b2f3-1a56d8d15e48", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "250e44c9-37dc-4237-8594-aa23ee8eb3bd"}, { new NonTerminator(NonTerminatorType.ExpressionList), "7da2d262-d876-4760-aa45-e47bf064f843"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "f5c459d7-abce-4eba-b2f3-1a56d8d15e48") }, + { "35c479f7-73bb-4c32-93af-c7e1fa42b4e8", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Else), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "35c479f7-73bb-4c32-93af-c7e1fa42b4e8") }, + { "6a76e768-851f-4606-8e4f-35a5501f08f6", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "d9d4e5d7-76ea-4fca-a245-0d073b49e48a"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "6a76e768-851f-4606-8e4f-35a5501f08f6") }, + { "acf6d057-b9e5-4d29-a35a-5d105ad70b0c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "acf6d057-b9e5-4d29-a35a-5d105ad70b0c") }, + { "1e66f011-0ed0-4c9c-bafd-9d6f548283e9", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "1e66f011-0ed0-4c9c-bafd-9d6f548283e9") }, + { "761f8565-7170-47df-a05a-a5068964ec24", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "761f8565-7170-47df-a05a-a5068964ec24") }, + { "5fbc5866-d2c5-4cef-ac4a-71a104b4a21a", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ElsePart), "d3bf430f-ff31-4729-b234-cde50d75cf96"}, { new Terminator(KeywordType.Else), "b251bbc6-4ecf-4db0-8962-d50dcb947b3f"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ElsePart))}, { new Terminator(KeywordType.Else), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ElsePart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.ElsePart))}, }, "5fbc5866-d2c5-4cef-ac4a-71a104b4a21a") }, + { "4648455d-153c-44b3-bd15-074fd498eb96", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.To), "9954d52d-5f63-460e-b5ec-21a1e2c324a0"},}, new Dictionary{ }, "4648455d-153c-44b3-bd15-074fd498eb96") }, + { "9989a193-d784-447c-8817-d6b932e85941", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Statement))}, }, "9989a193-d784-447c-8817-d6b932e85941") }, + { "13b43611-f2fe-45d1-8f49-908253d1977b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(4, new NonTerminator(NonTerminatorType.ProcedureCall))}, { new Terminator(KeywordType.Else), new ReduceInformation(4, new NonTerminator(NonTerminatorType.ProcedureCall))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(4, new NonTerminator(NonTerminatorType.ProcedureCall))}, }, "13b43611-f2fe-45d1-8f49-908253d1977b") }, + { "260f7600-8d79-4546-91c3-df6dcbded3ef", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "260f7600-8d79-4546-91c3-df6dcbded3ef") }, + { "b2fd7768-9775-45b0-bc1b-17e914048795", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Then), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "b2fd7768-9775-45b0-bc1b-17e914048795") }, + { "251401db-0a9e-49f7-90fe-efeefb1eb6af", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "51b6b5d7-42c4-4f55-9c55-72d774cb8f5d"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "251401db-0a9e-49f7-90fe-efeefb1eb6af") }, + { "c8f8a271-b110-4599-ab9c-80a71d83082b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "c8f8a271-b110-4599-ab9c-80a71d83082b") }, + { "0e60dcef-4cff-4da7-a1a0-c3b0bbee222e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "0e60dcef-4cff-4da7-a1a0-c3b0bbee222e") }, + { "7f9dd26d-a132-43e8-9617-0c93a1a59236", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "7f9dd26d-a132-43e8-9617-0c93a1a59236") }, + { "c8e76555-d65f-4f12-9859-160727e38cd9", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "622092ce-c7e7-476a-a062-129e3851190f"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "c8e76555-d65f-4f12-9859-160727e38cd9") }, + { "42d56e66-54e8-4d71-9141-2091243dcfea", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "5b3956d3-c39f-44c3-8f06-21eed237beb8"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "42d56e66-54e8-4d71-9141-2091243dcfea") }, + { "d856b55b-0c07-408f-a84c-76d88c472994", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Statement), "006f2403-9da7-4215-8800-1cf7050d9173"}, { new NonTerminator(NonTerminatorType.Variable), "ae30128e-efd3-4103-9828-59d8da47b869"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "3fa1f8f1-0592-440a-a7d7-a66f7aaec0d5"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "cc93b19c-954a-4e6d-9ffe-b1d796b56b27"}, { new Terminator(KeywordType.If), "bd6a5146-d6d4-453b-9442-d2d146452e94"}, { new Terminator(KeywordType.For), "138ba7eb-e0e3-403c-a842-2268411e11cc"}, { new Terminator(KeywordType.While), "7e2dfbed-0d91-495d-bb54-0d2c5fcc59ad"}, { Terminator.IdentifierTerminator, "b128ff00-00cc-46f4-b962-7e7174f1fb28"}, { new Terminator(KeywordType.Begin), "ac1bf4c3-ab39-4ece-a684-e40886b7c49d"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "d856b55b-0c07-408f-a84c-76d88c472994") }, + { "00bc983d-365c-4bdd-9a43-b033f6c5eaba", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "2ce1d5bb-6065-4a80-8283-adda737afd5f"}, { new NonTerminator(NonTerminatorType.Factor), "0352fdd2-1b67-477e-93fd-cea1c06f45ee"}, { Terminator.NumberTerminator, "597502bd-bfc5-413e-aaf9-a5279dc2d81f"}, { new NonTerminator(NonTerminatorType.Variable), "68ec7b04-b2ca-44d9-9198-8406d7b95ac8"}, { new Terminator(DelimiterType.LeftParenthesis), "9fcef660-a3cf-4283-8937-042070fc8839"}, { Terminator.IdentifierTerminator, "546a7d7e-9ec6-4d7f-953d-7e90a46b201e"}, { new Terminator(KeywordType.Not), "2b6c5fda-1717-49be-9fa5-41a15c762693"}, { new Terminator(OperatorType.Minus), "00a34300-5ffd-4bdd-9ad4-dbcd7e51d070"}, { new Terminator(OperatorType.Plus), "fd1875ee-3911-4420-a664-eefe46f836cb"}, { new Terminator(KeywordType.True), "1a2a9fee-915f-4190-ba8a-a76d5c6b189f"}, { new Terminator(KeywordType.False), "4d1f706c-e3ac-4c82-aa63-ee5404f45b3a"},}, new Dictionary{ }, "00bc983d-365c-4bdd-9a43-b033f6c5eaba") }, + { "73536a18-df1f-4a4f-81fc-07c2fc3b7ee6", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "13210c94-53e5-4caf-a917-db8eadf0dc12"}, { Terminator.NumberTerminator, "597502bd-bfc5-413e-aaf9-a5279dc2d81f"}, { new NonTerminator(NonTerminatorType.Variable), "68ec7b04-b2ca-44d9-9198-8406d7b95ac8"}, { new Terminator(DelimiterType.LeftParenthesis), "9fcef660-a3cf-4283-8937-042070fc8839"}, { Terminator.IdentifierTerminator, "546a7d7e-9ec6-4d7f-953d-7e90a46b201e"}, { new Terminator(KeywordType.Not), "2b6c5fda-1717-49be-9fa5-41a15c762693"}, { new Terminator(OperatorType.Minus), "00a34300-5ffd-4bdd-9ad4-dbcd7e51d070"}, { new Terminator(OperatorType.Plus), "fd1875ee-3911-4420-a664-eefe46f836cb"}, { new Terminator(KeywordType.True), "1a2a9fee-915f-4190-ba8a-a76d5c6b189f"}, { new Terminator(KeywordType.False), "4d1f706c-e3ac-4c82-aa63-ee5404f45b3a"},}, new Dictionary{ }, "73536a18-df1f-4a4f-81fc-07c2fc3b7ee6") }, + { "7b24867c-58d5-4d57-94b0-21d29de29033", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "782bf379-5001-4f59-bc87-3720a9ba8a6d"},}, new Dictionary{ }, "7b24867c-58d5-4d57-94b0-21d29de29033") }, + { "1eec7470-9757-4b1d-8827-5a7250e8d73d", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "7ccc8d6d-f793-4845-aa82-0ce24f71cc0a"}, { new NonTerminator(NonTerminatorType.ExpressionList), "565fa308-b899-42c0-980a-6fdc68b189b3"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "1eec7470-9757-4b1d-8827-5a7250e8d73d") }, + { "c54dc85c-519e-42b0-8d4d-76543d5e280b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "c54dc85c-519e-42b0-8d4d-76543d5e280b") }, + { "a809a163-178c-447b-bf9f-34a6593d5e60", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "031088c2-5441-45d1-9f6c-cd1c73878f7a"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "a809a163-178c-447b-bf9f-34a6593d5e60") }, + { "fa3b82cf-9e44-4484-b58a-a00d8d51a2a7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "fa3b82cf-9e44-4484-b58a-a00d8d51a2a7") }, + { "f97048d3-4c30-492c-8527-7974eabd9e4a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "f97048d3-4c30-492c-8527-7974eabd9e4a") }, + { "f5dbf124-2372-42b6-a9bd-3fa0497df370", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "f5dbf124-2372-42b6-a9bd-3fa0497df370") }, + { "c6e37e87-e769-46da-bd8f-c4879fd81dc5", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "c6e37e87-e769-46da-bd8f-c4879fd81dc5") }, + { "86c64243-6306-4647-bb5a-e73623da4302", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "86c64243-6306-4647-bb5a-e73623da4302") }, + { "ea36d651-365e-4e3a-b7b0-dd85c4c5f39e", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "ea36d651-365e-4e3a-b7b0-dd85c4c5f39e") }, + { "526b4e31-2df9-4c72-a672-90a94c67a580", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.Do), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "526b4e31-2df9-4c72-a672-90a94c67a580") }, + { "c2063f2c-47b5-4b72-b490-b11a69a3fc40", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "f4bbb2b0-bcb3-4041-a9d4-6375412f9674"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "c2063f2c-47b5-4b72-b490-b11a69a3fc40") }, + { "10362f85-cc9b-4050-9955-a9482ac3fe16", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "10362f85-cc9b-4050-9955-a9482ac3fe16") }, + { "b6aa3f74-82b1-4dc8-8c73-eeb0c1c8a0c6", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "b6aa3f74-82b1-4dc8-8c73-eeb0c1c8a0c6") }, + { "8a0f6966-2ea9-4619-b793-2c7d13abd9fc", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "8a0f6966-2ea9-4619-b793-2c7d13abd9fc") }, + { "80b4ba84-83d9-49ab-a192-686bf6402fab", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "5dfd402e-0552-48ff-be50-7242dea29a53"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "80b4ba84-83d9-49ab-a192-686bf6402fab") }, + { "36bf5f53-e314-4234-8816-fca5140f26ab", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "01dfe155-4110-4983-94ef-816bbb11b2e9"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "36bf5f53-e314-4234-8816-fca5140f26ab") }, + { "b9842ec9-debc-4ba0-9cb5-11f59fa2f61b", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "691df913-fa28-4dd5-89c9-b6713b30a142"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "b9842ec9-debc-4ba0-9cb5-11f59fa2f61b") }, + { "d8bed7ea-b306-4242-ab1b-a4ac02a772f7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "d8bed7ea-b306-4242-ab1b-a4ac02a772f7") }, + { "90121335-308a-4ebb-8070-00e8a9c4025d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "90121335-308a-4ebb-8070-00e8a9c4025d") }, + { "0909b3db-c7df-4de4-83fd-e068696488f2", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "0909b3db-c7df-4de4-83fd-e068696488f2") }, + { "4497e8b0-f729-41ef-af61-21921e12b83b", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "53cfd34a-5551-45ea-bde3-28ae16f4403f"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "4497e8b0-f729-41ef-af61-21921e12b83b") }, + { "326cba85-78bb-456d-84a8-1106bf2548a5", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "70a7fee5-008b-4712-a9db-c1fe3ebac723"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "326cba85-78bb-456d-84a8-1106bf2548a5") }, + { "9502da91-abee-4eb2-a639-fd9285d445d6", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "12edc4fc-b686-404a-afbd-c66eb9074f30"}, { new Terminator(DelimiterType.Comma), "c2bd4f6a-1204-4250-9472-219492cfb89b"},}, new Dictionary{ }, "9502da91-abee-4eb2-a639-fd9285d445d6") }, + { "e2100de9-9ca4-4186-9c9a-b7f5a5d77673", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "e2100de9-9ca4-4186-9c9a-b7f5a5d77673") }, + { "38bc27cd-19cd-4c08-bd58-afae0bf96d9d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "38bc27cd-19cd-4c08-bd58-afae0bf96d9d") }, + { "8b476bcb-7283-4c34-bd71-ed45789d45db", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.AddOperator), "1926b1f3-37a9-43db-9ba1-ee96d64685df"}, { new Terminator(OperatorType.Plus), "ff07e7b0-2318-47ab-b5b3-62d38c00a279"}, { new Terminator(OperatorType.Minus), "5df57e00-07dc-4d54-9421-a3d931a3df6f"}, { new Terminator(KeywordType.Or), "81a1e4b9-aff3-4e40-8c7b-890e05350f4a"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Expression))}, }, "8b476bcb-7283-4c34-bd71-ed45789d45db") }, + { "52d5de2b-aa99-46df-8024-06c05db9bcf7", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "21018068-ff37-41c1-8082-b7fc4d74ad6e"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "52d5de2b-aa99-46df-8024-06c05db9bcf7") }, + { "2e1310d6-5dfb-4058-a6bd-b7050a3b5e8d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Term))}, }, "2e1310d6-5dfb-4058-a6bd-b7050a3b5e8d") }, + { "46eb1309-679a-446d-b404-979ecdd43f0f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "46eb1309-679a-446d-b404-979ecdd43f0f") }, + { "705a9171-8181-44cc-aa97-5b7a38f28e64", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "705a9171-8181-44cc-aa97-5b7a38f28e64") }, + { "4c29438d-d6bf-42ec-85e1-245b63194ef8", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "08de5a39-ec72-46d0-8a31-7ae80b287378"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "861ef0f6-2a98-41f3-9a54-3ec7d2ca945c"}, { new NonTerminator(NonTerminatorType.Term), "14e8d50f-f839-47bc-8625-00061a186a05"}, { new NonTerminator(NonTerminatorType.Factor), "a556177c-acc4-4abb-843b-1217bc959c0a"}, { Terminator.NumberTerminator, "3ea3c950-0614-4e77-875b-198db9b5dec1"}, { new NonTerminator(NonTerminatorType.Variable), "25279cd9-10d3-491c-b22b-ab6d219987b1"}, { new Terminator(DelimiterType.LeftParenthesis), "34905681-5c09-48bb-98d9-c7d0f1220b9f"}, { Terminator.IdentifierTerminator, "1afab765-abab-4ee5-8e81-afb4057ed142"}, { new Terminator(KeywordType.Not), "9c2adb6e-9a6a-4732-a2ec-db4f9110891b"}, { new Terminator(OperatorType.Minus), "c9c87e1a-2f2c-453e-978b-d36fb68ca681"}, { new Terminator(OperatorType.Plus), "c9b6ac1b-3387-4e86-a381-f2142b65e4b4"}, { new Terminator(KeywordType.True), "407254a3-f259-4d76-959f-cc762a30e5e7"}, { new Terminator(KeywordType.False), "fbee4454-02b0-44fc-a152-e08a97231e3a"},}, new Dictionary{ }, "4c29438d-d6bf-42ec-85e1-245b63194ef8") }, + { "61516da4-5be0-44bc-8ca3-d7187ff3b18a", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.LeftParenthesis), "1a5f1520-58f3-405d-9e94-f69c55481668"}, { new NonTerminator(NonTerminatorType.IdVarPart), "df1a7cfc-59ec-41a5-a4c0-f890edcbb53f"}, { new Terminator(DelimiterType.LeftSquareBracket), "b48f6358-124e-4f72-8fd7-7a82f878fdfc"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Else), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "61516da4-5be0-44bc-8ca3-d7187ff3b18a") }, + { "6afc86e9-61bc-4778-8991-dc784e0f0973", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "9ee505d2-395f-4ff0-ad7c-050947c89ddd"}, { Terminator.NumberTerminator, "46eb1309-679a-446d-b404-979ecdd43f0f"}, { new NonTerminator(NonTerminatorType.Variable), "705a9171-8181-44cc-aa97-5b7a38f28e64"}, { new Terminator(DelimiterType.LeftParenthesis), "4c29438d-d6bf-42ec-85e1-245b63194ef8"}, { Terminator.IdentifierTerminator, "61516da4-5be0-44bc-8ca3-d7187ff3b18a"}, { new Terminator(KeywordType.Not), "6afc86e9-61bc-4778-8991-dc784e0f0973"}, { new Terminator(OperatorType.Minus), "f03d8722-683f-4ef1-b73a-5178d4eb69a8"}, { new Terminator(OperatorType.Plus), "b2256f50-1d16-4f7e-a9a8-9f19126afae9"}, { new Terminator(KeywordType.True), "f67e4745-4976-4fe7-905d-46a90c22b203"}, { new Terminator(KeywordType.False), "c46b6833-8c9c-4a43-a314-31853ff921a3"},}, new Dictionary{ }, "6afc86e9-61bc-4778-8991-dc784e0f0973") }, + { "f03d8722-683f-4ef1-b73a-5178d4eb69a8", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "d4383430-09ef-4e68-99ab-601e2735e662"}, { Terminator.NumberTerminator, "46eb1309-679a-446d-b404-979ecdd43f0f"}, { new NonTerminator(NonTerminatorType.Variable), "705a9171-8181-44cc-aa97-5b7a38f28e64"}, { new Terminator(DelimiterType.LeftParenthesis), "4c29438d-d6bf-42ec-85e1-245b63194ef8"}, { Terminator.IdentifierTerminator, "61516da4-5be0-44bc-8ca3-d7187ff3b18a"}, { new Terminator(KeywordType.Not), "6afc86e9-61bc-4778-8991-dc784e0f0973"}, { new Terminator(OperatorType.Minus), "f03d8722-683f-4ef1-b73a-5178d4eb69a8"}, { new Terminator(OperatorType.Plus), "b2256f50-1d16-4f7e-a9a8-9f19126afae9"}, { new Terminator(KeywordType.True), "f67e4745-4976-4fe7-905d-46a90c22b203"}, { new Terminator(KeywordType.False), "c46b6833-8c9c-4a43-a314-31853ff921a3"},}, new Dictionary{ }, "f03d8722-683f-4ef1-b73a-5178d4eb69a8") }, + { "b2256f50-1d16-4f7e-a9a8-9f19126afae9", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "0d7b2079-b82a-4fd2-add3-edfa0d33d242"}, { Terminator.NumberTerminator, "46eb1309-679a-446d-b404-979ecdd43f0f"}, { new NonTerminator(NonTerminatorType.Variable), "705a9171-8181-44cc-aa97-5b7a38f28e64"}, { new Terminator(DelimiterType.LeftParenthesis), "4c29438d-d6bf-42ec-85e1-245b63194ef8"}, { Terminator.IdentifierTerminator, "61516da4-5be0-44bc-8ca3-d7187ff3b18a"}, { new Terminator(KeywordType.Not), "6afc86e9-61bc-4778-8991-dc784e0f0973"}, { new Terminator(OperatorType.Minus), "f03d8722-683f-4ef1-b73a-5178d4eb69a8"}, { new Terminator(OperatorType.Plus), "b2256f50-1d16-4f7e-a9a8-9f19126afae9"}, { new Terminator(KeywordType.True), "f67e4745-4976-4fe7-905d-46a90c22b203"}, { new Terminator(KeywordType.False), "c46b6833-8c9c-4a43-a314-31853ff921a3"},}, new Dictionary{ }, "b2256f50-1d16-4f7e-a9a8-9f19126afae9") }, + { "f67e4745-4976-4fe7-905d-46a90c22b203", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "f67e4745-4976-4fe7-905d-46a90c22b203") }, + { "c46b6833-8c9c-4a43-a314-31853ff921a3", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(1, new NonTerminator(NonTerminatorType.Factor))}, }, "c46b6833-8c9c-4a43-a314-31853ff921a3") }, + { "2fc873e0-76f7-4015-8e3e-9f1226db768d", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "58aab44d-1d41-4aa5-9a15-8c35b2622033"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "2fc873e0-76f7-4015-8e3e-9f1226db768d") }, + { "f6cc426b-89ec-48b3-acf2-55523bfbbcd9", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "f6cc426b-89ec-48b3-acf2-55523bfbbcd9") }, + { "34733c80-aa3e-47e6-8f76-0a02deaaaf9c", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "34733c80-aa3e-47e6-8f76-0a02deaaaf9c") }, + { "250e44c9-37dc-4237-8594-aa23ee8eb3bd", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "250e44c9-37dc-4237-8594-aa23ee8eb3bd") }, + { "7da2d262-d876-4760-aa45-e47bf064f843", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "e9d5c9ec-08e6-4527-a856-6244c290785d"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "7da2d262-d876-4760-aa45-e47bf064f843") }, + { "d9d4e5d7-76ea-4fca-a245-0d073b49e48a", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "82d53769-e06e-48c7-b447-5f712d18d388"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "d9d4e5d7-76ea-4fca-a245-0d073b49e48a") }, + { "d3bf430f-ff31-4729-b234-cde50d75cf96", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(5, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(5, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(5, new NonTerminator(NonTerminatorType.Statement))}, }, "d3bf430f-ff31-4729-b234-cde50d75cf96") }, + { "b251bbc6-4ecf-4db0-8962-d50dcb947b3f", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Statement), "c4439f84-1804-4886-aa38-e247e4bd83c7"}, { new NonTerminator(NonTerminatorType.Variable), "2003d515-90bb-4516-b5f4-2a4cedf0fad3"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "39958051-a99c-49c9-8d22-79d2456b0c78"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "f3c84ef3-69cf-4881-822f-d2a6f0a8f160"}, { new Terminator(KeywordType.If), "2436839b-20b6-4147-af90-9c877a35feea"}, { new Terminator(KeywordType.For), "6afb4fc5-5847-4ac1-8489-830a122891f2"}, { new Terminator(KeywordType.While), "3e60e08c-33fc-4674-961c-18019584f9ba"}, { Terminator.IdentifierTerminator, "24a23c8f-9000-443b-9fd0-cb6464a74efa"}, { new Terminator(KeywordType.Begin), "554d0078-799c-4218-9588-712cf3fe3c14"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "b251bbc6-4ecf-4db0-8962-d50dcb947b3f") }, + { "9954d52d-5f63-460e-b5ec-21a1e2c324a0", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Expression), "feec124f-b66e-42ef-8170-223c0db51a5b"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "605e6610-c7fd-4688-914d-554d4e1f0467"}, { new NonTerminator(NonTerminatorType.Term), "ecf78c42-792d-4d48-8f88-e1cd8e101dd0"}, { new NonTerminator(NonTerminatorType.Factor), "17ce7de7-ab8c-4389-a0a2-d215ebdc96b1"}, { Terminator.NumberTerminator, "2b65415f-fb75-427d-a310-39b44b8db03a"}, { new NonTerminator(NonTerminatorType.Variable), "80bf23b2-58db-4d1a-84d2-bec3e73c0429"}, { new Terminator(DelimiterType.LeftParenthesis), "1cd421b5-16d2-469d-bb62-1a97353ec366"}, { Terminator.IdentifierTerminator, "db36538c-6d08-4417-a589-ca40963ee1c5"}, { new Terminator(KeywordType.Not), "47a918c3-1ad6-4fb3-aa15-e10f85953c5d"}, { new Terminator(OperatorType.Minus), "4a9f4005-1b1b-445e-905a-389a24c88d05"}, { new Terminator(OperatorType.Plus), "d6df8a91-452b-46a5-b35e-18cb2be98261"}, { new Terminator(KeywordType.True), "c9085b14-74b4-4630-8f90-1009eb9f7674"}, { new Terminator(KeywordType.False), "44c59546-5b4e-48b3-a3eb-de499bb1a988"},}, new Dictionary{ }, "9954d52d-5f63-460e-b5ec-21a1e2c324a0") }, + { "622092ce-c7e7-476a-a062-129e3851190f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "622092ce-c7e7-476a-a062-129e3851190f") }, + { "5b3956d3-c39f-44c3-8f06-21eed237beb8", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "5b3956d3-c39f-44c3-8f06-21eed237beb8") }, + { "006f2403-9da7-4215-8800-1cf7050d9173", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(8, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(8, new NonTerminator(NonTerminatorType.Statement))}, }, "006f2403-9da7-4215-8800-1cf7050d9173") }, + { "2ce1d5bb-6065-4a80-8283-adda737afd5f", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "73536a18-df1f-4a4f-81fc-07c2fc3b7ee6"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "2ce1d5bb-6065-4a80-8283-adda737afd5f") }, + { "13210c94-53e5-4caf-a917-db8eadf0dc12", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "13210c94-53e5-4caf-a917-db8eadf0dc12") }, + { "782bf379-5001-4f59-bc87-3720a9ba8a6d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "782bf379-5001-4f59-bc87-3720a9ba8a6d") }, + { "7ccc8d6d-f793-4845-aa82-0ce24f71cc0a", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "7ccc8d6d-f793-4845-aa82-0ce24f71cc0a") }, + { "565fa308-b899-42c0-980a-6fdc68b189b3", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "94a2e06b-c671-41a4-af55-c19a73645836"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "565fa308-b899-42c0-980a-6fdc68b189b3") }, + { "031088c2-5441-45d1-9f6c-cd1c73878f7a", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "f9e870e6-d95b-46e7-b828-862963e7a498"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "031088c2-5441-45d1-9f6c-cd1c73878f7a") }, + { "5dfd402e-0552-48ff-be50-7242dea29a53", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "5dfd402e-0552-48ff-be50-7242dea29a53") }, + { "01dfe155-4110-4983-94ef-816bbb11b2e9", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "01dfe155-4110-4983-94ef-816bbb11b2e9") }, + { "53cfd34a-5551-45ea-bde3-28ae16f4403f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "53cfd34a-5551-45ea-bde3-28ae16f4403f") }, + { "70a7fee5-008b-4712-a9db-c1fe3ebac723", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Comma), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "70a7fee5-008b-4712-a9db-c1fe3ebac723") }, + { "12edc4fc-b686-404a-afbd-c66eb9074f30", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.Of), "00131584-9785-404b-9878-423997ce06dd"},}, new Dictionary{ }, "12edc4fc-b686-404a-afbd-c66eb9074f30") }, + { "1926b1f3-37a9-43db-9ba1-ee96d64685df", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Term), "400c754d-b8ea-4cce-8383-ede49d00cd95"}, { new NonTerminator(NonTerminatorType.Factor), "2e1310d6-5dfb-4058-a6bd-b7050a3b5e8d"}, { Terminator.NumberTerminator, "46eb1309-679a-446d-b404-979ecdd43f0f"}, { new NonTerminator(NonTerminatorType.Variable), "705a9171-8181-44cc-aa97-5b7a38f28e64"}, { new Terminator(DelimiterType.LeftParenthesis), "4c29438d-d6bf-42ec-85e1-245b63194ef8"}, { Terminator.IdentifierTerminator, "61516da4-5be0-44bc-8ca3-d7187ff3b18a"}, { new Terminator(KeywordType.Not), "6afc86e9-61bc-4778-8991-dc784e0f0973"}, { new Terminator(OperatorType.Minus), "f03d8722-683f-4ef1-b73a-5178d4eb69a8"}, { new Terminator(OperatorType.Plus), "b2256f50-1d16-4f7e-a9a8-9f19126afae9"}, { new Terminator(KeywordType.True), "f67e4745-4976-4fe7-905d-46a90c22b203"}, { new Terminator(KeywordType.False), "c46b6833-8c9c-4a43-a314-31853ff921a3"},}, new Dictionary{ }, "1926b1f3-37a9-43db-9ba1-ee96d64685df") }, + { "21018068-ff37-41c1-8082-b7fc4d74ad6e", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Factor), "af322388-0fde-412c-a301-214f04ab41e2"}, { Terminator.NumberTerminator, "46eb1309-679a-446d-b404-979ecdd43f0f"}, { new NonTerminator(NonTerminatorType.Variable), "705a9171-8181-44cc-aa97-5b7a38f28e64"}, { new Terminator(DelimiterType.LeftParenthesis), "4c29438d-d6bf-42ec-85e1-245b63194ef8"}, { Terminator.IdentifierTerminator, "61516da4-5be0-44bc-8ca3-d7187ff3b18a"}, { new Terminator(KeywordType.Not), "6afc86e9-61bc-4778-8991-dc784e0f0973"}, { new Terminator(OperatorType.Minus), "f03d8722-683f-4ef1-b73a-5178d4eb69a8"}, { new Terminator(OperatorType.Plus), "b2256f50-1d16-4f7e-a9a8-9f19126afae9"}, { new Terminator(KeywordType.True), "f67e4745-4976-4fe7-905d-46a90c22b203"}, { new Terminator(KeywordType.False), "c46b6833-8c9c-4a43-a314-31853ff921a3"},}, new Dictionary{ }, "21018068-ff37-41c1-8082-b7fc4d74ad6e") }, + { "08de5a39-ec72-46d0-8a31-7ae80b287378", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "ab734109-7307-4d45-b2db-0aac2014431b"},}, new Dictionary{ }, "08de5a39-ec72-46d0-8a31-7ae80b287378") }, + { "1a5f1520-58f3-405d-9e94-f69c55481668", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "6df342dd-d56c-47c1-8c8f-02294997c0fd"}, { new NonTerminator(NonTerminatorType.ExpressionList), "dbf50e34-dd03-4b2a-b8da-a0351318a7df"}, { new NonTerminator(NonTerminatorType.Expression), "c8c09e44-9689-4e17-a45f-d2479165b0d0"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "b79ef3a8-f7a1-4c8a-a045-f85634c8a63c"}, { new NonTerminator(NonTerminatorType.Term), "f37e5e71-a874-42d7-a89e-3e84a834a262"}, { new NonTerminator(NonTerminatorType.Factor), "25602278-82f6-44fe-b07b-29c2e2980630"}, { Terminator.NumberTerminator, "575cc8d6-a444-4bd3-a19b-fcaebf49abae"}, { new NonTerminator(NonTerminatorType.Variable), "17c015c2-df70-4687-a339-5f3814f0b949"}, { new Terminator(DelimiterType.LeftParenthesis), "43bdb409-df12-4668-897e-2ce4b1c7bf34"}, { Terminator.IdentifierTerminator, "fc464fa7-cb96-4341-85f1-fc41468c1e4c"}, { new Terminator(KeywordType.Not), "39095386-9038-4dcc-b6f4-7042fbaf2194"}, { new Terminator(OperatorType.Minus), "1fa9a151-e468-4fe1-b3e2-c0282840644e"}, { new Terminator(OperatorType.Plus), "e129dcf3-7aab-403a-8dae-2f11d720a236"}, { new Terminator(KeywordType.True), "5e64cbe6-42a4-4ad0-a2cb-0213545dfe21"}, { new Terminator(KeywordType.False), "7c46e9b6-1238-402a-974c-808571dfa726"},}, new Dictionary{ }, "1a5f1520-58f3-405d-9e94-f69c55481668") }, + { "df1a7cfc-59ec-41a5-a4c0-f890edcbb53f", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(KeywordType.Else), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Variable))}, }, "df1a7cfc-59ec-41a5-a4c0-f890edcbb53f") }, + { "b48f6358-124e-4f72-8fd7-7a82f878fdfc", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.ExpressionList), "ab1f4ffa-164c-4af5-a317-90b2d313d82d"}, { new NonTerminator(NonTerminatorType.Expression), "9a9ac9be-af8b-4d4d-8bcc-ffac3829a5f2"}, { new NonTerminator(NonTerminatorType.SimpleExpression), "2cb1744c-c440-4a4b-96d5-de8bf99406c5"}, { new NonTerminator(NonTerminatorType.Term), "f995f955-70b5-42d4-8abd-c14d8abf1b85"}, { new NonTerminator(NonTerminatorType.Factor), "e5c504d5-3b0f-40f9-8667-5e2cb304f89b"}, { Terminator.NumberTerminator, "d0117e0b-f480-459d-8474-d2167983bc1a"}, { new NonTerminator(NonTerminatorType.Variable), "4b621297-900b-4d2b-a080-eb3b76f9622c"}, { new Terminator(DelimiterType.LeftParenthesis), "e696d593-3e5a-469f-ac63-2f4798ddd4c1"}, { Terminator.IdentifierTerminator, "a7aa1b0d-692d-4711-9b1b-bf0beeff9348"}, { new Terminator(KeywordType.Not), "9972f94a-15f5-4545-b21e-f6b80df89fc4"}, { new Terminator(OperatorType.Minus), "25ee3621-0f2e-400f-a56e-b58c6924b370"}, { new Terminator(OperatorType.Plus), "c0e51999-5060-441b-b2df-88f948fae74d"}, { new Terminator(KeywordType.True), "0c8fe83a-34ff-44f6-80e5-e5bf7880e290"}, { new Terminator(KeywordType.False), "0b8cf87d-78e3-4c75-9f8f-075571e83bce"},}, new Dictionary{ }, "b48f6358-124e-4f72-8fd7-7a82f878fdfc") }, + { "9ee505d2-395f-4ff0-ad7c-050947c89ddd", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "9ee505d2-395f-4ff0-ad7c-050947c89ddd") }, + { "d4383430-09ef-4e68-99ab-601e2735e662", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "d4383430-09ef-4e68-99ab-601e2735e662") }, + { "0d7b2079-b82a-4fd2-add3-edfa0d33d242", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.Factor))}, }, "0d7b2079-b82a-4fd2-add3-edfa0d33d242") }, + { "e9d5c9ec-08e6-4527-a856-6244c290785d", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Equal), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Less), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Greater), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "e9d5c9ec-08e6-4527-a856-6244c290785d") }, + { "82d53769-e06e-48c7-b447-5f712d18d388", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Equal), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.NotEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Less), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.LessEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Greater), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.GreaterEqual), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "82d53769-e06e-48c7-b447-5f712d18d388") }, + { "c4439f84-1804-4886-aa38-e247e4bd83c7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ElsePart))}, { new Terminator(KeywordType.Else), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ElsePart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(2, new NonTerminator(NonTerminatorType.ElsePart))}, }, "c4439f84-1804-4886-aa38-e247e4bd83c7") }, + { "feec124f-b66e-42ef-8170-223c0db51a5b", new GeneratedTransformer(new Dictionary{ { new Terminator(KeywordType.Do), "a82406a5-b4b5-4f73-94ac-91bd29f960c4"},}, new Dictionary{ }, "feec124f-b66e-42ef-8170-223c0db51a5b") }, + { "94a2e06b-c671-41a4-af55-c19a73645836", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "94a2e06b-c671-41a4-af55-c19a73645836") }, + { "f9e870e6-d95b-46e7-b828-862963e7a498", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.To), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "f9e870e6-d95b-46e7-b828-862963e7a498") }, + { "00131584-9785-404b-9878-423997ce06dd", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.BasicType), "c0c8671d-c0e6-41a6-9912-80a2788d3833"}, { new Terminator(KeywordType.Integer), "265dc661-0c5d-49bc-83a8-648314bd547f"}, { new Terminator(KeywordType.Real), "6ba8980f-fabc-4a45-b031-00a2552ccf73"}, { new Terminator(KeywordType.Boolean), "9c4bbea1-b9b8-4d1a-890c-e2825b218b61"}, { new Terminator(KeywordType.Character), "55b917ca-2312-4e43-9503-c6ab992ce9e2"},}, new Dictionary{ }, "00131584-9785-404b-9878-423997ce06dd") }, + { "400c754d-b8ea-4cce-8383-ede49d00cd95", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.MultiplyOperator), "21018068-ff37-41c1-8082-b7fc4d74ad6e"}, { new Terminator(OperatorType.Multiply), "f804a71b-b820-43aa-be44-f8a295bde558"}, { new Terminator(OperatorType.Divide), "8b737830-70f6-4bec-97a5-6296481bf768"}, { new Terminator(KeywordType.Divide), "3505d411-753d-4ad5-baa6-5ce42611bdf5"}, { new Terminator(KeywordType.Mod), "12058fc7-adfa-4bfa-8590-10cae139c4ef"}, { new Terminator(KeywordType.And), "43b7afac-75b0-4e50-94f1-52e653362a16"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.SimpleExpression))}, }, "400c754d-b8ea-4cce-8383-ede49d00cd95") }, + { "af322388-0fde-412c-a301-214f04ab41e2", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Term))}, }, "af322388-0fde-412c-a301-214f04ab41e2") }, + { "ab734109-7307-4d45-b2db-0aac2014431b", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "ab734109-7307-4d45-b2db-0aac2014431b") }, + { "6df342dd-d56c-47c1-8c8f-02294997c0fd", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.Factor))}, }, "6df342dd-d56c-47c1-8c8f-02294997c0fd") }, + { "dbf50e34-dd03-4b2a-b8da-a0351318a7df", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), "adf5839e-bf83-4316-aaa5-626fa1ac6379"}, { new Terminator(DelimiterType.Comma), "42adc07d-e305-4673-b588-72af40c98941"},}, new Dictionary{ }, "dbf50e34-dd03-4b2a-b8da-a0351318a7df") }, + { "ab1f4ffa-164c-4af5-a317-90b2d313d82d", new GeneratedTransformer(new Dictionary{ { new Terminator(DelimiterType.RightSquareBracket), "c3e4693e-5291-43de-ac5f-d077f26b45f7"}, { new Terminator(DelimiterType.Comma), "a5ad624f-614c-4666-8acc-9956c94b8095"},}, new Dictionary{ }, "ab1f4ffa-164c-4af5-a317-90b2d313d82d") }, + { "a82406a5-b4b5-4f73-94ac-91bd29f960c4", new GeneratedTransformer(new Dictionary{ { new NonTerminator(NonTerminatorType.Statement), "cedb80df-365b-40c0-aa6a-29e82b1a48a8"}, { new NonTerminator(NonTerminatorType.Variable), "2003d515-90bb-4516-b5f4-2a4cedf0fad3"}, { new NonTerminator(NonTerminatorType.ProcedureCall), "39958051-a99c-49c9-8d22-79d2456b0c78"}, { new NonTerminator(NonTerminatorType.CompoundStatement), "f3c84ef3-69cf-4881-822f-d2a6f0a8f160"}, { new Terminator(KeywordType.If), "2436839b-20b6-4147-af90-9c877a35feea"}, { new Terminator(KeywordType.For), "6afb4fc5-5847-4ac1-8489-830a122891f2"}, { new Terminator(KeywordType.While), "3e60e08c-33fc-4674-961c-18019584f9ba"}, { Terminator.IdentifierTerminator, "24a23c8f-9000-443b-9fd0-cb6464a74efa"}, { new Terminator(KeywordType.Begin), "554d0078-799c-4218-9588-712cf3fe3c14"},}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(0, new NonTerminator(NonTerminatorType.Statement))}, }, "a82406a5-b4b5-4f73-94ac-91bd29f960c4") }, + { "c0c8671d-c0e6-41a6-9912-80a2788d3833", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(DelimiterType.RightParenthesis), new ReduceInformation(6, new NonTerminator(NonTerminatorType.Type))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(6, new NonTerminator(NonTerminatorType.Type))}, }, "c0c8671d-c0e6-41a6-9912-80a2788d3833") }, + { "adf5839e-bf83-4316-aaa5-626fa1ac6379", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Divide), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Mod), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.And), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Plus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(OperatorType.Minus), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Or), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(KeywordType.Else), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(4, new NonTerminator(NonTerminatorType.Factor))}, }, "adf5839e-bf83-4316-aaa5-626fa1ac6379") }, + { "c3e4693e-5291-43de-ac5f-d077f26b45f7", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Multiply), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Divide), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Mod), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.And), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Plus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(OperatorType.Minus), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Or), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(KeywordType.Else), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(3, new NonTerminator(NonTerminatorType.IdVarPart))}, }, "c3e4693e-5291-43de-ac5f-d077f26b45f7") }, + { "cedb80df-365b-40c0-aa6a-29e82b1a48a8", new GeneratedTransformer(new Dictionary{}, new Dictionary{ { new Terminator(KeywordType.End), new ReduceInformation(8, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(KeywordType.Else), new ReduceInformation(8, new NonTerminator(NonTerminatorType.Statement))}, { new Terminator(DelimiterType.Semicolon), new ReduceInformation(8, new NonTerminator(NonTerminatorType.Statement))}, }, "cedb80df-365b-40c0-aa6a-29e82b1a48a8") }, + }; + + private GeneratedGrammarParser() + { + foreach(GeneratedTransformer transformer in s_transformers.Values) + { + transformer.ConstructShiftTable(s_transformers); + } + } + + private static GeneratedGrammarParser s_instance = new GeneratedGrammarParser(); + + public static GeneratedGrammarParser Instance => s_instance; + + public ITransformer BeginTransformer => s_transformers["59d736fd-fe3f-42d7-9c76-7dab621a50ad"]; + public NonTerminator Begin => new NonTerminator(NonTerminatorType.StartNonTerminator); +} diff --git a/CanonSharp.Benchmark/Canon.Core/GrammarParser/Grammar.cs b/CanonSharp.Benchmark/Canon.Core/GrammarParser/Grammar.cs new file mode 100644 index 0000000..d4d3dce --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/GrammarParser/Grammar.cs @@ -0,0 +1,114 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.Exceptions; + +namespace CanonSharp.Benchmark.Canon.Core.GrammarParser; + +/// +/// 通过LR分析方法建立的语法 +/// +public class Grammar +{ + /// + /// 起始符 + /// + public required NonTerminator Begin { get; init; } + + /// + /// 语法中的DFA + /// + public required HashSet Automation { get; init; } + + /// + /// 起始状态 + /// + public required LrState BeginState { get; init; } + + public IGrammarParser ToGrammarParser() + { + Dictionary transformers = []; + + foreach (LrState state in Automation) + { + ITransformer transformer; + if (transformers.TryGetValue(state, out Transformer? oldTransformer)) + { + transformer = oldTransformer; + } + else + { + Transformer newTransformer = new(); + transformers.Add(state, newTransformer); + transformer = newTransformer; + } + + // 生成归约的迁移表 + foreach (Expression expression in state.Expressions) + { + if (expression.Pos == expression.Right.Count) + { + if (transformer.ShiftTable.ContainsKey(expression.LookAhead)) + { + throw new ReduceAndShiftConflictException(); + } + + if (!transformer.ReduceTable.TryAdd(expression.LookAhead, + new ReduceInformation(expression.Right.Count, expression.Left))) + { + // 发生归约-归约冲突 + throw new ReduceConflictException(state, expression.LookAhead, expression.Left, + transformer.ReduceTable[expression.LookAhead].Left); + } + } + } + + // 生成移进的迁移表 + foreach (KeyValuePair pair in state.Transformer) + { + ITransformer targetTransformer; + if (transformers.TryGetValue(pair.Value, out Transformer? oldTransformer2)) + { + targetTransformer = oldTransformer2; + } + else + { + Transformer newTransformer = new(); + transformers.Add(pair.Value, newTransformer); + targetTransformer = newTransformer; + } + + // 检测移进-归约冲突 + if (pair.Key.IsTerminated) + { + Terminator terminator = (Terminator)pair.Key; + // hack 对于ElsePart的移进-归约冲突 + if (terminator != new Terminator(KeywordType.Else) && transformer.ReduceTable.ContainsKey(terminator)) + { + throw new ReduceAndShiftConflictException(); + } + } + + transformer.ShiftTable.Add(pair.Key, targetTransformer); + } + } + + return new GrammarParser(transformers[BeginState], Begin); + } + + private class GrammarParser(ITransformer beginTransformer, NonTerminator begin) : IGrammarParser + { + public ITransformer BeginTransformer { get; } = beginTransformer; + public NonTerminator Begin { get; } = begin; + } + + private class Transformer : ITransformer + { + public string Name => string.Empty; + + public IDictionary ShiftTable { get; } + = new Dictionary(); + + public IDictionary ReduceTable { get; } + = new Dictionary(); + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/GrammarParser/GrammarBuilder.cs b/CanonSharp.Benchmark/Canon.Core/GrammarParser/GrammarBuilder.cs new file mode 100644 index 0000000..b6faa2c --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/GrammarParser/GrammarBuilder.cs @@ -0,0 +1,363 @@ +namespace CanonSharp.Benchmark.Canon.Core.GrammarParser; + +public class GrammarBuilder +{ + /// + /// 指定文法的生成式 + /// + public Dictionary>> Generators { get; init; } = []; + + /// + /// 文法的起始符 + /// + public required NonTerminator Begin { get; init; } + + /// + /// 文法中所有非终结符的First集合 + /// + public Dictionary> FirstSet { get; } = []; + + public HashSet Automation { get; } = []; + + /// + /// 向指定非终结符的FirstSet中添加指定符号的FirstSet + /// + /// 指定的非终结符 + /// 指定的符号 + /// 标记是否改变了FirstSet + private void AddFirstSetOfTerminatorBase(NonTerminator target, TerminatorBase t, ref bool changed) + { + if (t.IsTerminated) + { + Terminator terminator = (Terminator)t; + + if (FirstSet.TryGetValue(target, out HashSet? firstSet)) + { + if (firstSet.Add(terminator)) + { + changed = true; + } + } + else + { + FirstSet.Add(target, [terminator]); + changed = true; + } + } + else + { + NonTerminator nonTerminator = (NonTerminator)t; + + if (!FirstSet.TryGetValue(nonTerminator, out HashSet? firstSet)) + { + return; + } + + if (!FirstSet.ContainsKey(target)) + { + FirstSet.Add(target, []); + changed = true; + } + + foreach (Terminator i in firstSet) + { + if (i == Terminator.EmptyTerminator) + { + continue; + } + + if (FirstSet[target].Add(i)) + { + changed = true; + } + } + } + } + + /// + /// 构建文法中所有非终结符的First集合 + /// + private void BuildFirstSet() + { + bool changed = true; + + while (changed) + { + changed = false; + + foreach (KeyValuePair>> pair in Generators) + { + foreach (List expression in pair.Value) + { + TerminatorBase expressionHead = expression.First(); + AddFirstSetOfTerminatorBase(pair.Key, expressionHead, ref changed); + + // 处理空产生式 + for (int i = 0; i < expression.Count; i++) + { + if (!expression[i].IsTerminated) + { + NonTerminator nonTerminator = (NonTerminator)expression[i]; + + // 可以推出空产生式 + // 则将下一个符号的FirstSet加入该符号的集合中 + if (!FirstSet.TryGetValue(nonTerminator, out HashSet? firstSet)) + { + break; + } + + if (!firstSet.Contains(Terminator.EmptyTerminator)) + { + break; + } + + if (i + 1 < expression.Count) + { + // 还有下一个符号 + // 就把下一个符号的FirstSet加入 + AddFirstSetOfTerminatorBase(pair.Key, expression[i + 1], ref changed); + } + else + { + // 没有下一个符号了 + // 就需要加入空串 + AddFirstSetOfTerminatorBase(pair.Key, Terminator.EmptyTerminator, ref changed); + } + } + else + { + break; + } + } + } + } + } + } + + /// + /// 计算指定语句的First集合 + /// 需要用到非终结符的First集合 + /// + /// 需要计算的语句 + /// 指定语句的First集合 + private HashSet CalculateFirstSetOfExpression(List expression) + { + HashSet result = []; + + TerminatorBase? expressionHead = expression.FirstOrDefault(); + if (expressionHead is null) + { + return result; + } + + if (expressionHead.IsTerminated) + { + // 指定表达式开头是终结符 + Terminator terminator = (Terminator)expressionHead; + + result.Add(terminator); + } + else + { + // 指定表达式开头是非终结符 + // 将该非终结符的FirstSet加入进来 + NonTerminator nonTerminator = (NonTerminator)expressionHead; + + if (!FirstSet.TryGetValue(nonTerminator, out HashSet? firstSet)) + { + throw new InvalidOperationException($"Failed to get first set for {nonTerminator}"); + } + + foreach (Terminator terminator in firstSet) + { + // 如果First中包含空字符串 + // 递归获得该字符之后的表达式的FirstSet + if (terminator == Terminator.EmptyTerminator) + { + result.UnionWith(CalculateFirstSetOfExpression(expression[1..])); + } + else + { + result.Add(terminator); + } + } + } + + return result; + } + + /// + /// 计算指定表达式的项目集规范族闭包 + /// + /// 指定的表达式 + /// 指定表达式的项目集规范族闭包 + private HashSet CalculateClosure(Expression expression) + { + HashSet closure = [expression]; + + bool changed = true; + while (changed) + { + changed = false; + + // 不能在foreach过程中修改集合 + // 因此需要在遍历完成之后添加 + List addedExpressions = []; + + foreach (Expression e in closure) + { + if (e.Pos >= e.Right.Count) + { + // 已经移进到达句型的末尾 + continue; + } + + TerminatorBase next = e.Right[e.Pos]; + + if (next.IsTerminated) + { + continue; + } + + NonTerminator nonTerminator = (NonTerminator)next; + + // 将当前未移进的字符和向前看字符拼接为新的向前看表达式 + List ahead = []; + for (int i = e.Pos + 1; i < e.Right.Count; i++) + { + ahead.Add(e.Right[i]); + } + ahead.Add(e.LookAhead); + + HashSet lookAheadSet = CalculateFirstSetOfExpression(ahead); + + foreach (List nextExpression in Generators[nonTerminator]) + { + foreach (Terminator lookAhead in lookAheadSet) + { + // 在新建Expression的时候就不用把空产生式放进右部里面了 + Expression newExpression = new() + { + Left = nonTerminator, Right = IsEmptyOnly(nextExpression) ? [] : nextExpression, + LookAhead = lookAhead, Pos = 0 + }; + + if (!closure.Contains(newExpression)) + { + addedExpressions.Add(newExpression); + } + } + } + } + + foreach (Expression addedExpression in addedExpressions) + { + if (closure.Add(addedExpression)) + { + changed = true; + } + } + } + + return closure; + } + + public Grammar Build() + { + // 开始之前构建FirstSet + BuildFirstSet(); + + Expression begin = new() + { + // 这里就不考虑右部可能为空产生式的情况了 + // 毕竟有拓广文法 + Left = Begin, Right = Generators[Begin].First(), LookAhead = Terminator.EndTerminator, Pos = 0 + }; + + LrState beginState = new() { Expressions = CalculateClosure(begin) }; + Automation.Add(beginState); + + bool added = true; + while (added) + { + // 同样不能在foreach期间修改集合 + HashSet addedStates = []; + + foreach (LrState state in Automation) + { + // 表示使用key进行移进可以生成的新LR(1)句型 + Dictionary> nextExpressions = []; + + foreach (Expression e in state.Expressions) + { + if (e.Pos >= e.Right.Count) + { + // 已经移进到达末尾 + continue; + } + + TerminatorBase next = e.Right[e.Pos]; + Expression nextExpression = new() + { + Left = e.Left, Right = e.Right, LookAhead = e.LookAhead, Pos = e.Pos + 1 + }; + + if (!nextExpressions.TryAdd(next, [nextExpression])) + { + nextExpressions[next].Add(nextExpression); + } + } + + foreach (KeyValuePair> pair in nextExpressions) + { + // 针对每个构建项目集闭包 + HashSet closure = []; + + foreach (Expression expression in pair.Value) + { + closure.UnionWith(CalculateClosure(expression)); + } + + LrState newState = new() { Expressions = closure }; + + if (Automation.TryGetValue(newState, out LrState? oldState)) + { + // 存在这个项目集闭包 + state.AddTransform(pair.Key, oldState); + } + else + { + // 不存在这个项目集闭包 + // 但是需要考虑该状态在addedStates集合中的情况 + if (addedStates.TryGetValue(newState, out LrState? addedState)) + { + state.AddTransform(pair.Key, addedState); + } + else + { + state.AddTransform(pair.Key, newState); + addedStates.Add(newState); + } + } + } + } + + added = addedStates.Count != 0; + Automation.UnionWith(addedStates); + } + + return new Grammar { Begin = Begin, BeginState = beginState, Automation = Automation}; + } + + private static bool IsEmptyOnly(List expression) + { + if (expression.Count != 1 || !expression[0].IsTerminated) + { + return false; + } + + Terminator terminator = (Terminator)expression[0]; + + return terminator == Terminator.EmptyTerminator; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/GrammarParser/LrState.cs b/CanonSharp.Benchmark/Canon.Core/GrammarParser/LrState.cs new file mode 100644 index 0000000..9d8087b --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/GrammarParser/LrState.cs @@ -0,0 +1,102 @@ +using System.Text; + +namespace CanonSharp.Benchmark.Canon.Core.GrammarParser; + +/// +/// LR语法中的一个项目集规范族 +/// 也就是自动机中的一个状态 +/// +public class LrState : IEquatable +{ + /// + /// 项目集规范族 + /// + public required HashSet Expressions { get; init; } + + /// + /// 自动机的迁移规则 + /// + public Dictionary Transformer { get; } = []; + + /// + /// 向状态中添加一个迁移规则 + /// + /// 迁移的条件 + /// 迁移到达的状态 + /// 如果在状态中已经存在该迁移规则且迁移到的状态和欲设置的状态不同 + /// 抛出无效操作异常 + public void AddTransform(TerminatorBase terminator, LrState next) + { + if (Transformer.TryGetValue(terminator, out LrState? state)) + { + if (state != next) + { + throw new InvalidOperationException("A terminator transform to two different states"); + } + } + else + { + Transformer.Add(terminator, next); + } + } + + public bool Equals(LrState? other) + { + if (other is null) + { + return false; + } + + if (Expressions.Count != other.Expressions.Count) + { + return false; + } + + // 如果两个集合的大小相等,且一个是另一个的子集,那么两个集合相等。 + return Expressions.IsSubsetOf(other.Expressions); + } + + public override bool Equals(object? obj) + { + if (obj is not LrState other) + { + return false; + } + + return Equals(other); + } + + public override int GetHashCode() + { + int hash = 0; + + foreach (Expression expression in Expressions) + { + hash ^= expression.GetHashCode(); + } + + return hash; + } + + public override string ToString() + { + StringBuilder builder = new(); + + foreach (Expression e in Expressions) + { + builder.Append(e).Append('\n'); + } + + return builder.ToString(); + } + + public static bool operator ==(LrState a, LrState b) + { + return a.Equals(b); + } + + public static bool operator !=(LrState a, LrState b) + { + return !a.Equals(b); + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/GrammarParser/PascalGrammar.cs b/CanonSharp.Benchmark/Canon.Core/GrammarParser/PascalGrammar.cs new file mode 100644 index 0000000..3ff8a02 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/GrammarParser/PascalGrammar.cs @@ -0,0 +1,631 @@ +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.GrammarParser; + +public static class PascalGrammar +{ + public static readonly Dictionary>> Grammar = new() + { + { + // ProgramStart -> ProgramStruct + new NonTerminator(NonTerminatorType.StartNonTerminator), [ + [new NonTerminator(NonTerminatorType.ProgramStruct)] + ] + }, + { + // ProgramStruct -> ProgramHead ; ProgramBody . + new NonTerminator(NonTerminatorType.ProgramStruct), [ + [ + new NonTerminator(NonTerminatorType.ProgramHead), + new Terminator(DelimiterType.Semicolon), + new NonTerminator(NonTerminatorType.ProgramBody), + new Terminator(DelimiterType.Period) + ] + ] + }, + { + // ProgramHead -> program id (IdList) | program id + new NonTerminator(NonTerminatorType.ProgramHead), [ + [ + new Terminator(KeywordType.Program), + Terminator.IdentifierTerminator, + new Terminator(DelimiterType.LeftParenthesis), + new NonTerminator(NonTerminatorType.IdentifierList), + new Terminator(DelimiterType.RightParenthesis), + ], + [ + new Terminator(KeywordType.Program), + Terminator.IdentifierTerminator, + ] + ] + }, + { + // ProgramBody -> ConstDeclarations + // VarDeclarations + // SubprogramDeclarations + // CompoundStatement + new NonTerminator(NonTerminatorType.ProgramBody), [ + [ + new NonTerminator(NonTerminatorType.ConstDeclarations), + new NonTerminator(NonTerminatorType.VarDeclarations), + new NonTerminator(NonTerminatorType.SubprogramDeclarations), + new NonTerminator(NonTerminatorType.CompoundStatement) + ] + ] + }, + { + // (deprecated)IdList -> id | IdList , id + + // 更改语法制导定义为S属性定义 + // IdList -> , id IdList | : Type + new NonTerminator(NonTerminatorType.IdentifierList), [ + [ + new Terminator(DelimiterType.Comma), + Terminator.IdentifierTerminator, + new NonTerminator(NonTerminatorType.IdentifierList), + ], + [ + new Terminator(DelimiterType.Colon), + new NonTerminator(NonTerminatorType.Type) + ] + ] + }, + { + // ConstDeclarations -> ε | const ConstDeclaration ; + new NonTerminator(NonTerminatorType.ConstDeclarations), [ + [ + Terminator.EmptyTerminator, + ], + [ + new Terminator(KeywordType.Const), + new NonTerminator(NonTerminatorType.ConstDeclaration), + new Terminator(DelimiterType.Semicolon) + ] + ] + }, + { + // ConstDeclaration -> id = ConstValue | ConstDeclaration ; id = ConstValue + new NonTerminator(NonTerminatorType.ConstDeclaration), [ + [ + Terminator.IdentifierTerminator, + new Terminator(OperatorType.Equal), + new NonTerminator(NonTerminatorType.ConstValue) + ], + [ + new NonTerminator(NonTerminatorType.ConstDeclaration), + new Terminator(DelimiterType.Semicolon), + Terminator.IdentifierTerminator, + new Terminator(OperatorType.Equal), + new NonTerminator(NonTerminatorType.ConstValue) + ] + ] + }, + { + // ConstValue -> +num | -num | num | 'letter' | true | false + new NonTerminator(NonTerminatorType.ConstValue), [ + [ + new Terminator(OperatorType.Plus), Terminator.NumberTerminator + ], + [ + new Terminator(OperatorType.Minus), Terminator.NumberTerminator, + ], + [ + Terminator.NumberTerminator, + ], + [ + Terminator.CharacterTerminator, + ], + [ + new Terminator(KeywordType.True) + ], + [ + new Terminator(KeywordType.False) + ] + ] + }, + { + // VarDeclarations -> ε | var VarDeclaration ; + new NonTerminator(NonTerminatorType.VarDeclarations), [ + [ + Terminator.EmptyTerminator + ], + [ + new Terminator(KeywordType.Var), + new NonTerminator(NonTerminatorType.VarDeclaration), + new Terminator(DelimiterType.Semicolon) + ] + ] + }, + { + // (deprecated) VarDeclaration -> IdList : Type | VarDeclaration ; IdList : Type + + // VarDeclaration -> id IdList | VarDeclaration ; id IdList + // 更改语法制导定义为S属性定义 + new NonTerminator(NonTerminatorType.VarDeclaration), [ + [ + Terminator.IdentifierTerminator, + new NonTerminator(NonTerminatorType.IdentifierList) + ], + [ + new NonTerminator(NonTerminatorType.VarDeclaration), + new Terminator(DelimiterType.Semicolon), + Terminator.IdentifierTerminator, + new NonTerminator(NonTerminatorType.IdentifierList), + ] + ] + }, + { + // Type -> BasicType | Array [ Period ] of BasicType + new NonTerminator(NonTerminatorType.Type), [ + [ + new NonTerminator(NonTerminatorType.BasicType) + ], + [ + new Terminator(KeywordType.Array), + new Terminator(DelimiterType.LeftSquareBracket), + new NonTerminator(NonTerminatorType.Period), + new Terminator(DelimiterType.RightSquareBracket), + new Terminator(KeywordType.Of), + new NonTerminator(NonTerminatorType.BasicType) + ] + ] + }, + { + // BasicType -> Integer | Real | Boolean | char + new NonTerminator(NonTerminatorType.BasicType), [ + [ + new Terminator(KeywordType.Integer) + ], + [ + new Terminator(KeywordType.Real) + ], + [ + new Terminator(KeywordType.Boolean) + ], + [ + new Terminator(KeywordType.Character) + ] + ] + }, + { + // Period -> digits .. digits | Period , digits .. digits + new NonTerminator(NonTerminatorType.Period), [ + [ + Terminator.NumberTerminator, + new Terminator(DelimiterType.DoubleDots), + Terminator.NumberTerminator, + ], + [ + new NonTerminator(NonTerminatorType.Period), + new Terminator(DelimiterType.Comma), + Terminator.NumberTerminator, + new Terminator(DelimiterType.DoubleDots), + Terminator.NumberTerminator, + ] + ] + }, + { + // SubprogramDeclarations -> ε | SubprogramDeclarations Subprogram ; + new NonTerminator(NonTerminatorType.SubprogramDeclarations), [ + [ + Terminator.EmptyTerminator + ], + [ + new NonTerminator(NonTerminatorType.SubprogramDeclarations), + new NonTerminator(NonTerminatorType.Subprogram), + new Terminator(DelimiterType.Semicolon) + ] + ] + }, + { + // Subprogram -> SubprogramHead ; SubprogramBody + new NonTerminator(NonTerminatorType.Subprogram), [ + [ + new NonTerminator(NonTerminatorType.SubprogramHead), + new Terminator(DelimiterType.Semicolon), + new NonTerminator(NonTerminatorType.SubprogramBody) + ] + ] + }, + { + // SubprogramHead -> procedure id FormalParameter + // | function id FormalParameter : BasicType + new NonTerminator(NonTerminatorType.SubprogramHead), [ + [ + new Terminator(KeywordType.Procedure), + Terminator.IdentifierTerminator, + new NonTerminator(NonTerminatorType.FormalParameter) + ], + [ + new Terminator(KeywordType.Function), + Terminator.IdentifierTerminator, + new NonTerminator(NonTerminatorType.FormalParameter), + new Terminator(DelimiterType.Colon), + new NonTerminator(NonTerminatorType.BasicType) + ] + ] + }, + { + // FormalParameter -> ε | ( ParameterList ) + new NonTerminator(NonTerminatorType.FormalParameter), [ + [ + Terminator.EmptyTerminator, + ], + [ + new Terminator(DelimiterType.LeftParenthesis), + new Terminator(DelimiterType.RightParenthesis) + ], + [ + new Terminator(DelimiterType.LeftParenthesis), + new NonTerminator(NonTerminatorType.ParameterList), + new Terminator(DelimiterType.RightParenthesis) + ] + ] + }, + { + // ParameterList -> Parameter | ParameterList ; Parameter + new NonTerminator(NonTerminatorType.ParameterList), [ + [ + new NonTerminator(NonTerminatorType.Parameter) + ], + [ + new NonTerminator(NonTerminatorType.ParameterList), + new Terminator(DelimiterType.Semicolon), + new NonTerminator(NonTerminatorType.Parameter) + ] + ] + }, + { + // Parameter -> VarParameter | ValueParameter + new NonTerminator(NonTerminatorType.Parameter), [ + [ + new NonTerminator(NonTerminatorType.VarParameter) + ], + [ + new NonTerminator(NonTerminatorType.ValueParameter) + ] + ] + }, + { + // VarParameter -> var ValueParameter + new NonTerminator(NonTerminatorType.VarParameter), [ + [ + new Terminator(KeywordType.Var), + new NonTerminator(NonTerminatorType.ValueParameter) + ] + ] + }, + { + // (deprecated)ValueParameter -> IdList : BasicType + // 更改语法制导定义为S属性定义 + // ValueParameter -> id IdList + new NonTerminator(NonTerminatorType.ValueParameter), [ + [ + Terminator.IdentifierTerminator, + new NonTerminator(NonTerminatorType.IdentifierList) + ] + ] + }, + { + // SubprogramBody -> ConstDeclarations + // VarDeclarations + // CompoundStatement + new NonTerminator(NonTerminatorType.SubprogramBody), [ + [ + new NonTerminator(NonTerminatorType.ConstDeclarations), + new NonTerminator(NonTerminatorType.VarDeclarations), + new NonTerminator(NonTerminatorType.CompoundStatement) + ] + ] + }, + { + // CompoundStatement -> begin StatementList end + new NonTerminator(NonTerminatorType.CompoundStatement), [ + [ + new Terminator(KeywordType.Begin), + new NonTerminator(NonTerminatorType.StatementList), + new Terminator(KeywordType.End) + ] + ] + }, + { + // StatementList -> Statement | StatementList ; Statement + new NonTerminator(NonTerminatorType.StatementList), [ + [ + new NonTerminator(NonTerminatorType.Statement) + ], + [ + new NonTerminator(NonTerminatorType.StatementList), + new Terminator(DelimiterType.Semicolon), + new NonTerminator(NonTerminatorType.Statement) + ] + ] + }, + { + // Statement -> ε + // | Variable AssignOp Expression + // | ProcedureCall + // | CompoundStatement + // | if Expression then Statement ElsePart + // | for id AssignOp Expression to Expression do Statement + // | while Expression do Statement + // 注意这里 read 和 write 作为普通的函数调用处理了 + // 因此下面并没有单独声明 + new NonTerminator(NonTerminatorType.Statement), [ + [ + // ε + Terminator.EmptyTerminator, + ], + [ + // Variable AssignOp Expression + new NonTerminator(NonTerminatorType.Variable), + new Terminator(OperatorType.Assign), + new NonTerminator(NonTerminatorType.Expression) + ], + [ + // ProcedureCall + new NonTerminator(NonTerminatorType.ProcedureCall) + ], + [ + // CompoundStatement + new NonTerminator(NonTerminatorType.CompoundStatement) + ], + [ + // if Expression then Statement ElsePart + new Terminator(KeywordType.If), + new NonTerminator(NonTerminatorType.Expression), + new Terminator(KeywordType.Then), + new NonTerminator(NonTerminatorType.Statement), + new NonTerminator(NonTerminatorType.ElsePart) + ], + [ + // for id AssignOp Expression to Expression do Statement + new Terminator(KeywordType.For), + Terminator.IdentifierTerminator, + new Terminator(OperatorType.Assign), + new NonTerminator(NonTerminatorType.Expression), + new Terminator(KeywordType.To), + new NonTerminator(NonTerminatorType.Expression), + new Terminator(KeywordType.Do), + new NonTerminator(NonTerminatorType.Statement) + ], + [ + // while Expression do Statement + new Terminator(KeywordType.While), + new NonTerminator(NonTerminatorType.Expression), + new Terminator(KeywordType.Do), + new NonTerminator(NonTerminatorType.Statement) + ] + ] + }, + // { + // // VariableList -> Variable | VariableList , Variable + // // 这里用expressionList代替VariableList + // new NonTerminator(NonTerminatorType.ExpressionList), [ + // [ + // new NonTerminator(NonTerminatorType.Variable) + // ], + // [ + // new NonTerminator(NonTerminatorType.ExpressionList), + // new Terminator(DelimiterType.Comma), + // new NonTerminator(NonTerminatorType.Variable) + // ] + // ] + // }, + { + // Variable -> id IdVarPart + new NonTerminator(NonTerminatorType.Variable), [ + [ + Terminator.IdentifierTerminator, + new NonTerminator(NonTerminatorType.IdVarPart) + ] + ] + }, + { + // IdVarPart -> ε | [ ExpressionList ] + new NonTerminator(NonTerminatorType.IdVarPart), [ + [ + Terminator.EmptyTerminator, + ], + [ + new Terminator(DelimiterType.LeftSquareBracket), + new NonTerminator(NonTerminatorType.ExpressionList), + new Terminator(DelimiterType.RightSquareBracket) + ] + ] + }, + { + // ProcedureCall -> id | id() | id ( ExpressionList ) + new NonTerminator(NonTerminatorType.ProcedureCall), [ + [ + Terminator.IdentifierTerminator, + ], + [ + Terminator.IdentifierTerminator, + new Terminator(DelimiterType.LeftParenthesis), + new Terminator(DelimiterType.RightParenthesis) + ], + [ + Terminator.IdentifierTerminator, + new Terminator(DelimiterType.LeftParenthesis), + new NonTerminator(NonTerminatorType.ExpressionList), + new Terminator(DelimiterType.RightParenthesis) + ] + ] + }, + { + // ElsePart -> ε | else statement + new NonTerminator(NonTerminatorType.ElsePart), [ + [ + Terminator.EmptyTerminator, + ], + [ + new Terminator(KeywordType.Else), + new NonTerminator(NonTerminatorType.Statement) + ] + ] + }, + { + // ExpressionList -> Expression | ExpressionList , Expression + new NonTerminator(NonTerminatorType.ExpressionList), [ + [ + new NonTerminator(NonTerminatorType.Expression) + ], + [ + new NonTerminator(NonTerminatorType.ExpressionList), + new Terminator(DelimiterType.Comma), + new NonTerminator(NonTerminatorType.Expression) + ] + ] + }, + { + // Expression -> SimpleExpression | SimpleExpression RelationOperator SimpleExpression + new NonTerminator(NonTerminatorType.Expression), [ + [ + new NonTerminator(NonTerminatorType.SimpleExpression) + ], + [ + new NonTerminator(NonTerminatorType.SimpleExpression), + new NonTerminator(NonTerminatorType.RelationOperator), + new NonTerminator(NonTerminatorType.SimpleExpression) + ] + ] + }, + { + // SimpleExpression -> Term | SimpleExpression AddOperator Term + new NonTerminator(NonTerminatorType.SimpleExpression), [ + [ + new NonTerminator(NonTerminatorType.Term) + ], + [ + new NonTerminator(NonTerminatorType.SimpleExpression), + new NonTerminator(NonTerminatorType.AddOperator), + new NonTerminator(NonTerminatorType.Term) + ] + ] + }, + { + // Term -> Factor | Term MultiplyOperator Factor + new NonTerminator(NonTerminatorType.Term), [ + [ + new NonTerminator(NonTerminatorType.Factor) + ], + [ + new NonTerminator(NonTerminatorType.Term), + new NonTerminator(NonTerminatorType.MultiplyOperator), + new NonTerminator(NonTerminatorType.Factor) + ] + ] + }, + { + // Factor -> num | Variable + // | ( Expression ) + // | id () + // | id (ExpressionList) + // | not Factor + // | - Factor + // | + Factor + // | true + // | false + new NonTerminator(NonTerminatorType.Factor), [ + [ + Terminator.NumberTerminator, + ], + [ + new NonTerminator(NonTerminatorType.Variable) + ], + [ + new Terminator(DelimiterType.LeftParenthesis), + new NonTerminator(NonTerminatorType.Expression), + new Terminator(DelimiterType.RightParenthesis) + ], + [ + Terminator.IdentifierTerminator, + new Terminator(DelimiterType.LeftParenthesis), + new Terminator(DelimiterType.RightParenthesis) + ], + [ + Terminator.IdentifierTerminator, + new Terminator(DelimiterType.LeftParenthesis), + new NonTerminator(NonTerminatorType.ExpressionList), + new Terminator(DelimiterType.RightParenthesis) + ], + [ + new Terminator(KeywordType.Not), + new NonTerminator(NonTerminatorType.Factor) + ], + [ + new Terminator(OperatorType.Minus), + new NonTerminator(NonTerminatorType.Factor) + ], + [ + new Terminator(OperatorType.Plus), + new NonTerminator(NonTerminatorType.Factor) + ], + [ + new Terminator(KeywordType.True) + ], + [ + new Terminator(KeywordType.False) + ] + ] + }, + { + // AddOperator -> + | - | or + new NonTerminator(NonTerminatorType.AddOperator), [ + [ + new Terminator(OperatorType.Plus) + ], + [ + new Terminator(OperatorType.Minus) + ], + [ + new Terminator(KeywordType.Or) + ] + ] + }, + { + // MultiplyOperator -> * | / | div | mod | and + new NonTerminator(NonTerminatorType.MultiplyOperator), [ + [ + new Terminator(OperatorType.Multiply), + ], + [ + new Terminator(OperatorType.Divide), + ], + [ + new Terminator(KeywordType.Divide) + ], + [ + new Terminator(KeywordType.Mod) + ], + [ + new Terminator(KeywordType.And) + ] + ] + }, + { + // RelationOperator -> = | <> | < | <= | > | >= + new NonTerminator(NonTerminatorType.RelationOperator), [ + [ + new Terminator(OperatorType.Equal) + ], + [ + new Terminator(OperatorType.NotEqual) + ], + [ + new Terminator(OperatorType.Less) + ], + [ + new Terminator(OperatorType.LessEqual) + ], + [ + new Terminator(OperatorType.Greater) + ], + [ + new Terminator(OperatorType.GreaterEqual) + ] + ] + } + }; +} diff --git a/CanonSharp.Benchmark/Canon.Core/GrammarParser/Terminator.cs b/CanonSharp.Benchmark/Canon.Core/GrammarParser/Terminator.cs new file mode 100644 index 0000000..aef3526 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/GrammarParser/Terminator.cs @@ -0,0 +1,274 @@ +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.GrammarParser; + +public abstract class TerminatorBase +{ + public abstract bool IsTerminated { get; } + + /// + /// 生成能产生该符号的C#代码 + /// 用于预生成分析表 + /// + /// 产生该符号的C#代码 + public abstract string GenerateCode(); +} + +/// +/// 语法中的一个终结符 +/// 终结符标识词法分析中得到的一个记号 +/// +public class Terminator : TerminatorBase, IEquatable +{ + public override bool IsTerminated => true; + + private readonly SemanticTokenType _terminatorType; + + private readonly KeywordType _keywordType; + private readonly DelimiterType _delimiterType; + private readonly OperatorType _operatorType; + + public Terminator(KeywordType keywordType) + { + _terminatorType = SemanticTokenType.Keyword; + _keywordType = keywordType; + } + + public Terminator(DelimiterType delimiterType) + { + _terminatorType = SemanticTokenType.Delimiter; + _delimiterType = delimiterType; + } + + public Terminator(OperatorType operatorType) + { + _terminatorType = SemanticTokenType.Operator; + _operatorType = operatorType; + } + + private Terminator(SemanticTokenType type) + { + _terminatorType = type; + } + + public override string GenerateCode() + { + switch (_terminatorType) + { + case SemanticTokenType.Keyword: + return $"new Terminator(KeywordType.{_keywordType})"; + case SemanticTokenType.Delimiter: + return $"new Terminator(DelimiterType.{_delimiterType})"; + case SemanticTokenType.Operator: + return $"new Terminator(OperatorType.{_operatorType})"; + case SemanticTokenType.Identifier: + return "Terminator.IdentifierTerminator"; + case SemanticTokenType.Character: + return "Terminator.CharacterTerminator"; + case SemanticTokenType.Number: + return "Terminator.NumberTerminator"; + case SemanticTokenType.End: + return "Terminator.EndTerminator"; + } + + throw new InvalidOperationException(); + } + + /// + /// 标识符终结符单例 + /// 鉴于在语法中不关心标识符具体内容,因此可以使用单例对象 + /// + public static Terminator IdentifierTerminator => new(SemanticTokenType.Identifier); + + /// + /// 字符终结符单例 + /// 鉴于在语法中不关心具体字符,因此可以使用单例对象 + /// + public static Terminator CharacterTerminator => new(SemanticTokenType.Character); + + /// + /// 数值终结符单例 + /// 鉴于在语法中不关心具体数值,因此可以使用单例对象 + /// + public static Terminator NumberTerminator => new(SemanticTokenType.Number); + + /// + /// 栈底的终结符 + /// + public static Terminator EndTerminator => new(SemanticTokenType.End); + + /// + /// 空字符串的终结符 + /// + public static Terminator EmptyTerminator => new(SemanticTokenType.Empty); + + public override int GetHashCode() + { + int hash = _terminatorType.GetHashCode(); + + switch (_terminatorType) + { + case SemanticTokenType.Keyword: + return hash ^ _keywordType.GetHashCode(); + case SemanticTokenType.Delimiter: + return hash ^ _delimiterType.GetHashCode(); + case SemanticTokenType.Operator: + return hash ^ _operatorType.GetHashCode(); + default: + return hash; + } + } + + public override string ToString() + { + switch (_terminatorType) + { + case SemanticTokenType.Keyword: + return _keywordType.ToString(); + case SemanticTokenType.Operator: + return _operatorType.ToString(); + case SemanticTokenType.Delimiter: + return _delimiterType.ToString(); + default: + return _terminatorType.ToString(); + } + } + + public bool Equals(Terminator? other) + { + if (other is null) + { + return false; + } + + if (_terminatorType != other._terminatorType) + { + return false; + } + + switch (_terminatorType) + { + case SemanticTokenType.Keyword: + return _keywordType == other._keywordType; + case SemanticTokenType.Delimiter: + return _delimiterType == other._delimiterType; + case SemanticTokenType.Operator: + return _operatorType == other._operatorType; + default: + return true; + } + } + + public override bool Equals(object? obj) + { + if (obj is not Terminator other) + { + return false; + } + + return Equals(other); + } + + public static bool operator ==(Terminator a, Terminator b) + { + return a.Equals(b); + } + + public static bool operator !=(Terminator a, Terminator b) + { + return !a.Equals(b); + } + + public static bool operator ==(Terminator a, SemanticToken b) + { + return a.EqualSemanticToken(b); + } + + public static bool operator !=(Terminator a, SemanticToken b) + { + return !a.EqualSemanticToken(b); + } + + public static bool operator ==(SemanticToken a, Terminator b) + { + return b.EqualSemanticToken(a); + } + + public static bool operator !=(SemanticToken a, Terminator b) + { + return !b.EqualSemanticToken(a); + } + + private bool EqualSemanticToken(SemanticToken token) + { + if (token.TokenType != _terminatorType) + { + return false; + } + + switch (_terminatorType) + { + case SemanticTokenType.Delimiter: + return (token as DelimiterSemanticToken)?.DelimiterType == _delimiterType; + case SemanticTokenType.Keyword: + return (token as KeywordSemanticToken)?.KeywordType == _keywordType; + case SemanticTokenType.Operator: + return (token as OperatorSemanticToken)?.OperatorType == _operatorType; + } + + return true; + } +} + +/// +/// 语法中的非终结符 +/// +public class NonTerminator(NonTerminatorType type) : TerminatorBase, IEquatable +{ + public override bool IsTerminated => false; + + public NonTerminatorType Type { get; } = type; + + public override int GetHashCode() + { + return Type.GetHashCode(); + } + + public override string GenerateCode() + { + return $"new NonTerminator(NonTerminatorType.{Type})"; + } + + public override string ToString() => Type.ToString(); + + public bool Equals(NonTerminator? other) + { + if (other is null) + { + return false; + } + + return Type == other.Type; + } + + public override bool Equals(object? obj) + { + if (obj is not NonTerminator other) + { + return false; + } + + return Equals(other); + } + + public static bool operator ==(NonTerminator a, NonTerminator b) + { + return a.Equals(b); + } + + public static bool operator !=(NonTerminator a, NonTerminator b) + { + return !a.Equals(b); + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/LexicalParser/LexRules.cs b/CanonSharp.Benchmark/Canon.Core/LexicalParser/LexRules.cs new file mode 100644 index 0000000..58a5a2c --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/LexicalParser/LexRules.cs @@ -0,0 +1,88 @@ +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.LexicalParser; + +public static class LexRules +{ + // 保留关键字 + private static readonly Dictionary s_keywordTypes = + new(StringComparer.OrdinalIgnoreCase) + { + { "program", KeywordType.Program }, + { "const", KeywordType.Const }, + { "var", KeywordType.Var }, + { "procedure", KeywordType.Procedure }, + { "function", KeywordType.Function }, + { "begin", KeywordType.Begin }, + { "end", KeywordType.End }, + { "array", KeywordType.Array }, + { "of", KeywordType.Of }, + { "if", KeywordType.If }, + { "then", KeywordType.Then }, + { "else", KeywordType.Else }, + { "for", KeywordType.For }, + { "to", KeywordType.To }, + { "do", KeywordType.Do }, + { "integer", KeywordType.Integer }, + { "real", KeywordType.Real }, + { "boolean", KeywordType.Boolean }, + { "char", KeywordType.Character }, + { "div", KeywordType.Divide }, // 注意: Pascal 使用 'div' 而不是 '/' + { "not", KeywordType.Not }, + { "mod", KeywordType.Mod }, + { "and", KeywordType.And }, + { "or", KeywordType.Or }, + { "true", KeywordType.True }, + { "false", KeywordType.False }, + { "while", KeywordType.While } + }; + + public static bool GetKeywordTypeByKeywprd(string keyword, out KeywordType type) + => s_keywordTypes.TryGetValue(keyword, out type); + + + private static readonly HashSet s_delimiter = [';', ',', ':', '.', '(', ')', '[', ']', '\'', '"']; + + private static readonly HashSet s_operator = ["=", "<>", "<", "<=", ">", ">=", "+", "-", "*", "/", ":="]; + + // 判断字符 + public static bool IsDigit(char ch) + { + if (ch is >= '0' and <= '9') return true; + return false; + } + + public static bool IsHexDigit(char ch) + { + if (ch is >= '0' and <= '9' || ch is <= 'F' and >= 'A') return true; + return false; + } + + public static bool IsLetter(char ch) + { + if (ch is >= 'A' and <= 'Z' || (ch is >= 'a' and <= 'z' || ch == '_')) + { + return true; + } + + return false; + } + + public static bool IsDelimiter(char ch) + => s_delimiter.Contains(ch); + + public static bool IsOperator(char ch) + { + return s_operator.Any(op => op.Contains(ch)); + } + + public static bool IsBreakPoint(char ch) + { + if (ch == ' ' || ch == '\n' || ch == '\t' || ch == '\r') + { + return true; + } + + return false; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/LexicalParser/LexemeFactory.cs b/CanonSharp.Benchmark/Canon.Core/LexicalParser/LexemeFactory.cs new file mode 100644 index 0000000..b0b0943 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/LexicalParser/LexemeFactory.cs @@ -0,0 +1,99 @@ +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.LexicalParser; + +public static class LexemeFactory +{ + public static SemanticToken MakeToken(SemanticTokenType tokenType,string literal,uint line,uint chPos) + { + SemanticToken? token; + switch (tokenType) + { + case SemanticTokenType.Character: + CharacterSemanticToken characterSemanticToken = new() + { + LinePos = line, CharacterPos = chPos, LiteralValue = literal, + }; + token = characterSemanticToken; + break; + case SemanticTokenType.String: + StringSemanticToken stringSemanticToken = new() + { + LinePos = line, CharacterPos = chPos, LiteralValue = literal, + }; + token = stringSemanticToken; + break; + case SemanticTokenType.Identifier: + IdentifierSemanticToken identifierSemanticToken = new() + { + LinePos = line, CharacterPos = chPos, LiteralValue = literal, + }; + token = identifierSemanticToken; + break; + default: + throw new InvalidOperationException("Can only create Character or Identifier SemanticToken."); + } + + return token; + } + + public static KeywordSemanticToken MakeToken(KeywordType keywordType,string literal,uint line,uint chPos) + { + KeywordSemanticToken keywordSemanticToken = new() + { + LinePos = line, + CharacterPos = chPos, + LiteralValue = literal, + KeywordType = keywordType + }; + return keywordSemanticToken; + } + + public static DelimiterSemanticToken MakeToken(DelimiterType delimiterType,string literal,uint line,uint chPos) + { + DelimiterSemanticToken delimiterSemanticToken = new() + { + LinePos = line, + CharacterPos = chPos, + LiteralValue = literal, + DelimiterType = delimiterType + }; + return delimiterSemanticToken; + } + + public static NumberSemanticToken MakeToken(NumberType numberType,string literal,uint line,uint chPos) + { + string temp = literal; + string result; + if (numberType == NumberType.Hex) + { + result = string.Concat("0x", temp.AsSpan(1, temp.Length - 1)); + } + else + { + result = temp; + } + + NumberSemanticToken numberSemanticToken = new() + { + LinePos = line, + CharacterPos = chPos, + LiteralValue = result, + NumberType = numberType + }; + return numberSemanticToken; + + } + + public static OperatorSemanticToken MakeToken(OperatorType operatorType,string literal,uint line,uint chPos) + { + OperatorSemanticToken operatorSemanticToken = new() + { + LinePos = line, + CharacterPos = chPos, + LiteralValue = literal, + OperatorType = operatorType + }; + return operatorSemanticToken; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/LexicalParser/Lexer.cs b/CanonSharp.Benchmark/Canon.Core/LexicalParser/Lexer.cs new file mode 100644 index 0000000..d81813c --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/LexicalParser/Lexer.cs @@ -0,0 +1,673 @@ +using System.Text; +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.Exceptions; + +namespace CanonSharp.Benchmark.Canon.Core.LexicalParser; + +public class Lexer : ILexer +{ + // 记录token + private SemanticToken? _semanticToken; + private readonly StringBuilder _tokenBuilder = new(); + private List _tokens = []; + + // 状态机 + private StateType _state = StateType.Start; + private char _ch; + private bool _finish; + + // 文件读取 + private ISourceReader _reader; + private uint _line = 1; + private uint _chPos; + + public IEnumerable Tokenize(ISourceReader reader) + { + _reader = reader; + _tokens = []; + _state = StateType.Start; + + while (_state != StateType.Done) + { + switch (_state) + { + case StateType.Start: + HandleStartState(); + break; + case StateType.Comment: + if (_ch == '{') + { + HandleCommentStateBig(); + } + else if (_ch == '*') + { + HandleCommentStateSmall(); + } + else + { + HandleCommentSingleLine(); + } + + break; + case StateType.Num: + HandleNumState(); + break; + case StateType.Word: + HandleWordState(); + break; + case StateType.Delimiter: + HandleDelimiterState(); + break; + case StateType.Operator: + HandleOperatorState(); + break; + case StateType.BreakPoint: + while (LexRules.IsBreakPoint(_ch)) + { + GetChar(); + } + + Retract(); + _state = StateType.Start; + break; + case StateType.Unknown: + throw new LexemeException(LexemeErrorType.UnknownCharacterOrString, _line, _chPos, + "Illegal lexeme."); + case StateType.Done: + break; + } + } + + _tokens.Add(SemanticToken.End); + + return _tokens; + } + + private void HandleStartState() + { + // 初始化 + ResetTokenBuilder(); + + // 读取首个字符 + GetChar(); + + if (_finish) + { + _state = StateType.Done; + return; + } + + // 根据首个字符判断可能的情况 + if (_ch == '{') // 以 “{” 开头,为注释 + { + _state = StateType.Comment; + } + else if (_ch == '(') + { + char nextChar = PeekNextChar(); + if (nextChar == '*') + { + GetChar(); + _state = StateType.Comment; + } + else + { + _state = StateType.Delimiter; + } + } + else if (_ch == '/') + { + char nextChar = PeekNextChar(); + if (nextChar == '/') + { + GetChar(); + _state = StateType.Comment; + } + else + { + _state = StateType.Operator; + } + } + else if (_ch == '.') // 以 “.” 开头,可能是数字或分隔符 + { + char next = PeekNextChar(); + if (next is >= '0' and <= '9') + { + _state = StateType.Num; + } + else + { + _state = StateType.Delimiter; + } + } + else if (LexRules.IsLetter(_ch)) // 以字母开头,为关键字或标识符 + { + _state = StateType.Word; + } + else if (LexRules.IsDigit(_ch) || _ch == '$') // 以数字或 “$” 开头,为数值 + { + _state = StateType.Num; + } + else if (LexRules.IsDelimiter(_ch)) // 为分隔符 + { + _state = StateType.Delimiter; + } + else if (LexRules.IsOperator(_ch)) // 为运算符 + { + _state = StateType.Operator; + } + else if (LexRules.IsBreakPoint(_ch)) + { + _state = StateType.BreakPoint; + } + else + { + _state = StateType.Unknown; + } + } + + private void HandleCommentStateBig() + { + while (_ch != '}') + { + GetChar(); + + if (_finish) + { + throw new LexemeException(LexemeErrorType.UnclosedComment, _line, _chPos, + "The comment is not closed."); + } + } + + _state = StateType.Start; + } + + private void HandleCommentStateSmall() + { + bool commentClosed = false; + while (!commentClosed) + { + GetChar(); + while (_ch != '*') + { + GetChar(); + if (_finish) + { + throw new LexemeException(LexemeErrorType.UnclosedComment, _line, _chPos, + "The comment is not closed."); + } + } + + GetChar(); + if (_finish) + { + throw new LexemeException(LexemeErrorType.UnclosedComment, _line, _chPos, + "The comment is not closed."); + } + + if (_ch == ')') commentClosed = true; + } + + _state = StateType.Start; + } + + private void HandleCommentSingleLine() + { + while (_ch != '\n') + { + GetChar(); + } + + _state = StateType.Start; + } + + private void HandleWordState() + { + while (LexRules.IsDigit(_ch) || LexRules.IsLetter(_ch)) + { + Cat(); + GetChar(); + } + + Retract(); + + string tokenString = GetCurrentTokenString(); + if (LexRules.GetKeywordTypeByKeywprd(tokenString, out KeywordType keywordType)) + { + + _semanticToken = LexemeFactory.MakeToken(keywordType, tokenString, _line, _chPos); + } + else + { + _semanticToken = LexemeFactory.MakeToken(SemanticTokenType.Identifier, tokenString, _line, _chPos); + } + + AddToTokens(_semanticToken); + _state = StateType.Start; + } + + private void HandleNumState() + { + NumberType numberType = NumberType.Integer; + // 十六进制 + if (_ch == '$') + { + ProcessHex(); + numberType = NumberType.Hex; + } + // 非十六进制 + else if (LexRules.IsDigit(_ch) || _ch == '.') + { + while (!NumberShouldBreak()) + { + // 含小数部分 + if (_ch == '.') + { + // 检查是否是符号 “..” + char next = PeekNextChar(); + if (next == '.') + { + Retract(); + _state = StateType.Delimiter; + break; + } + + // 不是符号 “..”,进入小数点后的判断 + Cat(); // 记录“.” + + // “.”后不应为空,至少应该有一位小数 + GetChar(); + if (NumberShouldBreak()) + { + throw new LexemeException(LexemeErrorType.IllegalNumberFormat, _line, _chPos, + "Illegal numbers!"); + } + + // 读取小数点后的数字 + while (!NumberShouldBreak()) + { + if (LexRules.IsDigit(_ch)) + { + Cat(); + GetChar(); + } + else if (_ch == 'e' || _ch == 'E') + { + ProcessE(); + break; + } + else if (NumberShouldBreak()) + { + break; + } + else + { + throw new LexemeException(LexemeErrorType.IllegalNumberFormat, _line, _chPos, + "Illegal number."); + } + } + + numberType = NumberType.Real; + break; + } + + // 不含小数部分,含科学计数法 + if (_ch == 'e' || _ch == 'E') + { + ProcessE(); + numberType = NumberType.Real; + break; + } + + // 暂时为整数 + if (LexRules.IsDigit(_ch)) + { + Cat(); + GetChar(); + } + else if (NumberShouldBreak()) + { + numberType = NumberType.Integer; + break; + } + else + { + throw new LexemeException(LexemeErrorType.IllegalNumberFormat, _line, _chPos, "Illegal number."); + } + } + } + + _semanticToken = LexemeFactory.MakeToken(numberType, GetCurrentTokenString(), + _line, _chPos); + AddToTokens(_semanticToken); + _state = StateType.Start; + } + + private void ProcessHex() + { + Cat(); + GetChar(); + + while (!NumberShouldBreak()) + { + // 假设IsHexDigit方法能够识别十六进制数字 + if (LexRules.IsHexDigit(_ch)) + { + Cat(); + GetChar(); + } + else if (NumberShouldBreak()) + { + break; + } + else + { + throw new LexemeException(LexemeErrorType.IllegalNumberFormat, _line, _chPos, + "Illegal hex numbers!"); + } + } + } + + private void ProcessE() + { + Cat(); + GetChar(); + if (LexRules.IsDigit(_ch) || _ch == '+' || _ch == '-') + { + Cat(); + } + else + { + throw new LexemeException(LexemeErrorType.IllegalNumberFormat, _line, _chPos, "Illegal number."); + } + + // 读取e后的数字 + GetChar(); + while (!NumberShouldBreak()) + { + if (LexRules.IsDigit(_ch)) + { + Cat(); + GetChar(); + } + else + { + throw new LexemeException(LexemeErrorType.IllegalNumberFormat, _line, _chPos, "Illegal number."); + } + } + } + + bool NumberShouldBreak() + { + if (_ch == ' ' || _ch == '\n' || _ch == '\t' || _ch == '\r' || (LexRules.IsDelimiter(_ch) && _ch != '.') || + LexRules.IsOperator(_ch) || _finish) + { + Retract(); + return true; + } + + return false; + } + + private bool IsDot() + { + if (_tokens.Count != 0) + { + SemanticToken tokenBefore = _tokens.Last(); + if (tokenBefore.TokenType == SemanticTokenType.Identifier) return true; + } + + return false; + } + + private void HandleDelimiterState() + { + Cat(); + switch (_ch) + { + case '.': + { + GetChar(); + if (_ch == '.') + { + Cat(); + _semanticToken = LexemeFactory.MakeToken(DelimiterType.DoubleDots, "..", _line, _chPos); + break; + } + + Retract(); + if (IsDot()) + { + _semanticToken = LexemeFactory.MakeToken(DelimiterType.Dot, ".", _line, _chPos); + } + else + { + _semanticToken = LexemeFactory.MakeToken(DelimiterType.Period, ".", _line, _chPos); + } + } + break; + case '\'': + { + // 重置_token,准备收集字符串内容 + ResetTokenBuilder(); + + GetChar(); // 移动到下一个字符,即字符串的第一个字符 + while (_ch != '\'' && _ch != '\"') + { + Cat(); // 收集字符 + GetChar(); // 移动到下一个字符 + if (_ch == '\n' || _finish) + { + throw new LexemeException(LexemeErrorType.UnclosedStringLiteral, _line, _chPos, + "The String is not closed."); + } + } + + string currentString = GetCurrentTokenString(); + if (currentString.Length > 1) + { + _semanticToken = LexemeFactory.MakeToken(SemanticTokenType.String, + currentString, _line, _chPos); + } + else + { + _semanticToken = LexemeFactory.MakeToken(SemanticTokenType.Character, + currentString, _line, _chPos); + } + + + ResetTokenBuilder(); + + if (!(_ch == '\'' || _ch == '\"')) + { + throw new LexemeException(LexemeErrorType.UnclosedStringLiteral, _line, _chPos, + "The String is not closed."); + } + } + break; + case ',': + _semanticToken = LexemeFactory.MakeToken(DelimiterType.Comma, ",", _line, _chPos); + + break; + case ':': + char nextChar = PeekNextChar(); + if (nextChar == '=') + { + GetChar(); + Cat(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.Assign, ":=", _line, _chPos); + } + else + { + _semanticToken = LexemeFactory.MakeToken(DelimiterType.Colon, ":", _line, _chPos); + } + + break; + case ';': + _semanticToken = LexemeFactory.MakeToken(DelimiterType.Semicolon, ";", _line, _chPos); + + break; + case '(': + _semanticToken = LexemeFactory.MakeToken(DelimiterType.LeftParenthesis, "(", _line, _chPos); + break; + case ')': + _semanticToken = LexemeFactory.MakeToken(DelimiterType.RightParenthesis, ")", _line, _chPos); + + break; + case '[': + _semanticToken = LexemeFactory.MakeToken(DelimiterType.LeftSquareBracket, "[", _line, _chPos); + + break; + case ']': + _semanticToken = LexemeFactory.MakeToken(DelimiterType.RightSquareBracket, "]", _line, _chPos); + break; + } + + if (_semanticToken is null) + { + throw new InvalidOperationException(); + } + _tokens.Add(_semanticToken); + _state = StateType.Start; + } + + private void HandleOperatorState() + { + switch (_ch) + { + case '+': // 识别 + + Cat(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.Plus, "+", _line, _chPos); + AddToTokens(_semanticToken); + break; + case '-': // 识别 - + Cat(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.Minus, "-", _line, _chPos); + AddToTokens(_semanticToken); + break; + case '*': // 识别 * + Cat(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.Multiply, "*", _line, _chPos); + AddToTokens(_semanticToken); + break; + case '/': // 识别 / + Cat(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.Divide, "/", _line, _chPos); + AddToTokens(_semanticToken); + break; + case '=': + Cat(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.Equal, "=", _line, _chPos); + AddToTokens(_semanticToken); + break; + case '<': + Cat(); + GetChar(); + if (_ch == '=') + { + // 识别 <= + Cat(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.LessEqual, "<=", _line, _chPos); + AddToTokens(_semanticToken); + } + else if (_ch == '>') + { + // 识别 <> + Cat(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.NotEqual, ">", _line, _chPos); + AddToTokens(_semanticToken); + } + else + { + // 识别 < + Retract(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.Less, "<", _line, _chPos); + AddToTokens(_semanticToken); + } + + break; + case '>': + Cat(); + GetChar(); + if (_ch == '=') + { + // 识别 >= + Cat(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.GreaterEqual, ">=", _line, _chPos); + AddToTokens(_semanticToken); + } + else + { + // 识别 > + Retract(); + _semanticToken = LexemeFactory.MakeToken(OperatorType.Greater, ">", _line, _chPos); + AddToTokens(_semanticToken); + } + + break; + default: + throw new LexemeException(LexemeErrorType.UnknownCharacterOrString, _line, _chPos, "Illegal lexeme."); + } + + _state = StateType.Start; + } + + private void AddToTokens(SemanticToken semanticToken) + { + _tokens.Add(semanticToken); + } + + private void Cat() + { + _tokenBuilder.Append(_ch); // 使用StringBuilder追加字符 + } + + private string GetCurrentTokenString() + { + return _tokenBuilder.ToString(); // 从StringBuilder获取当前记号的字符串 + } + + private void ResetTokenBuilder() + { + _tokenBuilder.Clear(); // 清空StringBuilder以复用 + } + + private char PeekNextChar() + { + // 确认下一个位置是否仍在buffer的范围内 + if (_reader.TryPeekChar(out char? c)) + { + return c.Value; + } + else + { + return char.MinValue; + } + } + + void GetChar() + { + if (_finish) + { + return; + } + + _finish = !_reader.MoveNext(); + + if (_finish) + { + _ch = char.MinValue; + return; + } + + _ch = _reader.Current; + _line = _reader.Line; + _chPos = _reader.Pos; + } + + void Retract() + { + _reader.Retract(); + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/LexicalParser/SemanticToken.cs b/CanonSharp.Benchmark/Canon.Core/LexicalParser/SemanticToken.cs new file mode 100644 index 0000000..f720523 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/LexicalParser/SemanticToken.cs @@ -0,0 +1,244 @@ +using CanonSharp.Benchmark.Canon.Core.GrammarParser; + +namespace CanonSharp.Benchmark.Canon.Core.LexicalParser; + +using Enums; + +/// +/// 词法记号基类 +/// +public abstract class SemanticToken : IEquatable +{ + public abstract SemanticTokenType TokenType { get; } + + /// + /// 记号出现的行号 + /// + public required uint LinePos { get; init; } + + /// + /// 记号出现的列号 + /// + public required uint CharacterPos { get; init; } + + /// + /// 记号的字面值 + /// + public required string LiteralValue { get; init; } + + public static implicit operator Terminator(SemanticToken token) + { + switch (token.TokenType) + { + case SemanticTokenType.Character: + return Terminator.CharacterTerminator; + case SemanticTokenType.Identifier: + return Terminator.IdentifierTerminator; + case SemanticTokenType.Number: + return Terminator.NumberTerminator; + case SemanticTokenType.End: + return Terminator.EndTerminator; + case SemanticTokenType.Delimiter: + return new Terminator(((DelimiterSemanticToken)token).DelimiterType); + case SemanticTokenType.Keyword: + return new Terminator(((KeywordSemanticToken)token).KeywordType); + case SemanticTokenType.Operator: + return new Terminator(((OperatorSemanticToken)token).OperatorType); + default: + throw new ArgumentException("Unknown token type"); + } + } + + public T Convert() where T : SemanticToken + { + if (this is T result) + { + return result; + } + + throw new InvalidOperationException("Can not convert target type0"); + } + + /// + /// 栈底符号单例对象 + /// + public static EndSemanticToken End => new() + { + LinePos = uint.MaxValue, CharacterPos = uint.MaxValue, LiteralValue = string.Empty + }; + + public override string ToString() + { + return + $"LinePos: {LinePos}, CharacterPos: {CharacterPos}, LiteralValue: {LiteralValue}, TokenType: {TokenType}"; + } + + public bool Equals(SemanticToken? other) + { + if (other == null) + return false; + + return LinePos == other.LinePos && + CharacterPos == other.CharacterPos && + LiteralValue == other.LiteralValue && + TokenType == other.TokenType; + } + + public override bool Equals(object? obj) + { + return obj is SemanticToken semanticTokenObj && Equals(semanticTokenObj); + } + + public override int GetHashCode() + { + return LinePos.GetHashCode() ^ + CharacterPos.GetHashCode() ^ + LiteralValue.GetHashCode() ^ + TokenType.GetHashCode(); + } +} + +/// +/// 字符类型记号 +/// +public class CharacterSemanticToken : SemanticToken +{ + public override SemanticTokenType TokenType => SemanticTokenType.Character; + + /// + /// 获得令牌代表的字符 + /// + /// 字符 + public char ParseAsCharacter() + { + return char.Parse(LiteralValue); + } +} + +/// +/// 字符串类型记号 +/// +public class StringSemanticToken : SemanticToken +{ + public override SemanticTokenType TokenType => SemanticTokenType.String; + + /// + /// 获得令牌代表的字符串 + /// + /// 字符串 + public string ParseAsString() + { + return LiteralValue; + } +} + +/// +/// 分隔符类型记号 +/// +public class DelimiterSemanticToken : SemanticToken +{ + public override SemanticTokenType TokenType => SemanticTokenType.Delimiter; + + public required DelimiterType DelimiterType { get; init; } + + public override int GetHashCode() + { + return base.GetHashCode() ^ DelimiterType.GetHashCode(); + } +} + +/// +/// 关键字类型记号 +/// +public class KeywordSemanticToken : SemanticToken +{ + public override SemanticTokenType TokenType => SemanticTokenType.Keyword; + + public required KeywordType KeywordType { get; init; } + + public override int GetHashCode() + { + return base.GetHashCode() ^ KeywordType.GetHashCode(); + } +} + +/// +/// 操作数类型记号 +/// +public class OperatorSemanticToken : SemanticToken +{ + public override SemanticTokenType TokenType => SemanticTokenType.Operator; + + public required OperatorType OperatorType { get; init; } + + public override int GetHashCode() + { + return base.GetHashCode() ^ OperatorType.GetHashCode(); + } +} + +/// +/// 数值类型记号 +/// +public class NumberSemanticToken : SemanticToken +{ + public override SemanticTokenType TokenType => SemanticTokenType.Number; + + public required NumberType NumberType { get; init; } + + /// + /// 将数值类型记号识别为整数 + /// + /// 该记号表示的整数 + /// 目标记号不是整数类型 + public int ParseAsInteger() + { + if (NumberType != NumberType.Integer) + { + throw new InvalidOperationException("Target semantic token isn't integer"); + } + + return int.Parse(LiteralValue); + } + + /// + /// 将数值类型记号识别为浮点数 + /// + /// 该记号标识的浮点数 + /// 目标记号不是浮点数类型 + public double ParseAsReal() + { + if (NumberType != NumberType.Real) + { + throw new InvalidOperationException("Target semantic token isn't real"); + } + + return double.Parse(LiteralValue); + } + + public override int GetHashCode() + { + return base.GetHashCode() ^ NumberType.GetHashCode(); + } +} + +/// +/// 标识符类型记号 +/// +public class IdentifierSemanticToken : SemanticToken +{ + public override SemanticTokenType TokenType => SemanticTokenType.Identifier; + + /// + /// 标识符名称 + /// + public string IdentifierName => LiteralValue.ToLower(); +} + +/// +/// 终结符记号 +/// +public class EndSemanticToken : SemanticToken +{ + public override SemanticTokenType TokenType => SemanticTokenType.End; +} diff --git a/CanonSharp.Benchmark/Canon.Core/StringSourceReader.cs b/CanonSharp.Benchmark/Canon.Core/StringSourceReader.cs new file mode 100644 index 0000000..c05038a --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/StringSourceReader.cs @@ -0,0 +1,82 @@ +using System.Diagnostics.CodeAnalysis; +using CanonSharp.Benchmark.Canon.Core.Abstractions; + +namespace CanonSharp.Benchmark.Canon.Core; + +public sealed class StringSourceReader(string source) : ISourceReader +{ + private int _pos = -1; + + private uint _lastPos; + + public uint Line { get; private set; } = 1; + + public uint Pos { get; private set; } + + public string FileName => "string"; + + public char Current + { + get + { + if (_pos == -1) + { + throw new InvalidOperationException("Reader at before the start."); + } + + return source[_pos]; + } + } + + public bool Retract() + { + if (_pos <= 0) + { + return false; + } + + _pos -= 1; + if (Current == '\n') + { + Line -= 1; + Pos = _lastPos; + } + else + { + Pos -= 1; + } + + return true; + } + + public bool MoveNext() + { + if (_pos >= source.Length - 1) + { + return false; + } + + if (_pos != -1 && Current == '\n') + { + Line += 1; + _lastPos = Pos; + Pos = 0; + } + + _pos += 1; + Pos += 1; + return true; + } + + public bool TryPeekChar([NotNullWhen(true)] out char? c) + { + if (_pos >= source.Length - 1) + { + c = null; + return false; + } + + c = source[_pos + 1]; + return true; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/AddOperator.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/AddOperator.cs new file mode 100644 index 0000000..c281d2a --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/AddOperator.cs @@ -0,0 +1,27 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class AddOperator : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.AddOperator; + + public SemanticToken OperatorToken => Children[0].Convert().Token; + + public static AddOperator Create(List children) + { + return new AddOperator { Children = children }; + } + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/BasicType.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/BasicType.cs new file mode 100644 index 0000000..c2810a5 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/BasicType.cs @@ -0,0 +1,24 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class BasicType : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.BasicType; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static BasicType Create(List children) + { + return new BasicType { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/CompoundStatement.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/CompoundStatement.cs new file mode 100644 index 0000000..06c7e02 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/CompoundStatement.cs @@ -0,0 +1,29 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class CompoundStatement : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.CompoundStatement; + + /// + /// 是否为主函数部分 + /// + public bool IsMain { get; set; } + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static CompoundStatement Create(List children) + { + return new CompoundStatement { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ConstDeclaration.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ConstDeclaration.cs new file mode 100644 index 0000000..6dd07c9 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ConstDeclaration.cs @@ -0,0 +1,66 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ConstDeclaration : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ConstDeclaration; + + /// + /// 是否递归的声明下一个ConstDeclaration + /// + public bool IsRecursive { get; private init; } + + /// + /// 获得声明的常量 + /// + public (IdentifierSemanticToken, ConstValue) ConstValue => GetConstValue(); + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static ConstDeclaration Create(List children) + { + bool isRecursive; + if (children.Count == 3) + { + isRecursive = false; + } + else if (children.Count == 5) + { + isRecursive = true; + } + else + { + throw new InvalidOperationException(); + } + + return new ConstDeclaration { Children = children, IsRecursive = isRecursive }; + } + + private static IdentifierSemanticToken ConvertToIdentifierSemanticToken(SyntaxNodeBase node) + { + return (IdentifierSemanticToken)node.Convert().Token; + } + + private (IdentifierSemanticToken, ConstValue) GetConstValue() + { + if (IsRecursive) + { + return (ConvertToIdentifierSemanticToken(Children[2]), Children[4].Convert()); + } + else + { + return (ConvertToIdentifierSemanticToken(Children[0]), Children[2].Convert()); + } + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ConstDeclarations.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ConstDeclarations.cs new file mode 100644 index 0000000..2317542 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ConstDeclarations.cs @@ -0,0 +1,24 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ConstDeclarations : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ConstDeclarations; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static ConstDeclarations Create(List children) + { + return new ConstDeclarations { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ConstValue.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ConstValue.cs new file mode 100644 index 0000000..d7f51cb --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ConstValue.cs @@ -0,0 +1,106 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +/// +/// 使用数值产生式事件的事件参数 +/// +public class NumberConstValueEventArgs : EventArgs +{ + /// + /// 是否含有负号 + /// + public bool IsNegative { get; init; } + + /// + /// 数值记号 + /// + public required NumberSemanticToken Token { get; init; } +} + +/// +/// 使用字符产生式事件的事件参数 +/// +public class CharacterConstValueEventArgs : EventArgs +{ + /// + /// 字符记号 + /// + public required CharacterSemanticToken Token { get; init; } +} + +public class ConstValue : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ConstValue; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseGeneratorEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseGeneratorEvent(); + } + + public string ValueString { get; set; } = string.Empty; + + /// + /// 使用数值产生式的事件 + /// + public event EventHandler? OnNumberGenerator; + + /// + /// 使用字符产生式的事件 + /// + public event EventHandler? OnCharacterGenerator; + + private void RaiseGeneratorEvent() + { + if (Children.Count == 2) + { + OperatorSemanticToken operatorSemanticToken = Children[0].Convert().Token + .Convert(); + NumberSemanticToken numberSemanticToken = Children[1].Convert().Token + .Convert(); + + OnNumberGenerator?.Invoke(this, new NumberConstValueEventArgs + { + Token = numberSemanticToken, + IsNegative = operatorSemanticToken.OperatorType == OperatorType.Minus + }); + + return; + } + + SemanticToken token = Children[0].Convert().Token; + + if (token.TokenType == SemanticTokenType.Number) + { + OnNumberGenerator?.Invoke(this, + new NumberConstValueEventArgs + { + Token = token.Convert() + }); + } + else + { + OnCharacterGenerator?.Invoke(this, new CharacterConstValueEventArgs + { + Token = token.Convert() + }); + } + + OnNumberGenerator = null; + OnCharacterGenerator = null; + } + + public static ConstValue Create(List children) + { + return new ConstValue { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ElsePart.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ElsePart.cs new file mode 100644 index 0000000..1dff988 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ElsePart.cs @@ -0,0 +1,24 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ElsePart : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ElsePart; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static ElsePart Create(List children) + { + return new ElsePart { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Expression.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Expression.cs new file mode 100644 index 0000000..66abdea --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Expression.cs @@ -0,0 +1,98 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class SimpleExpressionGeneratorEventArgs : EventArgs +{ + public required SimpleExpression SimpleExpression { get; init; } +} + +public class RelationGeneratorEventArgs : EventArgs +{ + public required SimpleExpression Left { get; init; } + + public required RelationOperator Operator { get; init; } + + public required SimpleExpression Right { get; init; } +} + +public class Expression : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.Expression; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + /// + /// 是否为FOR语句中的起始语句 + /// + public bool IsForConditionBegin { get; set; } + + /// + /// 是否为FOR语句中的结束语句 + /// + public bool IsForConditionEnd { get; set; } + + /// + /// 是否为IF语句中的条件语句 + /// + public bool IsIfCondition { get; set; } + + /// + /// 是否为条件判断语句 + /// + public bool IsCondition { get; set; } + + /// + /// 是否为WHILE语句中的条件语句 + /// + public bool IsWhileCondition { get; set; } + + /// + /// 直接赋值产生式的事件 + /// + public event EventHandler? OnSimpleExpressionGenerator; + + /// + /// 关系产生式的事件 + /// + public event EventHandler? OnRelationGenerator; + + public static Expression Create(List children) + { + return new Expression { Children = children }; + } + + private void RaiseEvent() + { + if (Children.Count == 1) + { + OnSimpleExpressionGenerator?.Invoke(this, new SimpleExpressionGeneratorEventArgs + { + SimpleExpression = Children[0].Convert() + }); + } + else + { + OnRelationGenerator?.Invoke(this, new RelationGeneratorEventArgs + { + Left = Children[0].Convert(), + Operator = Children[1].Convert(), + Right = Children[2].Convert() + }); + } + + OnSimpleExpressionGenerator = null; + OnRelationGenerator = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ExpressionList.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ExpressionList.cs new file mode 100644 index 0000000..b36d4a3 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ExpressionList.cs @@ -0,0 +1,75 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class OnExpressionListEventArgs : EventArgs +{ + public required ExpressionList ExpressionList { get; init; } +} + +public class ExpressionList : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ExpressionList; + + /// + /// 子表达式列表 + /// + public List Expressions { get; } = []; + + /// + /// 当前ExpressionList中的Expression定义 + /// + public required Expression Expression { get; init; } + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + /// + /// 使用ExpressionList产生式的时间 + /// + public event EventHandler? OnExpressionList; + + public static ExpressionList Create(List children) + { + ExpressionList result; + + if (children.Count == 1) + { + result = new ExpressionList { Expression = children[0].Convert(), Children = children }; + result.Expressions.Add(children[0].Convert()); + } + else + { + result = new ExpressionList { Expression = children[2].Convert(), Children = children }; + foreach (Expression expression in children[0].Convert().Expressions) + { + result.Expressions.Add(expression); + } + + result.Expressions.Add(children[2].Convert()); + } + + return result; + } + + private void RaiseEvent() + { + if (Children.Count == 3) + { + OnExpressionList?.Invoke(this, + new OnExpressionListEventArgs { ExpressionList = Children[0].Convert() }); + } + + OnExpressionList = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Factor.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Factor.cs new file mode 100644 index 0000000..128df8c --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Factor.cs @@ -0,0 +1,219 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class NumberGeneratorEventArgs : EventArgs +{ + public required NumberSemanticToken Token { get; init; } +} + +public class VariableGeneratorEventArgs : EventArgs +{ + public required Variable Variable { get; init; } +} + +public class ParethnesisGeneratorEventArgs : EventArgs +{ + public required Expression Expression { get; init; } +} + +public class ProcedureCallGeneratorEventArgs : EventArgs +{ + public required IdentifierSemanticToken ProcedureName { get; init; } + + public List Parameters { get; } = []; +} + +public class NotGeneratorEventArgs : EventArgs +{ + public required Factor Factor { get; init; } +} + +public class UminusGeneratorEventArgs : EventArgs +{ + public required Factor Factor { get; init; } +} + +public class PlusGeneratorEventArgs : EventArgs +{ + public required Factor Factor { get; init; } +} + +public class BooleanGeneratorEventArgs : EventArgs +{ + public required bool Value { get; init; } +} + +public class Factor : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.Factor; + + /// + /// 是否为条件判断语句 + /// + public bool IsCondition { get; set; } + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + /// + /// 使用数值产生式的事件 + /// + public event EventHandler? OnNumberGenerator; + + /// + /// 使用括号产生式的事件 + /// + public event EventHandler? OnParethnesisGenerator; + + /// + /// 使用变量产生式的事件 + /// + public event EventHandler? OnVariableGenerator; + + /// + /// 使用否定产生式的事件 + /// + public event EventHandler? OnNotGenerator; + + /// + /// 使用负号产生式的事件 + /// + public event EventHandler? OnUminusGenerator; + + /// + /// 使用加号产生式的事件 + /// + public event EventHandler? OnPlusGenerator; + + /// + /// 使用布尔值产生式的事件 + /// + public event EventHandler? OnBooleanGenerator; + + /// + /// 过程调用产生式的事件 + /// + public event EventHandler? OnProcedureCallGenerator; + + public static Factor Create(List children) + { + return new Factor { Children = children }; + } + + private void RaiseEvent() + { + if (Children.Count == 1) + { + if (Children[0].IsTerminated) + { + SemanticToken token = Children[0].Convert().Token; + + switch (token.TokenType) + { + // factor -> num + case SemanticTokenType.Number: + OnNumberGenerator?.Invoke(this, + new NumberGeneratorEventArgs { Token = token.Convert() }); + break; + // factor -> true | false + case SemanticTokenType.Keyword: + KeywordSemanticToken keywordSemanticToken = token.Convert(); + + switch (keywordSemanticToken.KeywordType) + { + case KeywordType.True: + OnBooleanGenerator?.Invoke(this, new BooleanGeneratorEventArgs { Value = true }); + break; + case KeywordType.False: + OnBooleanGenerator?.Invoke(this, new BooleanGeneratorEventArgs { Value = false }); + break; + } + + break; + } + } + else + { + OnVariableGenerator?.Invoke(this, + new VariableGeneratorEventArgs { Variable = Children[0].Convert() }); + } + } + else if (Children.Count == 3) + { + TerminatedSyntaxNode terminatedSyntaxNode = Children[0].Convert(); + + // factor -> ( expression ) + if (terminatedSyntaxNode.Token.TokenType == SemanticTokenType.Delimiter) + { + OnParethnesisGenerator?.Invoke(this, + new ParethnesisGeneratorEventArgs { Expression = Children[1].Convert() }); + } + else + { + // factor -> id ( ) + OnProcedureCallGenerator?.Invoke(this, + new ProcedureCallGeneratorEventArgs + { + ProcedureName = terminatedSyntaxNode.Token.Convert() + }); + } + } + else if (Children.Count == 4) + { + // factor -> id ( expressionList) + ProcedureCallGeneratorEventArgs eventArgs = new() + { + ProcedureName = + Children[0].Convert().Token.Convert(), + }; + eventArgs.Parameters.AddRange(Children[2].Convert().Expressions); + OnProcedureCallGenerator?.Invoke(this, eventArgs); + } + else + { + SemanticToken token = Children[0].Convert().Token; + Factor factor = Children[1].Convert(); + + if (token.TokenType == SemanticTokenType.Keyword) + { + // factor -> not factor + OnNotGenerator?.Invoke(this, new NotGeneratorEventArgs { Factor = factor }); + } + else + { + OperatorSemanticToken operatorSemanticToken = token.Convert(); + + switch (operatorSemanticToken.OperatorType) + { + // factor -> + factor + case OperatorType.Plus: + OnPlusGenerator?.Invoke(this, new PlusGeneratorEventArgs { Factor = factor }); + break; + // factor -> - factor + case OperatorType.Minus: + OnUminusGenerator?.Invoke(this, new UminusGeneratorEventArgs { Factor = factor }); + break; + } + } + } + + OnNumberGenerator = null; + OnVariableGenerator = null; + OnParethnesisGenerator = null; + OnProcedureCallGenerator = null; + OnNotGenerator = null; + OnUminusGenerator = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/FormalParameter.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/FormalParameter.cs new file mode 100644 index 0000000..62d5499 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/FormalParameter.cs @@ -0,0 +1,24 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class FormalParameter : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.FormalParameter; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static FormalParameter Create(List children) + { + return new FormalParameter { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/IdentifierList.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/IdentifierList.cs new file mode 100644 index 0000000..e423839 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/IdentifierList.cs @@ -0,0 +1,78 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class IdentifierGeneratorEventArgs : EventArgs +{ + public required IdentifierSemanticToken IdentifierToken { get; init; } + + public required IdentifierList IdentifierList { get; init; } +} + +public class TypeGeneratorEventArgs : EventArgs +{ + public required TypeSyntaxNode TypeSyntaxNode { get; init; } +} + +public class IdentifierList : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.IdentifierList; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + /// + /// 是否为参数中的引用参数 + /// + public bool IsReference { get; set; } + + /// + /// 是否在过程定义中使用 + /// + public bool IsProcedure { get; set; } + + /// + /// 是否为变量定义中使用 + /// + public bool IsVariableDefinition { get; set; } + + public event EventHandler? OnIdentifierGenerator; + + public event EventHandler? OnTypeGenerator; + + public static IdentifierList Create(List children) + { + return new IdentifierList { Children = children }; + } + + private void RaiseEvent() + { + if (Children.Count == 2) + { + OnTypeGenerator?.Invoke(this, + new TypeGeneratorEventArgs { TypeSyntaxNode = Children[1].Convert() }); + } + else + { + OnIdentifierGenerator?.Invoke(this, new IdentifierGeneratorEventArgs + { + IdentifierToken = Children[1].Convert().Token.Convert(), + IdentifierList = Children[2].Convert() + }); + } + + OnTypeGenerator = null; + OnIdentifierGenerator = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/IdentifierVarPart.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/IdentifierVarPart.cs new file mode 100644 index 0000000..eebc6e5 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/IdentifierVarPart.cs @@ -0,0 +1,68 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class IndexGeneratorEventArgs : EventArgs +{ + public required ExpressionList IndexParameters { get; init; } +} + +public class IdentifierVarPart : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.IdVarPart; + + /// + /// 数组索引的个数 + /// + public int IndexCount { get; set; } + + /// + /// 索引中的表达式 + /// + public List Expressions { get; } = []; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + /// + /// 使用了索引产生式的事件 + /// + public event EventHandler? OnIndexGenerator; + + public static IdentifierVarPart Create(List children) + { + IdentifierVarPart result = new() { Children = children }; + + if (children.Count == 3) + { + ExpressionList expressionList = children[1].Convert(); + + result.Expressions.AddRange(expressionList.Expressions); + } + + return result; + } + + private void RaiseEvent() + { + if (Children.Count == 3) + { + OnIndexGenerator?.Invoke(this, new IndexGeneratorEventArgs() + { + IndexParameters = Children[1].Convert() + }); + } + + OnIndexGenerator = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/MultiplyOperator.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/MultiplyOperator.cs new file mode 100644 index 0000000..d5dc94e --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/MultiplyOperator.cs @@ -0,0 +1,27 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class MultiplyOperator : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.MultiplyOperator; + + public SemanticToken OperatorToken => Children[0].Convert().Token; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static MultiplyOperator Create(List children) + { + return new MultiplyOperator { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/NonTerminatedSyntaxNode.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/NonTerminatedSyntaxNode.cs new file mode 100644 index 0000000..9ce7a5c --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/NonTerminatedSyntaxNode.cs @@ -0,0 +1,42 @@ +using System.Collections; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public abstract class NonTerminatedSyntaxNode : SyntaxNodeBase, IEnumerable +{ + public override bool IsTerminated => false; + + public abstract NonTerminatorType Type { get; } + + public required List Children { get; init; } + + public IEnumerator GetEnumerator() + { + yield return this; + + foreach (SyntaxNodeBase child in Children) + { + if (child.IsTerminated) + { + yield return child; + } + else + { + NonTerminatedSyntaxNode nonTerminatedNode = child.Convert(); + + foreach (SyntaxNodeBase node in nonTerminatedNode) + { + yield return node; + } + } + } + } + + IEnumerator IEnumerable.GetEnumerator() => GetEnumerator(); + + public override string ToString() + { + return Type.ToString(); + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Parameter.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Parameter.cs new file mode 100644 index 0000000..25b8c21 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Parameter.cs @@ -0,0 +1,45 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class Parameter : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.Parameter; + + /// + /// 是否为引用变量 + /// + public bool IsVar { get; private init; } + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static Parameter Create(List children) + { + NonTerminatedSyntaxNode node = children[0].Convert(); + + bool isVar; + if (node.Type == NonTerminatorType.VarParameter) + { + isVar = true; + } + else if (node.Type == NonTerminatorType.ValueParameter) + { + isVar = false; + } + else + { + throw new InvalidOperationException(); + } + + return new Parameter { Children = children, IsVar = isVar }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ParameterList.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ParameterList.cs new file mode 100644 index 0000000..df77f6f --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ParameterList.cs @@ -0,0 +1,24 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ParameterList : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ParameterList; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static ParameterList Create(List children) + { + return new ParameterList { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Period.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Period.cs new file mode 100644 index 0000000..b066c53 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Period.cs @@ -0,0 +1,68 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class Period : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.Period; + + /// + /// 所有定义的Period + /// + public List Periods { get; } = []; + + /// + /// 数组的开始下标和结束下标 + /// + public (NumberSemanticToken, NumberSemanticToken) Range + { + get + { + if (Children.Count == 3) + { + return (Children[0].Convert().Token.Convert(), + Children[2].Convert().Token.Convert()); + } + else + { + return (Children[2].Convert().Token.Convert(), + Children[4].Convert().Token.Convert()); + } + } + } + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static Period Create(List children) + { + Period result = new() { Children = children }; + + if (children.Count == 3) + { + result.Periods.Add(result); + } + else + { + Period child = children[0].Convert(); + + foreach (Period period in child.Periods) + { + result.Periods.Add(period); + } + + result.Periods.Add(result); + } + + return result; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProcedureCall.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProcedureCall.cs new file mode 100644 index 0000000..67a79da --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProcedureCall.cs @@ -0,0 +1,81 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ParameterGeneratorEventArgs : EventArgs +{ + public required ExpressionList Parameters { get; init; } +} + +public class NoParameterGeneratorEventArgs : EventArgs; + +public class ProcedureCall : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ProcedureCall; + + /// + /// 调用函数的名称 + /// + public IdentifierSemanticToken ProcedureId + => Children[0].Convert().Token.Convert(); + + /// + /// 调用函数的参数 + /// + public List Parameters { get; } = []; + + /// + /// 调用函数时含有参数的事件 + /// + public event EventHandler? OnParameterGenerator; + + /// + /// 调用函数是没有参数的事件 + /// + public event EventHandler? OnNoParameterGenerator; + + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + public static ProcedureCall Create(List children) + { + ProcedureCall result = new() { Children = children }; + + if (children.Count == 4) + { + result.Parameters.AddRange(children[2].Convert().Expressions); + } + + return result; + } + + private void RaiseEvent() + { + if (Children.Count == 4) + { + OnParameterGenerator?.Invoke(this, new ParameterGeneratorEventArgs + { + Parameters = Children[2].Convert() + }); + } + else + { + OnNoParameterGenerator?.Invoke(this, new NoParameterGeneratorEventArgs()); + } + + OnParameterGenerator = null; + OnNoParameterGenerator = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProgramBody.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProgramBody.cs new file mode 100644 index 0000000..bc8dc00 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProgramBody.cs @@ -0,0 +1,29 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ProgramBody : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ProgramBody; + + /// + /// 语句声明 + /// + public CompoundStatement CompoundStatement => Children[3].Convert(); + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static ProgramBody Create(List children) + { + return new ProgramBody { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProgramHead.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProgramHead.cs new file mode 100644 index 0000000..3699300 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProgramHead.cs @@ -0,0 +1,31 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ProgramHead : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ProgramHead; + + /// + /// 程序名称 + /// + public IdentifierSemanticToken ProgramName + => (IdentifierSemanticToken)Children[1].Convert().Token; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static ProgramHead Create(List children) + { + return new ProgramHead { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProgramStruct.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProgramStruct.cs new file mode 100644 index 0000000..79506c2 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ProgramStruct.cs @@ -0,0 +1,29 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ProgramStruct : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ProgramStruct; + + /// + /// 程序头 + /// + public ProgramHead Head => Children[0].Convert(); + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static ProgramStruct Create(List children) + { + return new ProgramStruct { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/RelationOperator.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/RelationOperator.cs new file mode 100644 index 0000000..28d4d6d --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/RelationOperator.cs @@ -0,0 +1,27 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class RelationOperator : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.RelationOperator; + + public SemanticToken OperatorToken => Children[0].Convert().Token; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static RelationOperator Create(List children) + { + return new RelationOperator { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SimpleExpression.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SimpleExpression.cs new file mode 100644 index 0000000..b229e05 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SimpleExpression.cs @@ -0,0 +1,76 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class TermGeneratorEventArgs : EventArgs +{ + public required Term Term { get; init; } +} + +public class AddGeneratorEventArgs : EventArgs +{ + public required SimpleExpression Left { get; init; } + + public required AddOperator Operator { get; init; } + + public required Term Right { get; init; } +} + +public class SimpleExpression : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.SimpleExpression; + + /// + /// 是否为条件判断语句 + /// + public bool IsCondition { get; set; } + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + /// + /// 直接赋值产生式的事件 + /// + public event EventHandler? OnTermGenerator; + + /// + /// 加法产生式的事件 + /// + public event EventHandler? OnAddGenerator; + + public static SimpleExpression Create(List children) + { + return new SimpleExpression { Children = children }; + } + + private void RaiseEvent() + { + if (Children.Count == 1) + { + OnTermGenerator?.Invoke(this, new TermGeneratorEventArgs { Term = Children[0].Convert() }); + } + else + { + OnAddGenerator?.Invoke(this, + new AddGeneratorEventArgs + { + Left = Children[0].Convert(), + Operator = Children[1].Convert(), + Right = Children[2].Convert() + }); + } + + OnTermGenerator = null; + OnAddGenerator = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Statement.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Statement.cs new file mode 100644 index 0000000..eff1041 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Statement.cs @@ -0,0 +1,129 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class AssignGeneratorEventArgs : EventArgs +{ + public required Variable Variable { get; init; } + + public required Expression Expression { get; init; } +} + +public class IfGeneratorEventArgs : EventArgs +{ + public required Expression Condition { get; init; } + + public required Statement Sentence { get; init; } + + public required ElsePart ElseSentence { get; init; } +} + +public class ForGeneratorEventArgs : EventArgs +{ + public required IdentifierSemanticToken Iterator { get; init; } + + public required Expression Begin { get; init; } + + public required Expression End { get; init; } + + public required Statement Sentence { get; init; } + + public required TerminatedSyntaxNode Do { get; init; } +} + +public class WhileGeneratorEventArgs : EventArgs +{ + public required Expression Condition { get; init; } + + public required Statement Sentence { get; init; } + + public required TerminatedSyntaxNode Do { get; init; } +} + +public class Statement : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.Statement; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + /// + /// 使用赋值产生式的事件 + /// + public event EventHandler? OnAssignGenerator; + + /// + /// 使用If产生式的事件 + /// + public event EventHandler? OnIfGenerator; + + /// + /// 使用For产生式的事件 + /// + public event EventHandler? OnForGenerator; + + /// + /// 使用While产生式的事件 + /// + public event EventHandler? OnWhileGenerator; + + public static Statement Create(List children) + { + return new Statement { Children = children }; + } + + private void RaiseEvent() + { + if (Children.Count == 3) + { + OnAssignGenerator?.Invoke(this, + new AssignGeneratorEventArgs + { + Variable = Children[0].Convert(), Expression = Children[2].Convert() + }); + } + else if (Children.Count == 4) + { + OnWhileGenerator?.Invoke(this, + new WhileGeneratorEventArgs + { + Condition = Children[1].Convert(), + Do = Children[2].Convert(), + Sentence = Children[3].Convert(), + }); + } + else if (Children.Count == 5) + { + OnIfGenerator?.Invoke(this, + new IfGeneratorEventArgs + { + Condition = Children[1].Convert(), + Sentence = Children[3].Convert(), + ElseSentence = Children[4].Convert() + }); + } + else if (Children.Count == 8) + { + OnForGenerator?.Invoke(this, + new ForGeneratorEventArgs + { + Iterator = Children[1].Convert().Token.Convert(), + Begin = Children[3].Convert(), + End = Children[5].Convert(), + Do = Children[6].Convert(), + Sentence = Children[7].Convert() + }); + } + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/StatementList.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/StatementList.cs new file mode 100644 index 0000000..418913f --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/StatementList.cs @@ -0,0 +1,24 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class StatementList : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.StatementList; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static StatementList Create(List children) + { + return new StatementList { Children = children}; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Subprogram.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Subprogram.cs new file mode 100644 index 0000000..641955a --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Subprogram.cs @@ -0,0 +1,24 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class Subprogram : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.Subprogram; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static Subprogram Create(List children) + { + return new Subprogram { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SubprogramBody.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SubprogramBody.cs new file mode 100644 index 0000000..24d8d72 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SubprogramBody.cs @@ -0,0 +1,24 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class SubprogramBody : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.SubprogramBody; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static SubprogramBody Create(List children) + { + return new SubprogramBody() { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SubprogramDeclarations.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SubprogramDeclarations.cs new file mode 100644 index 0000000..7e51a41 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SubprogramDeclarations.cs @@ -0,0 +1,25 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class SubprogramDeclarations : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.SubprogramDeclarations; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static SubprogramDeclarations Create(List children) + { + return new SubprogramDeclarations { Children = children }; + } + +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SubprogramHead.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SubprogramHead.cs new file mode 100644 index 0000000..048e699 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SubprogramHead.cs @@ -0,0 +1,83 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ProcedureGeneratorEventArgs : EventArgs; + +public class FunctionGeneratorEventArgs : EventArgs +{ + public required BasicType ReturnType { get; init; } +} + +public class SubprogramHead : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.SubprogramHead; + + /// + /// 过程定义还是函数定义 + /// + public bool IsProcedure { get; private init; } + + /// + /// 子程序的名称 + /// + public IdentifierSemanticToken SubprogramName => + Children[1].Convert().Token.Convert(); + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + public event EventHandler? OnProcedureGenerator; + + public event EventHandler? OnFunctionGenerator; + + public static SubprogramHead Create(List children) + { + bool isProcedure; + + TerminatedSyntaxNode node = children[0].Convert(); + KeywordSemanticToken token = (KeywordSemanticToken)node.Token; + + if (token.KeywordType == KeywordType.Procedure) + { + isProcedure = true; + } + else if (token.KeywordType == KeywordType.Function) + { + isProcedure = false; + } + else + { + throw new InvalidOperationException(); + } + + return new SubprogramHead { Children = children, IsProcedure = isProcedure }; + } + + private void RaiseEvent() + { + if (IsProcedure) + { + OnProcedureGenerator?.Invoke(this, new ProcedureGeneratorEventArgs()); + } + else + { + OnFunctionGenerator?.Invoke(this, + new FunctionGeneratorEventArgs { ReturnType = Children[4].Convert() }); + } + + OnProcedureGenerator = null; + OnFunctionGenerator = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SyntaxNodeBase.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SyntaxNodeBase.cs new file mode 100644 index 0000000..17aeaa0 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/SyntaxNodeBase.cs @@ -0,0 +1,117 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public abstract class SyntaxNodeBase +{ + public abstract bool IsTerminated { get; } + + public abstract void PreVisit(SyntaxNodeVisitor visitor); + + public abstract void PostVisit(SyntaxNodeVisitor visitor); + + public T Convert() where T : SyntaxNodeBase + { + T? result = this as T; + + if (result is null) + { + throw new InvalidOperationException("Can't cast into target SyntaxNode"); + } + + return result; + } + + public override string ToString() + { + return IsTerminated.ToString(); + } + + public static SyntaxNodeBase Create(SemanticToken token) + { + return new TerminatedSyntaxNode { Token = token }; + } + + public static SyntaxNodeBase Create(NonTerminatorType type, List children) + { + switch (type) + { + case NonTerminatorType.ProgramStruct: + return ProgramStruct.Create(children); + case NonTerminatorType.ProgramHead: + return ProgramHead.Create(children); + case NonTerminatorType.ProgramBody: + return ProgramBody.Create(children); + case NonTerminatorType.IdentifierList: + return IdentifierList.Create(children); + case NonTerminatorType.VarDeclarations: + return VarDeclarations.Create(children); + case NonTerminatorType.SubprogramDeclarations: + return SubprogramDeclarations.Create(children); + case NonTerminatorType.CompoundStatement: + return CompoundStatement.Create(children); + case NonTerminatorType.ConstValue: + return ConstValue.Create(children); + case NonTerminatorType.ConstDeclaration: + return ConstDeclaration.Create(children); + case NonTerminatorType.ConstDeclarations: + return ConstDeclarations.Create(children); + case NonTerminatorType.VarDeclaration: + return VarDeclaration.Create(children); + case NonTerminatorType.Type: + return TypeSyntaxNode.Create(children); + case NonTerminatorType.BasicType: + return BasicType.Create(children); + case NonTerminatorType.Period: + return Period.Create(children); + case NonTerminatorType.Subprogram: + return Subprogram.Create(children); + case NonTerminatorType.SubprogramHead: + return SubprogramHead.Create(children); + case NonTerminatorType.SubprogramBody: + return SubprogramBody.Create(children); + case NonTerminatorType.FormalParameter: + return FormalParameter.Create(children); + case NonTerminatorType.ParameterList: + return ParameterList.Create(children); + case NonTerminatorType.Parameter: + return Parameter.Create(children); + case NonTerminatorType.VarParameter: + return VarParameter.Create(children); + case NonTerminatorType.ValueParameter: + return ValueParameter.Create(children); + case NonTerminatorType.StatementList: + return StatementList.Create(children); + case NonTerminatorType.Statement: + return Statement.Create(children); + case NonTerminatorType.Variable: + return Variable.Create(children); + case NonTerminatorType.Expression: + return Expression.Create(children); + case NonTerminatorType.ProcedureCall: + return ProcedureCall.Create(children); + case NonTerminatorType.ElsePart: + return ElsePart.Create(children); + case NonTerminatorType.ExpressionList: + return ExpressionList.Create(children); + case NonTerminatorType.SimpleExpression: + return SimpleExpression.Create(children); + case NonTerminatorType.Term: + return Term.Create(children); + case NonTerminatorType.Factor: + return Factor.Create(children); + case NonTerminatorType.AddOperator: + return AddOperator.Create(children); + case NonTerminatorType.MultiplyOperator: + return MultiplyOperator.Create(children); + case NonTerminatorType.RelationOperator: + return RelationOperator.Create(children); + case NonTerminatorType.IdVarPart: + return IdentifierVarPart.Create(children); + default: + throw new InvalidOperationException(); + } + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Term.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Term.cs new file mode 100644 index 0000000..f3da739 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Term.cs @@ -0,0 +1,76 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class FactorGeneratorEventArgs : EventArgs +{ + public required Factor Factor { get; init; } +} + +public class MultiplyGeneratorEventArgs : EventArgs +{ + public required Term Left { get; init; } + + public required MultiplyOperator Operator { get; init; } + + public required Factor Right { get; init; } +} + +public class Term : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.Term; + + /// + /// 是否为条件判断语句 + /// + public bool IsCondition { get; set; } + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + /// + /// 直接赋值产生式的事件 + /// + public event EventHandler? OnFactorGenerator; + + /// + /// 乘法产生式的事件 + /// + public event EventHandler? OnMultiplyGenerator; + + public static Term Create(List children) + { + return new Term { Children = children }; + } + + private void RaiseEvent() + { + if (Children.Count == 1) + { + OnFactorGenerator?.Invoke(this, new FactorGeneratorEventArgs { Factor = Children[0].Convert() }); + } + else + { + OnMultiplyGenerator?.Invoke(this, + new MultiplyGeneratorEventArgs + { + Left = Children[0].Convert(), + Operator = Children[1].Convert(), + Right = Children[2].Convert() + }); + } + + OnFactorGenerator = null; + OnMultiplyGenerator = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/TerminatedSyntaxNode.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/TerminatedSyntaxNode.cs new file mode 100644 index 0000000..12c89e7 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/TerminatedSyntaxNode.cs @@ -0,0 +1,36 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class TerminatedSyntaxNode : SyntaxNodeBase +{ + public override bool IsTerminated => true; + + /// + /// 是否为For循环定义中的DO节点 + /// + public bool IsForNode { get; set; } + + /// + /// 是否为While循环定义中的DO节点 + /// + public bool IsWhileNode { get; set; } + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public required SemanticToken Token { get; init; } + + public override string ToString() + { + return Token.LiteralValue; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/TypeSyntaxNode.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/TypeSyntaxNode.cs new file mode 100644 index 0000000..7a494ff --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/TypeSyntaxNode.cs @@ -0,0 +1,64 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class BasicTypeGeneratorEventArgs : EventArgs +{ + public required BasicType BasicType { get; init; } +} + +public class ArrayTypeGeneratorEventArgs : EventArgs +{ + public required Period Period { get; init; } + + public required BasicType BasicType { get; init; } +} + +public class TypeSyntaxNode : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.Type; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + RaiseEvent(); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + RaiseEvent(); + } + + public event EventHandler? OnBasicTypeGenerator; + + public event EventHandler? OnArrayTypeGenerator; + + public static TypeSyntaxNode Create(List children) + { + return new TypeSyntaxNode { Children = children }; + } + + private void RaiseEvent() + { + if (Children.Count == 1) + { + OnBasicTypeGenerator?.Invoke(this, new BasicTypeGeneratorEventArgs + { + BasicType = Children[0].Convert() + }); + } + else + { + OnArrayTypeGenerator?.Invoke(this, new ArrayTypeGeneratorEventArgs + { + Period = Children[2].Convert(), + BasicType = Children[5].Convert() + }); + } + + OnBasicTypeGenerator = null; + OnArrayTypeGenerator = null; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ValueParameter.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ValueParameter.cs new file mode 100644 index 0000000..202ec93 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/ValueParameter.cs @@ -0,0 +1,35 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class ValueParameter : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.ValueParameter; + + /// + /// 是否为参数中的引用参数 + /// + public bool IsReference { get; set; } + + public IdentifierSemanticToken Token => + Children[0].Convert().Token.Convert(); + + public IdentifierList IdentifierList => Children[1].Convert(); + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static ValueParameter Create(List children) + { + return new ValueParameter { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/VarDeclaration.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/VarDeclaration.cs new file mode 100644 index 0000000..084a9db --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/VarDeclaration.cs @@ -0,0 +1,46 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class VarDeclaration : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.VarDeclaration; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public required IdentifierSemanticToken Token { get; init; } + + public required IdentifierList IdentifierList { get; init; } + + public static VarDeclaration Create(List children) + { + if (children.Count == 2) + { + return new VarDeclaration + { + Children = children, + Token = children[0].Convert().Token.Convert(), + IdentifierList = children[1].Convert() + }; + } + else + { + return new VarDeclaration + { + Children = children, + Token = children[2].Convert().Token.Convert(), + IdentifierList = children[3].Convert() + }; + } + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/VarDeclarations.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/VarDeclarations.cs new file mode 100644 index 0000000..8cfdd6d --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/VarDeclarations.cs @@ -0,0 +1,24 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class VarDeclarations : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.VarDeclarations; + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static VarDeclarations Create(List children) + { + return new VarDeclarations { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/VarParameter.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/VarParameter.cs new file mode 100644 index 0000000..aa6aae2 --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/VarParameter.cs @@ -0,0 +1,26 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class VarParameter : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.VarParameter; + + public ValueParameter ValueParameter => Children[1].Convert(); + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static VarParameter Create(List children) + { + return new VarParameter { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Variable.cs b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Variable.cs new file mode 100644 index 0000000..c6ad0de --- /dev/null +++ b/CanonSharp.Benchmark/Canon.Core/SyntaxNodes/Variable.cs @@ -0,0 +1,36 @@ +using CanonSharp.Benchmark.Canon.Core.Abstractions; +using CanonSharp.Benchmark.Canon.Core.Enums; +using CanonSharp.Benchmark.Canon.Core.LexicalParser; + +namespace CanonSharp.Benchmark.Canon.Core.SyntaxNodes; + +public class Variable : NonTerminatedSyntaxNode +{ + public override NonTerminatorType Type => NonTerminatorType.Variable; + + /// + /// 变量的名称 + /// + public IdentifierSemanticToken Identifier => + (IdentifierSemanticToken)Children[0].Convert().Token; + + /// + /// 声明数组访问的部分 + /// + public IdentifierVarPart VarPart => Children[1].Convert(); + + public override void PreVisit(SyntaxNodeVisitor visitor) + { + visitor.PreVisit(this); + } + + public override void PostVisit(SyntaxNodeVisitor visitor) + { + visitor.PostVisit(this); + } + + public static Variable Create(List children) + { + return new Variable { Children = children }; + } +} diff --git a/CanonSharp.Benchmark/CanonSharp.Benchmark.csproj b/CanonSharp.Benchmark/CanonSharp.Benchmark.csproj new file mode 100644 index 0000000..f8759cc --- /dev/null +++ b/CanonSharp.Benchmark/CanonSharp.Benchmark.csproj @@ -0,0 +1,18 @@ + + + + Exe + net8.0 + enable + enable + + + + + + + + + + + diff --git a/CanonSharp.Benchmark/Program.cs b/CanonSharp.Benchmark/Program.cs new file mode 100644 index 0000000..d11060a --- /dev/null +++ b/CanonSharp.Benchmark/Program.cs @@ -0,0 +1,5 @@ +// See https://aka.ms/new-console-template for more information + +using BenchmarkDotNet.Running; + +BenchmarkSwitcher.FromAssembly(typeof(Program).Assembly).Run(args); diff --git a/CanonSharp.Pascal/Parser/GrammarParser.cs b/CanonSharp.Pascal/Parser/GrammarParser.cs index 78bd12e..2416b4e 100644 --- a/CanonSharp.Pascal/Parser/GrammarParser.cs +++ b/CanonSharp.Pascal/Parser/GrammarParser.cs @@ -8,6 +8,13 @@ namespace CanonSharp.Pascal.Parser; public sealed class GrammarParser : GrammarParserBuilder { + public Program Parse(IEnumerable tokens) + { + IParseResult result = ProgramParser().Parse(new LexicalTokenReadState(tokens)); + + return result.Value; + } + public static IParser FactorParser() { // factor -> - factor | + factor diff --git a/CanonSharp.sln b/CanonSharp.sln index 592439b..2ade443 100644 --- a/CanonSharp.sln +++ b/CanonSharp.sln @@ -16,6 +16,8 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "workflows", "workflows", "{ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CanonSharp.Combinator", "CanonSharp.Combinator\CanonSharp.Combinator.csproj", "{715CAABD-41C8-4CF4-95FC-204705D2B3E6}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CanonSharp.Benchmark", "CanonSharp.Benchmark\CanonSharp.Benchmark.csproj", "{CEBB3C2E-986F-464D-9D10-E5B5E5AE9857}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -37,6 +39,10 @@ Global {715CAABD-41C8-4CF4-95FC-204705D2B3E6}.Debug|Any CPU.Build.0 = Debug|Any CPU {715CAABD-41C8-4CF4-95FC-204705D2B3E6}.Release|Any CPU.ActiveCfg = Release|Any CPU {715CAABD-41C8-4CF4-95FC-204705D2B3E6}.Release|Any CPU.Build.0 = Release|Any CPU + {CEBB3C2E-986F-464D-9D10-E5B5E5AE9857}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {CEBB3C2E-986F-464D-9D10-E5B5E5AE9857}.Debug|Any CPU.Build.0 = Debug|Any CPU + {CEBB3C2E-986F-464D-9D10-E5B5E5AE9857}.Release|Any CPU.ActiveCfg = Release|Any CPU + {CEBB3C2E-986F-464D-9D10-E5B5E5AE9857}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(NestedProjects) = preSolution {E29A838A-6D2A-4EC6-B2E5-7D53DB491A3F} = {B97A35A0-4616-4B3F-8F73-A66827BC98BA} diff --git a/OpenSet/00_main.pas b/OpenSet/00_main.pas new file mode 100644 index 0000000..9719850 --- /dev/null +++ b/OpenSet/00_main.pas @@ -0,0 +1,7 @@ +program main; +var + a: integer; +begin + a := 3; + write(a); +end. diff --git a/OpenSet/01_var_defn2.pas b/OpenSet/01_var_defn2.pas new file mode 100644 index 0000000..30cf5f6 --- /dev/null +++ b/OpenSet/01_var_defn2.pas @@ -0,0 +1,10 @@ +{test domain of global var define and local define} +program main; +var + a, b: integer; +begin + a := 3; + b := 5; + a := 5; + write(a + b); +end. diff --git a/OpenSet/02_var_defn3.pas b/OpenSet/02_var_defn3.pas new file mode 100644 index 0000000..e522b78 --- /dev/null +++ b/OpenSet/02_var_defn3.pas @@ -0,0 +1,10 @@ +{ test local var define } +program main; +var + a, b0, c: integer; +begin + a := 1; + b0 := 2; + c := 3; + write(b0+c); +end. diff --git a/OpenSet/03_arr_defn2.pas b/OpenSet/03_arr_defn2.pas new file mode 100644 index 0000000..015c5b6 --- /dev/null +++ b/OpenSet/03_arr_defn2.pas @@ -0,0 +1,6 @@ +program main; +var + a: array [0..9, 0..9] of integer; +begin + write(0); +end. diff --git a/OpenSet/04_const_var_defn2.pas b/OpenSet/04_const_var_defn2.pas new file mode 100644 index 0000000..953247b --- /dev/null +++ b/OpenSet/04_const_var_defn2.pas @@ -0,0 +1,7 @@ +program main; +const + a = 10; + b = 5; +begin + write(b); +end. diff --git a/OpenSet/05_const_var_defn3.pas b/OpenSet/05_const_var_defn3.pas new file mode 100644 index 0000000..f6f5d70 --- /dev/null +++ b/OpenSet/05_const_var_defn3.pas @@ -0,0 +1,8 @@ +// test const local var define +program main; +const + a = 10; + b = 5; +begin + write(b); +end. diff --git a/OpenSet/06_func_defn.pas b/OpenSet/06_func_defn.pas new file mode 100644 index 0000000..2983fda --- /dev/null +++ b/OpenSet/06_func_defn.pas @@ -0,0 +1,17 @@ +program main; +var + a: integer; + b: integer; + +function func(p: integer): integer; +begin + p := p - 1; + func := p; +end; + +begin + a := 10; + b := func(a); + + write(b); +end. diff --git a/OpenSet/07_var_defn_func.pas b/OpenSet/07_var_defn_func.pas new file mode 100644 index 0000000..3f77f2e --- /dev/null +++ b/OpenSet/07_var_defn_func.pas @@ -0,0 +1,13 @@ +program main; +var + a: integer; + +function defn: integer; +begin + defn := 4; +end; + +begin + a := defn; + write(a); +end. diff --git a/OpenSet/08_add2.pas b/OpenSet/08_add2.pas new file mode 100644 index 0000000..174d288 --- /dev/null +++ b/OpenSet/08_add2.pas @@ -0,0 +1,8 @@ +program main; +var + a, b: integer; +begin + a := 10; + b := -1; + write(a + b); +end. diff --git a/OpenSet/09_addc.pas b/OpenSet/09_addc.pas new file mode 100644 index 0000000..f872a09 --- /dev/null +++ b/OpenSet/09_addc.pas @@ -0,0 +1,6 @@ +program main; +const + a = 10; +begin + write(a + 5); +end. diff --git a/OpenSet/10_sub2.pas b/OpenSet/10_sub2.pas new file mode 100644 index 0000000..b107e98 --- /dev/null +++ b/OpenSet/10_sub2.pas @@ -0,0 +1,9 @@ +program main; +const + a = 10; +var + b: integer; +begin + b := 2; + write(b - a); +end. diff --git a/OpenSet/11_subc.pas b/OpenSet/11_subc.pas new file mode 100644 index 0000000..77d97d8 --- /dev/null +++ b/OpenSet/11_subc.pas @@ -0,0 +1,7 @@ +program main; +var + a: integer; +begin + a := 10; + write(a - 2); +end. diff --git a/OpenSet/12_mul.pas b/OpenSet/12_mul.pas new file mode 100644 index 0000000..565a156 --- /dev/null +++ b/OpenSet/12_mul.pas @@ -0,0 +1,8 @@ +program main; +var + a, b: integer; +begin + a := 10; + b := 5; + write(a * b); +end. diff --git a/OpenSet/13_mulc.pas b/OpenSet/13_mulc.pas new file mode 100644 index 0000000..09cf197 --- /dev/null +++ b/OpenSet/13_mulc.pas @@ -0,0 +1,6 @@ +program main; +const + a = 5; +begin + write(a*5); +end. diff --git a/OpenSet/14_div.pas b/OpenSet/14_div.pas new file mode 100644 index 0000000..1b95cd9 --- /dev/null +++ b/OpenSet/14_div.pas @@ -0,0 +1,10 @@ +program main; +var + a, b: integer; + c: real; +begin + a := 10; + b := 5; + c := a / b; + write(c); +end. diff --git a/OpenSet/15_divc.pas b/OpenSet/15_divc.pas new file mode 100644 index 0000000..bc28877 --- /dev/null +++ b/OpenSet/15_divc.pas @@ -0,0 +1,7 @@ +{ test divc} +program main; +const + a = 10; +begin + write(a div 5); +end. diff --git a/OpenSet/16_mod.pas b/OpenSet/16_mod.pas new file mode 100644 index 0000000..951c18c --- /dev/null +++ b/OpenSet/16_mod.pas @@ -0,0 +1,7 @@ +program main; +var + a: integer; +begin + a := 10; + write(a div 3); +end. diff --git a/OpenSet/17_rem.pas b/OpenSet/17_rem.pas new file mode 100644 index 0000000..6882555 --- /dev/null +++ b/OpenSet/17_rem.pas @@ -0,0 +1,7 @@ +program main; +var + a: integer; +begin + a := 10; + write(a mod 3); +end. diff --git a/OpenSet/18_if_test3.pas b/OpenSet/18_if_test3.pas new file mode 100644 index 0000000..98282f0 --- /dev/null +++ b/OpenSet/18_if_test3.pas @@ -0,0 +1,19 @@ +program main; +function ififElse: integer; +var + a: integer; + b: integer; +begin + a := 5; + b := 10; + if (a = 5) then + if (b = 10) then + a := 25 + else + a := a + 15; + ififElse := a; +end; + +begin + write(ififElse); +end. diff --git a/OpenSet/19_if_test4.pas b/OpenSet/19_if_test4.pas new file mode 100644 index 0000000..828bd10 --- /dev/null +++ b/OpenSet/19_if_test4.pas @@ -0,0 +1,20 @@ +program main; +function if_ifElse_: integer; +var + a, b: integer; +begin + a := 5; + b := 10; + if (a = 5) then + begin + if (b = 10) then + a := 25 + else + a := a + 15; + end; + if_ifElse_ := a; +end; + +begin + write(if_ifElse_); +end. diff --git a/OpenSet/20_if_test5.pas b/OpenSet/20_if_test5.pas new file mode 100644 index 0000000..16b4a17 --- /dev/null +++ b/OpenSet/20_if_test5.pas @@ -0,0 +1,20 @@ +program main; + +function if_if_Else: integer; +var a,b: integer; +begin + a := 5; + b := 10; + if (a = 5) then + begin + if (b = 10) then + a := 25; + end + else + a := a + 15; + if_if_Else := a; +end; + +begin + write(if_if_Else); +end. diff --git a/OpenSet/21_while_if_test2.pas b/OpenSet/21_while_if_test2.pas new file mode 100644 index 0000000..ee6246e --- /dev/null +++ b/OpenSet/21_while_if_test2.pas @@ -0,0 +1,25 @@ +program main; +var ret: integer; + +function ifWhile: integer; +var a,b: integer; +begin + a := 0; + b := 1; + if (a = 5) then + begin + for b := 1 to 3 do + begin + end; + b := b + 25; + ifWhile := b; + end + else + for a := 0 to 4 do + b := b * 2; + ifWhile := b; +end; + +begin + write(ifWhile()); +end. \ No newline at end of file diff --git a/OpenSet/22_arr_expr_len.pas b/OpenSet/22_arr_expr_len.pas new file mode 100644 index 0000000..5dee3f6 --- /dev/null +++ b/OpenSet/22_arr_expr_len.pas @@ -0,0 +1,18 @@ +program main; +var +arr: array[0..5] of integer; +sum, i: integer; +begin + arr[0] := 1; + arr[1] := 2; + arr[2] := 33; + arr[3] := 4; + arr[4] := 5; + arr[5] := 6; + sum := 0; + for i := 0 to 5 do + begin + sum := sum + arr[i]; + end; + write(sum); +end. \ No newline at end of file diff --git a/OpenSet/23_op_priority1.pas b/OpenSet/23_op_priority1.pas new file mode 100644 index 0000000..595e116 --- /dev/null +++ b/OpenSet/23_op_priority1.pas @@ -0,0 +1,10 @@ +{ test the priority of add and mul } +program main; +var a,b,c,d: integer; +begin + a := 10; + b := 4; + c := 2; + d := 2; + write(c + a * b - d); +end. diff --git a/OpenSet/24_op_priority2.pas b/OpenSet/24_op_priority2.pas new file mode 100644 index 0000000..4b2afa8 --- /dev/null +++ b/OpenSet/24_op_priority2.pas @@ -0,0 +1,10 @@ +{ test the priority of add and mul } +program main; +var a,b,c,d: integer; +begin + a := 10; + b := 4; + c := 2; + d := 2; + write((c + a) * (b - d)); +end. diff --git a/OpenSet/25_op_priority3.pas b/OpenSet/25_op_priority3.pas new file mode 100644 index 0000000..464f149 --- /dev/null +++ b/OpenSet/25_op_priority3.pas @@ -0,0 +1,7 @@ +program main; +var a,b: integer; +begin + a := 10; + b := 30; + write(a - (-5) + b + (-5)); +end. diff --git a/OpenSet/26_op_priority4.pas b/OpenSet/26_op_priority4.pas new file mode 100644 index 0000000..3a01807 --- /dev/null +++ b/OpenSet/26_op_priority4.pas @@ -0,0 +1,17 @@ +program main; +var a,b,c,d,e: integer; +flag:boolean; +begin + read(a); + read(b); + read(c); + read(d); + read(e); + flag := false; + if ((a - b * c <> d - a / c) or (a * b / c = e + d) or (a + b + c = d + e)) then + begin + flag := true; + end; + if flag then + write(1); +end. \ No newline at end of file diff --git a/OpenSet/27_op_priority5.pas b/OpenSet/27_op_priority5.pas new file mode 100644 index 0000000..f02a28a --- /dev/null +++ b/OpenSet/27_op_priority5.pas @@ -0,0 +1,16 @@ +program main; +var a,b,c,d,e: integer; flag: boolean; +begin + a := 1; + b := 0; + c := 1; + d := 2; + e := 4; + flag := false; + if ((a * b / c = e + d) and (a * (a + b) + c <= d + e) or (a - (b * c) = d - a / c)) then + begin + flag := true; + end; + if (flag) then + write(1); +end. \ No newline at end of file diff --git a/OpenSet/28_unary_op.pas b/OpenSet/28_unary_op.pas new file mode 100644 index 0000000..3d5c631 --- /dev/null +++ b/OpenSet/28_unary_op.pas @@ -0,0 +1,6 @@ +program main; +var a: integer; +begin + a := 60; + write(not a); +end. diff --git a/OpenSet/29_unary_op2.pas b/OpenSet/29_unary_op2.pas new file mode 100644 index 0000000..86a7de3 --- /dev/null +++ b/OpenSet/29_unary_op2.pas @@ -0,0 +1,16 @@ +program main; +var a,b: integer; +begin + a := 56; + b := 4; + a := a - - 4 + +b; + if (- not not not a <> 65) then + begin + a := - - -1; + end + else + begin + a := 0 + +b; + end; + write(a); +end. diff --git a/OpenSet/30_logi_assign.pas b/OpenSet/30_logi_assign.pas new file mode 100644 index 0000000..91a6547 --- /dev/null +++ b/OpenSet/30_logi_assign.pas @@ -0,0 +1,15 @@ +program main; +var a, b, c: integer; +begin + read(a); + read(b); + if ((a = b) and (a <> 3)) then + begin + c := 1; + end + else + begin + c := 0; + end; + write(c); +end. diff --git a/OpenSet/31_comment1.pas b/OpenSet/31_comment1.pas new file mode 100644 index 0000000..4cf3f17 --- /dev/null +++ b/OpenSet/31_comment1.pas @@ -0,0 +1,15 @@ +{ test comment } +program main; +var a: integer; +begin + a := 5; + { + int b = 4; + a = b + a; + (*/* + b = 1; + // b = 2; + *) + } + write(a); +end. \ No newline at end of file diff --git a/OpenSet/32_assign_complex_expr.pas b/OpenSet/32_assign_complex_expr.pas new file mode 100644 index 0000000..786e809 --- /dev/null +++ b/OpenSet/32_assign_complex_expr.pas @@ -0,0 +1,13 @@ +program main; +var a, b, c, d, e: integer; +begin + a := 5; + b := 5; + c := 1; + d := -2; + e := (d * 1 div 2) + (a - b) - -(c + 3) mod 2; + write(e); + e := ((d mod 2 + 67) + -(a - b) - -((c + 2) mod 2)); + e := e + 3; + write(e); +end. diff --git a/OpenSet/33_if_complex_expr.pas b/OpenSet/33_if_complex_expr.pas new file mode 100644 index 0000000..39e1910 --- /dev/null +++ b/OpenSet/33_if_complex_expr.pas @@ -0,0 +1,18 @@ +program main; +var a,b,c,d,e: integer; +begin + a := 5; + b := 5; + c := 1; + d := -2; + e := 2; + if ((d * 1 div 2) < 0) or ((a - b) <> 0) and ((c + 3) mod 2 <> 0) then + begin + write(e); + end; + if ((d mod 2 + 67) < 0) or ((a - b) <> 0) and ((c + 2) mod 2 <> 0) then + begin + e := 4; + write(e); + end; +end. diff --git a/OpenSet/34_short_circuit.pas b/OpenSet/34_short_circuit.pas new file mode 100644 index 0000000..d96cfb7 --- /dev/null +++ b/OpenSet/34_short_circuit.pas @@ -0,0 +1,39 @@ +program main; +var g, i: integer; + +function func(n: integer): integer; +begin + g := g + n; + write(g); + func := g; +end; + +begin + i := 11; + if (i > 10) and (func(i) <> 0) then + i := 1 + else + i := 0; + write(i); + i := 10; + if (i > 11) and (func(i) <> 0) then + i := 1 + else + i := 0; + write(i); + i := 100; + if (i <= 99) or (func(i) <> 0) then + i := 1 + else + i := 0; + write(i); + i := 99; + if (i <= 100) or (func(i) <> 0) then + i := 1 + else + i := 0; + if (func(99) = 0) and (func(100) <> 0) then + i := 1 + else + i := 0; +end. diff --git a/OpenSet/35_short_circuit3.pas b/OpenSet/35_short_circuit3.pas new file mode 100644 index 0000000..61def54 --- /dev/null +++ b/OpenSet/35_short_circuit3.pas @@ -0,0 +1,78 @@ +program main; +const +AA='A';BB='B';CC='C';DD='D';E='E';F='F';G='G';H='H';I='I';J='J';K='K'; +c=1; +var +a, b, d: integer; +i0,i1,i2,i3,i4: integer; + +function set_a(val: integer): integer; +begin + a := val; + set_a := val; +end; + +function set_b(val: integer): integer; +begin + b := val; + set_b := val; +end; + +function set_d(val: integer): integer; +begin + d := val; + set_d := val; +end; + +begin + a := 2; + b := 3; + if (set_a(0) <> 0) and (set_b(1) <> 0) then + ; + write(a); + write(b); + + a := 2; + b := 3; + if (set_a(0) <> 0) and (set_b(1) <> 0) then + ; + write(a); + write(b); + + d := 2; + if (c >= 1) and (set_d(3) <> 0) then + ; + write(d); + if (c <= 1) or (set_d(4) <> 0) then + ; + write(d); + + if (16 >= (3 - (2 + 1))) then + write(AA); + if (25 - 7) <> (36 - 6 * 3) then + write(BB); + if (1 <> (7 mod 2)) then + write(CC); + if 3 <= 4 then + write(DD); + if 0 <> 0 then + write(E); + if 1 <> 0 then + write(F); + + i0 := 0; + i1 := 1; + i2 := 2; + i3 := 3; + i4 := 4; + if (i0 <> 0) or (i1 <> 0) then + write(G); + if (i0 >= i1) or (i1 <= i0) then + write(H); + if (i2 >= i1) and (i4 <> i3) then + write(I); + if (i0 = 0) and (i3 < i3) or (i4 >= i4) then + write(J); + if (i0 = 0) or (i3 < i3) and (i4 >= i4) then + write(K); +end. \ No newline at end of file diff --git a/OpenSet/36_scope.pas b/OpenSet/36_scope.pas new file mode 100644 index 0000000..928eaf4 --- /dev/null +++ b/OpenSet/36_scope.pas @@ -0,0 +1,28 @@ +program main; +var a, sum, i: integer; + +function func: integer; +var b,a: integer; +begin + b := 7; + a := 1; + if (a = b) then + begin + a := a + 1; + func := 1; + end + else + func := 0; +end; + +begin + a := 7; + sum := 0; + for i := 0 to 99 do + begin + if (func() = 1) then + sum := sum + 1; + end; + write(a); + write(sum); +end. diff --git a/OpenSet/37_sort_test1.pas b/OpenSet/37_sort_test1.pas new file mode 100644 index 0000000..22c76af --- /dev/null +++ b/OpenSet/37_sort_test1.pas @@ -0,0 +1,39 @@ +program main; +var i,n: integer; +arr:array[0..9] of integer; + +function bubblesort:integer; +var i,j,tmp:integer; +begin + for i := 0 to n - 2 do + begin + for j := 0 to (n - 2 - i) do + begin + if arr[j] > arr[j + 1] then + begin + tmp := arr[j + 1]; + arr[j + 1] := arr[j]; + arr[j] := tmp; + end; + end; + end; + bubblesort := 0; +end; + +begin + n := 10; + arr[0] := 4; + arr[1] := 3; + arr[2] := 9; + arr[3] := 2; + arr[4] := 0; + arr[5] := 1; + arr[6] := 6; + arr[7] := 5; + arr[8] := 7; + arr[9] := 8; + for i := bubblesort to n - 1 do + begin + write(arr[i]); + end; +end. diff --git a/OpenSet/38_sort_test4.pas b/OpenSet/38_sort_test4.pas new file mode 100644 index 0000000..00d280b --- /dev/null +++ b/OpenSet/38_sort_test4.pas @@ -0,0 +1,46 @@ +program SelectSort; + +var + n, i: integer; + arr: array[0..9] of integer; + +procedure selectsort; +var i,j,min,tmp: integer; +begin + for i := 0 to n - 2 do + begin + min := i; + for j := i + 1 to n - 1 do + begin + if arr[min] > arr[j] then + min := j; + end; + if min <> i then + begin + tmp := arr[min]; + arr[min] := arr[i]; + arr[i] := tmp; + end; + end; +end; + +begin + n := 10; + arr[0] := 4; + arr[1] := 3; + arr[2] := 9; + arr[3] := 2; + arr[4] := 0; + arr[5] := 1; + arr[6] := 6; + arr[7] := 5; + arr[8] := 7; + arr[9] := 8; + + selectsort; + + for i := 0 to n - 1 do + begin + write(arr[i]); + end; +end. diff --git a/OpenSet/39_sort_test6.pas b/OpenSet/39_sort_test6.pas new file mode 100644 index 0000000..60a9b6b --- /dev/null +++ b/OpenSet/39_sort_test6.pas @@ -0,0 +1,45 @@ +program CountingSort; + +var + n, i: integer; + ini_arr, sorted_arr: array[0..9] of integer; + +procedure countingsort; +var +i, j, k, jj: integer; +count_arr: array[0..9] of integer; +begin + for k := 0 to n - 1 do + count_arr[k] := 0; + for i := 0 to n - 1 do + count_arr[ini_arr[i]] := count_arr[ini_arr[i]] + 1; + for k := 1 to n - 1 do + count_arr[k] := count_arr[k] + count_arr[k - 1]; + for j := 0 to n - 1 do + begin + jj := n - j; + count_arr[ini_arr[jj - 1]] := count_arr[ini_arr[jj - 1]] - 1; + sorted_arr[count_arr[ini_arr[jj - 1]]] := ini_arr[jj - 1]; + end; +end; + +begin + n := 10; + ini_arr[0] := 4; + ini_arr[1] := 3; + ini_arr[2] := 9; + ini_arr[3] := 2; + ini_arr[4] := 0; + ini_arr[5] := 1; + ini_arr[6] := 6; + ini_arr[7] := 5; + ini_arr[8] := 7; + ini_arr[9] := 8; + + countingsort; + + for i := 0 to n - 1 do + begin + write(sorted_arr[i]); + end; +end. diff --git a/OpenSet/40_percolation.pas b/OpenSet/40_percolation.pas new file mode 100644 index 0000000..d4d3e28 --- /dev/null +++ b/OpenSet/40_percolation.pas @@ -0,0 +1,80 @@ +program main; +var +arr: array[0..109] of integer; +n: integer; +m, a, b, k, loc, i: integer; +flag: boolean; + +procedure init(n: integer); +var i: integer; +begin + for i := 1 to n * n + 1 do + arr[i] := -1; +end; + +function findfa(a: integer):integer; +begin + if arr[a] = a then + findfa := a + else + begin + arr[a] := findfa(arr[a]); + findfa := arr[a]; + end; +end; + +procedure mmerge(a, b: integer); +var m, n: integer; +begin + m := findfa(a); + n := findfa(b); + if m <> n then + arr[m] := n; +end; + +begin + n := 4; + m := 10; + flag := false; + init(n); + k := n * n + 1; + + for i := 0 to m - 1 do + begin + read(a); + read(b); + if flag = false then + begin + loc := n * (a - 1) + b; + arr[loc] := loc; + if a = 1 then + begin + arr[0] := 0; + mmerge(loc, 0); + end; + if a = n then + begin + arr[k] := k; + mmerge(loc, k); + end; + + if (b < n) and (arr[loc + 1] <> -1) then + mmerge(loc, loc + 1); + if (b > 1) and (arr[loc - 1] <> -1) then + mmerge(loc, loc - 1); + if (a < n) and (arr[loc + n] <> -1) then + mmerge(loc, loc + n); + if (a > 1) and (arr[loc - n] <> -1) then + mmerge(loc, loc - n); + + if (arr[0] <> -1) and (arr[k] <> -1) and (findfa(0) = findfa(k)) then + begin + flag := true; + write(i + 1); + end; + end; + end; + + if flag = false then + write(-1); +end. diff --git a/OpenSet/41_big_int_mul.pas b/OpenSet/41_big_int_mul.pas new file mode 100644 index 0000000..7d82f3b --- /dev/null +++ b/OpenSet/41_big_int_mul.pas @@ -0,0 +1,77 @@ +program main; +const len = 20; +var +i,j,t,n,temp: integer; +len1,len2:integer; +mult1, mult2: array [0..19] of integer; +c1,c2: array [0..24] of integer; +result: array[0..39] of integer; + +begin + len1 := len; + len2 := len; + for i := 0 to 8 do + mult1[i] := i + 1; + mult1[9] := 0; + for i := 10 to 18 do + mult1[i] := i - 9; + mult1[19] := 0; + + mult2[0] := 2; + mult2[1] := 3; + mult2[2] := 4; + mult2[3] := 2; + mult2[4] := 5; + mult2[5] := 7; + mult2[6] := 9; + mult2[7] := 9; + mult2[8] := 0; + mult2[9] := 1; + mult2[10] := 9; + mult2[11] := 8; + mult2[12] := 7; + mult2[13] := 6; + mult2[14] := 4; + mult2[15] := 3; + mult2[16] := 2; + mult2[17] := 1; + mult2[18] := 2; + mult2[19] := 2; + + for i := 0 to len1 - 1 do + c1[i] := mult1[i]; + for i := 0 to len2 - 1 do + c2[i] := mult2[i]; + n := len1 + len2 - 1; + + for i := 0 to n do + result[i] := 0; + + temp := 0; + + for i := 0 to len2 - 1 do + begin + t := c2[len2 - 1 - i]; + for j := 0 to len1 - 1 do + begin + temp := result[n] + t * c1[len1 - 1 - j]; + if temp >= 10 then + begin + result[n] := temp; + result[n - 1] :=result[n - 1] + temp div 10; + end + else + begin + result[n] := temp; + end; + n := n - 1; + end; + n := n + len1 - 1; + end; + + if result[0] <> 0 then + write(result[0]); + + for i := 1 to (len1 + len2 - 1) do + write(result[i]); +end. \ No newline at end of file diff --git a/OpenSet/42_color.pas b/OpenSet/42_color.pas new file mode 100644 index 0000000..f0c42f4 --- /dev/null +++ b/OpenSet/42_color.pas @@ -0,0 +1,77 @@ +program main; +const + modn = 1000000007; + +var + dp: array[0..17, 0..17, 0..17, 0..17, 0..17, 0..6] of integer; + list: array[0..199] of integer; + cns: array[1..19] of integer; + n: integer; + i, j, k, l, m, h: integer; + ans: integer; + +function equal(a, b: integer): integer; +begin + if a = b then + equal := 1 + else + equal := 0; +end; + +function dfs(a, b, c, d, e, last: integer): integer; +var anss:integer; +begin + if dp[a, b, c, d, e, last] <> -1 then + dfs := dp[a, b, c, d, e, last]; + if a + b + c + d + e = 0 then + dfs := 1 + else + begin + anss := 0; + + if a <> 0 then + anss := (anss + (a - equal(last, 2)) * dfs(a - 1, b, c, d, e, 1)) mod modn; + if b <> 0 then + anss := (anss + (b - equal(last, 3)) * dfs(a + 1, b - 1, c, d, e, 2)) mod modn; + if c <> 0 then + anss := (anss + (c - equal(last, 4)) * dfs(a, b + 1, c - 1, d, e, 3)) mod modn; + if d <> 0 then + anss := (anss + (d - equal(last, 5)) * dfs(a, b, c + 1, d - 1, e, 4)) mod modn; + if e <> 0 then + anss := (anss + e * dfs(a, b, c, d + 1, e - 1, 5)) mod modn; + dp[a, b, c, d, e, last] := anss mod modn; + dfs := dp[a, b, c, d, e, last]; + end; +end; + +begin + read(n); + + for i := 0 to 17 do + begin + for j := 0 to 17 do + begin + for k := 0 to 17 do + begin + for l := 0 to 17 do + begin + for m := 0 to 17 do + begin + for h := 0 to 6 do + dp[i, j, k, l, m, h] := -1; + end; + end; + end; + end; + end; + + for i := 0 to n - 1 do + begin + read(list[i]); + cns[list[i]] := cns[list[i]] + 1; + end; + + ans := dfs(cns[1], cns[2], cns[3], cns[4], cns[5], 0); + + write(ans); +end. diff --git a/OpenSet/43_exgcd.pas b/OpenSet/43_exgcd.pas new file mode 100644 index 0000000..f683c34 --- /dev/null +++ b/OpenSet/43_exgcd.pas @@ -0,0 +1,36 @@ +program main; + +var + x, y: array[0..0] of integer; + a, b: integer; + +function exgcd(a, b: integer; var x, y: integer): integer; +var + t, r: integer; +begin + if b = 0 then + begin + x := 1; + y := 0; + exgcd := a; + end + else + begin + r := exgcd(b, a mod b, x, y); + t := x; + x := y; + y := (t - (a div b) * y); + exgcd := r; + end; +end; + + +begin + a := 7; + b := 15; + x[0] := 1; + y[0] := 1; + exgcd(a, b, x[0], y[0]); + x[0] := ((x[0] mod b) + b) mod b; + write(x[0]); +end. diff --git a/OpenSet/44_reverse_output.pas b/OpenSet/44_reverse_output.pas new file mode 100644 index 0000000..bf7b687 --- /dev/null +++ b/OpenSet/44_reverse_output.pas @@ -0,0 +1,25 @@ +program main; +var + i: integer; + +procedure reverse(n: integer); +var + next: integer; +begin + if n <= 1 then + begin + read(next); + write(next); + end + else + begin + read(next); + reverse(n - 1); + write(next); + end; +end; + +begin + i := 200; + reverse(i); +end. diff --git a/OpenSet/45_dijkstra.pas b/OpenSet/45_dijkstra.pas new file mode 100644 index 0000000..15976e0 --- /dev/null +++ b/OpenSet/45_dijkstra.pas @@ -0,0 +1,74 @@ +program main; + +const + INF = 32767; + +var + e: array[0..15, 0..15] of integer; + dis, book: array[0..15] of integer; + m, n: integer; + u, v, i, j: integer; + +procedure Dijkstra(); +var + i, min_num, min_index, k, j: integer; +begin + for i := 1 to n do + begin + dis[i] := e[1, i]; + book[i] := 0; + end; + book[1] := 1; + + for i := 1 to n - 1 do + begin + min_num := INF; + min_index := 0; + for k := 1 to n do + begin + if (min_num > dis[k]) and (book[k] = 0) then + begin + min_num := dis[k]; + min_index := k; + end; + end; + book[min_index] := 1; + for j := 1 to n do + begin + if e[min_index, j] < INF then + begin + if dis[j] > dis[min_index] + e[min_index, j] then + dis[j] := dis[min_index] + e[min_index, j]; + end; + end; + end; +end; + +begin + read(n); + read(m); + + for i := 1 to n do + begin + for j := 1 to n do + begin + if i = j then + e[i, j] := 0 + else + e[i, j] := INF; + end; + end; + + for i := 1 to m do + begin + read(u); + read(v); + read(e[u, v]); + end; + + Dijkstra(); + + for i := 1 to n do + write(dis[i]); + read(e[0,0]); +end. diff --git a/OpenSet/46_full_conn.pas b/OpenSet/46_full_conn.pas new file mode 100644 index 0000000..e4f228d --- /dev/null +++ b/OpenSet/46_full_conn.pas @@ -0,0 +1,39 @@ +program main; +const DOG = 'd'; CAT = 'c'; +var N, k, i, j: integer; +a: array[0..4, 0..4] of integer; + +function relu_reg(n: integer): integer; +begin + if n > 127 then + relu_reg := 127; + if n < 0 then + relu_reg := 0; +end; + +function model: integer; +begin + if (+relu_reg(+a[0, 0] * 85 + a[0, 1] * 23 + a[0, 2] * -82 + a[0, 3] * -103 + a[0, 4] * -123 + a[1, 0] * 64 + a[1, 1] * -120 + a[1, 2] * 50 + a[1, 3] * -59 + a[1, 4] * 47 + a[2, 0] * -111 + a[2, 1] * -67 + a[2, 2] * -106 + a[2, 3] * -75 + a[2, 4] * -102 + a[3, 0] * 34 + a[3, 1] * -39 + a[3, 2] * 65 + a[3, 3] * 47 + a[3, 4] * 113 + a[4, 0] * 110 + a[4, 1] * 47 + a[4, 2] * -4 + a[4, 3] * 80 + a[4, 4] * 46) * 39 + relu_reg(+a[0, 0] * -106 + a[0, 1] * 126 + a[0, 2] * -18 + a[0, 3] * -31 + a[0, 4] * -8 + a[1, 0] * 47 + a[1, 1] * -4 + a[1, 2] * 67 + a[1, 3] * -94 + a[1, 4] * -121 + a[2, 0] * 7 + a[2, 1] * -21 + a[2, 2] * -60 + a[2, 3] * -43 + a[2, 4] * 105 + a[3, 0] * -42 + a[3, 1] * 87 + a[3, 2] * 29 + a[3, 3] * -106 + a[3, 4] * -31 + a[4, 0] * -110 + a[4, 1] * -100 + a[4, 2] * -22 + a[4, 3] * -75 + a[4, 4] * -125) * 77 + relu_reg(+a[0, 0] * 26 + a[0, 1] * 76 + a[0, 2] * -70 + a[0, 3] * 29 + a[0, 4] * -95 + a[1, 0] * 96 + a[1, 1] * 52 + a[1, 2] * -68 + a[1, 3] * -5 + a[1, 4] * 34 + a[2, 0] * -34 + a[2, 1] * 102 + a[2, 2] * 6 + a[2, 3] * -38 + a[2, 4] * 27 + a[3, 0] * 110 + a[3, 1] * 116 + a[3, 2] * 39 + a[3, 3] * -63 + a[3, 4] * -99 + a[4, 0] * 65 + a[4, 1] * 120 + a[4, 2] * -39 + a[4, 3] * -6 + a[4, 4] * 94) * 127 + relu_reg(+a[0, 0] * -23 + a[0, 1] * -63 + a[0, 2] * 49 + a[0, 3] * 50 + a[0, 4] * 72 + a[1, 0] * 85 + a[1, 1] * -30 + a[1, 2] * 12 + a[1, 3] * 125 + a[1, 4] * -117 + a[2, 0] * -65 + a[2, 1] * -67 + a[2, 2] * 125 + a[2, 3] * 110 + a[2, 4] * -31 + a[3, 0] * -123 + a[3, 1] * 83 + a[3, 2] * 122 + a[3, 3] * 11 + a[3, 4] * -23 + a[4, 0] * -47 + a[4, 1] * -32 + a[4, 2] * -117 + a[4, 3] * 95 + a[4, 4] * 118) * -106 + relu_reg(+a[0, 0] * 8 + a[0, 1] * 82 + a[0, 2] * -104 + a[0, 3] * 101 + a[0, 4] * -116 + a[1, 0] * -63 + a[1, 1] * -16 + a[1, 2] * -70 + a[1, 3] * 125 + a[1, 4] * 75 + a[2, 0] * 66 + a[2, 1] * -96 + a[2, 2] * -101 + a[2, 3] * -114 + a[2, 4] * 59 + a[3, 0] * 12 + a[3, 1] * 5 + a[3, 2] * -95 + a[3, 3] * 116 + a[3, 4] * -93 + a[4, 0] * 15 + a[4, 1] * 79 + a[4, 2] * 3 + a[4, 3] * 49 + a[4, 4] * -124) * -3 + relu_reg(+a[0, 0] * 81 + a[0, 1] * 68 + a[0, 2] * -102 + a[0, 3] * -74 + a[0, 4] * 121 + a[1, 0] * -15 + a[1, 1] * 55 + a[1, 2] * 101 + a[1, 3] * -13 + a[1, 4] * -62 + a[2, 0] * 64 + a[2, 1] * 114 + a[2, 2] * 38 + a[2, 3] * -21 + a[2, 4] * 112 + a[3, 0] * 114 + a[3, 1] * 112 + a[3, 2] * -10 + a[3, 3] * -16 + a[3, 4] * -50 + a[4, 0] * -112 + a[4, 1] * -116 + a[4, 2] * -54 + a[4, 3] * 82 + a[4, 4] * -72) * 32 + relu_reg(+a[0, 0] * 15 + a[0, 1] * -77 + a[0, 2] * 66 + a[0, 3] * -90 + a[0, 4] * -6 + a[1, 0] * -30 + a[1, 1] * -8 + a[1, 2] * 81 + a[1, 3] * 2 + a[1, 4] * -110 + a[2, 0] * -95 + a[2, 1] * 59 + a[2, 2] * 52 + a[2, 3] * 15 + a[2, 4] * 55 + a[3, 0] * -33 + a[3, 1] * 14 + a[3, 2] * 58 + a[3, 3] * 67 + a[3, 4] * 86 + a[4, 0] * -79 + a[4, 1] * 48 + a[4, 2] * -13 + a[4, 3] * -15 + a[4, 4] * 66) * -95 + relu_reg(+a[0, 0] * 33 + a[0, 1] * 82 + a[0, 2] * 67 + a[0, 3] * 30 + a[0, 4] * -2 + a[1, 0] * 65 + a[1, 1] * 120 + a[1, 2] * -13 + a[1, 3] * 18 + a[1, 4] * 5 + a[2, 0] * 104 + a[2, 1] * -119 + a[2, 2] * -7 + a[2, 3] * 71 + a[2, 4] * 107 + a[3, 0] * 24 + a[3, 1] * 82 + a[3, 2] * -96 + a[3, 3] * -104 + a[3, 4] * -121 + a[4, 0] * 65 + a[4, 1] * 97 + a[4, 2] * 83 + a[4, 3] * 46 + a[4, 4] * -84) * -50 + relu_reg(+a[0, 0] * -29 + a[0, 1] * 7 + a[0, 2] * -70 + a[0, 3] * 38 + a[0, 4] * -90 + a[1, 0] * -15 + a[1, 1] * -32 + a[1, 2] * 37 + a[1, 3] * 36 + a[1, 4] * -62 + a[2, 0] * -125 + a[2, 1] * -46 + a[2, 2] * -70 + a[2, 3] * 37 + a[2, 4] * -73 + a[3, 0] * -34 + a[3, 1] * -87 + a[3, 2] * -75 + a[3, 3] * 71 + a[3, 4] * -77 + a[4, 0] * 53 + a[4, 1] * 37 + a[4, 2] * -103 + a[4, 3] * -13 + a[4, 4] * -114) * -23 + relu_reg(+a[0, 0] * 67 + a[0, 1] * 42 + a[0, 2] * 41 + a[0, 3] * -123 + a[0, 4] * -92 + a[1, 0] * 10 + a[1, 1] * -77 + a[1, 2] * 75 + a[1, 3] * 96 + a[1, 4] * -51 + a[2, 0] * 109 + a[2, 1] * -74 + a[2, 2] * -7 + a[2, 3] * -122 + a[2, 4] * 67 + a[3, 0] * 47 + a[3, 1] * 22 + a[3, 2] * -68 + a[3, 3] * 38 + a[3, 4] * 29 + a[4, 0] * 115 + a[4, 1] * -121 + a[4, 2] * 36 + a[4, 3] * -49 + a[4, 4] * 85) * 46 > 0) then + model := 1 + else + model := 0; +end; + +begin + read(N); + for k := 0 to N - 1 do + begin + for i := 0 to 4 do + begin + for j := 0 to 4 do + begin + read(a[i, j]); + end; + end; + + if model <> 0 then + write(CAT) + else + write(DOG); + end; +end. diff --git a/OpenSet/47_hanoi.pas b/OpenSet/47_hanoi.pas new file mode 100644 index 0000000..dfbdff3 --- /dev/null +++ b/OpenSet/47_hanoi.pas @@ -0,0 +1,30 @@ +program Hanoi; +const split = ','; +var + n, t, i: integer; + +procedure move(x, y: integer); +begin + write(x,y,split); +end; + +procedure hanoi(n, one, two, three: integer); +begin + if n = 1 then + move(one, three) + else + begin + hanoi(n - 1, one, three, two); + move(one, three); + hanoi(n - 1, two, one, three); + end; +end; + +begin + read(n); + for i := 1 to n do + begin + read(t); + hanoi(t, 1, 2, 3); + end; +end. diff --git a/OpenSet/48_n_queens.pas b/OpenSet/48_n_queens.pas new file mode 100644 index 0000000..a2faf2c --- /dev/null +++ b/OpenSet/48_n_queens.pas @@ -0,0 +1,62 @@ +program NQueens; +const +newline = ','; +blank = ' '; + +var + ans: array[1..50] of integer; + sum, n: integer; + row: array[1..50] of integer; + line1: array[1..50] of integer; + line2: array[1..100] of integer; + k, i: integer; + +procedure printans; +var + i: integer; +begin + sum := sum + 1; + for i := 1 to n do + begin + write(ans[i]); + if i = n then + write(newline) + else + write(blank); + end; +end; + +procedure f(step: integer); +var + i: integer; +begin + for i := 1 to n do + begin + if (row[i] <> 1) and (line1[step + i] = 0) and (line2[n + step - i] = 0) then + begin + ans[step] := i; + if step = n then + printans; + row[i] := 1; + line1[step + i] := 1; + line2[n + step - i] := 1; + f(step + 1); + row[i] := 0; + line1[step + i] := 0; + line2[n + step - i] := 0; + end; + end; +end; + + +begin + sum := 0; + read(k); + for i := 1 to k do + begin + read(n); + f(1); + end; + + write(sum); +end. diff --git a/OpenSet/49_substr.pas b/OpenSet/49_substr.pas new file mode 100644 index 0000000..63b63f9 --- /dev/null +++ b/OpenSet/49_substr.pas @@ -0,0 +1,79 @@ +program substr; +var +A: array [0..14] of integer; +B: array [0..12] of integer; + +function MAX(a, b: integer): integer; +begin + if a >= b then + MAX := a + else + MAX := b; +end; + +function max_sum_nonadjacent(n: integer): integer; +var +i: integer; +temp: array [0..15] of integer; +begin + temp[0] := A[0]; + temp[1] := MAX(A[0], A[1]); + for i := 2 to n - 1 do + temp[i] := MAX(temp[i - 2] + A[i], temp[i - 1]); + max_sum_nonadjacent := temp[n - 1] +end; + +function longest_common_subseq(len1, len2: integer): integer; +var i, j: integer; +p: array[0..15, 0..15] of integer; +begin + for i := 0 to 15 do + p[i, 0] := 0; + for j := 0 to 15 do + p[0, j] := 0; + for i := 1 to len1 do + begin + for j := 1 to len2 do + begin + if A[i - 1] = B[j - 1] then + p[i, j] := p[i - 1, j - 1] + 1 + else + p[i, j] := MAX(p[i - 1, j], p[i, j - 1]); + end; + end; + longest_common_subseq := p[len1, len2]; +end; + +begin + A[0] := 8; + A[1] := 7; + A[2] := 4; + A[3] := 1; + A[4] := 2; + A[5] := 7; + A[6] := 0; + A[7] := 1; + A[8] := 9; + A[9] := 3; + A[10] := 4; + A[11] := 8; + A[12] := 3; + A[13] := 7; + A[14] := 0; + B[0] := 3; + B[1] := 9; + B[2] := 7; + B[3] := 1; + B[4] := 4; + B[5] := 2; + B[6] := 4; + B[7] := 3; + B[8] := 6; + B[9] := 8; + B[10] := 0; + B[11] := 1; + B[12] := 5; + + write(max_sum_nonadjacent(15)); + write(longest_common_subseq(15, 13)); +end. diff --git a/OpenSet/50_side_effect.pas b/OpenSet/50_side_effect.pas new file mode 100644 index 0000000..8baf7c2 --- /dev/null +++ b/OpenSet/50_side_effect.pas @@ -0,0 +1,42 @@ +program main; +const split = ','; +var + a, b, k, i: integer; + +function inc_a: integer; +var + temp_b: integer; +begin + temp_b := a; + temp_b := temp_b + 1; + a := temp_b; + inc_a := a; +end; + + +begin + a := -1; + b := 1; + k := 5; + + for i := 0 to k do + begin + if (inc_a <> 0) and (inc_a <> 0) and (inc_a <> 0) then + begin + write(a, b, split); + end; + + if (inc_a < 14) or ((inc_a <> 0) and ((inc_a - inc_a + 1) <> 0)) then + begin + write(a, split); + b := b * 2; + end + else + begin + inc_a; + end; + end; + + write(a,b,split); + write(a); +end. diff --git a/OpenSet/51_var_name.pas b/OpenSet/51_var_name.pas new file mode 100644 index 0000000..16c30e2 --- /dev/null +++ b/OpenSet/51_var_name.pas @@ -0,0 +1,14 @@ +program main; +const u5X8l2s8I2w6D3f2a8C6d7l0H9b6q7K4p8Z6y8O5z2G5s6V8n1d7v8C3g9S9H4k8l8F9x1Q1k2p9Y1w9G5S2h2L6a0X5n5W5e = 'a'; +var +U01t9EaA7ZoJ5E8dZfRbP7iKfrW9bLXtxnMDh1QsZnB3S4v0wNvKxvFea8m7uNTjA2U6l5kPzFe8q2CfP0XNq6Pv2r6sX1vG7i2V0KcJ8I0v4Z0r8pY8gE3s5g8b9M5: integer; +l7J9H5Q3iD7yL0O3bT8oF6uJ2eZ4rN6wV0zA7nU8Y4fM1E2W3uK4R8sZ6c1qX8pG8m4a6S9f2N7xX4m7R3D7m9R3I5n1J2: real; +T2e5I2v7T2o9P9n9h7Q1s7b8g7S6k0x7Z7Y1W4Q0f5G2q7j6c2N7S9t8i5e7z5b9H4x7e6q1W1J1T7k6u7i4K2l4v8o7M6j7: boolean; + +begin + U01t9EaA7ZoJ5E8dZfRbP7iKfrW9bLXtxnMDh1QsZnB3S4v0wNvKxvFea8m7uNTjA2U6l5kPzFe8q2CfP0XNq6Pv2r6sX1vG7i2V0KcJ8I0v4Z0r8pY8gE3s5g8b9M5 := 0; + l7J9H5Q3iD7yL0O3bT8oF6uJ2eZ4rN6wV0zA7nU8Y4fM1E2W3uK4R8sZ6c1qX8pG8m4a6S9f2N7xX4m7R3D7m9R3I5n1J2 := 0.0; + T2e5I2v7T2o9P9n9h7Q1s7b8g7S6k0x7Z7Y1W4Q0f5G2q7j6c2N7S9t8i5e7z5b9H4x7e6q1W1J1T7k6u7i4K2l4v8o7M6j7 := false; + if T2e5I2v7T2o9P9n9h7Q1s7b8g7S6k0x7Z7Y1W4Q0f5G2q7j6c2N7S9t8i5e7z5b9H4x7e6q1W1J1T7k6u7i4K2l4v8o7M6j7 = false then + write(U01t9EaA7ZoJ5E8dZfRbP7iKfrW9bLXtxnMDh1QsZnB3S4v0wNvKxvFea8m7uNTjA2U6l5kPzFe8q2CfP0XNq6Pv2r6sX1vG7i2V0KcJ8I0v4Z0r8pY8gE3s5g8b9M5, l7J9H5Q3iD7yL0O3bT8oF6uJ2eZ4rN6wV0zA7nU8Y4fM1E2W3uK4R8sZ6c1qX8pG8m4a6S9f2N7xX4m7R3D7m9R3I5n1J2, u5X8l2s8I2w6D3f2a8C6d7l0H9b6q7K4p8Z6y8O5z2G5s6V8n1d7v8C3g9S9H4k8l8F9x1Q1k2p9Y1w9G5S2h2L6a0X5n5W5e); +end. \ No newline at end of file diff --git a/OpenSet/52_chaos_token.pas b/OpenSet/52_chaos_token.pas new file mode 100644 index 0000000..6a47aee --- /dev/null +++ b/OpenSet/52_chaos_token.pas @@ -0,0 +1,75 @@ +program CountingSort; + +var + n: integer; + + + i, tmp: + + integer; + iniArr, sortedArr: array[0..9] of + + integer; + +function countingSort +(n: integer): integer; +var + countArr: array[0..9] of integer; + i, j, k, jj: + integer +; +begin + for k := 0 + to 9 do + begin + countArr[k + ] := 0; + end; + for i := 0 to n - 1 do + begin + countArr[ + + + iniArr[i]] := + countArr[iniArr[i]] + + 1; + end; + for k := 1 to 9 do + begin + countArr + + [k] := + + countArr[k] + countArr[k - 1]; end; + for jj := 0 to n-1 do + begin j:=n-jj;countArr[iniArr[j - 1]] := countArr[iniArr[j - 1]] - 1; sortedArr[countArr[iniArr[j - 1]]] := iniArr[j - 1]; + end; + countingSort := 0; +end; + +begin + n := 10; + iniArr[0] := 4; + iniArr[1] := 3; + iniArr[2] := 9; + iniArr[3 + ] := 2; + iniArr[4] := 0; + iniArr[ + 5] := 1; + iniArr[6] := 6; + iniArr[ 7] := 5; + iniArr[8] := + 7; + iniArr[9] := 8; + + countingSort( + n); + + for i := 0 to n - 1 do + begin + tmp := sortedArr[i]; + write(tmp); + + end; +end. diff --git a/OpenSet/53_skip_spaces.pas b/OpenSet/53_skip_spaces.pas new file mode 100644 index 0000000..77d88a8 --- /dev/null +++ b/OpenSet/53_skip_spaces.pas @@ -0,0 +1,23 @@ +program main; +// ??? // ???? +// ????? +{dfdafa} +var +i,j,sum,t: integer; +arr: array[0..99] of integer; +begin + t := 5; + i := 0; + sum := 0; + for j := 0 to t - 1 do + begin + i := i + 1; + arr[j] := i; + end; + + for j := 0 to i - 1 do + begin + sum := sum + arr[j]; + end; + write(sum mod 79); +end. \ No newline at end of file diff --git a/OpenSet/54_long_array.pas b/OpenSet/54_long_array.pas new file mode 100644 index 0000000..4bf163f --- /dev/null +++ b/OpenSet/54_long_array.pas @@ -0,0 +1,60 @@ +program long_array; + +function long_array(k: integer): integer; +var + a1, a2, a3: array[0..149] of integer; + i, j, ans: integer; +begin + for i := 0 to 149 do + a1[i] := (i * i) mod 10; + + for i := 0 to 149 do + a2[i] := (a1[i] * a1[i]) mod 10; + + for i := 0 to 149 do + a3[i] := (a2[i] * a2[i]) mod 100 + a1[i]; + + ans := 0; + + for i := 0 to 149 do + begin + if i < 10 then + begin + ans := (ans + a3[i]) mod 1333; + write(ans); + end; + + if i < 20 then + begin + for j := (150 div 2) to 149 do + ans := ans + a3[i] - a1[j]; + write(ans); + end; + + if i < 30 then + begin + for j := 150 div 2 to 149 do + begin + if j > 2233 then + begin + ans := ans + a2[i] - a1[j]; + end + else + begin + ans := (ans + a1[i] + a3[j]) mod 13333; + end; + end; + write(ans); + end + else + begin + ans := (ans + a3[i] * k) mod 99988; + end; + end; + + long_array := ans; +end; + +begin + write(long_array(9)); +end. diff --git a/OpenSet/55_long_array2.pas b/OpenSet/55_long_array2.pas new file mode 100644 index 0000000..3d9b3bc --- /dev/null +++ b/OpenSet/55_long_array2.pas @@ -0,0 +1,30 @@ +program Arrays; + +var + a: array[0..4095] of integer; + b: array[0..3, 0..1023] of integer; + c: array[0..1023, 0..3] of integer; + +function f1: integer; +begin + a[5] := 4000; + a[4000] := 3; + a[4095] := 7; + c[0, a[4095]] := a[2216] + 9; + f1 := a[a[5]]; +end; + +begin + b[1, 0] := 1; + b[2, 0] := 2; + b[2, 1] := 3; + b[3, 0] := 4; + b[3, 1] := 5; + b[3, 2] := 6; + c[0, 0] := 1; + c[0, 1] := 2; + c[1, 0] := 3; + c[1, 1] := 4; + write(f1); + write(c[2, 0]); +end. diff --git a/OpenSet/56_long_code2.pas b/OpenSet/56_long_code2.pas new file mode 100644 index 0000000..18593c4 --- /dev/null +++ b/OpenSet/56_long_code2.pas @@ -0,0 +1,409 @@ +program main; +var + a: array[0..4, 0..19999] of integer; + ans: integer; +begin + a[4, 19999] := 1; + ans := + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1] + a[2 * 2, 20000 - 1]; + write(ans); +end. \ No newline at end of file diff --git a/OpenSet/57_many_params.pas b/OpenSet/57_many_params.pas new file mode 100644 index 0000000..2e2fe03 --- /dev/null +++ b/OpenSet/57_many_params.pas @@ -0,0 +1,119 @@ +program main; +var +arr: array [0..31, 0..1] of integer; +i: integer; + +function param32_rec(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16, + a17,a18,a19,a20,a21,a22,a23,a24,a25,a26,a27,a28,a29,a30, + a31,a32: integer): integer; +begin + if a1 = 0 then + param32_rec := a2 + else + param32_rec := param32_rec(a1 - 1, (a2 + a3) mod 998244353, a4, a5, a6, a7, a8, a9, + a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, + a21, a22, a23, a24, a25, a26, a27, a28, a29, a30, a31, + a32, 0); +end; + +function param32_arr: integer; +var sum: integer; +begin + sum := arr[0, 0] + arr[0, 1]; + sum := sum + arr[1, 0] + arr[1, 1]; + sum := sum + arr[2, 0] + arr[2, 1]; + sum := sum + arr[3, 0] + arr[3, 1]; + sum := sum + arr[4, 0] + arr[4, 1]; + sum := sum + arr[5, 0] + arr[5, 1]; + sum := sum + arr[6, 0] + arr[6, 1]; + sum := sum + arr[7, 0] + arr[7, 1]; + sum := sum + arr[8, 0] + arr[8, 1]; + sum := sum + arr[9, 0] + arr[9, 1]; + sum := sum + arr[10, 0] + arr[10, 1]; + sum := sum + arr[11, 0] + arr[11, 1]; + sum := sum + arr[12, 0] + arr[12, 1]; + sum := sum + arr[13, 0] + arr[13, 1]; + sum := sum + arr[14, 0] + arr[14, 1]; + sum := sum + arr[15, 0] + arr[15, 1]; + sum := sum + arr[16, 0] + arr[16, 1]; + sum := sum + arr[17, 0] + arr[17, 1]; + sum := sum + arr[18, 0] + arr[18, 1]; + sum := sum + arr[19, 0] + arr[19, 1]; + sum := sum + arr[20, 0] + arr[20, 1]; + sum := sum + arr[21, 0] + arr[21, 1]; + sum := sum + arr[22, 0] + arr[22, 1]; + sum := sum + arr[23, 0] + arr[23, 1]; + sum := sum + arr[24, 0] + arr[24, 1]; + sum := sum + arr[25, 0] + arr[25, 1]; + sum := sum + arr[26, 0] + arr[26, 1]; + sum := sum + arr[27, 0] + arr[27, 1]; + sum := sum + arr[28, 0] + arr[28, 1]; + sum := sum + arr[29, 0] + arr[29, 1]; + sum := sum + arr[30, 0] + arr[30, 1]; + sum := sum + arr[31, 0] + arr[31, 1]; + param32_arr := sum; +end; + +function param16(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,a11,a12,a13,a14,a15,a16: integer): integer; +var arr2: array[0..15] of integer; +begin + arr2[0] := a1; + arr2[1] := a2; + arr2[2] := a3; + arr2[3] := a4; + arr2[4] := a5; + arr2[5] := a6; + arr2[6] := a7; + arr2[7] := a8; + arr2[8] := a9; + arr2[9] := a10; + arr2[10] := a11; + arr2[11] := a12; + arr2[12] := a13; + arr2[13] := a14; + arr2[14] := a15; + arr2[15] := a16; + param16 := param32_rec(arr2[0], arr2[1], arr2[2], arr2[3], arr2[4], arr2[5], arr2[6], + arr2[7], arr2[8], arr2[9], arr2[10], arr2[11], arr2[12], arr2[13], + arr2[14], arr2[15], a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, + a11, a12, a13, a14, a15, a16); +end; + +function getint(var index: integer): integer; +var input: array[0..15] of integer; +begin + input[0] := 17; + input[1] := 13; + input[2] := 80; + input[3] := 55; + input[4] := 81; + input[5] := 91; + input[6] := 95; + input[7] := 58; + input[8] := 13; + input[9] := 5; + input[10] := 63; + input[11] := 19; + input[12] := 54; + input[13] := 45; + input[14] := 67; + input[15] := 63; + index := index + 1; + getint := input[index - 1]; +end; + +begin + i := 0; + arr[0, 0] := param16(getint(i), getint(i), getint(i), getint(i), getint(i), + getint(i), getint(i), getint(i), getint(i), getint(i), + getint(i), getint(i), getint(i), getint(i), getint(i), + getint(i)); + arr[0, 1] := 8848; + for i := 1 to 31 do + begin + arr[i, 0] := arr[i - 1, 1] - 1; + arr[i, 1] := arr[i - 1, 0] - 2; + end; + write(param32_arr); +end. + diff --git a/OpenSet/58_many_params2.pas b/OpenSet/58_many_params2.pas new file mode 100644 index 0000000..c755a25 --- /dev/null +++ b/OpenSet/58_many_params2.pas @@ -0,0 +1,44 @@ +program main; +var ret: integer; +a: array[0..60, 0..66] of integer; +b: array[0..52, 0..58] of integer; + +function func(aa: integer; c: integer; e, f: integer; h, i: integer): integer; +var + index: integer; +begin + index := 0; + while (index < 10) do + begin + write(b[aa, index]); + index := index + 1; + end; + + write(a[17, c]); + + while (i < 10) do + begin + b[6, i] := h * 128875 mod 3724; + i := i + 1; + h := h + 7; + end; + + func := e + f; +end; + + +begin + a[17, 1] := 6; + a[17, 3] := 7; + a[17, 4] := 4; + a[17, 7] := 9; + a[17, 11] := 11; + + b[6, 1] := 1; + b[6, 2] := 2; + b[6, 3] := 3; + b[6, 9] := 9; + + ret := func(a[17, 1], a[17, 3],b[6, 3], b[6, 0], b[34, 4], b[51, 18]) * 3; + write(ret); +end. diff --git a/OpenSet/59_many_globals.pas b/OpenSet/59_many_globals.pas new file mode 100644 index 0000000..12c8ebf --- /dev/null +++ b/OpenSet/59_many_globals.pas @@ -0,0 +1,89 @@ +program main; +var +a0,a1,a2,a3,a4,a5,a6,a7,a8,a9:integer; +a10,a11,a12,a13,a14,a15,a16,a17,a18,a19:integer; +a20,a21,a22,a23,a24,a25,a26,a27,a28,a29:integer; +a30,a31,a32,a33,a34,a35,a36,a37,a38,a39:integer; + +function testParam8(a0,a1,a2,a3,a4,a5,a6,a7: integer): integer; +begin + testParam8 := a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7; +end; + +function testParam16(a0,a1,a2,a3,a4,a5,a6,a7 + ,a8,a9,a10,a11,a12,a13,a14,a15: integer):integer; +begin + testParam16 := a0 + a1 + a2 - a3 - a4 - a5 - a6 - a7 + + a8 + a9 + a10 + a11 + a12 + a13 + a14 + a15; +end; + +function testParam32(a0,a1,a2,a3,a4,a5,a6,a7 + ,a8,a9,a10,a11,a12,a13,a14,a15, + a16,a17,a18,a19,a20,a21,a22,a23, + a24,a25,a26,a27,a28,a29,a30,a31: integer):integer; +begin + testParam32 := a0 + a1 + a2 + a3 + a4 + a5 + a6 + a7 + + a8 + a9 + a10 + a11 + a12 + a13 + a14 + a15 + + a16 + a17 - a18 - a19 - a20 - a21 - a22 + a23 + + a24 + a25 + a26 + a27 + a28 + a29 + a30 + a31; +end; + +begin + a0 := 0; + a1 := 1; + a2 := 2; + a3 := 3; + a4 := 4; + a5 := 5; + a6 := 6; + a7 := 7; + a8 := 8; + a9 := 9; + a10 := 0; + a11 := 1; + a12 := 2; + a13 := 3; + a14 := 4; + a15 := 5; + a16 := 6; + a17 := 7; + a18 := 8; + a19 := 9; + a20 := 0; + a21 := 1; + a22 := 2; + a23 := 3; + a24 := 4; + a25 := 5; + a26 := 6; + a27 := 7; + a28 := 8; + a29 := 9; + a30 := 0; + a31 := 1; + + a32 := 4; + a33 := 5; + a34 := 6; + a35 := 7; + a36 := 8; + a37 := 9; + a38 := 0; + a39 := 1; + a0 := testParam8(a0, a1, a2, a3, a4, a5, a6, a7); + write(a0); + a0 := testParam16(a32, a33, a34, a35, + a36, a37, a38, a39, + a8, a9, a10, a11, + a12, a13, a14, a15); + write(a0); + a0 := testParam32(a0, a1, a2, a3, + a4, a5, a6, a7, + a8, a9, a10, a11, + a12, a13, a14, a15, + a16, a17, a18, a19, + a20, a21, a22, a23, + a24, a25, a26, a27, + a28, a29, a30, a31); + write(a0); +end. diff --git a/OpenSet/60_many_locals.pas b/OpenSet/60_many_locals.pas new file mode 100644 index 0000000..60f8681 --- /dev/null +++ b/OpenSet/60_many_locals.pas @@ -0,0 +1,97 @@ +program main; +var + a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x:integer; + sum,sum1,sum2,sum3:integer; + +function foo:integer; +var +arr: array[0..15] of integer; +a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p: integer; +sum1,sum2:integer; +begin + arr[0] := 0; + arr[1] := 1; + arr[2] := 2; + arr[3] := 3; + arr[4] := 0; + arr[5] := 1; + arr[6] := 2; + arr[7] := 3; + arr[8] := 0; + arr[9] := 1; + arr[10] := 2; + arr[11] := 3; + arr[12] := 0; + arr[13] := 1; + arr[14] := 2; + arr[15] := 3; + a := 3; + b := 7; + c := 5; + d := 6; + e := 1; + f := 0; + g := 3; + h := 5; + i := 4; + j := 2; + k := 7; + l := 9; + m := 8; + n := 1; + o := 4; + p := 6; + sum1 := a + b + c + d + e + f + g + h; + sum2 := i + j + k + l + m + n + o + p; + + foo := sum1 + sum2 + arr[a]; +end; + +begin + a := 3; + b := 7; + c := 5; + d := 6; + e := 1; + f := 0; + g := 3; + h := 5; + i := 4; + j := 2; + k := 7; + l := 9; + m := 8; + n := 1; + o := 4; + p := 6; + sum1 := a + b + c + d + e + f + g + h; + sum2 := i + j + k + l + m + n + o + p; + + sum1 := sum1 + foo(); + + q := 4; + r := 7; + s := 2; + t := 5; + u := 8; + v := 0; + w := 6; + x := 3; + + sum2 := sum2 + foo(); + + a := i; + b := j; + c := k; + d := l; + e := m; + f := n; + g := o; + h := p; + + sum3 := q + r + s + t + u + v + w + x; + + sum := sum1 + sum2 + sum3; + + write(sum); +end. \ No newline at end of file diff --git a/OpenSet/61_many_locals2.pas b/OpenSet/61_many_locals2.pas new file mode 100644 index 0000000..19994cb --- /dev/null +++ b/OpenSet/61_many_locals2.pas @@ -0,0 +1,73 @@ +program main; +var n,ret:integer; +b:integer; +a0,a1,a2,a3,a4,a5,a6,a7,a8,a9:integer; +a10,a11,a12,a13,a14,a15,a16,a17,a18,a19:integer; +a20,a21,a22,a23,a24,a25,a26,a27,a28,a29:integer; +begin + b := 5; + ret := 0; + a0 := 0; + a1 := a0 + 1; + a2 := a1 + 1; + a3 := a2 + 1; + a4 := a3 + 1; + a5 := a4 + 1; + a6 := a5 + 1; + a7 := a6 + 1; + a8 := a7 + 1; + a9 := a8 + 1; + a10 := a9 + 1; + a11 := a10 + 1; + a12 := a11 + 1; + a13 := a12 + 1; + a14 := a13 + 1; + a15 := a14 + 1; + a16 := a15 + 1; + a17 := a16 + 1; + a18 := a17 + 1; + a19 := a18 + 1; + a20 := a19 + 1; + a21 := a20 + 1; + a22 := a21 + 1; + a23 := a22 + 1; + a24 := a23 + 1; + a25 := a24 + 1; + a26 := a25 + 1; + a27 := a26 + 1; + a28 := a27 + 1; + a29 := a28 + 1; + write(a0); + write(a1); + write(a2); + write(a3); + write(a4); + write(a5); + write(a6); + write(a7); + write(a8); + write(a9); + write(a10); + write(a11); + write(a12); + write(a13); + write(a14); + write(a15); + write(a16); + write(a17); + write(a18); + write(a19); + write(a20); + write(a21); + write(a22); + write(a23); + write(a24); + write(a25); + write(a26); + write(a27); + write(a28); + write(a29); + write(b); + ret := a25; + write(ret); +end. \ No newline at end of file diff --git a/OpenSet/62_register_alloc.pas b/OpenSet/62_register_alloc.pas new file mode 100644 index 0000000..8228ee6 --- /dev/null +++ b/OpenSet/62_register_alloc.pas @@ -0,0 +1,138 @@ +program main; +var +a0,a1,a2,a3,a4,a5,a6,a7,a8,a9:integer; +a10,a11,a12,a13,a14,a15,a16,a17,a18,a19:integer; +a20,a21,a22,a23,a24,a25,a26,a27,a28,a29:integer; +a30,a31,a32:integer; +a,b:integer; + + +function func(a,b:integer):integer; +var + i:integer; + c1,c2,c3,c4:integer; + d1,d2,d3,d4:integer; + e1,e2,e3,e4:integer; + f1,f2,f3,f4:integer; + g1,g2,g3,g4:integer; + h1,h2,h3,h4:integer; + i1,i2,i3,i4:integer; + j1,j2,j3,j4:integer; + k1,k2,k3,k4:integer; +begin + c1 := 1; + c2 := 2; + c3 := 3; + c4 := 4; + d1 := 1 + c1 + a1; + d2 := 2 + c2 + a2; + d3 := 3 + c3 + a3; + d4 := 4 + c4 + a4; + e1 := 1 + d1 + a5; + e2 := 2 + d2 + a6; + e3 := 3 + d3 + a7; + e4 := 4 + d4 + a8; + f1 := 1 + e1 + a9; + f2 := 2 + e2 + a10; + f3 := 3 + e3 + a11; + f4 := 4 + e4 + a12; + g1 := 1 + f1 + a13; + g2 := 2 + f2 + a14; + g3 := 3 + f3 + a15; + g4 := 4 + f4 + a16; + h1 := 1 + g1 + a17; + h2 := 2 + g2 + a18; + h3 := 3 + g3 + a19; + h4 := 4 + g4 + a20; + i1 := 1 + h1 + a21; + i2 := 2 + h2 + a22; + i3 := 3 + h3 + a23; + i4 := 4 + h4 + a24; + j1 := 1 + i1 + a25; + j2 := 2 + i2 + a26; + j3 := 3 + i3 + a27; + j4 := 4 + i4 + a28; + k1 := 1 + j1 + a29; + k2 := 2 + j2 + a30; + k3 := 3 + j3 + a31; + k4 := 4 + j4 + a32; + + i := a - b + 10; + k1 := 1 + j1 + a29; + k2 := 2 + j2 + a30; + k3 := 3 + j3 + a31; + k4 := 4 + j4 + a32; + j1 := 1 + i1 + a25; + j2 := 2 + i2 + a26; + j3 := 3 + i3 + a27; + j4 := 4 + i4 + a28; + i1 := 1 + h1 + a21; + i2 := 2 + h2 + a22; + i3 := 3 + h3 + a23; + i4 := 4 + h4 + a24; + h1 := 1 + g1 + a17; + h2 := 2 + g2 + a18; + h3 := 3 + g3 + a19; + h4 := 4 + g4 + a20; + g1 := 1 + f1 + a13; + g2 := 2 + f2 + a14; + g3 := 3 + f3 + a15; + g4 := 4 + f4 + a16; + f1 := 1 + e1 + a9; + f2 := 2 + e2 + a10; + f3 := 3 + e3 + a11; + f4 := 4 + e4 + a12; + e1 := 1 + d1 + a5; + e2 := 2 + d2 + a6; + e3 := 3 + d3 + a7; + e4 := 4 + d4 + a8; + d1 := 1 + c1 + a1; + d2 := 2 + c2 + a2; + d3 := 3 + c3 + a3; + d4 := 4 + c4 + a4; + d1 := 1 + c1 + a1; + d2 := 2 + c2 + a2; + d3 := 3 + c3 + a3; + d4 := 4 + c4 + a4; + func := i + c1 + c2 + c3 + c4 - d1 - d2 - d3 - d4 + e1 + e2 + e3 + e4 - f1 - f2 - f3 - f4 + g1 + g2 + g3 + g4 - h1 - h2 - h3 - h4 + i1 + i2 + i3 + i4 - j1 - j2 - j3 - j4 + k1 + k2 + k3 + k4 + a1 - a2 + a3 - a4 + a5 - a6 + a7 - a8 + a9 - a10 + a11 - a12 + a13 - a14 + a15 - a16 + a17 - a18 + a19 - a20 + a21 - a22 + a23 - a24 + a25 - a26 + a27 - a28 + a29 - a30 + a31 - a32; +end; + +begin +a0 := 0; + a1 := 1; + a2 := 2; + a3 := 3; + a4 := 4; + a5 := 5; + a6 := 6; + a7 := 7; + a8 := 8; + a9 := 9; + a10 := 10; + a11 := 11; + a12 := 12; + a13 := 13; + a14 := 14; + a15 := 15; + a16 := 16; + a17 := 1; + a18 := 2; + a19 := 3; + a20 := 4; + a21 := 5; + a22 := 6; + a23 := 7; + a24 := 8; + a25 := 9; + a26 := 10; + a27 := 11; + a28 := 12; + a29 := 13; + a30 := 14; + a31 := 15; + a32 := 16; + a := 1; + b := a + 2 * 9; + a := func(a,b); + write(a); +end. diff --git a/OpenSet/63_nested_calls.pas b/OpenSet/63_nested_calls.pas new file mode 100644 index 0000000..12018d3 --- /dev/null +++ b/OpenSet/63_nested_calls.pas @@ -0,0 +1,93 @@ +program main; +var i, i1, i2, i3, i4, a: integer; +arr: array [0..9] of integer; + +function func1(x, y, z: integer): integer; +begin + if z = 0 then + func1 := x * y + else + func1 := func1(x, y - z, 0); +end; + +function func2(x, y: integer): integer; +begin + if y <> 0 then + func2 := func2(x mod y, 0) + else + func2 := x; +end; + +function func3(x, y: integer): integer; +begin + if y = 0 then + func3 := x + 1 + else + func3 := func3(x + y, 0); +end; + +function func4(x, y, z: integer): integer; +begin + if x <> 0 then + func4 := y + else + func4 := z; +end; + +function func5(x: integer): integer; +begin + func5 := -x; +end; + +function func6(x, y: integer): integer; +begin + if (x <> 0) and (y <> 0) then + func6 := 1 + else + func6 := 0; +end; + +function func7(x: integer): integer; +begin + if x = 0 then + func7 := 1 + else + func7 := 0; +end; + +begin + i1 := 1; + i2 := 2; + i3 := 3; + i4 := 4; + for i := 0 to 9 do + arr[i] := i + 1; + a := func1( + // this + func2( + // is + func1( + // comment + func3(func4(func5(func3(func2(func6(func7(i1), func5(i2)), i3), + // this + i4)), + // is + arr[0], + // function + func1(func2(func3(func4(func5(arr[1]), + // call + func6(arr[2], func7(arr[3])), + func2(arr[4], func7(arr[5]))), + arr[6]), + arr[7]), + func3(arr[8], func7(arr[9])), i1)), + func2(i2, func3(func7(i3), i4))), + arr[0], arr[1]), + arr[2]), + arr[3], + func3(func2(func1(func2(func3(arr[4], func5(arr[5])), func5(arr[6])), + arr[7], func7(arr[8])), + func5(arr[9])), + i1)); + write(a); +end. diff --git a/OpenSet/64_nested_loops.pas b/OpenSet/64_nested_loops.pas new file mode 100644 index 0000000..a122cfe --- /dev/null +++ b/OpenSet/64_nested_loops.pas @@ -0,0 +1,107 @@ +program main; +var +arr1: array[0..9,0..1,0..2,0..3,0..4,0..5,0..1] of integer; +arr2: array[0..9,0..1,0..2,0..1,0..3,0..7,0..6] of integer; +x,y,h,i,j,k,l,m,n,ret:integer; + +procedure loop1(x,y:integer); +var +a,b,c,d,e,f,g:integer; +begin +for a := 0 to x-1 do + begin + for b := 0 to 1 do + begin + for c := 0 to 2 do + begin + for d := 0 to 3 do + begin + for e := 0 to 4 do + begin + for f := 0 to 5 do + begin + for g := 0 to 1 do + begin + arr1[a, b, c, d, e, f, g] := a + b + c + d + e + f + g + x + y; + end; + end; + end; + end; + end; + end; + end; +end; + +procedure loop2; +var +a,b,c,d,e,f,g:integer; +begin +for a := 0 to 9 do + begin + for b := 0 to 1 do + begin + for c := 0 to 2 do + begin + for d := 0 to 1 do + begin + for e := 0 to 3 do + begin + for f := 0 to 7 do + begin + for g := 0 to 6 do + begin + arr2[a, b, c, d, e, f, g] := a + b + d + g; + end; + end; + end; + end; + end; + end; + end; +end; + +function loop3(h,i,j,k,l,m,n: integer):integer; +var ans,a,b,c,d,e,f,g: integer; +begin +ans := 0; + for a := 0 to h-1 do + begin + for b := 0 to i-1 do + begin + for c := 0 to j-1 do + begin + for d := 0 to k-1 do + begin + for e := 0 to l-1 do + begin + for f := 0 to m-1 do + begin + for g := 0 to n-1 do + begin + ans := (ans mod 817) + arr1[a, b, c, d, e, f, g] + arr2[a, b, c, d, e, f, g]; + end; + end; + end; + end; + end; + end; + end; + loop3 := ans; +end; + +begin + ret := 0; + x := 1; + y := 2; + h := 3; + i := 4; + j := 5; + k := 6; + l := 7; + m := 8; + n := 9; + loop1(x,y); + loop2(); + ret := loop3(h,i,j,k,l,m,n); + write(ret); +end. \ No newline at end of file diff --git a/OpenSet/65_float.pas b/OpenSet/65_float.pas new file mode 100644 index 0000000..28b7c6d --- /dev/null +++ b/OpenSet/65_float.pas @@ -0,0 +1,75 @@ +program main; +const +RADIUS = 5.5; PI = 03.141595653589793; EPS = 0.000001; +EVAL1 = 95.033188; +CONV1 = 233; +MAX = 1000000000; +TWO = 2.9; THREE = 3; FIVE = 5; +e = 'e'; o = 'o'; + +var p:integer; +arr: array[0..9] of real; +input, area, area_trunc: real; + +function float_abs(x: real):real; +begin + if x < 0 then + float_abs := -x + else + float_abs := x; +end; + +function circle_area(radius: integer):real; +begin + circle_area := (PI * radius *radius + (radius * radius) * PI) / 2; +end; + +function float_eq(a,b: real):integer; +begin + if float_abs(a - b) < EPS then + float_eq := 1 + else + float_eq := 0 +end; + +procedure error(); +begin + write(e); +end; + +procedure ok(); +begin + write(o); +end; + +procedure assert(cond: integer); +begin + if cond = 0 then + error() + else + ok(); +end; + +begin + assert(float_eq(circle_area(5), circle_area(FIVE))); + if 1.5 <> 0.0 then + ok(); + if (not (3.3 = 0.0)) then + ok(); + if (0.0 <> 0.0) and (3 <> 0.0) then + error(); + if (0 <> 0.0) or (0.3 <> 0.0) then + ok(); + + p := 0; + arr[0] := 1.0; + arr[1] := 2.0; + input := 0.520; + area := PI * input * input; + area_trunc := circle_area(0); + arr[p] := arr[p] + input; + + write(area); + write(area_trunc); + write(arr[0]); +end. diff --git a/OpenSet/66_matrix_add.pas b/OpenSet/66_matrix_add.pas new file mode 100644 index 0000000..2bb7ca9 --- /dev/null +++ b/OpenSet/66_matrix_add.pas @@ -0,0 +1,56 @@ +program ArrayAddition; + +var + M, L, N: integer; + a0, a1, a2, b0, b1, b2, c0, c1, c2: array[0..2] of integer; + i, x: integer; + +function add: integer; +var + i: integer; +begin + for i := 0 to M - 1 do + begin + c0[i] := a0[i] + b0[i]; + c1[i] := a1[i] + b1[i]; + c2[i] := a2[i] + b2[i]; + end; + + add := 0; +end; + +begin + N := 3; + M := 3; + L := 3; + + for i := 0 to M - 1 do + begin + a0[i] := i; + a1[i] := i; + a2[i] := i; + b0[i] := i; + b1[i] := i; + b2[i] := i; + end; + + add; + + for i := 0 to N - 1 do + begin + x := c0[i]; + write(x); + end; + + for i := 0 to N - 1 do + begin + x := c1[i]; + write(x); + end; + + for i := 0 to N - 1 do + begin + x := c2[i]; + write(x); + end; +end. diff --git a/OpenSet/67_matrix_sub.pas b/OpenSet/67_matrix_sub.pas new file mode 100644 index 0000000..ed4a89f --- /dev/null +++ b/OpenSet/67_matrix_sub.pas @@ -0,0 +1,60 @@ +program Subtraction; +var + N, M, L, i, x: integer; + a0: array [0..2] of integer; + a1: array [0..2] of integer; + a2: array [0..2] of integer; + b0: array [0..2] of integer; + b1: array [0..2] of integer; + b2: array [0..2] of integer; + c0: array [0..5] of integer; + c1: array [0..2] of integer; + c2: array [0..2] of integer; + +function sub: integer; +begin + for i := 0 to 2 do + begin + c0[i] := a0[i] - b0[i]; + c1[i] := a1[i] - b1[i]; + c2[i] := a2[i] - b2[i]; + end; + + sub := 0; +end; + +begin + N := 3; + M := 3; + L := 3; + + for i := 0 to 2 do + begin + a0[i] := i; + a1[i] := i; + a2[i] := i; + b0[i] := i; + b1[i] := i; + b2[i] := i; + end; + + sub; + + for i := 0 to 2 do + begin + x := c0[i]; + write(x); + end; + + for i := 0 to 2 do + begin + x := c1[i]; + write(x); + end; + + for i := 0 to 2 do + begin + x := c2[i]; + write(x); + end; +end. diff --git a/OpenSet/68_matrix_mul.pas b/OpenSet/68_matrix_mul.pas new file mode 100644 index 0000000..70bc06e --- /dev/null +++ b/OpenSet/68_matrix_mul.pas @@ -0,0 +1,56 @@ +program MatrixMultiplication; + +var + M, N, L: integer; +i, x: integer; + a0, a1, a2, b0, b1, b2, c0, c1, c2: array[0..2] of integer; + + +function MultiplyMatrices: integer; +var + i: integer; +begin + for i := 0 to M - 1 do + begin + c0[i] := a0[0] * b0[i] + a0[1] * b1[i] + a0[2] * b2[i]; + c1[i] := a1[0] * b0[i] + a1[1] * b1[i] + a1[2] * b2[i]; + c2[i] := a2[0] * b0[i] + a2[1] * b1[i] + a2[2] * b2[i]; + end; + MultiplyMatrices := 0; +end; + +begin + N := 3; + M := 3; + L := 3; + + for i := 0 to M - 1 do + begin + a0[i] := i; + a1[i] := i; + a2[i] := i; + b0[i] := i; + b1[i] := i; + b2[i] := i; + end; + + MultiplyMatrices; + + for i := 0 to N - 1 do + begin + x := c0[i]; + write(x); + end; + + for i := 0 to N - 1 do + begin + x := c1[i]; + write(x); + end; + + for i := 0 to N - 1 do + begin + x := c2[i]; + write(x); + end; +end. diff --git a/OpenSet/69_matrix_tran.pas b/OpenSet/69_matrix_tran.pas new file mode 100644 index 0000000..be60ce2 --- /dev/null +++ b/OpenSet/69_matrix_tran.pas @@ -0,0 +1,59 @@ +program main; + +var + M, L, N: integer; + a0, a1, a2, b0, b1, b2, c0, c1, c2: array[0..2] of integer; + i, x: integer; + +function tran: integer; +var + i: integer; +begin + for i := 0 to M-1 do + begin + c1[2] := a2[1]; + c2[1] := a1[2]; + c0[1] := a1[0]; + c0[2] := a2[0]; + c1[0] := a0[1]; + c2[0] := a0[2]; + c1[1] := a1[1]; + c2[2] := a2[2]; + c0[0] := a0[0]; + end; + + tran := 0; +end; + +begin + N := 3; + M := 3; + L := 3; + + for i := 0 to M-1 do + begin + a0[i] := i; + a1[i] := i; + a2[i] := i; + b0[i] := i; + b1[i] := i; + b2[i] := i; + end; + + tran; + + for i := 0 to N-1 do + begin + write(c0[i]); + end; + + for i := 0 to N-1 do + begin + write(c1[i]); + end; + + for i := 0 to N-1 do + begin + write(c2[i]); + end; +end. diff --git a/OpenSet/70_comment2.pas b/OpenSet/70_comment2.pas new file mode 100644 index 0000000..a9db183 --- /dev/null +++ b/OpenSet/70_comment2.pas @@ -0,0 +1,10 @@ +// skipher +// int main(){ +program main; +begin + { ret := 0; + ret := 1; + ret := 2; + } + write(3); +end. diff --git a/OpenSet/71_multiple_returns.pas b/OpenSet/71_multiple_returns.pas new file mode 100644 index 0000000..84a4cfc --- /dev/null +++ b/OpenSet/71_multiple_returns.pas @@ -0,0 +1,13 @@ +program main; +const + AA = 4; +var + a, b, c, d: integer; +begin + b := 8; + c := 12; + a := b + c; + d := 9; + a := (AA - b) * c; + write(a); +end. diff --git a/OpenSet/72_branch.pas b/OpenSet/72_branch.pas new file mode 100644 index 0000000..9268e4d --- /dev/null +++ b/OpenSet/72_branch.pas @@ -0,0 +1,59 @@ +program main; +var + ret, a, b, c, d, e, f: integer; +begin + ret := 0; + a := 1; + b := 2; + c := 3; + d := 4; + e := 5; + f := 6; + + if (a * b + c < 6) and (d <> 0) then + begin + if (e <> 0) or (not(a + 0 <> 0)) then + begin + if (c = 2) and (d + e > 2) then + ret := 3 + else + begin + if (f mod c <> 0) and (e <> 0) then + ret := 4 + else + begin + if (d div b + a >= 2) then + begin + if (e - f >= 0) or (d > 4) then + ret := 6 + else + begin + if (c <> f) then + begin + if (b + e * d > 10) then + begin + if (f = 0) then + ret := 9 + else + ret := 10; + end + else + ret := 8; + end + else + ret := 7; + end; + end + else + ret := 5; + end; + end; + end + else + ret := 2; + end + else + ret := 1; + + write(ret); +end. diff --git a/OpenSet/73_param_name.pas b/OpenSet/73_param_name.pas new file mode 100644 index 0000000..8e399bd --- /dev/null +++ b/OpenSet/73_param_name.pas @@ -0,0 +1,13 @@ +program main; +var ret:integer; + +function Fn(f: integer): integer; +begin + Fn := f * 2; +end; + +begin + ret := 0; + ret := Fn(10); + write(ret); +end. diff --git a/OpenSet/74_func_name.pas b/OpenSet/74_func_name.pas new file mode 100644 index 0000000..bba9636 --- /dev/null +++ b/OpenSet/74_func_name.pas @@ -0,0 +1,13 @@ +program main; +var ret, f: integer; +function fn:integer; +begin + fn := 10; +end; + +begin + ret := 0; + f := 20; + ret := f; + write(ret); +end. diff --git a/OpenSet/75_arr_init_nd.pas b/OpenSet/75_arr_init_nd.pas new file mode 100644 index 0000000..f393e73 --- /dev/null +++ b/OpenSet/75_arr_init_nd.pas @@ -0,0 +1,146 @@ +program main; +var + ret: integer; + a: array[1..5, 1..3] of integer; + b: array[1..5, 1..3] of integer; + c: array[1..5, 1..3] of integer; + d: array[1..5, 1..3] of integer; + e: array[1..5, 1..3] of integer; + f: array[1..5] of integer; + g: array[1..5, 1..3] of integer; + h: array[1..3] of integer; + i: array[1..2, 1..3, 1..4] of integer; +begin + ret := 0; + + a[1, 1] := 0; + a[1, 2] := 0; + a[1, 3] := 0; + a[2, 1] := 0; + a[2, 2] := 0; + a[2, 3] := 0; + a[3, 1] := 0; + a[3, 2] := 0; + a[3, 3] := 0; + a[4, 1] := 0; + a[4, 2] := 0; + a[4, 3] := 0; + a[5, 1] := 0; + a[5, 2] := 0; + a[5, 3] := 0; + + b[1, 1] := 0; + b[1, 2] := 0; + b[1, 3] := 0; + b[2, 1] := 0; + b[2, 2] := 0; + b[2, 3] := 0; + b[3, 1] := 0; + b[3, 2] := 0; + b[3, 3] := 0; + b[4, 1] := 0; + b[4, 2] := 0; + b[4, 3] := 0; + b[5, 1] := 0; + b[5, 2] := 0; + b[5, 3] := 0; + + c[1, 1] := 1; + c[1, 2] := 2; + c[1, 3] := 3; + c[2, 1] := 4; + c[2, 2] := 5; + c[2, 3] := 6; + c[3, 1] := 7; + c[3, 2] := 8; + c[3, 3] := 9; + c[4, 1] := 10; + c[4, 2] := 11; + c[4, 3] := 12; + c[5, 1] := 13; + c[5, 2] := 14; + c[5, 3] := 15; + + d[1, 1] := 1; + d[1, 2] := 2; + d[1, 3] := 3; + d[2, 1] := 4; + d[2, 2] := 5; + d[2, 3] := 6; + d[3, 1] := 7; + d[3, 2] := 8; + d[3, 3] := 9; + d[4, 1] := 10; + d[4, 2] := 11; + d[4, 3] := 12; + d[5, 1] := 13; + d[5, 2] := 14; + d[5, 3] := 15; + + e[1, 1] := 1; + e[1, 2] := 2; + e[1, 3] := 3; + e[2, 1] := 4; + e[2, 2] := 5; + e[2, 3] := 6; + e[3, 1] := 7; + e[3, 2] := 8; + e[3, 3] := 9; + e[4, 1] := 10; + e[4, 2] := 11; + e[4, 3] := 12; + e[5, 1] := 13; + e[5, 2] := 14; + e[5, 3] := 15; + + f[1] := 0; + f[2] := 0; + f[3] := 0; + f[4] := 0; + f[5] := 0; + + g[1, 1] := 1; + g[1, 2] := 2; + g[1, 3] := 3; + g[2, 1] := 4; + g[2, 2] := 0; + g[2, 3] := 0; + g[3, 1] := 7; + g[3, 2] := 0; + g[3, 3] := 0; + g[4, 1] := 10; + g[4, 2] := 11; + g[4, 3] := 12; + g[5, 1] := 0; + g[5, 2] := 0; + g[5, 3] := 0; + + h[1] := 0; + h[2] := 0; + h[3] := 0; + + i[1, 1, 1] := 1; + i[1, 1, 2] := 2; + i[1, 1, 3] := 3; + i[1, 1, 4] := 4; + i[1, 2, 1] := 5; + i[1, 2, 2] := 0; + i[1, 2, 3] := 0; + i[1, 2, 4] := 0; + i[2, 1, 1] := 0; + i[2, 1, 2] := 0; + i[2, 1, 3] := 0; + i[2, 1, 4] := 0; + i[2, 2, 1] := 0; + i[2, 2, 2] := 0; + i[2, 2, 3] := 0; + i[2, 2, 4] := 0; + i[2, 3, 1] := 0; + i[2, 3, 2] := 0; + i[2, 3, 3] := 0; + i[2, 3, 4] := 0; + + ret := 4; + + write(ret); +end. diff --git a/OpenSet/76_global_arr_init.pas b/OpenSet/76_global_arr_init.pas new file mode 100644 index 0000000..5b20ff2 --- /dev/null +++ b/OpenSet/76_global_arr_init.pas @@ -0,0 +1,89 @@ +program main; +var + ret: integer; + a0: array[0..2] of integer; + b0: array[0..3] of integer; + c0: array[0..6] of integer; + c: array[0..4, 0..2] of integer; + d: array[0..4, 0..2] of integer; + e: array[0..4, 0..2] of integer; + +procedure InitializeArrays; +begin + // Initialize arrays a0, b0, and c0 element by element + a0[0] := 0; + a0[1] := 0; + a0[2] := 0; + + b0[0] := 0; + b0[1] := 1; + b0[2] := 0; + b0[3] := 0; + + c0[0] := 2; + c0[1] := 8; + c0[2] := 6; + c0[3] := 3; + c0[4] := 9; + c0[5] := 1; + c0[6] := 5; + + // Initialize arrays c, d, and e element by element + c[0, 0] := 1; + c[0, 1] := 2; + c[0, 2] := 3; + c[1, 0] := 4; + c[1, 1] := 5; + c[1, 2] := 6; + c[2, 0] := 7; + c[2, 1] := 8; + c[2, 2] := 9; + c[3, 0] := 10; + c[3, 1] := 11; + c[3, 2] := 12; + c[4, 0] := 13; + c[4, 1] := 14; + c[4, 2] := 15; + + d[0, 0] := 1; + d[0, 1] := 2; + d[0, 2] := 3; + d[1, 0] := 4; + d[1, 1] := 5; + d[1, 2] := 6; + d[2, 0] := 7; + d[2, 1] := 8; + d[2, 2] := 9; + d[3, 0] := 10; + d[3, 1] := 11; + d[3, 2] := 12; + d[4, 0] := 13; + d[4, 1] := 14; + d[4, 2] := 15; + + e[0, 0] := 1; + e[0, 1] := 2; + e[0, 2] := 3; + e[1, 0] := 4; + e[1, 1] := 5; + e[1, 2] := 6; + e[2, 0] := 7; + e[2, 1] := 8; + e[2, 2] := 9; + e[3, 0] := 10; + e[3, 1] := 11; + e[3, 2] := 12; + e[4, 0] := 13; + e[4, 1] := 14; + e[4, 2] := 15; +end; + +begin + ret := 0; + + InitializeArrays; + + ret := 5; + + write(ret); +end. diff --git a/OpenSet/77_BST.pas b/OpenSet/77_BST.pas new file mode 100644 index 0000000..0d08744 --- /dev/null +++ b/OpenSet/77_BST.pas @@ -0,0 +1,143 @@ +program BinarySearchTree; + +var + value: array[0..9999] of integer; + left_child: array[0..9999] of integer; + right_child: array[0..9999] of integer; + now: integer; + ret, n, readN, i, root: integer; + +function search(root, x: integer): integer; +begin + if (root = -1) or (value[root] = x) then + search := root + else + begin + if (x > value[root]) then + search := search(right_child[root], x) + else + search := search(left_child[root], x); + end; +end; + +function find_minimum(root: integer): integer; +begin + if (root = -1) then + find_minimum := -1 + else + begin + if (left_child[root] <> -1) then + find_minimum := find_minimum(left_child[root]) + else + find_minimum := root; + end; +end; + +function new_node(x: integer): integer; +begin + value[now] := x; + left_child[now] := -1; + right_child[now] := -1; + new_node := now; + now := now + 1; +end; + +function insert(root, x: integer): integer; +begin + if (root = -1) then + insert := new_node(x) + else + begin + if (x > value[root]) then + right_child[root] := insert(right_child[root], x) + else + left_child[root] := insert(left_child[root], x); + end; + insert := root; +end; + +function delete_node(root, x: integer): integer; +var + tmp: integer; +begin + if (x > value[root]) then +begin + right_child[root] := delete_node(right_child[root], x); +end +else +begin + if (x < value[root]) then + begin + left_child[root] := delete_node(left_child[root], x); + end + else + begin + if (left_child[root] = -1) and (right_child[root] = -1) then + begin + delete_node := -1; + end + else + begin + if (left_child[root] = -1) or (right_child[root] = -1) then + begin + if (left_child[root] = -1) then + begin + delete_node := right_child[root]; + end + else + begin + delete_node := left_child[root]; + end; + end + else + begin + tmp := find_minimum(right_child[root]); + value[root] := value[tmp]; + right_child[root] := delete_node(right_child[root], value[tmp]); + end; + end; + end; +end; + delete_node := root; +end; + +procedure inorder(root: integer); +begin + if (root <> -1) then + begin + inorder(left_child[root]); + write(value[root], ' '); + inorder(right_child[root]); + end; +end; + + + +begin + ret := 0; + now := 0; + + read(n); + if (n = 0) then + ret := 0; + + read(readN); + root := new_node(readN); + + for i := 1 to n - 1 do + begin + read(readN); + insert(root, readN); + end; + + inorder(root); + + read(n); + for i := 1 to n do + begin + read(readN); + root := delete_node(root, readN); + end; + + inorder(root); +end. diff --git a/OpenSet/78_dp.pas b/OpenSet/78_dp.pas new file mode 100644 index 0000000..fefc47b --- /dev/null +++ b/OpenSet/78_dp.pas @@ -0,0 +1,58 @@ +program main; + +var + t: array[0..1004, 0..1] of integer; + dp: array[0..1004, 0..34] of integer; + TT, W, x, i, j, res: integer; + +function getint: integer; +var + n: integer; +begin + read(n); + getint := n; +end; + +begin + for i := 0 to 1004 do + begin + t[i, 0] := 0; + t[i, 1] := 0; + for j := 0 to 34 do + dp[i, j] := 0; + end; + + TT := getint(); + W := getint(); + for i := 1 to TT do + begin + x := getint(); + t[i, x mod 2] := 1; + dp[i, 0] := dp[i - 1, 0] + t[i, 1]; + end; + + for i := 1 to TT do + begin + for j := 1 to W do + begin + if (dp[i - 1, j] + t[i, (j + 1) mod 2] > dp[i - 1, j - 1] + t[i, (j + 1) mod 2]) then + begin + dp[i, j] := dp[i - 1, j] + t[i, (j + 1) mod 2]; + end + else + begin + dp[i, j] := dp[i - 1, j - 1] + t[i, (j + 1) mod 2]; + end; + end; + end; + + res := 0; + for j := 0 to W do + begin + if res < dp[TT, j] then + begin + res := dp[TT, j]; + end; + end; + write(res); +end. diff --git a/OpenSet/79_graph_coloring.pas b/OpenSet/79_graph_coloring.pas new file mode 100644 index 0000000..fe0dfcf --- /dev/null +++ b/OpenSet/79_graph_coloring.pas @@ -0,0 +1,91 @@ +program main; +const +space = 32; +ne = 'Not exist'; +var +graph: array[0..3, 0..3] of integer; +color: array[0..3] of integer; +i, m: integer; + +procedure printSolution(); +var i: integer; +begin + for i := 0 to 3 do + write(color[i]); +end; + +procedure printMessage(); +begin + write(ne); +end; + +function isSafe():integer; +var i,j: integer; +begin + isSafe := 1; + for i := 0 to 3 do + for j := i + 1 to 3 do + if (graph[i, j] <> 0) and (color[j] = color[i]) then + isSafe := 0; +end; + +function graphColoring(m, i: integer): integer; +var + j: integer; + foundSolution: boolean; +begin + foundSolution := false; + + if (i = 4) then + begin + if (isSafe() <> 0) then + begin + printSolution(); + graphColoring := 1; + foundSolution := True; + end; + end + else + begin + for j := 1 to m do + begin + color[i] := j; + if (graphColoring(m, i + 1) <> 0) then + begin + foundSolution := True; + Break; + end; + color[i] := 0; + end; + end; + + if foundSolution then + graphColoring := 1 + else + graphColoring := 0; +end; + + +begin + graph[0, 0] := 0; + graph[0, 1] := 1; + graph[0, 2] := 1; + graph[0, 3] := 1; + graph[1, 0] := 1; + graph[1, 1] := 0; + graph[1, 2] := 1; + graph[1, 3] := 0; + graph[2, 0] := 1; + graph[2, 1] := 1; + graph[2, 2] := 0; + graph[2, 3] := 1; + graph[3, 0] := 1; + graph[3, 1] := 0; + graph[3, 2] := 1; + graph[3, 3] := 0; + m := 3; + for i := 0 to 3 do + color[i] := 0; + if graphColoring(m, 0) = 0 then + printMessage; +end. diff --git a/OpenSet/80_k_smallest.pas b/OpenSet/80_k_smallest.pas new file mode 100644 index 0000000..dab23d2 --- /dev/null +++ b/OpenSet/80_k_smallest.pas @@ -0,0 +1,84 @@ +program FindSmallest; + +const + space = 32; + +var + arr: array[0..999] of integer; + n, k, i, low, high: integer; + +procedure swap(a, b: integer); +var + tmp: integer; +begin + tmp := arr[a]; + arr[a] := arr[b]; + arr[b] := tmp; +end; + +function findPivot(start, endIndex: integer): integer; +var + pivot, pIndex, i: integer; +begin + pivot := arr[endIndex]; + pIndex := start; + + for i := start to endIndex - 1 do + begin + if arr[i] <= pivot then + begin + swap(i, pIndex); + pIndex := pIndex + 1; + end; + end; + swap(pIndex, endIndex); + findPivot := pIndex; +end; + +procedure findSmallest(low, high, k, n: integer); +var + pIndex, i: integer; +begin + if low <> high then + begin + pIndex := findPivot(low, high); + if k = pIndex then + begin + for i := 0 to pIndex - 1 do + begin + write(arr[i]); + end; + end + else if k < pIndex then + begin + findSmallest(low, pIndex - 1, k, n); + end + else + begin + findSmallest(pIndex + 1, high, k, n); + end; + end; +end; + +function getint: integer; +var + n: integer; +begin + read(n); + getint := n; +end; + +begin + n := getint; + k := getint; + + for i := 0 to n - 1 do + begin + arr[i] := getint; + end; + + low := 0; + high := n - 1; + + findSmallest(low, high, k, n); +end. diff --git a/OpenSet/81_maximal_clique.pas b/OpenSet/81_maximal_clique.pas new file mode 100644 index 0000000..3778c78 --- /dev/null +++ b/OpenSet/81_maximal_clique.pas @@ -0,0 +1,60 @@ +program MaxClique; + +var + store: array[0..29] of integer; + n, m: integer; + graph: array[0..29, 0..29] of integer; + edges: array[0..599, 0..1] of integer; + i, ret: integer; + +function is_clique(num: integer): integer; +var + i, j: integer; +begin + is_clique := 1; + for i := 1 to num - 1 do + begin + for j := i + 1 to num - 1 do + begin + if graph[store[i], store[j]] = 0 then + is_clique := 0; + end; + end; +end; + +function maxCliques(i, k: integer): integer; +var + max_, j, tmp: integer; +begin + max_ := 0; + for j := 1 to n do + begin + store[k] := j; + if is_clique(k + 1) <> 0 then + begin + if k > max_ then + max_ := k; + tmp := maxCliques(j, k + 1); + if tmp > max_ then + max_ := tmp; + end; + end; + maxCliques := max_; +end; + +begin + read(n); + read(m); + for i := 0 to m - 1 do + begin + read(edges[i, 0]); + read(edges[i, 1]); + end; + for i := 0 to m - 1 do + begin + graph[edges[i, 0], edges[i, 1]] := 1; + graph[edges[i, 1], edges[i, 0]] := 1; + end; + ret := maxCliques(0, 1); + write(ret); +end. diff --git a/OpenSet/82_prim.pas b/OpenSet/82_prim.pas new file mode 100644 index 0000000..547b08b --- /dev/null +++ b/OpenSet/82_prim.pas @@ -0,0 +1,80 @@ +program main; +var +n, m: integer; +ret,i: integer; +u,v,c,fa: array [0..1004] of integer; + +function find(x: integer):integer; +var asdf: integer; +begin + if x = fa[x] then + find := x + else + begin + asdf := find(fa[x]); + fa[x] := asdf; + find := asdf; + end; +end; + +function same(x,y: integer):integer; +begin + x := find(x); + y := find(y); + if x = y then + same := 1 + else + same := 0; +end; + +function prim:integer; +var i,j,t,res: integer; +begin + for i := 0 to m - 1 do + begin + for j := i + 1 to m - 1 do + begin + if c[i] > c[j] then + begin + t := u[i]; + u[i] := u[j]; + u[j] := t; + t := v[i]; + v[i] := v[j]; + v[j] := t; + t := c[i]; + c[i] := c[j]; + c[j] := t; + end; + end; + end; + + for i := 1 to n do + fa[i] := i; + res := 0; + for i := 0 to m - 1 do + begin + if same(u[i], v[i]) = 0 then + begin + res := res + c[i]; + fa[find(u[i])] := v[i]; + end; + end; + + prim := res; +end; + +begin + ret := 0; + read(n); + read(m); + for i := 0 to m - 1 do + begin + read(u[i]); + read(v[i]); + read(c[i]); + end; + + ret := prim; + write(ret); +end. diff --git a/OpenSet/83_sort.pas b/OpenSet/83_sort.pas new file mode 100644 index 0000000..68807dc --- /dev/null +++ b/OpenSet/83_sort.pas @@ -0,0 +1,92 @@ +program main; +var +n,ret,i,t: integer; +x,a,b,c: array[0..100004] of integer; +cnt: array [0..400019] of integer; + +procedure sortA; +var i, j, t:integer; +begin + for i := 0 to n - 1 do + begin + for j := i + 1 to n - 1 do + begin + if a[i] > a[j] then + begin + t := a[i]; + a[i] := a[j]; + a[j] := t; + end; + end; + end; +end; + +procedure sortB; +var mx,i,j,now: integer; +begin + mx := -100; + for i := 0 to n - 1 do + begin + cnt[b[i]] := cnt[b[i]] + 1; + if b[i] > mx then + mx := b[i]; + end; + now := 0; + for i := 0 to mx do + begin + for j := 0 to cnt[i] - 1 do + begin + b[now] := i; + now := now + 1; + end; + end; +end; + +procedure sortC; +var i,j,id: integer; +begin + for i := 0 to n - 1 do + begin + id := i; + for j := i + 1 to n - 1 do + begin + if c[j] < c[id] then + id := j; + end; + t := c[i]; + c[i] := c[id]; + c[id] := t; + end; +end; + +begin + ret := 0; + read(n); + + for i := 0 to n - 1 do + begin + read(a[i]); + b[i] := a[i]; + c[i] := b[i]; + end; + + sortA; + sortB; + sortC; + + for i := 0 to n - 1 do + begin + b[i] := b[i] - a[i]; + c[i] := c[i] - b[i] -a[i]; + end; + + for i := 0 to n - 1 do + begin + if b[i] <> 0 then + ret := 1; + if c[i] <> 0 then + ret := 2; + end; + ret := 0; + write(ret); +end. diff --git a/OpenSet/84_union_find.pas b/OpenSet/84_union_find.pas new file mode 100644 index 0000000..93744ca --- /dev/null +++ b/OpenSet/84_union_find.pas @@ -0,0 +1,60 @@ +program main; + +var + parent: array[0..1004] of integer; + n, m, i, p, q, clusters: integer; + +function getint: integer; +begin + read(getint); +end; + +function find(root: integer): integer; +begin + if parent[root] = root then + find := root + else + begin + parent[root] := find(parent[root]); + find := parent[root]; + end; +end; + +procedure merge(p, q: integer); +var + root_p, root_q: integer; +begin + root_p := find(p); + root_q := find(q); + if root_p <> root_q then + begin + parent[root_q] := root_p; + end; +end; + +begin + n := getint(); + m := getint(); + + for i := 0 to n - 1 do + begin + parent[i] := i; + end; + + for i := 0 to m - 1 do + begin + p := getint(); + q := getint(); + merge(p, q); + end; + + clusters := 0; + for i := 0 to n - 1 do + begin + if parent[i] = i then + clusters := clusters + 1; + end; + + write(clusters); + read(clusters); +end. diff --git a/OpenSet/85_matrix_multiply.pas b/OpenSet/85_matrix_multiply.pas new file mode 100644 index 0000000..6a6c1ac --- /dev/null +++ b/OpenSet/85_matrix_multiply.pas @@ -0,0 +1,56 @@ +program main; + +var + a,b,res: array[1..100, 1..100] of integer; + n1, m1, n2, m2, i, j, k: integer; + +procedure matrix_multiply; +begin + for i := 1 to m1 do + begin + for j := 1 to n2 do + begin + for k := 1 to n1 do + begin + res[i][j] := res[i][j] + a[i][k] * b[k][j]; + end; + end; + end; +end; + +function getint: integer; +begin + read(getint); +end; + +begin + m1 := getint; + n1 := getint; + for i := 1 to m1 do + begin + for j := 1 to n1 do + begin + a[i][j] := getint; + end; + end; + + m2 := getint; + n2 := getint; + for i := 1 to m2 do + begin + for j := 1 to n2 do + begin + b[i][j] := getint; + end; + end; + + matrix_multiply; + + for i := 1 to m1 do + begin + for j := 1 to n2 do + begin + write(res[i][j]); + end; + end; +end. diff --git a/OpenSet/86_side_effect2.pas b/OpenSet/86_side_effect2.pas new file mode 100644 index 0000000..78245b8 --- /dev/null +++ b/OpenSet/86_side_effect2.pas @@ -0,0 +1,79 @@ +program main; +var +sum, i, ans: integer; +arr: array[0..19] of integer; + +function f(i, j: integer): integer; +begin + sum := sum + 1; + if (i >= j) or (i >= 20) then + f := 0 + else + begin + arr[i] := 1; + if i = 0 then + f := arr[0] + else + f := arr[i - 1]; + end; +end; + +function g(i,j: integer):integer; +begin + sum := sum + 2; + if (i >= j) or (i >= 20) then + g := 1 + else + begin + arr[i] := 0; + if i = 0 then + g := arr[0] + else + g := arr[i - 1]; + end; +end; + +function h(i: integer): integer; +begin + sum := sum + 3; + if (i < 0) or (i >= 20) then + h := 0 + else + h := arr[i]; +end; + +begin + for i := 0 to 19 do + arr[i] := 0; + for i := 0 to 19 do + begin + if (f(0, i) <> 0) and (f(1, i) <> 0) and (f(2, i) <> 0) and (f(3, i) <> 0) and (f(4, i) <> 0) and + (f(5, i) <> 0) and (f(6, i) <> 0) and (f(7, i) <> 0) and (f(8, i) <> 0) and (f(9, i) <> 0) and + (f(10, i) <> 0) and (f(11, i) <> 0) and (f(12, i) <> 0) and (f(13, i) <> 0) and (f(14, i) <> 0) and + (f(15, i) <> 0) and (f(16, i) <> 0) and (f(17, i) <> 0) and (f(18, i) <> 0) and (f(19, i) <> 0) then + ; + end; + + for i := 0 to 19 do + begin + if (g(0, i) <> 0) or (g(1, i) <> 0) or (g(2, i) <> 0) or (g(3, i) <> 0) or (g(4, i) <> 0) or + (g(5, i) <> 0) or (g(6, i) <> 0) or (g(7, i) <> 0) or (g(8, i) <> 0) or (g(9, i) <> 0) or + (g(10, i) <> 0) or (g(11, i) <> 0) or (g(12, i) <> 0) or (g(13, i) <> 0) or (g(14, i) <> 0) or + (g(15, i) <> 0) or (g(16, i) <> 0) or (g(17, i) <> 0) or (g(18, i) <> 0) or (g(19, i) <> 0) then + ; + end; + + ans := 0; + if (h(0) <> 0) and (h(1) <> 0) or (not (h(2) <> 0)) or (h(3) <> 0) then + ans := 1; + ans := 0; + if (not (h(4) <> 0)) or (h(5) <> 0) and (not (h(6) <> 0)) and (h(7) <> 0) or (not (h(8) <> 0)) then + ans := 1; + ans := 0; + if (h(9) <> 0) and (not (h(10) <> 0)) or (not (h(11) <> 0)) or (not (h(12) <> 0)) or (not (h(13) <> 0)) or (h(14) <> 0) and (h(15) <> 0) then + ans := 1; + ans := 0; + if (h(0) <> 0) and (h(2) <> 0) and (not (h(3) <> 0)) and (not (h(4) <> 0)) or (h(5) <> 0) or (h(6) <> 0) and (not (h(7) <> 0)) or (h(8) <> 0) then + ans := 1; + write(sum + ans); +end. diff --git a/OpenSet/87_long_line.pas b/OpenSet/87_long_line.pas new file mode 100644 index 0000000..c73acf8 --- /dev/null +++ b/OpenSet/87_long_line.pas @@ -0,0 +1 @@ +program main;var sum, i, ans: integer;arr: array[0..19] of integer;function f(i, j: integer): integer;begin sum := sum + 1;if (i >= j) or (i >= 20) then f := 0 else begin arr[i] := 1;if i = 0 then f := arr[0]else f := arr[i - 1];end;end;function g(i,j: integer):integer;begin sum := sum + 2;if (i >= j) or (i >= 20) then g := 1 else begin arr[i] := 0;if i = 0 then g := arr[0] else g := arr[i - 1];end;end;function h(i: integer): integer;begin sum := sum + 3;if (i < 0) or (i >= 20) then h := 0 else h := arr[i];end;begin for i := 0 to 19 do arr[i] := 0;for i := 0 to 19 do begin if (f(0, i) <> 0) and (f(1, i) <> 0) and (f(2, i) <> 0) and (f(3, i) <> 0) and (f(4, i) <> 0) and (f(5, i) <> 0) and (f(6, i) <> 0) and (f(7, i) <> 0) and (f(8, i) <> 0) and (f(9, i) <> 0) and (f(10, i) <> 0) and (f(11, i) <> 0) and (f(12, i) <> 0) and (f(13, i) <> 0) and (f(14, i) <> 0) and (f(15, i) <> 0) and (f(16, i) <> 0) and (f(17, i) <> 0) and (f(18, i) <> 0) and (f(19, i) <> 0) then;end;for i := 0 to 19 do begin if (g(0, i) <> 0) or (g(1, i) <> 0) or (g(2, i) <> 0) or (g(3, i) <> 0) or (g(4, i) <> 0) or (g(5, i) <> 0) or (g(6, i) <> 0) or (g(7, i) <> 0) or (g(8, i) <> 0) or (g(9, i) <> 0) or (g(10, i) <> 0) or (g(11, i) <> 0) or (g(12, i) <> 0) or (g(13, i) <> 0) or (g(14, i) <> 0) or (g(15, i) <> 0) or (g(16, i) <> 0) or (g(17, i) <> 0) or (g(18, i) <> 0) or (g(19, i) <> 0) then ;end;ans := 0;if (h(0) <> 0) and (h(1) <> 0) or (not (h(2) <> 0)) or (h(3) <> 0) then ans := 1;ans := 0;if (not (h(4) <> 0)) or (h(5) <> 0) and (not (h(6) <> 0)) and (h(7) <> 0) or (not (h(8) <> 0)) then ans := 1;ans := 0;if (h(9) <> 0) and (not (h(10) <> 0)) or (not (h(11) <> 0)) or (not (h(12) <> 0)) or (not (h(13) <> 0)) or (h(14) <> 0) and (h(15) <> 0) then ans := 1;ans := 0;if (h(0) <> 0) and (h(2) <> 0) and (not (h(3) <> 0)) and (not (h(4) <> 0)) or (h(5) <> 0) or (h(6) <> 0) and (not (h(7) <> 0)) or (h(8) <> 0) then ans := 1;write(sum + ans); end. \ No newline at end of file diff --git a/OpenSet/88_many_indirections.pas b/OpenSet/88_many_indirections.pas new file mode 100644 index 0000000..6be6af6 --- /dev/null +++ b/OpenSet/88_many_indirections.pas @@ -0,0 +1,20 @@ +program main; +const N=100;M=20; +var +arr: array[0..99, 0..19] of integer; +i,j,sum:integer; + +begin + for i := 0 to M -1 do + begin + for j := 0 to N - 1 do + begin + arr[i, j] := j; + end; + end; + sum := arr[0, arr[1, arr[2, arr[3, arr[4, arr[5, arr[6, arr[7, arr[8,arr[9,arr[10,arr[11,arr[12,arr[13,arr[14,arr[15,arr[16,arr[17,arr[18,arr[19,19]]]]]]]]]]]]]]]]]]]] + + arr[arr[arr[arr[arr[arr[arr[arr[arr[arr[arr[arr[arr + [arr[arr[arr[arr[arr[arr[arr[19,18], + 17],16],15],14],13],12],11],10],9],8],7],6],5],4],3],2],1],0],19]; + write(sum); +end. \ No newline at end of file diff --git a/OpenSet/89_many_params3.pas b/OpenSet/89_many_params3.pas new file mode 100644 index 0000000..8457ac4 --- /dev/null +++ b/OpenSet/89_many_params3.pas @@ -0,0 +1,72 @@ +program main; +var ret: integer; + +function func( aa,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao,ap,aq,ar,as,at,au,av,aw,ax,ay,az, + ba,bb,bc,bd,be,bf,bg,bh,bi,bj,bk,bl,bm,bn,bo,bp,bq,br,bs,bt,bu,bv,bw,bx,by,bz, + ca,cb,cc,cd,ce,cf,cg,ch,ci,cj,ck,cl,cm,cn,co,cp,cq,cr,cs,ct,cu,cv,cw,cx,cy,cz, + da,db,dc,dd,de,df,dg,dh,di,dj,dk,dl,dm,dn,doo,dp,dq,dr,ds,dt,du,dv,dw,dx,dy,dz, + ea,eb,ec,ed,ee,ef,eg,eh,ei,ej,ek,el,em,en,eo,ep,eq,er,es,et,eu,ev,ew,ex,ey,ez, + fa,fb,fc,fd,fe,ff,fg,fh,fi,fj,fk,fl,fm,fn,fo,fp,fq,fr,fs,ft,fu,fv,fw,fx,fy,fz, + ga,gb,gc,gd,ge,gf,gg,gh,gi,gj,gk,gl,gm,gn,go,gp,gq,gr,gs,gt,gu,gv,gw,gx,gy,gz, + ha,hb,hc,hd,he,hf,hg,hh,hi,hj,hk,hl,hm,hn,ho,hp,hq,hr,hs,ht,hu,hv,hw,hx,hy,hz, + ia,ib,ic,id,ie,iff,ig,ih,ii,ij,ik,il,im,inn,io,ip,iq,ir,is,it,iu,iv,iw,ix,iy,iz, + ja,jb,jc,jd,je,jf,jg,jh,ji,jj,jk,jl,jm,jn,jo,jp,jq,jr,js,jt,ju,jv,jw,jx,jy,jz, + ka,kb,kc,kd,ke,kf,kg,kh,ki,kj,kk,kl,km,kn,ko,kp,kq,kr,ks,kt,ku,kv,kw,kx,ky,kz, + la,lb,lc,ld,le,lf,lg,lh,li,lj,lk,ll,lm,ln,lo,lp,lq,lr,ls,lt,lu,lv,lw,lx,ly,lz, + ma,mb,mc,md,me,mf,mg,mh,mi,mj,mk,ml,mm,mn,mo,mp,mq,mr,ms,mt,mu,mv,mw,mx,my,mz, + na,nb,nc,nd,ne,nf,ng,nh,ni,nj,nk,nl,nm,nn,no,np,nq,nr,ns,nt,nu,nv,nw,nx,ny,nz, + oa,ob,oc,od,oe,off,og,oh,oi,oj,ok,ol,om,on,oo,op,oq,orr,os,ot,ou,ov,ow,ox,oy,oz, + pa,pb,pc,pd,pe,pf,pg,ph,pi,pj,pk,pl,pm,pn,po,pp,pq,pr,ps,pt,pu,pv,pw,px,py,pz, + qa,qb,qc,qd,qe,qf,qg,qh,qi,qj,qk,ql,qm,qn,qo,qp,qq,qr,qs,qt,qu,qv,qw,qx,qy,qz, + ra,rb,rc,rd,re,rf,rg,rh,ri,rj,rk,rl,rm,rn,ro,rp,rq,rr,rs,rt,ru,rv,rw,rx,ry,rz, + sa,sb,sc,sd,se,sf,sg,sh,si,sj,sk,sl,sm,sn,so,sp,sq,sr,ss,st,su,sv,sw,sx,sy,sz, + ta,tb,tc,td,te,tf,tg,th,ti,tj,tk,tl,tm,tn,too,tp,tq,tr,ts,tt,tu,tv,tw,tx,ty,tz, + ua,ub,uc,ud,ue,uf,ug,uh,ui,uj,uk,ul,um,un,uo,up,uq,ur,us,ut,uu,uv,uw,ux,uy,uz, + va,vb,vc,vd,ve,vf,vg,vh,vi,vj,vk,vl,vm,vn,vo,vp,vq,vr,vs,vt,vu,vv,vw,vx,vy,vz, + wa,wb,wc,wd,we,wf,wg,wh,wi,wj,wk,wl,wm,wn,wo,wp,wq,wr,ws,wt,wu,wv,ww,wx,wy,wz, + xa,xb,xc,xd,xe,xf,xg,xh,xi,xj,xk,xl,xm,xn,xo,xp,xq,xr,xs,xt,xu,xv,xw,xx,xy,xz, + ya,yb,yc,yd,ye,yf,yg,yh,yi,yj,yk,yl,ym,yn,yo,yp,yq,yr,ys,yt,yu,yv,yw,yx,yy,yz, + za,zb,zc,zd,ze,zf,zg,zh,zi,zj,zk,zl,zm,zn,zo,zp,zq,zr,zs,zt,zu,zv,zw,zx,zy,zz: integer): integer; +begin + func := zi * xy * ve * zl * dk + ui + sd * bx * qr * kk * qk * jt * xj + wl * wg + kb + ii * vj * oa + pb * ku + ee * fv + ha + bm * jv * ka * mr + gv + qh + ci + az * lj * ie + pz * zg + js * wj * il * fx * vs + ed + te + ke + sq * hq * da + vb * gp + ab * kx * lc + pn * ae + cs * on + xe + zi + mf + sc * ak * ko + hx * ax + gc * cm + br * fl + ul + el + nt + tt * eh + gq + up * uj * kz + yj + ah * dl * xz * il * km * qp * yx + lc + re * qb + nl + on + gq + zs + ca * lh + ra + doo * op + cl * et * ad + + kb + tc + bb * oo + mg + ws * xj + ri * ty * mu + cy + dp * wm * wt + dw + pv + it + iy + it + za * hw + kx * pc * zs * ht * sv * jy + gk + cq * ym * vz * de * gg + fc * dk * yb * wm + zu + th * bn * iy * doo + al + vj * ex * di * jb * ss * bd * kn + yz + kw + tv * ug + iff * wx * fn * ul * tt * fp * hn * dv * zv * al * wr + fa * vv + ls + ia * ip * uv + li + zs + em + pa * zf + zb + bt + ad + jp + + ut + tm + et + ct + hc + en * hd * hf * cr * lm + pp * wj * nd * ka * ta + ru * jn + en + gc * jb + + kg * bf + sl + pr + uc + yv + vd * td * xg + cp * rj + qu + vw * ao * oz + zf + qj + kl * st * on * qq + mv * eu * ay * ih * ta * tm + vh + rz + yn * bp + pr + xt * lw + uo * zl * rv + fz * rz * fz + + mf * sj + xz * yt + qj + ki * gf + ne + gd + vz + oh + hh + ff + ec * xk + hb + pe + mz * yx * aw + + ij + dn + zj * nm + jj * kz * ic * sg + ue * yo + le + fg * kt * br * yx + so * qy + bd + da + iq + + go + uu + jj * le + xa + vs * qs + mq + vr + ua + hx * oz * sl * cj * hg + rd * bz + vk * ic + ib + + fj * au * dm + ve * ks + pl * oi * kd * iu + be * rr + va * hc * tl + wm + rq + ob + pg * hq + pe * ww * ei * rn + yk + oc * sh * ig * uu + cg * vu * yn + xj * wh + xf + wo + nr + vf * sa * yg + uj + + sb + dt + pn + ui + nc * bv + qa * ze * kn + zt * da + kw * xp + hy * hs + pb + ox * uz * pe + be * im + sg + tm * im + gh * ju * zx + fc + pn * ei * we + ae * re + wp * aj + pc * km * pm + hc * bt * ap * ik * am + yu + my + wh * ah * tt * fo + rx * te * al + tq + fj + df * ts + jl + lx + ov + inn; +end; + +begin + ret := 0; + ret := func( + 0, 1, 1, 8, 9, 5, 2, 0, 6, 2, 4, 7, 1, 6, 9, 3, 3, 5, 0, 8, 9, 3, 4, 5, 9, 0, + 8, 9, 5, 5, 4, 1, 4, 3, 5, 9, 7, 6, 1, 7, 5, 4, 0, 7, 5, 5, 6, 4, 9, 6, 6, 6, + 8, 0, 4, 2, 3, 3, 0, 5, 4, 3, 9, 5, 9, 3, 3, 6, 4, 3, 3, 0, 5, 0, 2, 5, 6, 6, + 9, 4, 0, 3, 7, 2, 1, 1, 9, 8, 4, 8, 5, 2, 5, 4, 5, 0, 3, 5, 0, 7, 0, 7, 5, 6, + 7, 7, 8, 2, 6, 8, 9, 4, 6, 7, 2, 9, 8, 8, 0, 0, 3, 4, 8, 9, 0, 5, 9, 8, 5, 1, + 2, 7, 3, 2, 5, 4, 9, 9, 6, 9, 2, 5, 5, 7, 8, 3, 8, 9, 4, 9, 0, 5, 9, 8, 4, 2, + 5, 0, 7, 8, 8, 4, 6, 7, 9, 8, 2, 4, 4, 2, 9, 9, 8, 1, 2, 3, 7, 2, 2, 1, 7, 1, + 2, 4, 0, 6, 6, 0, 9, 9, 0, 7, 8, 9, 8, 5, 1, 8, 9, 2, 4, 7, 3, 4, 7, 9, 9, 4, + 7, 1, 9, 0, 6, 0, 6, 9, 8, 4, 3, 6, 2, 9, 7, 5, 6, 9, 8, 6, 5, 8, 4, 0, 5, 2, + 3, 2, 4, 0, 0, 9, 5, 8, 9, 2, 5, 2, 5, 0, 9, 4, 2, 0, 0, 1, 5, 0, 4, 9, 4, 9, + 4, 6, 0, 0, 4, 2, 6, 9, 3, 7, 8, 5, 5, 7, 1, 0, 5, 3, 6, 0, 3, 3, 6, 2, 9, 9, + 1, 9, 6, 2, 4, 1, 5, 1, 5, 0, 8, 5, 7, 9, 4, 6, 1, 3, 9, 4, 2, 3, 0, 8, 6, 0, + 9, 7, 3, 1, 3, 7, 0, 9, 2, 3, 1, 2, 9, 3, 8, 5, 7, 3, 9, 6, 7, 1, 9, 6, 3, 8, + 1, 8, 8, 2, 8, 7, 5, 4, 2, 0, 4, 0, 7, 7, 8, 9, 6, 6, 7, 7, 1, 6, 0, 5, 3, 4, + 2, 6, 3, 6, 3, 4, 1, 3, 6, 9, 4, 3, 0, 9, 0, 2, 2, 0, 8, 8, 4, 5, 8, 2, 3, 3, + 7, 2, 5, 9, 6, 7, 0, 1, 8, 5, 7, 8, 3, 0, 2, 9, 1, 5, 4, 9, 4, 5, 3, 7, 4, 0, + 2, 7, 1, 3, 2, 7, 1, 7, 0, 0, 6, 7, 8, 9, 0, 2, 5, 4, 6, 2, 9, 2, 1, 0, 2, 2, + 7, 3, 8, 9, 6, 3, 6, 9, 0, 8, 1, 2, 2, 9, 5, 8, 2, 5, 0, 4, 7, 0, 8, 2, 9, 6, + 7, 7, 5, 2, 6, 6, 8, 8, 9, 7, 7, 4, 9, 0, 8, 7, 6, 8, 3, 1, 6, 7, 4, 6, 5, 6, + 2, 8, 8, 5, 9, 0, 3, 1, 9, 1, 4, 9, 6, 4, 7, 6, 6, 8, 9, 6, 6, 1, 2, 5, 2, 0, + 3, 8, 2, 9, 1, 3, 9, 6, 2, 3, 2, 9, 9, 3, 8, 8, 1, 9, 8, 5, 1, 1, 2, 7, 9, 3, + 7, 4, 3, 4, 0, 7, 4, 9, 1, 4, 6, 4, 3, 8, 3, 8, 7, 6, 3, 2, 1, 8, 5, 2, 3, 1, + 3, 7, 6, 2, 4, 0, 9, 9, 7, 8, 3, 7, 5, 8, 8, 5, 6, 7, 3, 2, 9, 5, 5, 1, 5, 7, + 9, 7, 9, 0, 5, 4, 3, 3, 0, 0, 0, 3, 5, 1, 6, 2, 0, 4, 7, 4, 9, 7, 3, 4, 0, 6, + 0, 3, 1, 3, 5, 7, 3, 8, 3, 1, 9, 6, 8, 6, 7, 7, 3, 2, 9, 8, 1, 9, 5, 8, 4, 7, + 8, 9, 9, 0, 9, 2, 9, 0, 0, 7, 4, 3, 9, 2, 2, 7, 8, 7, 1, 3, 5, 8, 4, 4, 0, 9); + write(ret); +end. diff --git a/OpenSet/90_multi_branch.pas b/OpenSet/90_multi_branch.pas new file mode 100644 index 0000000..b770250 --- /dev/null +++ b/OpenSet/90_multi_branch.pas @@ -0,0 +1,309 @@ +program main; +var a,res,n,i: integer; +begin + n := 2; + for i := 0 to n - 1 do + begin + res := 0; + a := 1; + if (a > 0) and (a < 100) then + if (a > 0) and (a < 99) then + if (a > 0) and (a < 98) then + if (a > 0) and (a < 97) then + if (a > 0) and (a < 96) then + if (a > 0) and (a < 95) then + if (a > 0) and (a < 94) then + if (a > 0) and (a < 93) then + if (a > 0) and (a < 92) then + if (a > 0) and (a < 91) then + if (a > 0) and (a < 90) then + if (a > 0) and (a < 89) then + if (a > 0) and (a < 88) then + if (a > 0) and (a < 87) then + if (a > 0) and (a < 86) then + if (a > 0) and (a < 85) then + if (a > 0) and (a < 84) then + if (a > 0) and (a < 83) then + if (a > 0) and (a < 82) then + if (a > 0) and (a < 81) then + if (a > 0) and (a < 80) then + if (a > 0) and (a < 79) then + if (a > 0) and (a < 78) then + if (a > 0) and (a < 77) then + if (a > 0) and (a < 76) then + if (a > 0) and (a < 75) then + if (a > 0) and (a < 74) then + if (a > 0) and (a < 73) then + if (a > 0) and (a < 72) then + if (a > 0) and (a < 71) then + if (a > 0) and (a < 70) then + if (a > 0) and (a < 69) then + if (a > 0) and (a < 68) then + if (a > 0) and (a < 67) then + if (a > 0) and (a < 66) then + if (a > 0) and (a < 65) then + if (a > 0) and (a < 64) then + if (a > 0) and (a < 63) then + if (a > 0) and (a < 62) then + if (a > 0) and (a < 61) then + if (a > 0) and (a < 60) then + if (a > 0) and (a < 59) then + if (a > 0) and (a < 58) then + if (a > 0) and (a < 57) then + if (a > 0) and (a < 56) then + if (a > 0) and (a < 55) then + if (a > 0) and (a < 54) then + if (a > 0) and (a < 53) then + if (a > 0) and (a < 52) then + if (a > 0) and (a < 51) then + if (a > 0) and (a < 50) then + if (a > 0) and (a < 49) then + if (a > 0) and (a < 48) then + if (a > 0) and (a < 47) then + if (a > 0) and (a < 46) then + if (a > 0) and (a < 45) then + if (a > 0) and (a < 44) then + if (a > 0) and (a < 43) then + if (a > 0) and (a < 42) then + if (a > 0) and (a < 41) then + if (a > 0) and (a < 40) then + if (a > 0) and (a < 39) then + if (a > 0) and (a < 38) then + if (a > 0) and (a < 37) then + if (a > 0) and (a < 36) then + if (a > 0) and (a < 35) then + if (a > 0) and (a < 34) then + if (a > 0) and (a < 33) then + if (a > 0) and (a < 32) then + if (a > 0) and (a < 31) then + if (a > 0) and (a < 30) then + if (a > 0) and (a < 29) then + if (a > 0) and (a < 28) then + if (a > 0) and (a < 27) then + if (a > 0) and (a < 26) then + if (a > 0) and (a < 25) then + if (a > 0) and (a < 24) then + if (a > 0) and (a < 23) then + if (a > 0) and (a < 22) then + if (a > 0) and (a < 21) then + if (a > 0) and (a < 20) then + if (a > 0) and (a < 19) then + if (a > 0) and (a < 18) then + if (a > 0) and (a < 17) then + if (a > 0) and (a < 16) then + if (a > 0) and (a < 15) then + if (a > 0) and (a < 14) then + if (a > 0) and (a < 13) then + if (a > 0) and (a < 12) then + if (a > 0) and (a < 11) then + if (a > 0) and (a < 10) then + if (a > 0) and (a < 9) then + if (a > 0) and (a < 8) then + if (a > 0) and (a < 7) then + if (a > 0) and (a < 6) then + if (a > 0) and (a < 5) then + if (a > 0) and (a < 4) then + if (a > 0) and (a < 3) then + if (a > 0) and (a < 2) then + res := res + 1 + else + res := res + 2 + else + res := res + 3 + else + res := res + 4 + else + res := res + 5 + else + res := res + 6 + else + res := res + 7 + else + res := res + 8 + else + res := res + 9 + else + res := res + 10 + else + res := res + 11 + else + res := res + 12 + else + res := res + 13 + else + res := res + 14 + else + res := res + 15 + else + res := res + 16 + else + res := res + 17 + else + res := res + 18 + else + res := res + 19 + else + res := res + 20 + else + res := res + 21 + else + res := res + 22 + else + res := res + 23 + else + res := res + 24 + else + res := res + 25 + else + res := res + 26 + else + res := res + 27 + else + res := res + 28 + else + res := res + 29 + else + res := res + 30 + else + res := res + 31 + else + res := res + 32 + else + res := res + 33 + else + res := res + 34 + else + res := res + 35 + else + res := res + 36 + else + res := res + 37 + else + res := res + 38 + else + res := res + 39 + else + res := res + 40 + else + res := res + 41 + else + res := res + 42 + else + res := res + 43 + else + res := res + 44 + else + res := res + 45 + else + res := res + 46 + else + res := res + 47 + else + res := res + 48 + else + res := res + 49 + else + res := res + 50 + else + res := res + 51 + else + res := res + 52 + else + res := res + 53 + else + res := res + 54 + else + res := res + 55 + else + res := res + 56 + else + res := res + 57 + else + res := res + 58 + else + res := res + 59 + else + res := res + 60 + else + res := res + 61 + else + res := res + 62 + else + res := res + 63 + else + res := res + 64 + else + res := res + 65 + else + res := res + 66 + else + res := res + 67 + else + res := res + 68 + else + res := res + 69 + else + res := res + 70 + else + res := res + 71 + else + res := res + 72 + else + res := res + 73 + else + res := res + 74 + else + res := res + 75 + else + res := res + 76 + else + res := res + 77 + else + res := res + 78 + else + res := res + 79 + else + res := res + 80 + else + res := res + 81 + else + res := res + 82 + else + res := res + 83 + else + res := res + 84 + else + res := res + 85 + else + res := res + 86 + else + res := res + 87 + else + res := res + 88 + else + res := res + 89 + else + res := res + 90 + else + res := res + 91 + else + res := res + 92 + else + res := res + 93 + else + res := res + 94 + else + res := res + 95 + else + res := res + 96 + else + res := res + 97 + else + res := res + 98 + else + res := res + 99 + else + res := res + 100; + write(res); + end; +end. diff --git a/OpenSet/91_multi_loop.pas b/OpenSet/91_multi_loop.pas new file mode 100644 index 0000000..a1814f5 --- /dev/null +++ b/OpenSet/91_multi_loop.pas @@ -0,0 +1,54 @@ +program NestedLoops; +var + a, i, j, k, ii, jj, kk, iii, jjj, kkk, iiii, jjjj, kkkk, iiiii, jjjjj, kkkkk: integer; +begin + a := 0; + for i := 0 to 2 do + begin + for j := 0 to 3 do + begin + for k := 0 to 4 do + begin + for ii := 0 to 2 do + begin + for jj := 0 to 4 do + begin + for kk := 0 to 3 do + begin + for iii := 0 to 5 do + begin + for jjj := 0 to 4 do + begin + for kkk := 0 to 4 do + begin + for iiii := 0 to 2 do + begin + for jjjj := 0 to 5 do + begin + for kkkk := 0 to 6 do + begin + for iiiii := 0 to 4 do + begin + for jjjjj := 0 to 2 do + begin + for kkkkk := 0 to 5 do + begin + a := (a + 3) mod 999; + end; + end; + end; + end; + end; + end; + end; + end; + end; + end; + end; + end; + end; + end; + end; + + write(a); +end. diff --git a/OpenSet/92_math.pas b/OpenSet/92_math.pas new file mode 100644 index 0000000..6583e8f --- /dev/null +++ b/OpenSet/92_math.pas @@ -0,0 +1,163 @@ +program main; +const e = 2.1718281828459045; +split = '--'; +var +x,y:real; +num,i:integer; + +function my_fabs(x: real):real; +begin + if x > 0 then + my_fabs := x + else + my_fabs := -x; +end; + +function my_pow(a:real; n: integer):real; +var i:integer; res: real; +begin + if n < 0 then + my_pow := 1 / (my_pow(a, -n)) + else + begin + res := 1.0; + for i := 0 to n - 1 do + res := res * a; + my_pow := res; + end; +end; + +function my_sqrt(x:real):real; +var t:real; c:integer; +begin + if x > 100 then + my_sqrt := 10.0 * my_sqrt(x / 100) + else + begin + t := x / 8 + 0.5 + 2 * x / (4 + x); + for c := 0 to 9 do + t := (t + x / t) / 2; + my_sqrt := t; + end +end; + +function F1(x:real):real; +begin + F1 := 1 / x; +end; + +function F2(x:real):real; +begin + F2 := 1 / my_sqrt(1 - x * x); +end; + +function simpson(a,b: real; flag: integer): real; +var c:real; +begin + c := a + (b - a) / 2; + simpson := 0; + if flag = 1 then + simpson := (F1(a) + 4 * F1(c) + F1(b)) * (b - a) / 6 + else + simpson := (F2(a) + 4 * F2(c) + F2(b)) * (b - a) / 6; +end; + +function asr5(a,b,eps,AA: real; flag:integer):real; +var c,L,R:real; +begin + c := a + (b - a) / 2; + L := simpson(a, c, flag); + R := simpson(c, b, flag); + if my_fabs(L + R - AA) <= (15 * eps) then + asr5 := L + R + (L + R - AA) / 15.0 + else + asr5 := asr5(a, c, eps/2, L, flag) + asr5(c, b, eps/2, R, flag); +end; + +function asr4(a,b,eps:real; flag: integer):real; +begin + asr4 := asr5(a, b, eps, simpson(a, b, flag), flag); +end; + +function eee(x:real):real; +var ee: real; +begin + if x > 0.001 then + begin + ee := eee(x / 2); + eee := ee * ee; + end + else + eee := 1 + x + x * x / 2 + my_pow(x, 3) / 6 + my_pow(x, 4) / 24 + my_pow(x, 5) / 120; +end; + +function my_exp(x:real):real; +var e1,e2: real; n: integer; +begin + if x < 0 then + my_exp := 1 / my_exp(-x) + else + begin + //pascal no cut the integer part and float part + n := 1; + x := x - 1.0; + e1 := my_pow(e, n); + e2 := eee(x); + my_exp := e1 * e2; + end; +end; + +function my_ln(x:real):real; +begin + my_ln := asr4(1, x, 0.00000001, 1); +end; + +function my_log(a,N: real):real; +begin + my_log := my_ln(N) / my_ln(a); +end; + +function my_powf(a,x:real):real; +begin + my_powf := my_exp(x * my_ln(a)); +end; + +procedure putfloat(f:real); +begin + write(f); +end; + + +function getfloat():real; +begin + read(getfloat); +end; + +begin + num := 2; + for i := 0 to num - 1 do + begin + x := getfloat; + y := getfloat; + putfloat(my_fabs(x)); + putfloat(my_pow(x, 2)); + putfloat(my_sqrt(x)); + putfloat(my_exp(x)); + + if x > 0.0 then + putfloat(my_ln(x)) + else + write(split); + + if (x > 0.0) and (y > 0.0) then + putfloat(my_log(x, y)) + else + write(split); + + if x > 0.0 then + putfloat(my_powf(x, y)) + else + write(split); + end; + read(num); +end. diff --git a/OpenSet/93_dct.pas b/OpenSet/93_dct.pas new file mode 100644 index 0000000..d5eeb80 --- /dev/null +++ b/OpenSet/93_dct.pas @@ -0,0 +1,127 @@ +program main; +const +PI = 3.14159265359; +TWO_PI = 6.28318530718; +EPSILON = 0.000001; +var +test_block, test_dct, test_idct: array [0..7, 0..7] of real; +dim_x, dim_y, i, j: integer; + +function my_fabs(x: real): real; +begin + if x > 0.0 then + my_fabs := x + else + my_fabs := -x; +end; + +function p(x: real): real; +begin + p := 3 * x - 4 * x * x * x; +end; + +function my_sin_impl(x: real): real; +begin + if my_fabs(x) <= EPSILON then + my_sin_impl := x + else + my_sin_impl := p(my_sin_impl(x / 3.0)); +end; + +function my_sin(x: real): real; +var xx: integer; +begin + if (x > TWO_PI) or (x < -TWO_PI) then + begin + xx := 1; + x := x - 1.0; + end; + if x > PI then + x := x - TWO_PI; + if x < -PI then + x := x + TWO_PI; + my_sin := my_sin_impl(x); +end; + +function my_cos(x: real): real; +begin + my_cos := my_sin(x * PI / 2); +end; + +procedure write_mat(n, m: integer); +var i,j: integer; +begin + for i := 0 to n - 1 do + begin + write(test_dct[i, 0]); + for j := 1 to m - 1 do + write(test_dct[i, j]); + end; +end; + +procedure write_mat2(n, m: integer); +var i,j: integer; +begin + for i := 0 to n - 1 do + begin + write(test_idct[i, 0]); + for j := 1 to m - 1 do + write(test_idct[i, j]); + end; +end; + +procedure dct(n, m: integer); +var u, v, i, j: integer; +begin + for u := 0 to n - 1 do + begin + for v := 0 to m - 1 do + begin + test_dct[u, v] := 0; + for i := 0 to n - 1 do + begin + for j := 0 to m - 1 do + begin + test_dct[u, v] := test_dct[u, v] + test_block[i, j] * my_cos(PI / n * (i + 1.0 / 2.0) * u) * my_cos(PI / m * (i + 1.0 / 2.0) * v); + end; + end; + end; + end; +end; + +procedure idct(n, m: integer); +var u, v, i, j: integer; +begin + for u := 0 to n - 1 do + begin + for v := 0 to m - 1 do + begin + test_idct[u, v] := 1 / 4.0 * test_dct[0, 0]; + for i := 1 to n - 1 do + test_idct[u, v] := test_idct[u, v] + 1 / 2.0 * test_dct[i, 0]; + for j := 1 to m - 1 do + test_idct[u, v] := test_idct[u, v] + 1 / 2.0 * test_dct[0, j]; + for i := 1 to n - 1 do + for j := 1 to m - 1 do + test_idct[u, v] := test_idct[u, v] + test_dct[i, j] * my_cos(PI / n * (u + 1.0 / 2.0) * i) * my_cos(PI / m * (v + 1.0 / 2.0) * j); + test_idct[u, v] := test_idct[u, v] * 2.0 / n * 2.0 / m; + end; + end; +end; + +begin + dim_x := 0; + dim_y := 0; + read(dim_x); + read(dim_y); + + for i := 0 to dim_x - 1 do + for j := 0 to dim_y - 1 do + read(test_block[i, j]); + + dct(dim_x, dim_y); + write_mat(dim_x, dim_y); + + idct(dim_x, dim_y); + write_mat2(dim_x, dim_y); +end. diff --git a/OpenSet/94_fp_params.pas b/OpenSet/94_fp_params.pas new file mode 100644 index 0000000..9ccc84f --- /dev/null +++ b/OpenSet/94_fp_params.pas @@ -0,0 +1,126 @@ +program main; +var +k: integer; +i,j: integer; +ret0, ret1: real; +arr: array[0..39, 0..2] of real; +arr2: array[0..23, 0..2] of integer; + +function params_f40(x0, x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, + x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, + x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, + x36, x37, x38, x39: real): real; +var +i: integer; +arr: array[0..9] of real; +begin + if x39 <> 0 then + begin + arr[0] := x0+x1+x2+x3; + arr[1] := x4+x5+x6+X7; + arr[2] := x8+x9+x10+x11; + arr[3] := x12+x13+x14+x15; + arr[4] := x16+x17+x18+x19; + arr[5] := x20+x21+x22+x23; + arr[6] := x24+x25+x26+x27; + arr[7] := x28+x29+x30+x31; + arr[8] := x32+x33+x34+x35; + arr[9] := x36+x37+x38+x39; + for i := 0 to 9 do + write(arr[i]); + params_f40 := arr[k]; + end + else + begin + params_f40 := params_f40(x1, x2, x3, x4, x5, x6, x7, x8, x9, x10, x11, x12, x13, + x14, x15, x16, x17, x18, x19, x20, x21, x22, x23, x24, + x25, x26, x27, x28, x29, x30, x31, x32, x33, x34, x35, + x36, x37, x38, x39, x0 + x1 + x2); + end; +end; + +function params_f40_i24(i23, i2, i6: integer; x4: real; i1, i4, i5: integer; + x8, x15, x7: real; i22: integer; x3: real; + x28: real; i0: integer; x37: real; i19: integer; x30: real; + x12, x1, x11, x38, x6: real; i7: integer; x32: real; i10, i13: integer; + x20, x33, x23, x9, x25: real; i8: integer; x39: real; i17: integer; + x21, x16, x5, x34: real; i18, i9: integer; x14, x10, x0: real; + i12: integer; x31: real; i11, i16: integer; x27, x24, x13, x29: real; + i3, i21, i20: integer; x18, x19, x22, x26, x36, x17: real; + i15: integer; x2: real; i14: integer; x35: real): real; +var +i : integer; +arr : array[0..9] of real; +arr2: array[0..7] of real; +begin + if i23 <> 0 then + begin + arr[0] := x0+x1+x2+x3; + arr[1] := x4+x5+x6+X7; + arr[2] := x8+x9+x10+x11; + arr[3] := x12+x13+x14+x15; + arr[4] := x16+x17+x18+x19; + arr[5] := x20+x21+x22+x23; + arr[6] := x24+x25+x26+x27; + arr[7] := x28+x29+x30+x31; + arr[8] := x32+x33+x34+x35; + arr[9] := x36+x37+x38+x39; + arr2[0] := (i0 + i1 + i2) * 1.0; + arr2[1] := (i3 + i4 + i5) * 1.0; + arr2[2] := (i6 + i7 + i8) * 1.0; + arr2[3] := (i9 + i10 + i11) * 1.0; + arr2[4] := (i12 + i13 + i14) * 1.0; + arr2[5] := (i15 + i16 + i17) * 1.0; + arr2[6] := (i18 + i19 + i20) * 1.0; + arr2[7] := (i21 + i22 + i23) * 1.0; + for i := 0 to 9 do + write(arr[i]); + for i := 0 to 7 do + write(arr2[i]); + for i := 0 to 7 do + arr2[i] := arr2[i] - arr[i]; + params_f40_i24 := arr2[k]; + end + else + params_f40_i24 := params_f40_i24(i1, i2, i6, x4, i1, i4, i5, x8, x15, x7, i22, x3, x28, + i0, x37, i19, x30, x12, x1, x11, x38, x6, i7, x32, + i10, i13, x20, x33, x23, x9, x25, i8, x39, i17, x21, + x16, x5, x34, i18, i9, x14, x10, x0, i12, x31, i11, + i16, x27, x24, x13, x29, i3, i21, i20, x18, x19, x22, + x26, x36, x17, i15, x2, i14, x35); +end; + +begin + k := 0; + for i := 0 to 23 do + for j := 0 to 2 do + arr2[i ,j] := i * 2 - j * 3; + for i := 0 to 39 do + for j := 0 to 2 do + arr[i, j] := i * 2.2 - j * 3.3; + + ret0 := params_f40( + arr[0][k], arr[1][k], arr[2][k], arr[3][k], arr[4][k], arr[5][k], + arr[6][k], arr[7][k], arr[8][k], arr[9][k], arr[10][k], arr[11][k], + arr[12][k], arr[13][k], arr[14][k], arr[15][k], arr[16][k], arr[17][k], + arr[18][k], arr[19][k], arr[20][k], arr[21][k], arr[22][k], arr[23][k], + arr[24][k], arr[25][k], arr[26][k], arr[27][k], arr[28][k], arr[29][k], + arr[30][k], arr[31][k], arr[32][k], arr[33][k], arr[34][k], arr[35][k], + arr[36][k], arr[37][k], arr[38][k], arr[39][k]); + + ret1 := params_f40_i24( + arr2[23][k], arr2[2][k], arr2[6][k], arr[4][k], arr2[1][k], arr2[4][k], + arr2[5][k], arr[8][k], arr[15][k], arr[7][k], arr2[22][k], arr[3][k], + arr[28][k], arr2[0][k], arr[37][k], arr2[19][k], arr[30][k], arr[12][k], + arr[1][k], arr[11][k], arr[38][k], arr[6][k], arr2[7][k], arr[32][k], + arr2[10][k], arr2[13][k], arr[20][k], arr[33][k], arr[23][k], arr[9][k], + arr[25][k], arr2[8][k], arr[39][k], arr2[17][k], arr[21][k], arr[16][k], + arr[5][k], arr[34][k], arr2[18][k], arr2[9][k], arr[14][k], arr[10][k], + arr[0][k], arr2[12][k], arr[31][k], arr2[11][k], arr2[16][k], arr[27][k], + arr[24][k], arr[13][k], arr[29][k], arr2[3][k], arr2[21][k], arr2[20][k], + arr[18][k], arr[19][k], arr[22][k], arr[26][k], arr[36][k], arr[17][k], + arr2[15][k], arr[2][k], arr2[14][k], arr[35][k]); + + write(ret0); + write(ret1); +end.