diff --git a/Sources/AngouriMath/AngouriMath/Convenience/MathS.cs b/Sources/AngouriMath/AngouriMath/Convenience/MathS.cs index d7b497b1c..a939e3efb 100644 --- a/Sources/AngouriMath/AngouriMath/Convenience/MathS.cs +++ b/Sources/AngouriMath/AngouriMath/Convenience/MathS.cs @@ -662,7 +662,7 @@ public static Entity FromString(string expr, bool useCache) /// failure, which is a type union of multiple reasons /// it may have failed. /// - public static ParsingResult Parse(string source) + public static Either, ParseException> Parse(string source) => Parser.ParseSilent(source); /// Translates a in base 10 into base diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMath.g b/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMath.g deleted file mode 100644 index 875ba6c81..000000000 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMath.g +++ /dev/null @@ -1,437 +0,0 @@ -/* - -Remember to run the "antlr_rerun.bat" file at the project root every time you modify this file so that other -source files under the Antlr folder can update and be reflected in other parts of AngouriMath! -It only consists of commands that are consistent across CMD and Bash so you should be able to run that file -regardless of whether you are on Windows, Linux or Mac. You need to have an installed Java Runtime, however. - -*/ - -grammar AngouriMath; // Should be identical to the file name or ANTLR will complain - -options -{ - // Equivalent to passing "-Dlanguage=CSharp" into "antlr-4.8-complete.jar" in "antlr_rerun.bat" - language = CSharp; -} - -@modifier{internal} -@ctorModifier{internal} - -@parser::header -{ - using System.Linq; - using AngouriMath; - using static AngouriMath.Core.Exceptions.FunctionArgumentCountException; - using static AngouriMath.Entity.Number; - using AngouriMath.Core.Exceptions; - using static AngouriMath.Entity.Set; - using static AngouriMath.Entity; -} - -@lexer::members -{ - // As the declaration order of static fields is the initialization order - // We will get null if we access the private static field _LiteralNames from static fields defined here - // So these are instance fields - public readonly CommonToken Multiply = new(Array.IndexOf(_LiteralNames, "'*'"), "*"); - public readonly CommonToken Power = new(Array.IndexOf(_LiteralNames, "'^'"), "^"); -} -@parser::members -{ - // Nullable reference type analysis is disabled by default for generated code without '#nullable enable' - public Entity Result = null; - - public void Parse() { this.statement(); } -} - -@namespace { Antlr } - -// Order of expressions do not affect parsing, but we put dependees first and dependents after to clarify logic - -// But according to https://stackoverflow.com/a/16490720/5429648, -// You need to place parser rules (which start with a lowercase letter) -// before lexer rules (which start with an uppercase letter) in your grammar -// After encountering a lexer rule, the [ triggers a LEXER_CHAR_SET instead of ARG_ACTION, -// so the token stream seen by the compiler looks like you're passing a set of characters where the -// return value should be. - -// So we put UPPER_CASE lexer rules after lower_case parser rules. - -// atom is defined later -factorial_expression returns[Entity value] - : p = atom '!' { $value = MathS.Factorial($p.value); } - | p = atom { $value = $p.value; } - ; - -power_list returns[List value] - @init { $value = new(); } - : ('^' factorial_expression { $value.Add($factorial_expression.value); })+ - | ('^' unary_expression { $value.Add($unary_expression.value); })+ - ; - -power_expression returns[Entity value] - : factorial_expression { $value = $factorial_expression.value; } - (power_list { - $value = $power_list.value - .Prepend($factorial_expression.value) - .Reverse() - .Aggregate((exp, @base) => @base.Pow(exp)); - })? - ; - -/* - -Numerical nodes - -*/ - -unary_expression returns[Entity value] - : ('-' p = power_expression { $value = $p.value is Number num ? -num : -$p.value; } | - '+' p = power_expression { $value = $p.value; }) - | ('-' u = unary_expression { $value = -$u.value; } | - '+' u = unary_expression { $value = $u.value; }) - | p = power_expression { $value = $p.value; } - ; - -mult_expression returns[Entity value] - : u1 = unary_expression { $value = $u1.value; } - ('*' u2 = unary_expression { $value = $value * $u2.value; } | - '/' u2 = unary_expression { $value = $value / $u2.value; })* - ; - -sum_expression returns[Entity value] - : m1 = mult_expression { $value = $m1.value; } - ('+' m2 = mult_expression { $value = $value + $m2.value; } | - '-' m2 = mult_expression { $value = $value - $m2.value; })* - ; - -/* - -Sets - -*/ - -set_operator_intersection returns[Entity value] - : left = sum_expression { $value = $left.value; } - ( - 'intersect' right = sum_expression { $value = $value.Intersect($right.value); } | - '/\\' right = sum_expression { $value = $value.Intersect($right.value); } - )* - ; - -set_operator_union returns[Entity value] - : left = set_operator_intersection { $value = $left.value; } - ( - 'unite' right = set_operator_intersection { $value = $value.Unite($right.value); } | - '\\/' right = set_operator_intersection { $value = $value.Unite($right.value); } - )* - ; - -set_operator_setsubtraction returns[Entity value] - : left = set_operator_union { $value = $left.value; } - ( - 'setsubtract' right = set_operator_union { $value = $value.SetSubtract($right.value); } | - '\\' right = set_operator_union { $value = $value.SetSubtract($right.value); } - )* - ; - -in_operator returns[Entity value] - : m1 = set_operator_setsubtraction { $value = $m1.value; } - ('in' m2 = set_operator_setsubtraction { $value = $value.In($m2.value); })* - ; - - -/* - -Equality/inequality nodes - -*/ - -inequality_expression returns[Entity value] - : m1 = in_operator { $value = $m1.value; } - ( - '>=' m2 = in_operator { $value = $value >= $m2.value; } | - '<=' m2 = in_operator { $value = $value <= $m2.value; } | - '>' m2 = in_operator { $value = $value > $m2.value; } | - '<' m2 = in_operator { $value = $value < $m2.value; } | - 'equalizes' m2 = in_operator { $value = MathS.Equality($value, $m2.value); })* - ; - -terms_list returns[List terms] - @init { $terms = new(); } - : ('=' term = inequality_expression { $terms.Add($term.value); })+ - ; - -equality_expression returns[Entity value] - : expr = inequality_expression { $value = $expr.value; } (terms_list - { - var list = $terms_list.terms.Prepend($value).ToArray(); - List eqTerms = new(); - for (int i = 0; i < list.Length - 1; i++) - eqTerms.Add(list[i].Equalizes(list[i + 1])); - $value = eqTerms.Aggregate((eq1, eq2) => eq1 & eq2); - })? - ; - -/* - -Boolean nodes - -*/ - -negate_expression returns[Entity value] - : 'not' op = equality_expression { $value = !$op.value; } - | 'not' opn = negate_expression { $value = !$opn.value; } - | op = equality_expression { $value = $op.value; } - ; - -and_expression returns[Entity value] - : m1 = negate_expression { $value = $m1.value; } - ('and' m2 = negate_expression { $value = $value & $m2.value; } | - '&' m2 = negate_expression { $value = $value & $m2.value; } - )* - ; - -xor_expression returns[Entity value] - : m1 = and_expression { $value = $m1.value; } - ('xor' m2 = and_expression { $value = $value ^ $m2.value; })* - ; - -or_expression returns[Entity value] - : m1 = xor_expression { $value = $m1.value; } - ('or' m2 = xor_expression { $value = $value | $m2.value; } | - '|' m2 = xor_expression { $value = $value | $m2.value; })* - ; - -implies_expression returns[Entity value] - : m1 = or_expression { $value = $m1.value; } - ('implies' m2 = or_expression { $value = $value.Implies($m2.value); } | - '->' m2 = or_expression { $value = $value.Implies($m2.value); })* - ; - -/* - -Keyword nodes - -*/ - -provided_expression returns[Entity value] - : expr = implies_expression { $value = $expr.value; } - ('provided' pred = implies_expression { $value = $value.Provided($pred.value); })* - ; - -/* - -Nodes end - -*/ - -expression returns[Entity value] - : s = provided_expression { $value = $s.value; } - ; - - -function_arguments returns[List list] - @init { $list = new List(); } - : (e = expression { $list.Add($e.value); } (',' e = expression { $list.Add($e.value); })*)? - ; - -interval_arguments returns[(Entity from, Entity to) couple] - : from = expression { $couple.from = $from.value; } ';' to = expression { $couple.to = $to.value; } - ; - -cset_arguments returns[(Entity variable, Entity predicate) couple] - : variable = expression { $couple.variable = $variable.value; } ':' predicate = expression { $couple.predicate = $predicate.value; } - ; - -atom returns[Entity value] - : '+oo' { $value = Entity.Number.Real.PositiveInfinity; } - | '-oo' { $value = Entity.Number.Real.NegativeInfinity; } - | NUMBER { $value = Entity.Number.Complex.Parse($NUMBER.text); } - | BOOLEAN { $value = Entity.Boolean.Parse($BOOLEAN.text); } - | SPECIALSET { $value = Entity.Set.SpecialSet.Create($SPECIALSET.text); } - | VARIABLE { $value = Entity.Variable.CreateVariableUnchecked($VARIABLE.text); } - | '(|' expression '|)' { $value = $expression.value.Abs(); } - - | '[' function_arguments ']T' { $value = ParsingHelpers.TryBuildingMatrix($function_arguments.list).T; } - | '[' function_arguments ']' { $value = ParsingHelpers.TryBuildingMatrix($function_arguments.list); } - - | '(' interval_arguments ')' { $value = new Entity.Set.Interval($interval_arguments.couple.from, false, $interval_arguments.couple.to, false); } - | '[' interval_arguments ')' { $value = new Entity.Set.Interval($interval_arguments.couple.from, true, $interval_arguments.couple.to, false); } - | '[' interval_arguments ']' { $value = new Entity.Set.Interval($interval_arguments.couple.from, true, $interval_arguments.couple.to, true); } - | '(' interval_arguments ']' { $value = new Entity.Set.Interval($interval_arguments.couple.from, false, $interval_arguments.couple.to, true); } - | '(' expression ')' { $value = $expression.value; } - | '{' cset_args = cset_arguments '}' { $value = new ConditionalSet($cset_args.couple.variable, $cset_args.couple.predicate); } - | '{' args = function_arguments '}' { $value = new FiniteSet((IEnumerable)$args.list); } - | 'log(' args = function_arguments ')' { $value = Assert("log", (1, 2), $args.list.Count) ? MathS.Log(10, $args.list[0]) : MathS.Log($args.list[0], $args.list[1]); } - | 'sqrt(' args = function_arguments ')' { Assert("sqrt", 1, $args.list.Count); $value = MathS.Sqrt($args.list[0]); } - | 'cbrt(' args = function_arguments ')' { Assert("cbrt", 1, $args.list.Count); $value = MathS.Cbrt($args.list[0]); } - | 'sqr(' args = function_arguments ')' { Assert("sqr", 1, $args.list.Count); $value = MathS.Sqr($args.list[0]); } - | 'ln(' args = function_arguments ')' { Assert("ln", 1, $args.list.Count); $value = MathS.Ln($args.list[0]); } - - /* Trigonometric functions */ - | 'sin(' args = function_arguments ')' { Assert("sin", 1, $args.list.Count); $value = MathS.Sin($args.list[0]); } - | 'cos(' args = function_arguments ')' { Assert("cos", 1, $args.list.Count); $value = MathS.Cos($args.list[0]); } - | 'tan(' args = function_arguments ')' { Assert("tan", 1, $args.list.Count); $value = MathS.Tan($args.list[0]); } - | 'cotan(' args = function_arguments ')' { Assert("cotan", 1, $args.list.Count); $value = MathS.Cotan($args.list[0]); } - | 'cot(' args = function_arguments ')' { Assert("cotan", 1, $args.list.Count); $value = MathS.Cotan($args.list[0]); } - | 'sec(' args = function_arguments ')' { Assert("sec", 1, $args.list.Count); $value = MathS.Sec($args.list[0]); } - | 'cosec(' args = function_arguments ')' { Assert("cosec", 1, $args.list.Count); $value = MathS.Cosec($args.list[0]); } - | 'csc(' args = function_arguments ')' { Assert("cosec", 1, $args.list.Count); $value = MathS.Cosec($args.list[0]); } - | 'arcsin(' args = function_arguments ')' { Assert("arcsin", 1, $args.list.Count); $value = MathS.Arcsin($args.list[0]); } - | 'arccos(' args = function_arguments ')' { Assert("arccos", 1, $args.list.Count); $value = MathS.Arccos($args.list[0]); } - | 'arctan(' args = function_arguments ')' { Assert("arctan", 1, $args.list.Count); $value = MathS.Arctan($args.list[0]); } - | 'arccotan(' args = function_arguments ')' { Assert("arccotan", 1, $args.list.Count); $value = MathS.Arccotan($args.list[0]); } - | 'arcsec(' args = function_arguments ')' { Assert("arcsec", 1, $args.list.Count); $value = MathS.Arcsec($args.list[0]); } - | 'arccosec(' args = function_arguments ')' { Assert("arccosec", 1, $args.list.Count); $value = MathS.Arccosec($args.list[0]); } - | 'arccsc(' args = function_arguments ')' { Assert("arccosec", 1, $args.list.Count); $value = MathS.Arccosec($args.list[0]); } - | 'acsc(' args = function_arguments ')' { Assert("arccosec", 1, $args.list.Count); $value = MathS.Arccosec($args.list[0]); } - | 'asin(' args = function_arguments ')' { Assert("arcsin", 1, $args.list.Count); $value = MathS.Arcsin($args.list[0]); } - | 'acos(' args = function_arguments ')' { Assert("arccos", 1, $args.list.Count); $value = MathS.Arccos($args.list[0]); } - | 'atan(' args = function_arguments ')' { Assert("arctan", 1, $args.list.Count); $value = MathS.Arctan($args.list[0]); } - | 'acotan(' args = function_arguments ')' { Assert("arccotan", 1, $args.list.Count); $value = MathS.Arccotan($args.list[0]); } - | 'asec(' args = function_arguments ')' { Assert("arcsec", 1, $args.list.Count); $value = MathS.Arcsec($args.list[0]); } - | 'acosec(' args = function_arguments ')' { Assert("arccosec", 1, $args.list.Count); $value = MathS.Arccosec($args.list[0]); } - | 'acot(' args = function_arguments ')' { Assert("arccotan", 1, $args.list.Count); $value = MathS.Arccotan($args.list[0]); } - | 'arccot(' args = function_arguments ')' { Assert("arccotan", 1, $args.list.Count); $value = MathS.Arccotan($args.list[0]); } - /* End */ - - - /* Hyperbolic functions */ - | 'sinh(' args = function_arguments ')' { Assert("sin", 1, $args.list.Count); $value = MathS.Hyperbolic.Sinh($args.list[0]); } - | 'sh(' args = function_arguments ')' { Assert("sin", 1, $args.list.Count); $value = MathS.Hyperbolic.Sinh($args.list[0]); } - - | 'cosh(' args = function_arguments ')' { Assert("cos", 1, $args.list.Count); $value = MathS.Hyperbolic.Cosh($args.list[0]); } - | 'ch(' args = function_arguments ')' { Assert("cos", 1, $args.list.Count); $value = MathS.Hyperbolic.Cosh($args.list[0]); } - - | 'tanh(' args = function_arguments ')' { Assert("tan", 1, $args.list.Count); $value = MathS.Hyperbolic.Tanh($args.list[0]); } - | 'th(' args = function_arguments ')' { Assert("tan", 1, $args.list.Count); $value = MathS.Hyperbolic.Tanh($args.list[0]); } - - | 'cotanh(' args = function_arguments ')' { Assert("cotan", 1, $args.list.Count); $value = MathS.Hyperbolic.Cotanh($args.list[0]); } - | 'coth(' args = function_arguments ')' { Assert("cotan", 1, $args.list.Count); $value = MathS.Hyperbolic.Cotanh($args.list[0]); } - | 'cth(' args = function_arguments ')' { Assert("cotan", 1, $args.list.Count); $value = MathS.Hyperbolic.Cotanh($args.list[0]); } - - | 'sech(' args = function_arguments ')' { Assert("sec", 1, $args.list.Count); $value = MathS.Hyperbolic.Sech($args.list[0]); } - | 'sch(' args = function_arguments ')' { Assert("sec", 1, $args.list.Count); $value = MathS.Hyperbolic.Sech($args.list[0]); } - - | 'cosech(' args = function_arguments ')' { Assert("cosec", 1, $args.list.Count); $value = MathS.Hyperbolic.Cosech($args.list[0]); } - | 'csch(' args = function_arguments ')' { Assert("cosec", 1, $args.list.Count); $value = MathS.Hyperbolic.Cosech($args.list[0]); } - - | 'asinh(' args = function_arguments ')' { Assert("arcsin", 1, $args.list.Count); $value = MathS.Hyperbolic.Arsinh($args.list[0]); } - | 'arsinh(' args = function_arguments ')' { Assert("arcsin", 1, $args.list.Count); $value = MathS.Hyperbolic.Arsinh($args.list[0]); } - | 'arsh(' args = function_arguments ')' { Assert("arcsin", 1, $args.list.Count); $value = MathS.Hyperbolic.Arsinh($args.list[0]); } - - | 'acosh(' args = function_arguments ')' { Assert("arccos", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcosh($args.list[0]); } - | 'arcosh(' args = function_arguments ')' { Assert("arccos", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcosh($args.list[0]); } - | 'arch(' args = function_arguments ')' { Assert("arccos", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcosh($args.list[0]); } - - | 'atanh(' args = function_arguments ')' { Assert("arctan", 1, $args.list.Count); $value = MathS.Hyperbolic.Artanh($args.list[0]); } - | 'artanh(' args = function_arguments ')' { Assert("arctan", 1, $args.list.Count); $value = MathS.Hyperbolic.Artanh($args.list[0]); } - | 'arth(' args = function_arguments ')' { Assert("arctan", 1, $args.list.Count); $value = MathS.Hyperbolic.Artanh($args.list[0]); } - - | 'acoth(' args = function_arguments ')' { Assert("arccotan", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcotanh($args.list[0]); } - | 'arcoth(' args = function_arguments ')' { Assert("arccotan", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcotanh($args.list[0]); } - | 'acotanh(' args = function_arguments ')' { Assert("arccotan", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcotanh($args.list[0]); } - | 'arcotanh(' args = function_arguments ')' { Assert("arccotan", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcotanh($args.list[0]); } - | 'arcth(' args = function_arguments ')' { Assert("arccotan", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcotanh($args.list[0]); } - - | 'asech(' args = function_arguments ')' { Assert("arcsec", 1, $args.list.Count); $value = MathS.Hyperbolic.Arsech($args.list[0]); } - | 'arsech(' args = function_arguments ')' { Assert("arcsec", 1, $args.list.Count); $value = MathS.Hyperbolic.Arsech($args.list[0]); } - | 'arsch(' args = function_arguments ')' { Assert("arcsec", 1, $args.list.Count); $value = MathS.Hyperbolic.Arsech($args.list[0]); } - - | 'acosech(' args = function_arguments ')' { Assert("arccosec", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcosech($args.list[0]); } - | 'arcosech(' args = function_arguments ')' { Assert("arccosec", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcosech($args.list[0]); } - | 'arcsch(' args = function_arguments ')' { Assert("arccosec", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcosech($args.list[0]); } - | 'acsch(' args = function_arguments ')' { Assert("arccosec", 1, $args.list.Count); $value = MathS.Hyperbolic.Arcosech($args.list[0]); } - /* End */ - - - | 'gamma(' args = function_arguments ')' { Assert("gamma", 1, $args.list.Count); $value = MathS.Gamma($args.list[0]); } - | 'derivative(' args = function_arguments ')' - { - if (Assert("derivative", (3, 2), $args.list.Count)) - { - if ($args.list[2] is Integer { EInteger: var asEInt }) - $value = MathS.Derivative($args.list[0], $args.list[1], asEInt.ToInt32Checked()); - else - throw new InvalidArgumentParseException("Expected integer number for the third argument of derivative"); - } - else - $value = MathS.Derivative($args.list[0], $args.list[1]); - } - | 'integral(' args = function_arguments ')' - { - if (Assert("integral", (3, 2), $args.list.Count)) - { - if ($args.list[2] is Integer { EInteger: var asEInt }) - $value = MathS.Integral($args.list[0], $args.list[1], asEInt.ToInt32Checked()); - else - throw new InvalidArgumentParseException("Expected number for the third argument of integral"); - } - else - $value = MathS.Integral($args.list[0], $args.list[1]); - } - | 'limit(' args = function_arguments ')' { Assert("limit", 3, $args.list.Count); $value = MathS.Limit($args.list[0], $args.list[1], $args.list[2]); } - | 'limitleft(' args = function_arguments ')' { Assert("limitleft", 3, $args.list.Count); $value = MathS.Limit($args.list[0], $args.list[1], $args.list[2], AngouriMath.Core.ApproachFrom.Left); } - | 'limitright(' args = function_arguments ')' { Assert("limitright", 3, $args.list.Count); $value = MathS.Limit($args.list[0], $args.list[1], $args.list[2], AngouriMath.Core.ApproachFrom.Right); } - | 'signum(' args = function_arguments ')' { Assert("signum", 1, $args.list.Count); $value = MathS.Signum($args.list[0]); } - | 'sgn(' args = function_arguments ')' { Assert("sgn", 1, $args.list.Count); $value = MathS.Signum($args.list[0]); } - | 'sign(' args = function_arguments ')' { Assert("sign", 1, $args.list.Count); $value = MathS.Signum($args.list[0]); } - | 'abs(' args = function_arguments ')' { Assert("abs", 1, $args.list.Count); $value = MathS.Abs($args.list[0]); } - | 'phi(' args = function_arguments ')' { Assert("phi", 1, $args.list.Count); $value = MathS.NumberTheory.Phi($args.list[0]); } - | 'domain(' args = function_arguments ')' - { - Assert("domain", 2, $args.list.Count); - if ($args.list[1] is not SpecialSet ss) - throw new InvalidArgumentParseException($"Unrecognized special set {$args.list[1].Stringize()}"); - $value = $args.list[0].WithCodomain(ss.ToDomain()); - } - | 'piecewise(' args = function_arguments ')' - { - var cases = new List(); - foreach (var arg in $args.list) - if (arg is Providedf provided) - cases.Add(provided); - else - cases.Add(new Providedf(arg, true)); - $value = new Piecewise(cases); - } - | 'apply(' args = function_arguments ')' - { - if ($args.list.Count < 2) - throw new FunctionArgumentCountException("Should be at least one argument in apply function"); - $value = $args.list[0].Apply($args.list.Skip(1).ToLList()); - } - | 'lambda(' args = function_arguments ')' - { - if ($args.list.Count < 2) - throw new FunctionArgumentCountException("Should be at least two arguments in lambda function"); - var body = $args.list.Last(); - foreach (var x in ((IEnumerable)$args.list).Reverse().Skip(1)) - { - if (x is not Variable v) throw new InvalidArgumentParseException($"Lambda is expected to have valid parameters, {x} encountered instead"); - body = body.LambdaOver(v); - } - $value = body; - } - ; - -statement: expression EOF { Result = $expression.value; } ; - -NEWLINE: ('\r'?'\n')+ -> skip ; - -// A fragment will never be counted as a token, it only serves to simplify a grammar. -fragment EXPONENT: ('e'|'E') ('+'|'-')? ('0'..'9')+ ; - -NUMBER: ('0'..'9')+ '.' ('0'..'9')* EXPONENT? 'i'? | '.'? ('0'..'9')+ EXPONENT? 'i'? | 'i' ; - -SPECIALSET: ('CC' | 'RR' | 'QQ' | 'ZZ' | 'BB') ; - -BOOLEAN: ('true' | 'True' | 'false' | 'False') ; - -VARIABLE: ('a'..'z'|'A'..'Z'|'\u0370'..'\u03FF'|'\u1F00'..'\u1FFF'|'\u0400'..'\u04FF')+ ('_' ('a'..'z'|'A'..'Z'|'0'..'9'|'\u0370'..'\u03FF'|'\u1F00'..'\u1FFF'|'\u0400'..'\u04FF')+)? ; - -COMMENT: ('//' ~[\r\n]* '\r'? '\n' | '/*' .*? '*/') -> skip ; - -WS : (' ' | '\t')+ -> skip ; \ No newline at end of file diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMath.interp b/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMath.interp deleted file mode 100644 index 0d684699e..000000000 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMath.interp +++ /dev/null @@ -1,290 +0,0 @@ -token literal names: -null -'!' -'^' -'-' -'+' -'*' -'/' -'intersect' -'/\\' -'unite' -'\\/' -'setsubtract' -'\\' -'in' -'>=' -'<=' -'>' -'<' -'equalizes' -'=' -'not' -'and' -'&' -'xor' -'or' -'|' -'implies' -'->' -'provided' -',' -';' -':' -'+oo' -'-oo' -'(|' -'|)' -'[' -']T' -']' -'(' -')' -'{' -'}' -'log(' -'sqrt(' -'cbrt(' -'sqr(' -'ln(' -'sin(' -'cos(' -'tan(' -'cotan(' -'cot(' -'sec(' -'cosec(' -'csc(' -'arcsin(' -'arccos(' -'arctan(' -'arccotan(' -'arcsec(' -'arccosec(' -'arccsc(' -'acsc(' -'asin(' -'acos(' -'atan(' -'acotan(' -'asec(' -'acosec(' -'acot(' -'arccot(' -'sinh(' -'sh(' -'cosh(' -'ch(' -'tanh(' -'th(' -'cotanh(' -'coth(' -'cth(' -'sech(' -'sch(' -'cosech(' -'csch(' -'asinh(' -'arsinh(' -'arsh(' -'acosh(' -'arcosh(' -'arch(' -'atanh(' -'artanh(' -'arth(' -'acoth(' -'arcoth(' -'acotanh(' -'arcotanh(' -'arcth(' -'asech(' -'arsech(' -'arsch(' -'acosech(' -'arcosech(' -'arcsch(' -'acsch(' -'gamma(' -'derivative(' -'integral(' -'limit(' -'limitleft(' -'limitright(' -'signum(' -'sgn(' -'sign(' -'abs(' -'phi(' -'domain(' -'piecewise(' -'apply(' -'lambda(' -null -null -null -null -null -null -null - -token symbolic names: -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -NEWLINE -NUMBER -SPECIALSET -BOOLEAN -VARIABLE -COMMENT -WS - -rule names: -factorial_expression -power_list -power_expression -unary_expression -mult_expression -sum_expression -set_operator_intersection -set_operator_union -set_operator_setsubtraction -in_operator -inequality_expression -terms_list -equality_expression -negate_expression -and_expression -xor_expression -or_expression -implies_expression -provided_expression -expression -function_arguments -interval_arguments -cset_arguments -atom -statement - - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 3, 129, 806, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 3, 2, 5, 2, 60, 10, 2, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 66, 10, 3, 13, 3, 14, 3, 67, 3, 3, 3, 3, 3, 3, 3, 3, 6, 3, 74, 10, 3, 13, 3, 14, 3, 75, 5, 3, 78, 10, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 5, 4, 85, 10, 4, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 95, 10, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 3, 5, 5, 5, 105, 10, 5, 3, 5, 3, 5, 3, 5, 5, 5, 110, 10, 5, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 3, 6, 7, 6, 122, 10, 6, 12, 6, 14, 6, 125, 11, 6, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 3, 7, 7, 7, 137, 10, 7, 12, 7, 14, 7, 140, 11, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 7, 8, 152, 10, 8, 12, 8, 14, 8, 155, 11, 8, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 3, 9, 7, 9, 167, 10, 9, 12, 9, 14, 9, 170, 11, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 7, 10, 182, 10, 10, 12, 10, 14, 10, 185, 11, 10, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 3, 11, 7, 11, 193, 10, 11, 12, 11, 14, 11, 196, 11, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 7, 12, 220, 10, 12, 12, 12, 14, 12, 223, 11, 12, 3, 13, 3, 13, 3, 13, 3, 13, 6, 13, 229, 10, 13, 13, 13, 14, 13, 230, 3, 14, 3, 14, 3, 14, 3, 14, 3, 14, 5, 14, 238, 10, 14, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 3, 15, 5, 15, 251, 10, 15, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 3, 16, 7, 16, 263, 10, 16, 12, 16, 14, 16, 266, 11, 16, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 3, 17, 7, 17, 274, 10, 17, 12, 17, 14, 17, 277, 11, 17, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 3, 18, 7, 18, 289, 10, 18, 12, 18, 14, 18, 292, 11, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 7, 19, 304, 10, 19, 12, 19, 14, 19, 307, 11, 19, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 3, 20, 7, 20, 315, 10, 20, 12, 20, 14, 20, 318, 11, 20, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 3, 22, 7, 22, 329, 10, 22, 12, 22, 14, 22, 332, 11, 22, 5, 22, 334, 10, 22, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 3, 25, 5, 25, 800, 10, 25, 3, 26, 3, 26, 3, 26, 3, 26, 3, 26, 2, 2, 27, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 2, 2, 2, 912, 2, 59, 3, 2, 2, 2, 4, 77, 3, 2, 2, 2, 6, 79, 3, 2, 2, 2, 8, 109, 3, 2, 2, 2, 10, 111, 3, 2, 2, 2, 12, 126, 3, 2, 2, 2, 14, 141, 3, 2, 2, 2, 16, 156, 3, 2, 2, 2, 18, 171, 3, 2, 2, 2, 20, 186, 3, 2, 2, 2, 22, 197, 3, 2, 2, 2, 24, 228, 3, 2, 2, 2, 26, 232, 3, 2, 2, 2, 28, 250, 3, 2, 2, 2, 30, 252, 3, 2, 2, 2, 32, 267, 3, 2, 2, 2, 34, 278, 3, 2, 2, 2, 36, 293, 3, 2, 2, 2, 38, 308, 3, 2, 2, 2, 40, 319, 3, 2, 2, 2, 42, 333, 3, 2, 2, 2, 44, 335, 3, 2, 2, 2, 46, 341, 3, 2, 2, 2, 48, 799, 3, 2, 2, 2, 50, 801, 3, 2, 2, 2, 52, 53, 5, 48, 25, 2, 53, 54, 7, 3, 2, 2, 54, 55, 8, 2, 1, 2, 55, 60, 3, 2, 2, 2, 56, 57, 5, 48, 25, 2, 57, 58, 8, 2, 1, 2, 58, 60, 3, 2, 2, 2, 59, 52, 3, 2, 2, 2, 59, 56, 3, 2, 2, 2, 60, 3, 3, 2, 2, 2, 61, 62, 7, 4, 2, 2, 62, 63, 5, 2, 2, 2, 63, 64, 8, 3, 1, 2, 64, 66, 3, 2, 2, 2, 65, 61, 3, 2, 2, 2, 66, 67, 3, 2, 2, 2, 67, 65, 3, 2, 2, 2, 67, 68, 3, 2, 2, 2, 68, 78, 3, 2, 2, 2, 69, 70, 7, 4, 2, 2, 70, 71, 5, 8, 5, 2, 71, 72, 8, 3, 1, 2, 72, 74, 3, 2, 2, 2, 73, 69, 3, 2, 2, 2, 74, 75, 3, 2, 2, 2, 75, 73, 3, 2, 2, 2, 75, 76, 3, 2, 2, 2, 76, 78, 3, 2, 2, 2, 77, 65, 3, 2, 2, 2, 77, 73, 3, 2, 2, 2, 78, 5, 3, 2, 2, 2, 79, 80, 5, 2, 2, 2, 80, 84, 8, 4, 1, 2, 81, 82, 5, 4, 3, 2, 82, 83, 8, 4, 1, 2, 83, 85, 3, 2, 2, 2, 84, 81, 3, 2, 2, 2, 84, 85, 3, 2, 2, 2, 85, 7, 3, 2, 2, 2, 86, 87, 7, 5, 2, 2, 87, 88, 5, 6, 4, 2, 88, 89, 8, 5, 1, 2, 89, 95, 3, 2, 2, 2, 90, 91, 7, 6, 2, 2, 91, 92, 5, 6, 4, 2, 92, 93, 8, 5, 1, 2, 93, 95, 3, 2, 2, 2, 94, 86, 3, 2, 2, 2, 94, 90, 3, 2, 2, 2, 95, 110, 3, 2, 2, 2, 96, 97, 7, 5, 2, 2, 97, 98, 5, 8, 5, 2, 98, 99, 8, 5, 1, 2, 99, 105, 3, 2, 2, 2, 100, 101, 7, 6, 2, 2, 101, 102, 5, 8, 5, 2, 102, 103, 8, 5, 1, 2, 103, 105, 3, 2, 2, 2, 104, 96, 3, 2, 2, 2, 104, 100, 3, 2, 2, 2, 105, 110, 3, 2, 2, 2, 106, 107, 5, 6, 4, 2, 107, 108, 8, 5, 1, 2, 108, 110, 3, 2, 2, 2, 109, 94, 3, 2, 2, 2, 109, 104, 3, 2, 2, 2, 109, 106, 3, 2, 2, 2, 110, 9, 3, 2, 2, 2, 111, 112, 5, 8, 5, 2, 112, 123, 8, 6, 1, 2, 113, 114, 7, 7, 2, 2, 114, 115, 5, 8, 5, 2, 115, 116, 8, 6, 1, 2, 116, 122, 3, 2, 2, 2, 117, 118, 7, 8, 2, 2, 118, 119, 5, 8, 5, 2, 119, 120, 8, 6, 1, 2, 120, 122, 3, 2, 2, 2, 121, 113, 3, 2, 2, 2, 121, 117, 3, 2, 2, 2, 122, 125, 3, 2, 2, 2, 123, 121, 3, 2, 2, 2, 123, 124, 3, 2, 2, 2, 124, 11, 3, 2, 2, 2, 125, 123, 3, 2, 2, 2, 126, 127, 5, 10, 6, 2, 127, 138, 8, 7, 1, 2, 128, 129, 7, 6, 2, 2, 129, 130, 5, 10, 6, 2, 130, 131, 8, 7, 1, 2, 131, 137, 3, 2, 2, 2, 132, 133, 7, 5, 2, 2, 133, 134, 5, 10, 6, 2, 134, 135, 8, 7, 1, 2, 135, 137, 3, 2, 2, 2, 136, 128, 3, 2, 2, 2, 136, 132, 3, 2, 2, 2, 137, 140, 3, 2, 2, 2, 138, 136, 3, 2, 2, 2, 138, 139, 3, 2, 2, 2, 139, 13, 3, 2, 2, 2, 140, 138, 3, 2, 2, 2, 141, 142, 5, 12, 7, 2, 142, 153, 8, 8, 1, 2, 143, 144, 7, 9, 2, 2, 144, 145, 5, 12, 7, 2, 145, 146, 8, 8, 1, 2, 146, 152, 3, 2, 2, 2, 147, 148, 7, 10, 2, 2, 148, 149, 5, 12, 7, 2, 149, 150, 8, 8, 1, 2, 150, 152, 3, 2, 2, 2, 151, 143, 3, 2, 2, 2, 151, 147, 3, 2, 2, 2, 152, 155, 3, 2, 2, 2, 153, 151, 3, 2, 2, 2, 153, 154, 3, 2, 2, 2, 154, 15, 3, 2, 2, 2, 155, 153, 3, 2, 2, 2, 156, 157, 5, 14, 8, 2, 157, 168, 8, 9, 1, 2, 158, 159, 7, 11, 2, 2, 159, 160, 5, 14, 8, 2, 160, 161, 8, 9, 1, 2, 161, 167, 3, 2, 2, 2, 162, 163, 7, 12, 2, 2, 163, 164, 5, 14, 8, 2, 164, 165, 8, 9, 1, 2, 165, 167, 3, 2, 2, 2, 166, 158, 3, 2, 2, 2, 166, 162, 3, 2, 2, 2, 167, 170, 3, 2, 2, 2, 168, 166, 3, 2, 2, 2, 168, 169, 3, 2, 2, 2, 169, 17, 3, 2, 2, 2, 170, 168, 3, 2, 2, 2, 171, 172, 5, 16, 9, 2, 172, 183, 8, 10, 1, 2, 173, 174, 7, 13, 2, 2, 174, 175, 5, 16, 9, 2, 175, 176, 8, 10, 1, 2, 176, 182, 3, 2, 2, 2, 177, 178, 7, 14, 2, 2, 178, 179, 5, 16, 9, 2, 179, 180, 8, 10, 1, 2, 180, 182, 3, 2, 2, 2, 181, 173, 3, 2, 2, 2, 181, 177, 3, 2, 2, 2, 182, 185, 3, 2, 2, 2, 183, 181, 3, 2, 2, 2, 183, 184, 3, 2, 2, 2, 184, 19, 3, 2, 2, 2, 185, 183, 3, 2, 2, 2, 186, 187, 5, 18, 10, 2, 187, 194, 8, 11, 1, 2, 188, 189, 7, 15, 2, 2, 189, 190, 5, 18, 10, 2, 190, 191, 8, 11, 1, 2, 191, 193, 3, 2, 2, 2, 192, 188, 3, 2, 2, 2, 193, 196, 3, 2, 2, 2, 194, 192, 3, 2, 2, 2, 194, 195, 3, 2, 2, 2, 195, 21, 3, 2, 2, 2, 196, 194, 3, 2, 2, 2, 197, 198, 5, 20, 11, 2, 198, 221, 8, 12, 1, 2, 199, 200, 7, 16, 2, 2, 200, 201, 5, 20, 11, 2, 201, 202, 8, 12, 1, 2, 202, 220, 3, 2, 2, 2, 203, 204, 7, 17, 2, 2, 204, 205, 5, 20, 11, 2, 205, 206, 8, 12, 1, 2, 206, 220, 3, 2, 2, 2, 207, 208, 7, 18, 2, 2, 208, 209, 5, 20, 11, 2, 209, 210, 8, 12, 1, 2, 210, 220, 3, 2, 2, 2, 211, 212, 7, 19, 2, 2, 212, 213, 5, 20, 11, 2, 213, 214, 8, 12, 1, 2, 214, 220, 3, 2, 2, 2, 215, 216, 7, 20, 2, 2, 216, 217, 5, 20, 11, 2, 217, 218, 8, 12, 1, 2, 218, 220, 3, 2, 2, 2, 219, 199, 3, 2, 2, 2, 219, 203, 3, 2, 2, 2, 219, 207, 3, 2, 2, 2, 219, 211, 3, 2, 2, 2, 219, 215, 3, 2, 2, 2, 220, 223, 3, 2, 2, 2, 221, 219, 3, 2, 2, 2, 221, 222, 3, 2, 2, 2, 222, 23, 3, 2, 2, 2, 223, 221, 3, 2, 2, 2, 224, 225, 7, 21, 2, 2, 225, 226, 5, 22, 12, 2, 226, 227, 8, 13, 1, 2, 227, 229, 3, 2, 2, 2, 228, 224, 3, 2, 2, 2, 229, 230, 3, 2, 2, 2, 230, 228, 3, 2, 2, 2, 230, 231, 3, 2, 2, 2, 231, 25, 3, 2, 2, 2, 232, 233, 5, 22, 12, 2, 233, 237, 8, 14, 1, 2, 234, 235, 5, 24, 13, 2, 235, 236, 8, 14, 1, 2, 236, 238, 3, 2, 2, 2, 237, 234, 3, 2, 2, 2, 237, 238, 3, 2, 2, 2, 238, 27, 3, 2, 2, 2, 239, 240, 7, 22, 2, 2, 240, 241, 5, 26, 14, 2, 241, 242, 8, 15, 1, 2, 242, 251, 3, 2, 2, 2, 243, 244, 7, 22, 2, 2, 244, 245, 5, 28, 15, 2, 245, 246, 8, 15, 1, 2, 246, 251, 3, 2, 2, 2, 247, 248, 5, 26, 14, 2, 248, 249, 8, 15, 1, 2, 249, 251, 3, 2, 2, 2, 250, 239, 3, 2, 2, 2, 250, 243, 3, 2, 2, 2, 250, 247, 3, 2, 2, 2, 251, 29, 3, 2, 2, 2, 252, 253, 5, 28, 15, 2, 253, 264, 8, 16, 1, 2, 254, 255, 7, 23, 2, 2, 255, 256, 5, 28, 15, 2, 256, 257, 8, 16, 1, 2, 257, 263, 3, 2, 2, 2, 258, 259, 7, 24, 2, 2, 259, 260, 5, 28, 15, 2, 260, 261, 8, 16, 1, 2, 261, 263, 3, 2, 2, 2, 262, 254, 3, 2, 2, 2, 262, 258, 3, 2, 2, 2, 263, 266, 3, 2, 2, 2, 264, 262, 3, 2, 2, 2, 264, 265, 3, 2, 2, 2, 265, 31, 3, 2, 2, 2, 266, 264, 3, 2, 2, 2, 267, 268, 5, 30, 16, 2, 268, 275, 8, 17, 1, 2, 269, 270, 7, 25, 2, 2, 270, 271, 5, 30, 16, 2, 271, 272, 8, 17, 1, 2, 272, 274, 3, 2, 2, 2, 273, 269, 3, 2, 2, 2, 274, 277, 3, 2, 2, 2, 275, 273, 3, 2, 2, 2, 275, 276, 3, 2, 2, 2, 276, 33, 3, 2, 2, 2, 277, 275, 3, 2, 2, 2, 278, 279, 5, 32, 17, 2, 279, 290, 8, 18, 1, 2, 280, 281, 7, 26, 2, 2, 281, 282, 5, 32, 17, 2, 282, 283, 8, 18, 1, 2, 283, 289, 3, 2, 2, 2, 284, 285, 7, 27, 2, 2, 285, 286, 5, 32, 17, 2, 286, 287, 8, 18, 1, 2, 287, 289, 3, 2, 2, 2, 288, 280, 3, 2, 2, 2, 288, 284, 3, 2, 2, 2, 289, 292, 3, 2, 2, 2, 290, 288, 3, 2, 2, 2, 290, 291, 3, 2, 2, 2, 291, 35, 3, 2, 2, 2, 292, 290, 3, 2, 2, 2, 293, 294, 5, 34, 18, 2, 294, 305, 8, 19, 1, 2, 295, 296, 7, 28, 2, 2, 296, 297, 5, 34, 18, 2, 297, 298, 8, 19, 1, 2, 298, 304, 3, 2, 2, 2, 299, 300, 7, 29, 2, 2, 300, 301, 5, 34, 18, 2, 301, 302, 8, 19, 1, 2, 302, 304, 3, 2, 2, 2, 303, 295, 3, 2, 2, 2, 303, 299, 3, 2, 2, 2, 304, 307, 3, 2, 2, 2, 305, 303, 3, 2, 2, 2, 305, 306, 3, 2, 2, 2, 306, 37, 3, 2, 2, 2, 307, 305, 3, 2, 2, 2, 308, 309, 5, 36, 19, 2, 309, 316, 8, 20, 1, 2, 310, 311, 7, 30, 2, 2, 311, 312, 5, 36, 19, 2, 312, 313, 8, 20, 1, 2, 313, 315, 3, 2, 2, 2, 314, 310, 3, 2, 2, 2, 315, 318, 3, 2, 2, 2, 316, 314, 3, 2, 2, 2, 316, 317, 3, 2, 2, 2, 317, 39, 3, 2, 2, 2, 318, 316, 3, 2, 2, 2, 319, 320, 5, 38, 20, 2, 320, 321, 8, 21, 1, 2, 321, 41, 3, 2, 2, 2, 322, 323, 5, 40, 21, 2, 323, 330, 8, 22, 1, 2, 324, 325, 7, 31, 2, 2, 325, 326, 5, 40, 21, 2, 326, 327, 8, 22, 1, 2, 327, 329, 3, 2, 2, 2, 328, 324, 3, 2, 2, 2, 329, 332, 3, 2, 2, 2, 330, 328, 3, 2, 2, 2, 330, 331, 3, 2, 2, 2, 331, 334, 3, 2, 2, 2, 332, 330, 3, 2, 2, 2, 333, 322, 3, 2, 2, 2, 333, 334, 3, 2, 2, 2, 334, 43, 3, 2, 2, 2, 335, 336, 5, 40, 21, 2, 336, 337, 8, 23, 1, 2, 337, 338, 7, 32, 2, 2, 338, 339, 5, 40, 21, 2, 339, 340, 8, 23, 1, 2, 340, 45, 3, 2, 2, 2, 341, 342, 5, 40, 21, 2, 342, 343, 8, 24, 1, 2, 343, 344, 7, 33, 2, 2, 344, 345, 5, 40, 21, 2, 345, 346, 8, 24, 1, 2, 346, 47, 3, 2, 2, 2, 347, 348, 7, 34, 2, 2, 348, 800, 8, 25, 1, 2, 349, 350, 7, 35, 2, 2, 350, 800, 8, 25, 1, 2, 351, 352, 7, 124, 2, 2, 352, 800, 8, 25, 1, 2, 353, 354, 7, 126, 2, 2, 354, 800, 8, 25, 1, 2, 355, 356, 7, 125, 2, 2, 356, 800, 8, 25, 1, 2, 357, 358, 7, 127, 2, 2, 358, 800, 8, 25, 1, 2, 359, 360, 7, 36, 2, 2, 360, 361, 5, 40, 21, 2, 361, 362, 7, 37, 2, 2, 362, 363, 8, 25, 1, 2, 363, 800, 3, 2, 2, 2, 364, 365, 7, 38, 2, 2, 365, 366, 5, 42, 22, 2, 366, 367, 7, 39, 2, 2, 367, 368, 8, 25, 1, 2, 368, 800, 3, 2, 2, 2, 369, 370, 7, 38, 2, 2, 370, 371, 5, 42, 22, 2, 371, 372, 7, 40, 2, 2, 372, 373, 8, 25, 1, 2, 373, 800, 3, 2, 2, 2, 374, 375, 7, 41, 2, 2, 375, 376, 5, 44, 23, 2, 376, 377, 7, 42, 2, 2, 377, 378, 8, 25, 1, 2, 378, 800, 3, 2, 2, 2, 379, 380, 7, 38, 2, 2, 380, 381, 5, 44, 23, 2, 381, 382, 7, 42, 2, 2, 382, 383, 8, 25, 1, 2, 383, 800, 3, 2, 2, 2, 384, 385, 7, 38, 2, 2, 385, 386, 5, 44, 23, 2, 386, 387, 7, 40, 2, 2, 387, 388, 8, 25, 1, 2, 388, 800, 3, 2, 2, 2, 389, 390, 7, 41, 2, 2, 390, 391, 5, 44, 23, 2, 391, 392, 7, 40, 2, 2, 392, 393, 8, 25, 1, 2, 393, 800, 3, 2, 2, 2, 394, 395, 7, 41, 2, 2, 395, 396, 5, 40, 21, 2, 396, 397, 7, 42, 2, 2, 397, 398, 8, 25, 1, 2, 398, 800, 3, 2, 2, 2, 399, 400, 7, 43, 2, 2, 400, 401, 5, 46, 24, 2, 401, 402, 7, 44, 2, 2, 402, 403, 8, 25, 1, 2, 403, 800, 3, 2, 2, 2, 404, 405, 7, 43, 2, 2, 405, 406, 5, 42, 22, 2, 406, 407, 7, 44, 2, 2, 407, 408, 8, 25, 1, 2, 408, 800, 3, 2, 2, 2, 409, 410, 7, 45, 2, 2, 410, 411, 5, 42, 22, 2, 411, 412, 7, 42, 2, 2, 412, 413, 8, 25, 1, 2, 413, 800, 3, 2, 2, 2, 414, 415, 7, 46, 2, 2, 415, 416, 5, 42, 22, 2, 416, 417, 7, 42, 2, 2, 417, 418, 8, 25, 1, 2, 418, 800, 3, 2, 2, 2, 419, 420, 7, 47, 2, 2, 420, 421, 5, 42, 22, 2, 421, 422, 7, 42, 2, 2, 422, 423, 8, 25, 1, 2, 423, 800, 3, 2, 2, 2, 424, 425, 7, 48, 2, 2, 425, 426, 5, 42, 22, 2, 426, 427, 7, 42, 2, 2, 427, 428, 8, 25, 1, 2, 428, 800, 3, 2, 2, 2, 429, 430, 7, 49, 2, 2, 430, 431, 5, 42, 22, 2, 431, 432, 7, 42, 2, 2, 432, 433, 8, 25, 1, 2, 433, 800, 3, 2, 2, 2, 434, 435, 7, 50, 2, 2, 435, 436, 5, 42, 22, 2, 436, 437, 7, 42, 2, 2, 437, 438, 8, 25, 1, 2, 438, 800, 3, 2, 2, 2, 439, 440, 7, 51, 2, 2, 440, 441, 5, 42, 22, 2, 441, 442, 7, 42, 2, 2, 442, 443, 8, 25, 1, 2, 443, 800, 3, 2, 2, 2, 444, 445, 7, 52, 2, 2, 445, 446, 5, 42, 22, 2, 446, 447, 7, 42, 2, 2, 447, 448, 8, 25, 1, 2, 448, 800, 3, 2, 2, 2, 449, 450, 7, 53, 2, 2, 450, 451, 5, 42, 22, 2, 451, 452, 7, 42, 2, 2, 452, 453, 8, 25, 1, 2, 453, 800, 3, 2, 2, 2, 454, 455, 7, 54, 2, 2, 455, 456, 5, 42, 22, 2, 456, 457, 7, 42, 2, 2, 457, 458, 8, 25, 1, 2, 458, 800, 3, 2, 2, 2, 459, 460, 7, 55, 2, 2, 460, 461, 5, 42, 22, 2, 461, 462, 7, 42, 2, 2, 462, 463, 8, 25, 1, 2, 463, 800, 3, 2, 2, 2, 464, 465, 7, 56, 2, 2, 465, 466, 5, 42, 22, 2, 466, 467, 7, 42, 2, 2, 467, 468, 8, 25, 1, 2, 468, 800, 3, 2, 2, 2, 469, 470, 7, 57, 2, 2, 470, 471, 5, 42, 22, 2, 471, 472, 7, 42, 2, 2, 472, 473, 8, 25, 1, 2, 473, 800, 3, 2, 2, 2, 474, 475, 7, 58, 2, 2, 475, 476, 5, 42, 22, 2, 476, 477, 7, 42, 2, 2, 477, 478, 8, 25, 1, 2, 478, 800, 3, 2, 2, 2, 479, 480, 7, 59, 2, 2, 480, 481, 5, 42, 22, 2, 481, 482, 7, 42, 2, 2, 482, 483, 8, 25, 1, 2, 483, 800, 3, 2, 2, 2, 484, 485, 7, 60, 2, 2, 485, 486, 5, 42, 22, 2, 486, 487, 7, 42, 2, 2, 487, 488, 8, 25, 1, 2, 488, 800, 3, 2, 2, 2, 489, 490, 7, 61, 2, 2, 490, 491, 5, 42, 22, 2, 491, 492, 7, 42, 2, 2, 492, 493, 8, 25, 1, 2, 493, 800, 3, 2, 2, 2, 494, 495, 7, 62, 2, 2, 495, 496, 5, 42, 22, 2, 496, 497, 7, 42, 2, 2, 497, 498, 8, 25, 1, 2, 498, 800, 3, 2, 2, 2, 499, 500, 7, 63, 2, 2, 500, 501, 5, 42, 22, 2, 501, 502, 7, 42, 2, 2, 502, 503, 8, 25, 1, 2, 503, 800, 3, 2, 2, 2, 504, 505, 7, 64, 2, 2, 505, 506, 5, 42, 22, 2, 506, 507, 7, 42, 2, 2, 507, 508, 8, 25, 1, 2, 508, 800, 3, 2, 2, 2, 509, 510, 7, 65, 2, 2, 510, 511, 5, 42, 22, 2, 511, 512, 7, 42, 2, 2, 512, 513, 8, 25, 1, 2, 513, 800, 3, 2, 2, 2, 514, 515, 7, 66, 2, 2, 515, 516, 5, 42, 22, 2, 516, 517, 7, 42, 2, 2, 517, 518, 8, 25, 1, 2, 518, 800, 3, 2, 2, 2, 519, 520, 7, 67, 2, 2, 520, 521, 5, 42, 22, 2, 521, 522, 7, 42, 2, 2, 522, 523, 8, 25, 1, 2, 523, 800, 3, 2, 2, 2, 524, 525, 7, 68, 2, 2, 525, 526, 5, 42, 22, 2, 526, 527, 7, 42, 2, 2, 527, 528, 8, 25, 1, 2, 528, 800, 3, 2, 2, 2, 529, 530, 7, 69, 2, 2, 530, 531, 5, 42, 22, 2, 531, 532, 7, 42, 2, 2, 532, 533, 8, 25, 1, 2, 533, 800, 3, 2, 2, 2, 534, 535, 7, 70, 2, 2, 535, 536, 5, 42, 22, 2, 536, 537, 7, 42, 2, 2, 537, 538, 8, 25, 1, 2, 538, 800, 3, 2, 2, 2, 539, 540, 7, 71, 2, 2, 540, 541, 5, 42, 22, 2, 541, 542, 7, 42, 2, 2, 542, 543, 8, 25, 1, 2, 543, 800, 3, 2, 2, 2, 544, 545, 7, 72, 2, 2, 545, 546, 5, 42, 22, 2, 546, 547, 7, 42, 2, 2, 547, 548, 8, 25, 1, 2, 548, 800, 3, 2, 2, 2, 549, 550, 7, 73, 2, 2, 550, 551, 5, 42, 22, 2, 551, 552, 7, 42, 2, 2, 552, 553, 8, 25, 1, 2, 553, 800, 3, 2, 2, 2, 554, 555, 7, 74, 2, 2, 555, 556, 5, 42, 22, 2, 556, 557, 7, 42, 2, 2, 557, 558, 8, 25, 1, 2, 558, 800, 3, 2, 2, 2, 559, 560, 7, 75, 2, 2, 560, 561, 5, 42, 22, 2, 561, 562, 7, 42, 2, 2, 562, 563, 8, 25, 1, 2, 563, 800, 3, 2, 2, 2, 564, 565, 7, 76, 2, 2, 565, 566, 5, 42, 22, 2, 566, 567, 7, 42, 2, 2, 567, 568, 8, 25, 1, 2, 568, 800, 3, 2, 2, 2, 569, 570, 7, 77, 2, 2, 570, 571, 5, 42, 22, 2, 571, 572, 7, 42, 2, 2, 572, 573, 8, 25, 1, 2, 573, 800, 3, 2, 2, 2, 574, 575, 7, 78, 2, 2, 575, 576, 5, 42, 22, 2, 576, 577, 7, 42, 2, 2, 577, 578, 8, 25, 1, 2, 578, 800, 3, 2, 2, 2, 579, 580, 7, 79, 2, 2, 580, 581, 5, 42, 22, 2, 581, 582, 7, 42, 2, 2, 582, 583, 8, 25, 1, 2, 583, 800, 3, 2, 2, 2, 584, 585, 7, 80, 2, 2, 585, 586, 5, 42, 22, 2, 586, 587, 7, 42, 2, 2, 587, 588, 8, 25, 1, 2, 588, 800, 3, 2, 2, 2, 589, 590, 7, 81, 2, 2, 590, 591, 5, 42, 22, 2, 591, 592, 7, 42, 2, 2, 592, 593, 8, 25, 1, 2, 593, 800, 3, 2, 2, 2, 594, 595, 7, 82, 2, 2, 595, 596, 5, 42, 22, 2, 596, 597, 7, 42, 2, 2, 597, 598, 8, 25, 1, 2, 598, 800, 3, 2, 2, 2, 599, 600, 7, 83, 2, 2, 600, 601, 5, 42, 22, 2, 601, 602, 7, 42, 2, 2, 602, 603, 8, 25, 1, 2, 603, 800, 3, 2, 2, 2, 604, 605, 7, 84, 2, 2, 605, 606, 5, 42, 22, 2, 606, 607, 7, 42, 2, 2, 607, 608, 8, 25, 1, 2, 608, 800, 3, 2, 2, 2, 609, 610, 7, 85, 2, 2, 610, 611, 5, 42, 22, 2, 611, 612, 7, 42, 2, 2, 612, 613, 8, 25, 1, 2, 613, 800, 3, 2, 2, 2, 614, 615, 7, 86, 2, 2, 615, 616, 5, 42, 22, 2, 616, 617, 7, 42, 2, 2, 617, 618, 8, 25, 1, 2, 618, 800, 3, 2, 2, 2, 619, 620, 7, 87, 2, 2, 620, 621, 5, 42, 22, 2, 621, 622, 7, 42, 2, 2, 622, 623, 8, 25, 1, 2, 623, 800, 3, 2, 2, 2, 624, 625, 7, 88, 2, 2, 625, 626, 5, 42, 22, 2, 626, 627, 7, 42, 2, 2, 627, 628, 8, 25, 1, 2, 628, 800, 3, 2, 2, 2, 629, 630, 7, 89, 2, 2, 630, 631, 5, 42, 22, 2, 631, 632, 7, 42, 2, 2, 632, 633, 8, 25, 1, 2, 633, 800, 3, 2, 2, 2, 634, 635, 7, 90, 2, 2, 635, 636, 5, 42, 22, 2, 636, 637, 7, 42, 2, 2, 637, 638, 8, 25, 1, 2, 638, 800, 3, 2, 2, 2, 639, 640, 7, 91, 2, 2, 640, 641, 5, 42, 22, 2, 641, 642, 7, 42, 2, 2, 642, 643, 8, 25, 1, 2, 643, 800, 3, 2, 2, 2, 644, 645, 7, 92, 2, 2, 645, 646, 5, 42, 22, 2, 646, 647, 7, 42, 2, 2, 647, 648, 8, 25, 1, 2, 648, 800, 3, 2, 2, 2, 649, 650, 7, 93, 2, 2, 650, 651, 5, 42, 22, 2, 651, 652, 7, 42, 2, 2, 652, 653, 8, 25, 1, 2, 653, 800, 3, 2, 2, 2, 654, 655, 7, 94, 2, 2, 655, 656, 5, 42, 22, 2, 656, 657, 7, 42, 2, 2, 657, 658, 8, 25, 1, 2, 658, 800, 3, 2, 2, 2, 659, 660, 7, 95, 2, 2, 660, 661, 5, 42, 22, 2, 661, 662, 7, 42, 2, 2, 662, 663, 8, 25, 1, 2, 663, 800, 3, 2, 2, 2, 664, 665, 7, 96, 2, 2, 665, 666, 5, 42, 22, 2, 666, 667, 7, 42, 2, 2, 667, 668, 8, 25, 1, 2, 668, 800, 3, 2, 2, 2, 669, 670, 7, 97, 2, 2, 670, 671, 5, 42, 22, 2, 671, 672, 7, 42, 2, 2, 672, 673, 8, 25, 1, 2, 673, 800, 3, 2, 2, 2, 674, 675, 7, 98, 2, 2, 675, 676, 5, 42, 22, 2, 676, 677, 7, 42, 2, 2, 677, 678, 8, 25, 1, 2, 678, 800, 3, 2, 2, 2, 679, 680, 7, 99, 2, 2, 680, 681, 5, 42, 22, 2, 681, 682, 7, 42, 2, 2, 682, 683, 8, 25, 1, 2, 683, 800, 3, 2, 2, 2, 684, 685, 7, 100, 2, 2, 685, 686, 5, 42, 22, 2, 686, 687, 7, 42, 2, 2, 687, 688, 8, 25, 1, 2, 688, 800, 3, 2, 2, 2, 689, 690, 7, 101, 2, 2, 690, 691, 5, 42, 22, 2, 691, 692, 7, 42, 2, 2, 692, 693, 8, 25, 1, 2, 693, 800, 3, 2, 2, 2, 694, 695, 7, 102, 2, 2, 695, 696, 5, 42, 22, 2, 696, 697, 7, 42, 2, 2, 697, 698, 8, 25, 1, 2, 698, 800, 3, 2, 2, 2, 699, 700, 7, 103, 2, 2, 700, 701, 5, 42, 22, 2, 701, 702, 7, 42, 2, 2, 702, 703, 8, 25, 1, 2, 703, 800, 3, 2, 2, 2, 704, 705, 7, 104, 2, 2, 705, 706, 5, 42, 22, 2, 706, 707, 7, 42, 2, 2, 707, 708, 8, 25, 1, 2, 708, 800, 3, 2, 2, 2, 709, 710, 7, 105, 2, 2, 710, 711, 5, 42, 22, 2, 711, 712, 7, 42, 2, 2, 712, 713, 8, 25, 1, 2, 713, 800, 3, 2, 2, 2, 714, 715, 7, 106, 2, 2, 715, 716, 5, 42, 22, 2, 716, 717, 7, 42, 2, 2, 717, 718, 8, 25, 1, 2, 718, 800, 3, 2, 2, 2, 719, 720, 7, 107, 2, 2, 720, 721, 5, 42, 22, 2, 721, 722, 7, 42, 2, 2, 722, 723, 8, 25, 1, 2, 723, 800, 3, 2, 2, 2, 724, 725, 7, 108, 2, 2, 725, 726, 5, 42, 22, 2, 726, 727, 7, 42, 2, 2, 727, 728, 8, 25, 1, 2, 728, 800, 3, 2, 2, 2, 729, 730, 7, 109, 2, 2, 730, 731, 5, 42, 22, 2, 731, 732, 7, 42, 2, 2, 732, 733, 8, 25, 1, 2, 733, 800, 3, 2, 2, 2, 734, 735, 7, 110, 2, 2, 735, 736, 5, 42, 22, 2, 736, 737, 7, 42, 2, 2, 737, 738, 8, 25, 1, 2, 738, 800, 3, 2, 2, 2, 739, 740, 7, 111, 2, 2, 740, 741, 5, 42, 22, 2, 741, 742, 7, 42, 2, 2, 742, 743, 8, 25, 1, 2, 743, 800, 3, 2, 2, 2, 744, 745, 7, 112, 2, 2, 745, 746, 5, 42, 22, 2, 746, 747, 7, 42, 2, 2, 747, 748, 8, 25, 1, 2, 748, 800, 3, 2, 2, 2, 749, 750, 7, 113, 2, 2, 750, 751, 5, 42, 22, 2, 751, 752, 7, 42, 2, 2, 752, 753, 8, 25, 1, 2, 753, 800, 3, 2, 2, 2, 754, 755, 7, 114, 2, 2, 755, 756, 5, 42, 22, 2, 756, 757, 7, 42, 2, 2, 757, 758, 8, 25, 1, 2, 758, 800, 3, 2, 2, 2, 759, 760, 7, 115, 2, 2, 760, 761, 5, 42, 22, 2, 761, 762, 7, 42, 2, 2, 762, 763, 8, 25, 1, 2, 763, 800, 3, 2, 2, 2, 764, 765, 7, 116, 2, 2, 765, 766, 5, 42, 22, 2, 766, 767, 7, 42, 2, 2, 767, 768, 8, 25, 1, 2, 768, 800, 3, 2, 2, 2, 769, 770, 7, 117, 2, 2, 770, 771, 5, 42, 22, 2, 771, 772, 7, 42, 2, 2, 772, 773, 8, 25, 1, 2, 773, 800, 3, 2, 2, 2, 774, 775, 7, 118, 2, 2, 775, 776, 5, 42, 22, 2, 776, 777, 7, 42, 2, 2, 777, 778, 8, 25, 1, 2, 778, 800, 3, 2, 2, 2, 779, 780, 7, 119, 2, 2, 780, 781, 5, 42, 22, 2, 781, 782, 7, 42, 2, 2, 782, 783, 8, 25, 1, 2, 783, 800, 3, 2, 2, 2, 784, 785, 7, 120, 2, 2, 785, 786, 5, 42, 22, 2, 786, 787, 7, 42, 2, 2, 787, 788, 8, 25, 1, 2, 788, 800, 3, 2, 2, 2, 789, 790, 7, 121, 2, 2, 790, 791, 5, 42, 22, 2, 791, 792, 7, 42, 2, 2, 792, 793, 8, 25, 1, 2, 793, 800, 3, 2, 2, 2, 794, 795, 7, 122, 2, 2, 795, 796, 5, 42, 22, 2, 796, 797, 7, 42, 2, 2, 797, 798, 8, 25, 1, 2, 798, 800, 3, 2, 2, 2, 799, 347, 3, 2, 2, 2, 799, 349, 3, 2, 2, 2, 799, 351, 3, 2, 2, 2, 799, 353, 3, 2, 2, 2, 799, 355, 3, 2, 2, 2, 799, 357, 3, 2, 2, 2, 799, 359, 3, 2, 2, 2, 799, 364, 3, 2, 2, 2, 799, 369, 3, 2, 2, 2, 799, 374, 3, 2, 2, 2, 799, 379, 3, 2, 2, 2, 799, 384, 3, 2, 2, 2, 799, 389, 3, 2, 2, 2, 799, 394, 3, 2, 2, 2, 799, 399, 3, 2, 2, 2, 799, 404, 3, 2, 2, 2, 799, 409, 3, 2, 2, 2, 799, 414, 3, 2, 2, 2, 799, 419, 3, 2, 2, 2, 799, 424, 3, 2, 2, 2, 799, 429, 3, 2, 2, 2, 799, 434, 3, 2, 2, 2, 799, 439, 3, 2, 2, 2, 799, 444, 3, 2, 2, 2, 799, 449, 3, 2, 2, 2, 799, 454, 3, 2, 2, 2, 799, 459, 3, 2, 2, 2, 799, 464, 3, 2, 2, 2, 799, 469, 3, 2, 2, 2, 799, 474, 3, 2, 2, 2, 799, 479, 3, 2, 2, 2, 799, 484, 3, 2, 2, 2, 799, 489, 3, 2, 2, 2, 799, 494, 3, 2, 2, 2, 799, 499, 3, 2, 2, 2, 799, 504, 3, 2, 2, 2, 799, 509, 3, 2, 2, 2, 799, 514, 3, 2, 2, 2, 799, 519, 3, 2, 2, 2, 799, 524, 3, 2, 2, 2, 799, 529, 3, 2, 2, 2, 799, 534, 3, 2, 2, 2, 799, 539, 3, 2, 2, 2, 799, 544, 3, 2, 2, 2, 799, 549, 3, 2, 2, 2, 799, 554, 3, 2, 2, 2, 799, 559, 3, 2, 2, 2, 799, 564, 3, 2, 2, 2, 799, 569, 3, 2, 2, 2, 799, 574, 3, 2, 2, 2, 799, 579, 3, 2, 2, 2, 799, 584, 3, 2, 2, 2, 799, 589, 3, 2, 2, 2, 799, 594, 3, 2, 2, 2, 799, 599, 3, 2, 2, 2, 799, 604, 3, 2, 2, 2, 799, 609, 3, 2, 2, 2, 799, 614, 3, 2, 2, 2, 799, 619, 3, 2, 2, 2, 799, 624, 3, 2, 2, 2, 799, 629, 3, 2, 2, 2, 799, 634, 3, 2, 2, 2, 799, 639, 3, 2, 2, 2, 799, 644, 3, 2, 2, 2, 799, 649, 3, 2, 2, 2, 799, 654, 3, 2, 2, 2, 799, 659, 3, 2, 2, 2, 799, 664, 3, 2, 2, 2, 799, 669, 3, 2, 2, 2, 799, 674, 3, 2, 2, 2, 799, 679, 3, 2, 2, 2, 799, 684, 3, 2, 2, 2, 799, 689, 3, 2, 2, 2, 799, 694, 3, 2, 2, 2, 799, 699, 3, 2, 2, 2, 799, 704, 3, 2, 2, 2, 799, 709, 3, 2, 2, 2, 799, 714, 3, 2, 2, 2, 799, 719, 3, 2, 2, 2, 799, 724, 3, 2, 2, 2, 799, 729, 3, 2, 2, 2, 799, 734, 3, 2, 2, 2, 799, 739, 3, 2, 2, 2, 799, 744, 3, 2, 2, 2, 799, 749, 3, 2, 2, 2, 799, 754, 3, 2, 2, 2, 799, 759, 3, 2, 2, 2, 799, 764, 3, 2, 2, 2, 799, 769, 3, 2, 2, 2, 799, 774, 3, 2, 2, 2, 799, 779, 3, 2, 2, 2, 799, 784, 3, 2, 2, 2, 799, 789, 3, 2, 2, 2, 799, 794, 3, 2, 2, 2, 800, 49, 3, 2, 2, 2, 801, 802, 5, 40, 21, 2, 802, 803, 7, 2, 2, 3, 803, 804, 8, 26, 1, 2, 804, 51, 3, 2, 2, 2, 37, 59, 67, 75, 77, 84, 94, 104, 109, 121, 123, 136, 138, 151, 153, 166, 168, 181, 183, 194, 219, 221, 230, 237, 250, 262, 264, 275, 288, 290, 303, 305, 316, 330, 333, 799] \ No newline at end of file diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMath.tokens b/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMath.tokens deleted file mode 100644 index 4eb67b898..000000000 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMath.tokens +++ /dev/null @@ -1,247 +0,0 @@ -T__0=1 -T__1=2 -T__2=3 -T__3=4 -T__4=5 -T__5=6 -T__6=7 -T__7=8 -T__8=9 -T__9=10 -T__10=11 -T__11=12 -T__12=13 -T__13=14 -T__14=15 -T__15=16 -T__16=17 -T__17=18 -T__18=19 -T__19=20 -T__20=21 -T__21=22 -T__22=23 -T__23=24 -T__24=25 -T__25=26 -T__26=27 -T__27=28 -T__28=29 -T__29=30 -T__30=31 -T__31=32 -T__32=33 -T__33=34 -T__34=35 -T__35=36 -T__36=37 -T__37=38 -T__38=39 -T__39=40 -T__40=41 -T__41=42 -T__42=43 -T__43=44 -T__44=45 -T__45=46 -T__46=47 -T__47=48 -T__48=49 -T__49=50 -T__50=51 -T__51=52 -T__52=53 -T__53=54 -T__54=55 -T__55=56 -T__56=57 -T__57=58 -T__58=59 -T__59=60 -T__60=61 -T__61=62 -T__62=63 -T__63=64 -T__64=65 -T__65=66 -T__66=67 -T__67=68 -T__68=69 -T__69=70 -T__70=71 -T__71=72 -T__72=73 -T__73=74 -T__74=75 -T__75=76 -T__76=77 -T__77=78 -T__78=79 -T__79=80 -T__80=81 -T__81=82 -T__82=83 -T__83=84 -T__84=85 -T__85=86 -T__86=87 -T__87=88 -T__88=89 -T__89=90 -T__90=91 -T__91=92 -T__92=93 -T__93=94 -T__94=95 -T__95=96 -T__96=97 -T__97=98 -T__98=99 -T__99=100 -T__100=101 -T__101=102 -T__102=103 -T__103=104 -T__104=105 -T__105=106 -T__106=107 -T__107=108 -T__108=109 -T__109=110 -T__110=111 -T__111=112 -T__112=113 -T__113=114 -T__114=115 -T__115=116 -T__116=117 -T__117=118 -T__118=119 -T__119=120 -NEWLINE=121 -NUMBER=122 -SPECIALSET=123 -BOOLEAN=124 -VARIABLE=125 -COMMENT=126 -WS=127 -'!'=1 -'^'=2 -'-'=3 -'+'=4 -'*'=5 -'/'=6 -'intersect'=7 -'/\\'=8 -'unite'=9 -'\\/'=10 -'setsubtract'=11 -'\\'=12 -'in'=13 -'>='=14 -'<='=15 -'>'=16 -'<'=17 -'equalizes'=18 -'='=19 -'not'=20 -'and'=21 -'&'=22 -'xor'=23 -'or'=24 -'|'=25 -'implies'=26 -'->'=27 -'provided'=28 -','=29 -';'=30 -':'=31 -'+oo'=32 -'-oo'=33 -'(|'=34 -'|)'=35 -'['=36 -']T'=37 -']'=38 -'('=39 -')'=40 -'{'=41 -'}'=42 -'log('=43 -'sqrt('=44 -'cbrt('=45 -'sqr('=46 -'ln('=47 -'sin('=48 -'cos('=49 -'tan('=50 -'cotan('=51 -'cot('=52 -'sec('=53 -'cosec('=54 -'csc('=55 -'arcsin('=56 -'arccos('=57 -'arctan('=58 -'arccotan('=59 -'arcsec('=60 -'arccosec('=61 -'arccsc('=62 -'acsc('=63 -'asin('=64 -'acos('=65 -'atan('=66 -'acotan('=67 -'asec('=68 -'acosec('=69 -'acot('=70 -'arccot('=71 -'sinh('=72 -'sh('=73 -'cosh('=74 -'ch('=75 -'tanh('=76 -'th('=77 -'cotanh('=78 -'coth('=79 -'cth('=80 -'sech('=81 -'sch('=82 -'cosech('=83 -'csch('=84 -'asinh('=85 -'arsinh('=86 -'arsh('=87 -'acosh('=88 -'arcosh('=89 -'arch('=90 -'atanh('=91 -'artanh('=92 -'arth('=93 -'acoth('=94 -'arcoth('=95 -'acotanh('=96 -'arcotanh('=97 -'arcth('=98 -'asech('=99 -'arsech('=100 -'arsch('=101 -'acosech('=102 -'arcosech('=103 -'arcsch('=104 -'acsch('=105 -'gamma('=106 -'derivative('=107 -'integral('=108 -'limit('=109 -'limitleft('=110 -'limitright('=111 -'signum('=112 -'sgn('=113 -'sign('=114 -'abs('=115 -'phi('=116 -'domain('=117 -'piecewise('=118 -'apply('=119 -'lambda('=120 diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathBaseListener.cs b/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathBaseListener.cs deleted file mode 100644 index 1eceda354..000000000 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathBaseListener.cs +++ /dev/null @@ -1,361 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// ANTLR Version: 4.8 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -// Generated from ./AngouriMath.g by ANTLR 4.8 - -// Unreachable code detected -#pragma warning disable 0162 -// The variable '...' is assigned but its value is never used -#pragma warning disable 0219 -// Missing XML comment for publicly visible type or member '...' -#pragma warning disable 1591 -// Ambiguous reference in cref attribute -#pragma warning disable 419 - -namespace AngouriMath.Core.Antlr { - - using System.Linq; - using AngouriMath; - using static AngouriMath.Core.Exceptions.FunctionArgumentCountException; - using static AngouriMath.Entity.Number; - using AngouriMath.Core.Exceptions; - using static AngouriMath.Entity.Set; - using static AngouriMath.Entity; - - -using Antlr4.Runtime.Misc; -using IErrorNode = Antlr4.Runtime.Tree.IErrorNode; -using ITerminalNode = Antlr4.Runtime.Tree.ITerminalNode; -using IToken = Antlr4.Runtime.IToken; -using ParserRuleContext = Antlr4.Runtime.ParserRuleContext; - -/// -/// This class provides an empty implementation of , -/// which can be extended to create a listener which only needs to handle a subset -/// of the available methods. -/// -[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.8")] -[System.CLSCompliant(false)] -internal partial class AngouriMathBaseListener : IAngouriMathListener { - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterFactorial_expression([NotNull] AngouriMathParser.Factorial_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitFactorial_expression([NotNull] AngouriMathParser.Factorial_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterPower_list([NotNull] AngouriMathParser.Power_listContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitPower_list([NotNull] AngouriMathParser.Power_listContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterPower_expression([NotNull] AngouriMathParser.Power_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitPower_expression([NotNull] AngouriMathParser.Power_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterUnary_expression([NotNull] AngouriMathParser.Unary_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitUnary_expression([NotNull] AngouriMathParser.Unary_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterMult_expression([NotNull] AngouriMathParser.Mult_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitMult_expression([NotNull] AngouriMathParser.Mult_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterSum_expression([NotNull] AngouriMathParser.Sum_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitSum_expression([NotNull] AngouriMathParser.Sum_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterSet_operator_intersection([NotNull] AngouriMathParser.Set_operator_intersectionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitSet_operator_intersection([NotNull] AngouriMathParser.Set_operator_intersectionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterSet_operator_union([NotNull] AngouriMathParser.Set_operator_unionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitSet_operator_union([NotNull] AngouriMathParser.Set_operator_unionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterSet_operator_setsubtraction([NotNull] AngouriMathParser.Set_operator_setsubtractionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitSet_operator_setsubtraction([NotNull] AngouriMathParser.Set_operator_setsubtractionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterIn_operator([NotNull] AngouriMathParser.In_operatorContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitIn_operator([NotNull] AngouriMathParser.In_operatorContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterInequality_expression([NotNull] AngouriMathParser.Inequality_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitInequality_expression([NotNull] AngouriMathParser.Inequality_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterTerms_list([NotNull] AngouriMathParser.Terms_listContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitTerms_list([NotNull] AngouriMathParser.Terms_listContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterEquality_expression([NotNull] AngouriMathParser.Equality_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitEquality_expression([NotNull] AngouriMathParser.Equality_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterNegate_expression([NotNull] AngouriMathParser.Negate_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitNegate_expression([NotNull] AngouriMathParser.Negate_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterAnd_expression([NotNull] AngouriMathParser.And_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitAnd_expression([NotNull] AngouriMathParser.And_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterXor_expression([NotNull] AngouriMathParser.Xor_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitXor_expression([NotNull] AngouriMathParser.Xor_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterOr_expression([NotNull] AngouriMathParser.Or_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitOr_expression([NotNull] AngouriMathParser.Or_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterImplies_expression([NotNull] AngouriMathParser.Implies_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitImplies_expression([NotNull] AngouriMathParser.Implies_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterProvided_expression([NotNull] AngouriMathParser.Provided_expressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitProvided_expression([NotNull] AngouriMathParser.Provided_expressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterExpression([NotNull] AngouriMathParser.ExpressionContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitExpression([NotNull] AngouriMathParser.ExpressionContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterFunction_arguments([NotNull] AngouriMathParser.Function_argumentsContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitFunction_arguments([NotNull] AngouriMathParser.Function_argumentsContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterInterval_arguments([NotNull] AngouriMathParser.Interval_argumentsContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitInterval_arguments([NotNull] AngouriMathParser.Interval_argumentsContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterCset_arguments([NotNull] AngouriMathParser.Cset_argumentsContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitCset_arguments([NotNull] AngouriMathParser.Cset_argumentsContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterAtom([NotNull] AngouriMathParser.AtomContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitAtom([NotNull] AngouriMathParser.AtomContext context) { } - /// - /// Enter a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void EnterStatement([NotNull] AngouriMathParser.StatementContext context) { } - /// - /// Exit a parse tree produced by . - /// The default implementation does nothing. - /// - /// The parse tree. - public virtual void ExitStatement([NotNull] AngouriMathParser.StatementContext context) { } - - /// - /// The default implementation does nothing. - public virtual void EnterEveryRule([NotNull] ParserRuleContext context) { } - /// - /// The default implementation does nothing. - public virtual void ExitEveryRule([NotNull] ParserRuleContext context) { } - /// - /// The default implementation does nothing. - public virtual void VisitTerminal([NotNull] ITerminalNode node) { } - /// - /// The default implementation does nothing. - public virtual void VisitErrorNode([NotNull] IErrorNode node) { } -} -} // namespace AngouriMath.Core.Antlr diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathLexer.cs b/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathLexer.cs deleted file mode 100644 index afc07d18d..000000000 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathLexer.cs +++ /dev/null @@ -1,1066 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// ANTLR Version: 4.8 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -// Generated from ./AngouriMath.g by ANTLR 4.8 - -// Unreachable code detected -#pragma warning disable 0162 -// The variable '...' is assigned but its value is never used -#pragma warning disable 0219 -// Missing XML comment for publicly visible type or member '...' -#pragma warning disable 1591 -// Ambiguous reference in cref attribute -#pragma warning disable 419 - -namespace AngouriMath.Core.Antlr { -using System; -using System.IO; -using System.Text; -using Antlr4.Runtime; -using Antlr4.Runtime.Atn; -using Antlr4.Runtime.Misc; -using DFA = Antlr4.Runtime.Dfa.DFA; - -[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.8")] -[System.CLSCompliant(false)] -internal partial class AngouriMathLexer : Lexer { - protected static DFA[] decisionToDFA; - protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); - public const int - T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, - T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17, - T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24, - T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31, - T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38, - T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45, - T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52, - T__52=53, T__53=54, T__54=55, T__55=56, T__56=57, T__57=58, T__58=59, - T__59=60, T__60=61, T__61=62, T__62=63, T__63=64, T__64=65, T__65=66, - T__66=67, T__67=68, T__68=69, T__69=70, T__70=71, T__71=72, T__72=73, - T__73=74, T__74=75, T__75=76, T__76=77, T__77=78, T__78=79, T__79=80, - T__80=81, T__81=82, T__82=83, T__83=84, T__84=85, T__85=86, T__86=87, - T__87=88, T__88=89, T__89=90, T__90=91, T__91=92, T__92=93, T__93=94, - T__94=95, T__95=96, T__96=97, T__97=98, T__98=99, T__99=100, T__100=101, - T__101=102, T__102=103, T__103=104, T__104=105, T__105=106, T__106=107, - T__107=108, T__108=109, T__109=110, T__110=111, T__111=112, T__112=113, - T__113=114, T__114=115, T__115=116, T__116=117, T__117=118, T__118=119, - T__119=120, NEWLINE=121, NUMBER=122, SPECIALSET=123, BOOLEAN=124, VARIABLE=125, - COMMENT=126, WS=127; - public static string[] channelNames = { - "DEFAULT_TOKEN_CHANNEL", "HIDDEN" - }; - - public static string[] modeNames = { - "DEFAULT_MODE" - }; - - public static readonly string[] ruleNames = { - "T__0", "T__1", "T__2", "T__3", "T__4", "T__5", "T__6", "T__7", "T__8", - "T__9", "T__10", "T__11", "T__12", "T__13", "T__14", "T__15", "T__16", - "T__17", "T__18", "T__19", "T__20", "T__21", "T__22", "T__23", "T__24", - "T__25", "T__26", "T__27", "T__28", "T__29", "T__30", "T__31", "T__32", - "T__33", "T__34", "T__35", "T__36", "T__37", "T__38", "T__39", "T__40", - "T__41", "T__42", "T__43", "T__44", "T__45", "T__46", "T__47", "T__48", - "T__49", "T__50", "T__51", "T__52", "T__53", "T__54", "T__55", "T__56", - "T__57", "T__58", "T__59", "T__60", "T__61", "T__62", "T__63", "T__64", - "T__65", "T__66", "T__67", "T__68", "T__69", "T__70", "T__71", "T__72", - "T__73", "T__74", "T__75", "T__76", "T__77", "T__78", "T__79", "T__80", - "T__81", "T__82", "T__83", "T__84", "T__85", "T__86", "T__87", "T__88", - "T__89", "T__90", "T__91", "T__92", "T__93", "T__94", "T__95", "T__96", - "T__97", "T__98", "T__99", "T__100", "T__101", "T__102", "T__103", "T__104", - "T__105", "T__106", "T__107", "T__108", "T__109", "T__110", "T__111", - "T__112", "T__113", "T__114", "T__115", "T__116", "T__117", "T__118", - "T__119", "NEWLINE", "EXPONENT", "NUMBER", "SPECIALSET", "BOOLEAN", "VARIABLE", - "COMMENT", "WS" - }; - - - // As the declaration order of static fields is the initialization order - // We will get null if we access the private static field _LiteralNames from static fields defined here - // So these are instance fields - public readonly CommonToken Multiply = new(Array.IndexOf(_LiteralNames, "'*'"), "*"); - public readonly CommonToken Power = new(Array.IndexOf(_LiteralNames, "'^'"), "^"); - - - public AngouriMathLexer(ICharStream input) - : this(input, Console.Out, Console.Error) { } - - public AngouriMathLexer(ICharStream input, TextWriter output, TextWriter errorOutput) - : base(input, output, errorOutput) - { - Interpreter = new LexerATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); - } - - private static readonly string[] _LiteralNames = { - null, "'!'", "'^'", "'-'", "'+'", "'*'", "'/'", "'intersect'", "'/\\'", - "'unite'", "'\\/'", "'setsubtract'", "'\\'", "'in'", "'>='", "'<='", "'>'", - "'<'", "'equalizes'", "'='", "'not'", "'and'", "'&'", "'xor'", "'or'", - "'|'", "'implies'", "'->'", "'provided'", "','", "';'", "':'", "'+oo'", - "'-oo'", "'(|'", "'|)'", "'['", "']T'", "']'", "'('", "')'", "'{'", "'}'", - "'log('", "'sqrt('", "'cbrt('", "'sqr('", "'ln('", "'sin('", "'cos('", - "'tan('", "'cotan('", "'cot('", "'sec('", "'cosec('", "'csc('", "'arcsin('", - "'arccos('", "'arctan('", "'arccotan('", "'arcsec('", "'arccosec('", "'arccsc('", - "'acsc('", "'asin('", "'acos('", "'atan('", "'acotan('", "'asec('", "'acosec('", - "'acot('", "'arccot('", "'sinh('", "'sh('", "'cosh('", "'ch('", "'tanh('", - "'th('", "'cotanh('", "'coth('", "'cth('", "'sech('", "'sch('", "'cosech('", - "'csch('", "'asinh('", "'arsinh('", "'arsh('", "'acosh('", "'arcosh('", - "'arch('", "'atanh('", "'artanh('", "'arth('", "'acoth('", "'arcoth('", - "'acotanh('", "'arcotanh('", "'arcth('", "'asech('", "'arsech('", "'arsch('", - "'acosech('", "'arcosech('", "'arcsch('", "'acsch('", "'gamma('", "'derivative('", - "'integral('", "'limit('", "'limitleft('", "'limitright('", "'signum('", - "'sgn('", "'sign('", "'abs('", "'phi('", "'domain('", "'piecewise('", - "'apply('", "'lambda('" - }; - private static readonly string[] _SymbolicNames = { - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, "NEWLINE", "NUMBER", "SPECIALSET", "BOOLEAN", "VARIABLE", "COMMENT", - "WS" - }; - public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); - - [NotNull] - public override IVocabulary Vocabulary - { - get - { - return DefaultVocabulary; - } - } - - public override string GrammarFileName { get { return "AngouriMath.g"; } } - - public override string[] RuleNames { get { return ruleNames; } } - - public override string[] ChannelNames { get { return channelNames; } } - - public override string[] ModeNames { get { return modeNames; } } - - public override string SerializedAtn { get { return new string(_serializedATN); } } - - static AngouriMathLexer() { - decisionToDFA = new DFA[_ATN.NumberOfDecisions]; - for (int i = 0; i < _ATN.NumberOfDecisions; i++) { - decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); - } - } - private static char[] _serializedATN = { - '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x2', '\x81', '\x43E', '\b', '\x1', '\x4', '\x2', '\t', '\x2', - '\x4', '\x3', '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', - '\x5', '\x4', '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', - '\t', '\b', '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', - '\t', '\v', '\x4', '\f', '\t', '\f', '\x4', '\r', '\t', '\r', '\x4', '\xE', - '\t', '\xE', '\x4', '\xF', '\t', '\xF', '\x4', '\x10', '\t', '\x10', '\x4', - '\x11', '\t', '\x11', '\x4', '\x12', '\t', '\x12', '\x4', '\x13', '\t', - '\x13', '\x4', '\x14', '\t', '\x14', '\x4', '\x15', '\t', '\x15', '\x4', - '\x16', '\t', '\x16', '\x4', '\x17', '\t', '\x17', '\x4', '\x18', '\t', - '\x18', '\x4', '\x19', '\t', '\x19', '\x4', '\x1A', '\t', '\x1A', '\x4', - '\x1B', '\t', '\x1B', '\x4', '\x1C', '\t', '\x1C', '\x4', '\x1D', '\t', - '\x1D', '\x4', '\x1E', '\t', '\x1E', '\x4', '\x1F', '\t', '\x1F', '\x4', - ' ', '\t', ' ', '\x4', '!', '\t', '!', '\x4', '\"', '\t', '\"', '\x4', - '#', '\t', '#', '\x4', '$', '\t', '$', '\x4', '%', '\t', '%', '\x4', '&', - '\t', '&', '\x4', '\'', '\t', '\'', '\x4', '(', '\t', '(', '\x4', ')', - '\t', ')', '\x4', '*', '\t', '*', '\x4', '+', '\t', '+', '\x4', ',', '\t', - ',', '\x4', '-', '\t', '-', '\x4', '.', '\t', '.', '\x4', '/', '\t', '/', - '\x4', '\x30', '\t', '\x30', '\x4', '\x31', '\t', '\x31', '\x4', '\x32', - '\t', '\x32', '\x4', '\x33', '\t', '\x33', '\x4', '\x34', '\t', '\x34', - '\x4', '\x35', '\t', '\x35', '\x4', '\x36', '\t', '\x36', '\x4', '\x37', - '\t', '\x37', '\x4', '\x38', '\t', '\x38', '\x4', '\x39', '\t', '\x39', - '\x4', ':', '\t', ':', '\x4', ';', '\t', ';', '\x4', '<', '\t', '<', '\x4', - '=', '\t', '=', '\x4', '>', '\t', '>', '\x4', '?', '\t', '?', '\x4', '@', - '\t', '@', '\x4', '\x41', '\t', '\x41', '\x4', '\x42', '\t', '\x42', '\x4', - '\x43', '\t', '\x43', '\x4', '\x44', '\t', '\x44', '\x4', '\x45', '\t', - '\x45', '\x4', '\x46', '\t', '\x46', '\x4', 'G', '\t', 'G', '\x4', 'H', - '\t', 'H', '\x4', 'I', '\t', 'I', '\x4', 'J', '\t', 'J', '\x4', 'K', '\t', - 'K', '\x4', 'L', '\t', 'L', '\x4', 'M', '\t', 'M', '\x4', 'N', '\t', 'N', - '\x4', 'O', '\t', 'O', '\x4', 'P', '\t', 'P', '\x4', 'Q', '\t', 'Q', '\x4', - 'R', '\t', 'R', '\x4', 'S', '\t', 'S', '\x4', 'T', '\t', 'T', '\x4', 'U', - '\t', 'U', '\x4', 'V', '\t', 'V', '\x4', 'W', '\t', 'W', '\x4', 'X', '\t', - 'X', '\x4', 'Y', '\t', 'Y', '\x4', 'Z', '\t', 'Z', '\x4', '[', '\t', '[', - '\x4', '\\', '\t', '\\', '\x4', ']', '\t', ']', '\x4', '^', '\t', '^', - '\x4', '_', '\t', '_', '\x4', '`', '\t', '`', '\x4', '\x61', '\t', '\x61', - '\x4', '\x62', '\t', '\x62', '\x4', '\x63', '\t', '\x63', '\x4', '\x64', - '\t', '\x64', '\x4', '\x65', '\t', '\x65', '\x4', '\x66', '\t', '\x66', - '\x4', 'g', '\t', 'g', '\x4', 'h', '\t', 'h', '\x4', 'i', '\t', 'i', '\x4', - 'j', '\t', 'j', '\x4', 'k', '\t', 'k', '\x4', 'l', '\t', 'l', '\x4', 'm', - '\t', 'm', '\x4', 'n', '\t', 'n', '\x4', 'o', '\t', 'o', '\x4', 'p', '\t', - 'p', '\x4', 'q', '\t', 'q', '\x4', 'r', '\t', 'r', '\x4', 's', '\t', 's', - '\x4', 't', '\t', 't', '\x4', 'u', '\t', 'u', '\x4', 'v', '\t', 'v', '\x4', - 'w', '\t', 'w', '\x4', 'x', '\t', 'x', '\x4', 'y', '\t', 'y', '\x4', 'z', - '\t', 'z', '\x4', '{', '\t', '{', '\x4', '|', '\t', '|', '\x4', '}', '\t', - '}', '\x4', '~', '\t', '~', '\x4', '\x7F', '\t', '\x7F', '\x4', '\x80', - '\t', '\x80', '\x4', '\x81', '\t', '\x81', '\x3', '\x2', '\x3', '\x2', - '\x3', '\x3', '\x3', '\x3', '\x3', '\x4', '\x3', '\x4', '\x3', '\x5', - '\x3', '\x5', '\x3', '\x6', '\x3', '\x6', '\x3', '\a', '\x3', '\a', '\x3', - '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', - '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\t', '\x3', - '\t', '\x3', '\t', '\x3', '\n', '\x3', '\n', '\x3', '\n', '\x3', '\n', - '\x3', '\n', '\x3', '\n', '\x3', '\v', '\x3', '\v', '\x3', '\v', '\x3', - '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', - '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', - '\f', '\x3', '\r', '\x3', '\r', '\x3', '\xE', '\x3', '\xE', '\x3', '\xE', - '\x3', '\xF', '\x3', '\xF', '\x3', '\xF', '\x3', '\x10', '\x3', '\x10', - '\x3', '\x10', '\x3', '\x11', '\x3', '\x11', '\x3', '\x12', '\x3', '\x12', - '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', - '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', - '\x3', '\x14', '\x3', '\x14', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', - '\x3', '\x15', '\x3', '\x16', '\x3', '\x16', '\x3', '\x16', '\x3', '\x16', - '\x3', '\x17', '\x3', '\x17', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', - '\x3', '\x18', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x1A', - '\x3', '\x1A', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', - '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1B', '\x3', '\x1C', - '\x3', '\x1C', '\x3', '\x1C', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', - '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', '\x3', '\x1D', - '\x3', '\x1D', '\x3', '\x1E', '\x3', '\x1E', '\x3', '\x1F', '\x3', '\x1F', - '\x3', ' ', '\x3', ' ', '\x3', '!', '\x3', '!', '\x3', '!', '\x3', '!', - '\x3', '\"', '\x3', '\"', '\x3', '\"', '\x3', '\"', '\x3', '#', '\x3', - '#', '\x3', '#', '\x3', '$', '\x3', '$', '\x3', '$', '\x3', '%', '\x3', - '%', '\x3', '&', '\x3', '&', '\x3', '&', '\x3', '\'', '\x3', '\'', '\x3', - '(', '\x3', '(', '\x3', ')', '\x3', ')', '\x3', '*', '\x3', '*', '\x3', - '+', '\x3', '+', '\x3', ',', '\x3', ',', '\x3', ',', '\x3', ',', '\x3', - ',', '\x3', '-', '\x3', '-', '\x3', '-', '\x3', '-', '\x3', '-', '\x3', - '-', '\x3', '.', '\x3', '.', '\x3', '.', '\x3', '.', '\x3', '.', '\x3', - '.', '\x3', '/', '\x3', '/', '\x3', '/', '\x3', '/', '\x3', '/', '\x3', - '\x30', '\x3', '\x30', '\x3', '\x30', '\x3', '\x30', '\x3', '\x31', '\x3', - '\x31', '\x3', '\x31', '\x3', '\x31', '\x3', '\x31', '\x3', '\x32', '\x3', - '\x32', '\x3', '\x32', '\x3', '\x32', '\x3', '\x32', '\x3', '\x33', '\x3', - '\x33', '\x3', '\x33', '\x3', '\x33', '\x3', '\x33', '\x3', '\x34', '\x3', - '\x34', '\x3', '\x34', '\x3', '\x34', '\x3', '\x34', '\x3', '\x34', '\x3', - '\x34', '\x3', '\x35', '\x3', '\x35', '\x3', '\x35', '\x3', '\x35', '\x3', - '\x35', '\x3', '\x36', '\x3', '\x36', '\x3', '\x36', '\x3', '\x36', '\x3', - '\x36', '\x3', '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', - '\x37', '\x3', '\x37', '\x3', '\x37', '\x3', '\x38', '\x3', '\x38', '\x3', - '\x38', '\x3', '\x38', '\x3', '\x38', '\x3', '\x39', '\x3', '\x39', '\x3', - '\x39', '\x3', '\x39', '\x3', '\x39', '\x3', '\x39', '\x3', '\x39', '\x3', - '\x39', '\x3', ':', '\x3', ':', '\x3', ':', '\x3', ':', '\x3', ':', '\x3', - ':', '\x3', ':', '\x3', ':', '\x3', ';', '\x3', ';', '\x3', ';', '\x3', - ';', '\x3', ';', '\x3', ';', '\x3', ';', '\x3', ';', '\x3', '<', '\x3', - '<', '\x3', '<', '\x3', '<', '\x3', '<', '\x3', '<', '\x3', '<', '\x3', - '<', '\x3', '<', '\x3', '<', '\x3', '=', '\x3', '=', '\x3', '=', '\x3', - '=', '\x3', '=', '\x3', '=', '\x3', '=', '\x3', '=', '\x3', '>', '\x3', - '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', '>', '\x3', - '>', '\x3', '>', '\x3', '>', '\x3', '?', '\x3', '?', '\x3', '?', '\x3', - '?', '\x3', '?', '\x3', '?', '\x3', '?', '\x3', '?', '\x3', '@', '\x3', - '@', '\x3', '@', '\x3', '@', '\x3', '@', '\x3', '@', '\x3', '\x41', '\x3', - '\x41', '\x3', '\x41', '\x3', '\x41', '\x3', '\x41', '\x3', '\x41', '\x3', - '\x42', '\x3', '\x42', '\x3', '\x42', '\x3', '\x42', '\x3', '\x42', '\x3', - '\x42', '\x3', '\x43', '\x3', '\x43', '\x3', '\x43', '\x3', '\x43', '\x3', - '\x43', '\x3', '\x43', '\x3', '\x44', '\x3', '\x44', '\x3', '\x44', '\x3', - '\x44', '\x3', '\x44', '\x3', '\x44', '\x3', '\x44', '\x3', '\x44', '\x3', - '\x45', '\x3', '\x45', '\x3', '\x45', '\x3', '\x45', '\x3', '\x45', '\x3', - '\x45', '\x3', '\x46', '\x3', '\x46', '\x3', '\x46', '\x3', '\x46', '\x3', - '\x46', '\x3', '\x46', '\x3', '\x46', '\x3', '\x46', '\x3', 'G', '\x3', - 'G', '\x3', 'G', '\x3', 'G', '\x3', 'G', '\x3', 'G', '\x3', 'H', '\x3', - 'H', '\x3', 'H', '\x3', 'H', '\x3', 'H', '\x3', 'H', '\x3', 'H', '\x3', - 'H', '\x3', 'I', '\x3', 'I', '\x3', 'I', '\x3', 'I', '\x3', 'I', '\x3', - 'I', '\x3', 'J', '\x3', 'J', '\x3', 'J', '\x3', 'J', '\x3', 'K', '\x3', - 'K', '\x3', 'K', '\x3', 'K', '\x3', 'K', '\x3', 'K', '\x3', 'L', '\x3', - 'L', '\x3', 'L', '\x3', 'L', '\x3', 'M', '\x3', 'M', '\x3', 'M', '\x3', - 'M', '\x3', 'M', '\x3', 'M', '\x3', 'N', '\x3', 'N', '\x3', 'N', '\x3', - 'N', '\x3', 'O', '\x3', 'O', '\x3', 'O', '\x3', 'O', '\x3', 'O', '\x3', - 'O', '\x3', 'O', '\x3', 'O', '\x3', 'P', '\x3', 'P', '\x3', 'P', '\x3', - 'P', '\x3', 'P', '\x3', 'P', '\x3', 'Q', '\x3', 'Q', '\x3', 'Q', '\x3', - 'Q', '\x3', 'Q', '\x3', 'R', '\x3', 'R', '\x3', 'R', '\x3', 'R', '\x3', - 'R', '\x3', 'R', '\x3', 'S', '\x3', 'S', '\x3', 'S', '\x3', 'S', '\x3', - 'S', '\x3', 'T', '\x3', 'T', '\x3', 'T', '\x3', 'T', '\x3', 'T', '\x3', - 'T', '\x3', 'T', '\x3', 'T', '\x3', 'U', '\x3', 'U', '\x3', 'U', '\x3', - 'U', '\x3', 'U', '\x3', 'U', '\x3', 'V', '\x3', 'V', '\x3', 'V', '\x3', - 'V', '\x3', 'V', '\x3', 'V', '\x3', 'V', '\x3', 'W', '\x3', 'W', '\x3', - 'W', '\x3', 'W', '\x3', 'W', '\x3', 'W', '\x3', 'W', '\x3', 'W', '\x3', - 'X', '\x3', 'X', '\x3', 'X', '\x3', 'X', '\x3', 'X', '\x3', 'X', '\x3', - 'Y', '\x3', 'Y', '\x3', 'Y', '\x3', 'Y', '\x3', 'Y', '\x3', 'Y', '\x3', - 'Y', '\x3', 'Z', '\x3', 'Z', '\x3', 'Z', '\x3', 'Z', '\x3', 'Z', '\x3', - 'Z', '\x3', 'Z', '\x3', 'Z', '\x3', '[', '\x3', '[', '\x3', '[', '\x3', - '[', '\x3', '[', '\x3', '[', '\x3', '\\', '\x3', '\\', '\x3', '\\', '\x3', - '\\', '\x3', '\\', '\x3', '\\', '\x3', '\\', '\x3', ']', '\x3', ']', '\x3', - ']', '\x3', ']', '\x3', ']', '\x3', ']', '\x3', ']', '\x3', ']', '\x3', - '^', '\x3', '^', '\x3', '^', '\x3', '^', '\x3', '^', '\x3', '^', '\x3', - '_', '\x3', '_', '\x3', '_', '\x3', '_', '\x3', '_', '\x3', '_', '\x3', - '_', '\x3', '`', '\x3', '`', '\x3', '`', '\x3', '`', '\x3', '`', '\x3', - '`', '\x3', '`', '\x3', '`', '\x3', '\x61', '\x3', '\x61', '\x3', '\x61', - '\x3', '\x61', '\x3', '\x61', '\x3', '\x61', '\x3', '\x61', '\x3', '\x61', - '\x3', '\x61', '\x3', '\x62', '\x3', '\x62', '\x3', '\x62', '\x3', '\x62', - '\x3', '\x62', '\x3', '\x62', '\x3', '\x62', '\x3', '\x62', '\x3', '\x62', - '\x3', '\x62', '\x3', '\x63', '\x3', '\x63', '\x3', '\x63', '\x3', '\x63', - '\x3', '\x63', '\x3', '\x63', '\x3', '\x63', '\x3', '\x64', '\x3', '\x64', - '\x3', '\x64', '\x3', '\x64', '\x3', '\x64', '\x3', '\x64', '\x3', '\x64', - '\x3', '\x65', '\x3', '\x65', '\x3', '\x65', '\x3', '\x65', '\x3', '\x65', - '\x3', '\x65', '\x3', '\x65', '\x3', '\x65', '\x3', '\x66', '\x3', '\x66', - '\x3', '\x66', '\x3', '\x66', '\x3', '\x66', '\x3', '\x66', '\x3', '\x66', - '\x3', 'g', '\x3', 'g', '\x3', 'g', '\x3', 'g', '\x3', 'g', '\x3', 'g', - '\x3', 'g', '\x3', 'g', '\x3', 'g', '\x3', 'h', '\x3', 'h', '\x3', 'h', - '\x3', 'h', '\x3', 'h', '\x3', 'h', '\x3', 'h', '\x3', 'h', '\x3', 'h', - '\x3', 'h', '\x3', 'i', '\x3', 'i', '\x3', 'i', '\x3', 'i', '\x3', 'i', - '\x3', 'i', '\x3', 'i', '\x3', 'i', '\x3', 'j', '\x3', 'j', '\x3', 'j', - '\x3', 'j', '\x3', 'j', '\x3', 'j', '\x3', 'j', '\x3', 'k', '\x3', 'k', - '\x3', 'k', '\x3', 'k', '\x3', 'k', '\x3', 'k', '\x3', 'k', '\x3', 'l', - '\x3', 'l', '\x3', 'l', '\x3', 'l', '\x3', 'l', '\x3', 'l', '\x3', 'l', - '\x3', 'l', '\x3', 'l', '\x3', 'l', '\x3', 'l', '\x3', 'l', '\x3', 'm', - '\x3', 'm', '\x3', 'm', '\x3', 'm', '\x3', 'm', '\x3', 'm', '\x3', 'm', - '\x3', 'm', '\x3', 'm', '\x3', 'm', '\x3', 'n', '\x3', 'n', '\x3', 'n', - '\x3', 'n', '\x3', 'n', '\x3', 'n', '\x3', 'n', '\x3', 'o', '\x3', 'o', - '\x3', 'o', '\x3', 'o', '\x3', 'o', '\x3', 'o', '\x3', 'o', '\x3', 'o', - '\x3', 'o', '\x3', 'o', '\x3', 'o', '\x3', 'p', '\x3', 'p', '\x3', 'p', - '\x3', 'p', '\x3', 'p', '\x3', 'p', '\x3', 'p', '\x3', 'p', '\x3', 'p', - '\x3', 'p', '\x3', 'p', '\x3', 'p', '\x3', 'q', '\x3', 'q', '\x3', 'q', - '\x3', 'q', '\x3', 'q', '\x3', 'q', '\x3', 'q', '\x3', 'q', '\x3', 'r', - '\x3', 'r', '\x3', 'r', '\x3', 'r', '\x3', 'r', '\x3', 's', '\x3', 's', - '\x3', 's', '\x3', 's', '\x3', 's', '\x3', 's', '\x3', 't', '\x3', 't', - '\x3', 't', '\x3', 't', '\x3', 't', '\x3', 'u', '\x3', 'u', '\x3', 'u', - '\x3', 'u', '\x3', 'u', '\x3', 'v', '\x3', 'v', '\x3', 'v', '\x3', 'v', - '\x3', 'v', '\x3', 'v', '\x3', 'v', '\x3', 'v', '\x3', 'w', '\x3', 'w', - '\x3', 'w', '\x3', 'w', '\x3', 'w', '\x3', 'w', '\x3', 'w', '\x3', 'w', - '\x3', 'w', '\x3', 'w', '\x3', 'w', '\x3', 'x', '\x3', 'x', '\x3', 'x', - '\x3', 'x', '\x3', 'x', '\x3', 'x', '\x3', 'x', '\x3', 'y', '\x3', 'y', - '\x3', 'y', '\x3', 'y', '\x3', 'y', '\x3', 'y', '\x3', 'y', '\x3', 'y', - '\x3', 'z', '\x5', 'z', '\x3BA', '\n', 'z', '\x3', 'z', '\x6', 'z', '\x3BD', - '\n', 'z', '\r', 'z', '\xE', 'z', '\x3BE', '\x3', 'z', '\x3', 'z', '\x3', - '{', '\x3', '{', '\x5', '{', '\x3C5', '\n', '{', '\x3', '{', '\x6', '{', - '\x3C8', '\n', '{', '\r', '{', '\xE', '{', '\x3C9', '\x3', '|', '\x6', - '|', '\x3CD', '\n', '|', '\r', '|', '\xE', '|', '\x3CE', '\x3', '|', '\x3', - '|', '\a', '|', '\x3D3', '\n', '|', '\f', '|', '\xE', '|', '\x3D6', '\v', - '|', '\x3', '|', '\x5', '|', '\x3D9', '\n', '|', '\x3', '|', '\x5', '|', - '\x3DC', '\n', '|', '\x3', '|', '\x5', '|', '\x3DF', '\n', '|', '\x3', - '|', '\x6', '|', '\x3E2', '\n', '|', '\r', '|', '\xE', '|', '\x3E3', '\x3', - '|', '\x5', '|', '\x3E7', '\n', '|', '\x3', '|', '\x5', '|', '\x3EA', - '\n', '|', '\x3', '|', '\x5', '|', '\x3ED', '\n', '|', '\x3', '}', '\x3', - '}', '\x3', '}', '\x3', '}', '\x3', '}', '\x3', '}', '\x3', '}', '\x3', - '}', '\x3', '}', '\x3', '}', '\x5', '}', '\x3F9', '\n', '}', '\x3', '~', - '\x3', '~', '\x3', '~', '\x3', '~', '\x3', '~', '\x3', '~', '\x3', '~', - '\x3', '~', '\x3', '~', '\x3', '~', '\x3', '~', '\x3', '~', '\x3', '~', - '\x3', '~', '\x3', '~', '\x3', '~', '\x3', '~', '\x3', '~', '\x5', '~', - '\x40D', '\n', '~', '\x3', '\x7F', '\x6', '\x7F', '\x410', '\n', '\x7F', - '\r', '\x7F', '\xE', '\x7F', '\x411', '\x3', '\x7F', '\x3', '\x7F', '\x6', - '\x7F', '\x416', '\n', '\x7F', '\r', '\x7F', '\xE', '\x7F', '\x417', '\x5', - '\x7F', '\x41A', '\n', '\x7F', '\x3', '\x80', '\x3', '\x80', '\x3', '\x80', - '\x3', '\x80', '\a', '\x80', '\x420', '\n', '\x80', '\f', '\x80', '\xE', - '\x80', '\x423', '\v', '\x80', '\x3', '\x80', '\x5', '\x80', '\x426', - '\n', '\x80', '\x3', '\x80', '\x3', '\x80', '\x3', '\x80', '\x3', '\x80', - '\x3', '\x80', '\a', '\x80', '\x42D', '\n', '\x80', '\f', '\x80', '\xE', - '\x80', '\x430', '\v', '\x80', '\x3', '\x80', '\x3', '\x80', '\x5', '\x80', - '\x434', '\n', '\x80', '\x3', '\x80', '\x3', '\x80', '\x3', '\x81', '\x6', - '\x81', '\x439', '\n', '\x81', '\r', '\x81', '\xE', '\x81', '\x43A', '\x3', - '\x81', '\x3', '\x81', '\x3', '\x42E', '\x2', '\x82', '\x3', '\x3', '\x5', - '\x4', '\a', '\x5', '\t', '\x6', '\v', '\a', '\r', '\b', '\xF', '\t', - '\x11', '\n', '\x13', '\v', '\x15', '\f', '\x17', '\r', '\x19', '\xE', - '\x1B', '\xF', '\x1D', '\x10', '\x1F', '\x11', '!', '\x12', '#', '\x13', - '%', '\x14', '\'', '\x15', ')', '\x16', '+', '\x17', '-', '\x18', '/', - '\x19', '\x31', '\x1A', '\x33', '\x1B', '\x35', '\x1C', '\x37', '\x1D', - '\x39', '\x1E', ';', '\x1F', '=', ' ', '?', '!', '\x41', '\"', '\x43', - '#', '\x45', '$', 'G', '%', 'I', '&', 'K', '\'', 'M', '(', 'O', ')', 'Q', - '*', 'S', '+', 'U', ',', 'W', '-', 'Y', '.', '[', '/', ']', '\x30', '_', - '\x31', '\x61', '\x32', '\x63', '\x33', '\x65', '\x34', 'g', '\x35', 'i', - '\x36', 'k', '\x37', 'm', '\x38', 'o', '\x39', 'q', ':', 's', ';', 'u', - '<', 'w', '=', 'y', '>', '{', '?', '}', '@', '\x7F', '\x41', '\x81', '\x42', - '\x83', '\x43', '\x85', '\x44', '\x87', '\x45', '\x89', '\x46', '\x8B', - 'G', '\x8D', 'H', '\x8F', 'I', '\x91', 'J', '\x93', 'K', '\x95', 'L', - '\x97', 'M', '\x99', 'N', '\x9B', 'O', '\x9D', 'P', '\x9F', 'Q', '\xA1', - 'R', '\xA3', 'S', '\xA5', 'T', '\xA7', 'U', '\xA9', 'V', '\xAB', 'W', - '\xAD', 'X', '\xAF', 'Y', '\xB1', 'Z', '\xB3', '[', '\xB5', '\\', '\xB7', - ']', '\xB9', '^', '\xBB', '_', '\xBD', '`', '\xBF', '\x61', '\xC1', '\x62', - '\xC3', '\x63', '\xC5', '\x64', '\xC7', '\x65', '\xC9', '\x66', '\xCB', - 'g', '\xCD', 'h', '\xCF', 'i', '\xD1', 'j', '\xD3', 'k', '\xD5', 'l', - '\xD7', 'm', '\xD9', 'n', '\xDB', 'o', '\xDD', 'p', '\xDF', 'q', '\xE1', - 'r', '\xE3', 's', '\xE5', 't', '\xE7', 'u', '\xE9', 'v', '\xEB', 'w', - '\xED', 'x', '\xEF', 'y', '\xF1', 'z', '\xF3', '{', '\xF5', '\x2', '\xF7', - '|', '\xF9', '}', '\xFB', '~', '\xFD', '\x7F', '\xFF', '\x80', '\x101', - '\x81', '\x3', '\x2', '\b', '\x4', '\x2', 'G', 'G', 'g', 'g', '\x4', '\x2', - '-', '-', '/', '/', '\x6', '\x2', '\x43', '\\', '\x63', '|', '\x372', - '\x501', '\x1F02', '\x2001', '\a', '\x2', '\x32', ';', '\x43', '\\', '\x63', - '|', '\x372', '\x501', '\x1F02', '\x2001', '\x4', '\x2', '\f', '\f', '\xF', - '\xF', '\x4', '\x2', '\v', '\v', '\"', '\"', '\x2', '\x459', '\x2', '\x3', - '\x3', '\x2', '\x2', '\x2', '\x2', '\x5', '\x3', '\x2', '\x2', '\x2', - '\x2', '\a', '\x3', '\x2', '\x2', '\x2', '\x2', '\t', '\x3', '\x2', '\x2', - '\x2', '\x2', '\v', '\x3', '\x2', '\x2', '\x2', '\x2', '\r', '\x3', '\x2', - '\x2', '\x2', '\x2', '\xF', '\x3', '\x2', '\x2', '\x2', '\x2', '\x11', - '\x3', '\x2', '\x2', '\x2', '\x2', '\x13', '\x3', '\x2', '\x2', '\x2', - '\x2', '\x15', '\x3', '\x2', '\x2', '\x2', '\x2', '\x17', '\x3', '\x2', - '\x2', '\x2', '\x2', '\x19', '\x3', '\x2', '\x2', '\x2', '\x2', '\x1B', - '\x3', '\x2', '\x2', '\x2', '\x2', '\x1D', '\x3', '\x2', '\x2', '\x2', - '\x2', '\x1F', '\x3', '\x2', '\x2', '\x2', '\x2', '!', '\x3', '\x2', '\x2', - '\x2', '\x2', '#', '\x3', '\x2', '\x2', '\x2', '\x2', '%', '\x3', '\x2', - '\x2', '\x2', '\x2', '\'', '\x3', '\x2', '\x2', '\x2', '\x2', ')', '\x3', - '\x2', '\x2', '\x2', '\x2', '+', '\x3', '\x2', '\x2', '\x2', '\x2', '-', - '\x3', '\x2', '\x2', '\x2', '\x2', '/', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x31', '\x3', '\x2', '\x2', '\x2', '\x2', '\x33', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x35', '\x3', '\x2', '\x2', '\x2', '\x2', '\x37', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x39', '\x3', '\x2', '\x2', '\x2', '\x2', - ';', '\x3', '\x2', '\x2', '\x2', '\x2', '=', '\x3', '\x2', '\x2', '\x2', - '\x2', '?', '\x3', '\x2', '\x2', '\x2', '\x2', '\x41', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x43', '\x3', '\x2', '\x2', '\x2', '\x2', '\x45', '\x3', - '\x2', '\x2', '\x2', '\x2', 'G', '\x3', '\x2', '\x2', '\x2', '\x2', 'I', - '\x3', '\x2', '\x2', '\x2', '\x2', 'K', '\x3', '\x2', '\x2', '\x2', '\x2', - 'M', '\x3', '\x2', '\x2', '\x2', '\x2', 'O', '\x3', '\x2', '\x2', '\x2', - '\x2', 'Q', '\x3', '\x2', '\x2', '\x2', '\x2', 'S', '\x3', '\x2', '\x2', - '\x2', '\x2', 'U', '\x3', '\x2', '\x2', '\x2', '\x2', 'W', '\x3', '\x2', - '\x2', '\x2', '\x2', 'Y', '\x3', '\x2', '\x2', '\x2', '\x2', '[', '\x3', - '\x2', '\x2', '\x2', '\x2', ']', '\x3', '\x2', '\x2', '\x2', '\x2', '_', - '\x3', '\x2', '\x2', '\x2', '\x2', '\x61', '\x3', '\x2', '\x2', '\x2', - '\x2', '\x63', '\x3', '\x2', '\x2', '\x2', '\x2', '\x65', '\x3', '\x2', - '\x2', '\x2', '\x2', 'g', '\x3', '\x2', '\x2', '\x2', '\x2', 'i', '\x3', - '\x2', '\x2', '\x2', '\x2', 'k', '\x3', '\x2', '\x2', '\x2', '\x2', 'm', - '\x3', '\x2', '\x2', '\x2', '\x2', 'o', '\x3', '\x2', '\x2', '\x2', '\x2', - 'q', '\x3', '\x2', '\x2', '\x2', '\x2', 's', '\x3', '\x2', '\x2', '\x2', - '\x2', 'u', '\x3', '\x2', '\x2', '\x2', '\x2', 'w', '\x3', '\x2', '\x2', - '\x2', '\x2', 'y', '\x3', '\x2', '\x2', '\x2', '\x2', '{', '\x3', '\x2', - '\x2', '\x2', '\x2', '}', '\x3', '\x2', '\x2', '\x2', '\x2', '\x7F', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x81', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x83', '\x3', '\x2', '\x2', '\x2', '\x2', '\x85', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x87', '\x3', '\x2', '\x2', '\x2', '\x2', '\x89', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x8B', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x8D', '\x3', '\x2', '\x2', '\x2', '\x2', '\x8F', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x91', '\x3', '\x2', '\x2', '\x2', '\x2', '\x93', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x95', '\x3', '\x2', '\x2', '\x2', '\x2', - '\x97', '\x3', '\x2', '\x2', '\x2', '\x2', '\x99', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x9B', '\x3', '\x2', '\x2', '\x2', '\x2', '\x9D', '\x3', - '\x2', '\x2', '\x2', '\x2', '\x9F', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xA1', '\x3', '\x2', '\x2', '\x2', '\x2', '\xA3', '\x3', '\x2', '\x2', - '\x2', '\x2', '\xA5', '\x3', '\x2', '\x2', '\x2', '\x2', '\xA7', '\x3', - '\x2', '\x2', '\x2', '\x2', '\xA9', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xAB', '\x3', '\x2', '\x2', '\x2', '\x2', '\xAD', '\x3', '\x2', '\x2', - '\x2', '\x2', '\xAF', '\x3', '\x2', '\x2', '\x2', '\x2', '\xB1', '\x3', - '\x2', '\x2', '\x2', '\x2', '\xB3', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xB5', '\x3', '\x2', '\x2', '\x2', '\x2', '\xB7', '\x3', '\x2', '\x2', - '\x2', '\x2', '\xB9', '\x3', '\x2', '\x2', '\x2', '\x2', '\xBB', '\x3', - '\x2', '\x2', '\x2', '\x2', '\xBD', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xBF', '\x3', '\x2', '\x2', '\x2', '\x2', '\xC1', '\x3', '\x2', '\x2', - '\x2', '\x2', '\xC3', '\x3', '\x2', '\x2', '\x2', '\x2', '\xC5', '\x3', - '\x2', '\x2', '\x2', '\x2', '\xC7', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xC9', '\x3', '\x2', '\x2', '\x2', '\x2', '\xCB', '\x3', '\x2', '\x2', - '\x2', '\x2', '\xCD', '\x3', '\x2', '\x2', '\x2', '\x2', '\xCF', '\x3', - '\x2', '\x2', '\x2', '\x2', '\xD1', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xD3', '\x3', '\x2', '\x2', '\x2', '\x2', '\xD5', '\x3', '\x2', '\x2', - '\x2', '\x2', '\xD7', '\x3', '\x2', '\x2', '\x2', '\x2', '\xD9', '\x3', - '\x2', '\x2', '\x2', '\x2', '\xDB', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xDD', '\x3', '\x2', '\x2', '\x2', '\x2', '\xDF', '\x3', '\x2', '\x2', - '\x2', '\x2', '\xE1', '\x3', '\x2', '\x2', '\x2', '\x2', '\xE3', '\x3', - '\x2', '\x2', '\x2', '\x2', '\xE5', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xE7', '\x3', '\x2', '\x2', '\x2', '\x2', '\xE9', '\x3', '\x2', '\x2', - '\x2', '\x2', '\xEB', '\x3', '\x2', '\x2', '\x2', '\x2', '\xED', '\x3', - '\x2', '\x2', '\x2', '\x2', '\xEF', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xF1', '\x3', '\x2', '\x2', '\x2', '\x2', '\xF3', '\x3', '\x2', '\x2', - '\x2', '\x2', '\xF7', '\x3', '\x2', '\x2', '\x2', '\x2', '\xF9', '\x3', - '\x2', '\x2', '\x2', '\x2', '\xFB', '\x3', '\x2', '\x2', '\x2', '\x2', - '\xFD', '\x3', '\x2', '\x2', '\x2', '\x2', '\xFF', '\x3', '\x2', '\x2', - '\x2', '\x2', '\x101', '\x3', '\x2', '\x2', '\x2', '\x3', '\x103', '\x3', - '\x2', '\x2', '\x2', '\x5', '\x105', '\x3', '\x2', '\x2', '\x2', '\a', - '\x107', '\x3', '\x2', '\x2', '\x2', '\t', '\x109', '\x3', '\x2', '\x2', - '\x2', '\v', '\x10B', '\x3', '\x2', '\x2', '\x2', '\r', '\x10D', '\x3', - '\x2', '\x2', '\x2', '\xF', '\x10F', '\x3', '\x2', '\x2', '\x2', '\x11', - '\x119', '\x3', '\x2', '\x2', '\x2', '\x13', '\x11C', '\x3', '\x2', '\x2', - '\x2', '\x15', '\x122', '\x3', '\x2', '\x2', '\x2', '\x17', '\x125', '\x3', - '\x2', '\x2', '\x2', '\x19', '\x131', '\x3', '\x2', '\x2', '\x2', '\x1B', - '\x133', '\x3', '\x2', '\x2', '\x2', '\x1D', '\x136', '\x3', '\x2', '\x2', - '\x2', '\x1F', '\x139', '\x3', '\x2', '\x2', '\x2', '!', '\x13C', '\x3', - '\x2', '\x2', '\x2', '#', '\x13E', '\x3', '\x2', '\x2', '\x2', '%', '\x140', - '\x3', '\x2', '\x2', '\x2', '\'', '\x14A', '\x3', '\x2', '\x2', '\x2', - ')', '\x14C', '\x3', '\x2', '\x2', '\x2', '+', '\x150', '\x3', '\x2', - '\x2', '\x2', '-', '\x154', '\x3', '\x2', '\x2', '\x2', '/', '\x156', - '\x3', '\x2', '\x2', '\x2', '\x31', '\x15A', '\x3', '\x2', '\x2', '\x2', - '\x33', '\x15D', '\x3', '\x2', '\x2', '\x2', '\x35', '\x15F', '\x3', '\x2', - '\x2', '\x2', '\x37', '\x167', '\x3', '\x2', '\x2', '\x2', '\x39', '\x16A', - '\x3', '\x2', '\x2', '\x2', ';', '\x173', '\x3', '\x2', '\x2', '\x2', - '=', '\x175', '\x3', '\x2', '\x2', '\x2', '?', '\x177', '\x3', '\x2', - '\x2', '\x2', '\x41', '\x179', '\x3', '\x2', '\x2', '\x2', '\x43', '\x17D', - '\x3', '\x2', '\x2', '\x2', '\x45', '\x181', '\x3', '\x2', '\x2', '\x2', - 'G', '\x184', '\x3', '\x2', '\x2', '\x2', 'I', '\x187', '\x3', '\x2', - '\x2', '\x2', 'K', '\x189', '\x3', '\x2', '\x2', '\x2', 'M', '\x18C', - '\x3', '\x2', '\x2', '\x2', 'O', '\x18E', '\x3', '\x2', '\x2', '\x2', - 'Q', '\x190', '\x3', '\x2', '\x2', '\x2', 'S', '\x192', '\x3', '\x2', - '\x2', '\x2', 'U', '\x194', '\x3', '\x2', '\x2', '\x2', 'W', '\x196', - '\x3', '\x2', '\x2', '\x2', 'Y', '\x19B', '\x3', '\x2', '\x2', '\x2', - '[', '\x1A1', '\x3', '\x2', '\x2', '\x2', ']', '\x1A7', '\x3', '\x2', - '\x2', '\x2', '_', '\x1AC', '\x3', '\x2', '\x2', '\x2', '\x61', '\x1B0', - '\x3', '\x2', '\x2', '\x2', '\x63', '\x1B5', '\x3', '\x2', '\x2', '\x2', - '\x65', '\x1BA', '\x3', '\x2', '\x2', '\x2', 'g', '\x1BF', '\x3', '\x2', - '\x2', '\x2', 'i', '\x1C6', '\x3', '\x2', '\x2', '\x2', 'k', '\x1CB', - '\x3', '\x2', '\x2', '\x2', 'm', '\x1D0', '\x3', '\x2', '\x2', '\x2', - 'o', '\x1D7', '\x3', '\x2', '\x2', '\x2', 'q', '\x1DC', '\x3', '\x2', - '\x2', '\x2', 's', '\x1E4', '\x3', '\x2', '\x2', '\x2', 'u', '\x1EC', - '\x3', '\x2', '\x2', '\x2', 'w', '\x1F4', '\x3', '\x2', '\x2', '\x2', - 'y', '\x1FE', '\x3', '\x2', '\x2', '\x2', '{', '\x206', '\x3', '\x2', - '\x2', '\x2', '}', '\x210', '\x3', '\x2', '\x2', '\x2', '\x7F', '\x218', - '\x3', '\x2', '\x2', '\x2', '\x81', '\x21E', '\x3', '\x2', '\x2', '\x2', - '\x83', '\x224', '\x3', '\x2', '\x2', '\x2', '\x85', '\x22A', '\x3', '\x2', - '\x2', '\x2', '\x87', '\x230', '\x3', '\x2', '\x2', '\x2', '\x89', '\x238', - '\x3', '\x2', '\x2', '\x2', '\x8B', '\x23E', '\x3', '\x2', '\x2', '\x2', - '\x8D', '\x246', '\x3', '\x2', '\x2', '\x2', '\x8F', '\x24C', '\x3', '\x2', - '\x2', '\x2', '\x91', '\x254', '\x3', '\x2', '\x2', '\x2', '\x93', '\x25A', - '\x3', '\x2', '\x2', '\x2', '\x95', '\x25E', '\x3', '\x2', '\x2', '\x2', - '\x97', '\x264', '\x3', '\x2', '\x2', '\x2', '\x99', '\x268', '\x3', '\x2', - '\x2', '\x2', '\x9B', '\x26E', '\x3', '\x2', '\x2', '\x2', '\x9D', '\x272', - '\x3', '\x2', '\x2', '\x2', '\x9F', '\x27A', '\x3', '\x2', '\x2', '\x2', - '\xA1', '\x280', '\x3', '\x2', '\x2', '\x2', '\xA3', '\x285', '\x3', '\x2', - '\x2', '\x2', '\xA5', '\x28B', '\x3', '\x2', '\x2', '\x2', '\xA7', '\x290', - '\x3', '\x2', '\x2', '\x2', '\xA9', '\x298', '\x3', '\x2', '\x2', '\x2', - '\xAB', '\x29E', '\x3', '\x2', '\x2', '\x2', '\xAD', '\x2A5', '\x3', '\x2', - '\x2', '\x2', '\xAF', '\x2AD', '\x3', '\x2', '\x2', '\x2', '\xB1', '\x2B3', - '\x3', '\x2', '\x2', '\x2', '\xB3', '\x2BA', '\x3', '\x2', '\x2', '\x2', - '\xB5', '\x2C2', '\x3', '\x2', '\x2', '\x2', '\xB7', '\x2C8', '\x3', '\x2', - '\x2', '\x2', '\xB9', '\x2CF', '\x3', '\x2', '\x2', '\x2', '\xBB', '\x2D7', - '\x3', '\x2', '\x2', '\x2', '\xBD', '\x2DD', '\x3', '\x2', '\x2', '\x2', - '\xBF', '\x2E4', '\x3', '\x2', '\x2', '\x2', '\xC1', '\x2EC', '\x3', '\x2', - '\x2', '\x2', '\xC3', '\x2F5', '\x3', '\x2', '\x2', '\x2', '\xC5', '\x2FF', - '\x3', '\x2', '\x2', '\x2', '\xC7', '\x306', '\x3', '\x2', '\x2', '\x2', - '\xC9', '\x30D', '\x3', '\x2', '\x2', '\x2', '\xCB', '\x315', '\x3', '\x2', - '\x2', '\x2', '\xCD', '\x31C', '\x3', '\x2', '\x2', '\x2', '\xCF', '\x325', - '\x3', '\x2', '\x2', '\x2', '\xD1', '\x32F', '\x3', '\x2', '\x2', '\x2', - '\xD3', '\x337', '\x3', '\x2', '\x2', '\x2', '\xD5', '\x33E', '\x3', '\x2', - '\x2', '\x2', '\xD7', '\x345', '\x3', '\x2', '\x2', '\x2', '\xD9', '\x351', - '\x3', '\x2', '\x2', '\x2', '\xDB', '\x35B', '\x3', '\x2', '\x2', '\x2', - '\xDD', '\x362', '\x3', '\x2', '\x2', '\x2', '\xDF', '\x36D', '\x3', '\x2', - '\x2', '\x2', '\xE1', '\x379', '\x3', '\x2', '\x2', '\x2', '\xE3', '\x381', - '\x3', '\x2', '\x2', '\x2', '\xE5', '\x386', '\x3', '\x2', '\x2', '\x2', - '\xE7', '\x38C', '\x3', '\x2', '\x2', '\x2', '\xE9', '\x391', '\x3', '\x2', - '\x2', '\x2', '\xEB', '\x396', '\x3', '\x2', '\x2', '\x2', '\xED', '\x39E', - '\x3', '\x2', '\x2', '\x2', '\xEF', '\x3A9', '\x3', '\x2', '\x2', '\x2', - '\xF1', '\x3B0', '\x3', '\x2', '\x2', '\x2', '\xF3', '\x3BC', '\x3', '\x2', - '\x2', '\x2', '\xF5', '\x3C2', '\x3', '\x2', '\x2', '\x2', '\xF7', '\x3EC', - '\x3', '\x2', '\x2', '\x2', '\xF9', '\x3F8', '\x3', '\x2', '\x2', '\x2', - '\xFB', '\x40C', '\x3', '\x2', '\x2', '\x2', '\xFD', '\x40F', '\x3', '\x2', - '\x2', '\x2', '\xFF', '\x433', '\x3', '\x2', '\x2', '\x2', '\x101', '\x438', - '\x3', '\x2', '\x2', '\x2', '\x103', '\x104', '\a', '#', '\x2', '\x2', - '\x104', '\x4', '\x3', '\x2', '\x2', '\x2', '\x105', '\x106', '\a', '`', - '\x2', '\x2', '\x106', '\x6', '\x3', '\x2', '\x2', '\x2', '\x107', '\x108', - '\a', '/', '\x2', '\x2', '\x108', '\b', '\x3', '\x2', '\x2', '\x2', '\x109', - '\x10A', '\a', '-', '\x2', '\x2', '\x10A', '\n', '\x3', '\x2', '\x2', - '\x2', '\x10B', '\x10C', '\a', ',', '\x2', '\x2', '\x10C', '\f', '\x3', - '\x2', '\x2', '\x2', '\x10D', '\x10E', '\a', '\x31', '\x2', '\x2', '\x10E', - '\xE', '\x3', '\x2', '\x2', '\x2', '\x10F', '\x110', '\a', 'k', '\x2', - '\x2', '\x110', '\x111', '\a', 'p', '\x2', '\x2', '\x111', '\x112', '\a', - 'v', '\x2', '\x2', '\x112', '\x113', '\a', 'g', '\x2', '\x2', '\x113', - '\x114', '\a', 't', '\x2', '\x2', '\x114', '\x115', '\a', 'u', '\x2', - '\x2', '\x115', '\x116', '\a', 'g', '\x2', '\x2', '\x116', '\x117', '\a', - '\x65', '\x2', '\x2', '\x117', '\x118', '\a', 'v', '\x2', '\x2', '\x118', - '\x10', '\x3', '\x2', '\x2', '\x2', '\x119', '\x11A', '\a', '\x31', '\x2', - '\x2', '\x11A', '\x11B', '\a', '^', '\x2', '\x2', '\x11B', '\x12', '\x3', - '\x2', '\x2', '\x2', '\x11C', '\x11D', '\a', 'w', '\x2', '\x2', '\x11D', - '\x11E', '\a', 'p', '\x2', '\x2', '\x11E', '\x11F', '\a', 'k', '\x2', - '\x2', '\x11F', '\x120', '\a', 'v', '\x2', '\x2', '\x120', '\x121', '\a', - 'g', '\x2', '\x2', '\x121', '\x14', '\x3', '\x2', '\x2', '\x2', '\x122', - '\x123', '\a', '^', '\x2', '\x2', '\x123', '\x124', '\a', '\x31', '\x2', - '\x2', '\x124', '\x16', '\x3', '\x2', '\x2', '\x2', '\x125', '\x126', - '\a', 'u', '\x2', '\x2', '\x126', '\x127', '\a', 'g', '\x2', '\x2', '\x127', - '\x128', '\a', 'v', '\x2', '\x2', '\x128', '\x129', '\a', 'u', '\x2', - '\x2', '\x129', '\x12A', '\a', 'w', '\x2', '\x2', '\x12A', '\x12B', '\a', - '\x64', '\x2', '\x2', '\x12B', '\x12C', '\a', 'v', '\x2', '\x2', '\x12C', - '\x12D', '\a', 't', '\x2', '\x2', '\x12D', '\x12E', '\a', '\x63', '\x2', - '\x2', '\x12E', '\x12F', '\a', '\x65', '\x2', '\x2', '\x12F', '\x130', - '\a', 'v', '\x2', '\x2', '\x130', '\x18', '\x3', '\x2', '\x2', '\x2', - '\x131', '\x132', '\a', '^', '\x2', '\x2', '\x132', '\x1A', '\x3', '\x2', - '\x2', '\x2', '\x133', '\x134', '\a', 'k', '\x2', '\x2', '\x134', '\x135', - '\a', 'p', '\x2', '\x2', '\x135', '\x1C', '\x3', '\x2', '\x2', '\x2', - '\x136', '\x137', '\a', '@', '\x2', '\x2', '\x137', '\x138', '\a', '?', - '\x2', '\x2', '\x138', '\x1E', '\x3', '\x2', '\x2', '\x2', '\x139', '\x13A', - '\a', '>', '\x2', '\x2', '\x13A', '\x13B', '\a', '?', '\x2', '\x2', '\x13B', - ' ', '\x3', '\x2', '\x2', '\x2', '\x13C', '\x13D', '\a', '@', '\x2', '\x2', - '\x13D', '\"', '\x3', '\x2', '\x2', '\x2', '\x13E', '\x13F', '\a', '>', - '\x2', '\x2', '\x13F', '$', '\x3', '\x2', '\x2', '\x2', '\x140', '\x141', - '\a', 'g', '\x2', '\x2', '\x141', '\x142', '\a', 's', '\x2', '\x2', '\x142', - '\x143', '\a', 'w', '\x2', '\x2', '\x143', '\x144', '\a', '\x63', '\x2', - '\x2', '\x144', '\x145', '\a', 'n', '\x2', '\x2', '\x145', '\x146', '\a', - 'k', '\x2', '\x2', '\x146', '\x147', '\a', '|', '\x2', '\x2', '\x147', - '\x148', '\a', 'g', '\x2', '\x2', '\x148', '\x149', '\a', 'u', '\x2', - '\x2', '\x149', '&', '\x3', '\x2', '\x2', '\x2', '\x14A', '\x14B', '\a', - '?', '\x2', '\x2', '\x14B', '(', '\x3', '\x2', '\x2', '\x2', '\x14C', - '\x14D', '\a', 'p', '\x2', '\x2', '\x14D', '\x14E', '\a', 'q', '\x2', - '\x2', '\x14E', '\x14F', '\a', 'v', '\x2', '\x2', '\x14F', '*', '\x3', - '\x2', '\x2', '\x2', '\x150', '\x151', '\a', '\x63', '\x2', '\x2', '\x151', - '\x152', '\a', 'p', '\x2', '\x2', '\x152', '\x153', '\a', '\x66', '\x2', - '\x2', '\x153', ',', '\x3', '\x2', '\x2', '\x2', '\x154', '\x155', '\a', - '(', '\x2', '\x2', '\x155', '.', '\x3', '\x2', '\x2', '\x2', '\x156', - '\x157', '\a', 'z', '\x2', '\x2', '\x157', '\x158', '\a', 'q', '\x2', - '\x2', '\x158', '\x159', '\a', 't', '\x2', '\x2', '\x159', '\x30', '\x3', - '\x2', '\x2', '\x2', '\x15A', '\x15B', '\a', 'q', '\x2', '\x2', '\x15B', - '\x15C', '\a', 't', '\x2', '\x2', '\x15C', '\x32', '\x3', '\x2', '\x2', - '\x2', '\x15D', '\x15E', '\a', '~', '\x2', '\x2', '\x15E', '\x34', '\x3', - '\x2', '\x2', '\x2', '\x15F', '\x160', '\a', 'k', '\x2', '\x2', '\x160', - '\x161', '\a', 'o', '\x2', '\x2', '\x161', '\x162', '\a', 'r', '\x2', - '\x2', '\x162', '\x163', '\a', 'n', '\x2', '\x2', '\x163', '\x164', '\a', - 'k', '\x2', '\x2', '\x164', '\x165', '\a', 'g', '\x2', '\x2', '\x165', - '\x166', '\a', 'u', '\x2', '\x2', '\x166', '\x36', '\x3', '\x2', '\x2', - '\x2', '\x167', '\x168', '\a', '/', '\x2', '\x2', '\x168', '\x169', '\a', - '@', '\x2', '\x2', '\x169', '\x38', '\x3', '\x2', '\x2', '\x2', '\x16A', - '\x16B', '\a', 'r', '\x2', '\x2', '\x16B', '\x16C', '\a', 't', '\x2', - '\x2', '\x16C', '\x16D', '\a', 'q', '\x2', '\x2', '\x16D', '\x16E', '\a', - 'x', '\x2', '\x2', '\x16E', '\x16F', '\a', 'k', '\x2', '\x2', '\x16F', - '\x170', '\a', '\x66', '\x2', '\x2', '\x170', '\x171', '\a', 'g', '\x2', - '\x2', '\x171', '\x172', '\a', '\x66', '\x2', '\x2', '\x172', ':', '\x3', - '\x2', '\x2', '\x2', '\x173', '\x174', '\a', '.', '\x2', '\x2', '\x174', - '<', '\x3', '\x2', '\x2', '\x2', '\x175', '\x176', '\a', '=', '\x2', '\x2', - '\x176', '>', '\x3', '\x2', '\x2', '\x2', '\x177', '\x178', '\a', '<', - '\x2', '\x2', '\x178', '@', '\x3', '\x2', '\x2', '\x2', '\x179', '\x17A', - '\a', '-', '\x2', '\x2', '\x17A', '\x17B', '\a', 'q', '\x2', '\x2', '\x17B', - '\x17C', '\a', 'q', '\x2', '\x2', '\x17C', '\x42', '\x3', '\x2', '\x2', - '\x2', '\x17D', '\x17E', '\a', '/', '\x2', '\x2', '\x17E', '\x17F', '\a', - 'q', '\x2', '\x2', '\x17F', '\x180', '\a', 'q', '\x2', '\x2', '\x180', - '\x44', '\x3', '\x2', '\x2', '\x2', '\x181', '\x182', '\a', '*', '\x2', - '\x2', '\x182', '\x183', '\a', '~', '\x2', '\x2', '\x183', '\x46', '\x3', - '\x2', '\x2', '\x2', '\x184', '\x185', '\a', '~', '\x2', '\x2', '\x185', - '\x186', '\a', '+', '\x2', '\x2', '\x186', 'H', '\x3', '\x2', '\x2', '\x2', - '\x187', '\x188', '\a', ']', '\x2', '\x2', '\x188', 'J', '\x3', '\x2', - '\x2', '\x2', '\x189', '\x18A', '\a', '_', '\x2', '\x2', '\x18A', '\x18B', - '\a', 'V', '\x2', '\x2', '\x18B', 'L', '\x3', '\x2', '\x2', '\x2', '\x18C', - '\x18D', '\a', '_', '\x2', '\x2', '\x18D', 'N', '\x3', '\x2', '\x2', '\x2', - '\x18E', '\x18F', '\a', '*', '\x2', '\x2', '\x18F', 'P', '\x3', '\x2', - '\x2', '\x2', '\x190', '\x191', '\a', '+', '\x2', '\x2', '\x191', 'R', - '\x3', '\x2', '\x2', '\x2', '\x192', '\x193', '\a', '}', '\x2', '\x2', - '\x193', 'T', '\x3', '\x2', '\x2', '\x2', '\x194', '\x195', '\a', '\x7F', - '\x2', '\x2', '\x195', 'V', '\x3', '\x2', '\x2', '\x2', '\x196', '\x197', - '\a', 'n', '\x2', '\x2', '\x197', '\x198', '\a', 'q', '\x2', '\x2', '\x198', - '\x199', '\a', 'i', '\x2', '\x2', '\x199', '\x19A', '\a', '*', '\x2', - '\x2', '\x19A', 'X', '\x3', '\x2', '\x2', '\x2', '\x19B', '\x19C', '\a', - 'u', '\x2', '\x2', '\x19C', '\x19D', '\a', 's', '\x2', '\x2', '\x19D', - '\x19E', '\a', 't', '\x2', '\x2', '\x19E', '\x19F', '\a', 'v', '\x2', - '\x2', '\x19F', '\x1A0', '\a', '*', '\x2', '\x2', '\x1A0', 'Z', '\x3', - '\x2', '\x2', '\x2', '\x1A1', '\x1A2', '\a', '\x65', '\x2', '\x2', '\x1A2', - '\x1A3', '\a', '\x64', '\x2', '\x2', '\x1A3', '\x1A4', '\a', 't', '\x2', - '\x2', '\x1A4', '\x1A5', '\a', 'v', '\x2', '\x2', '\x1A5', '\x1A6', '\a', - '*', '\x2', '\x2', '\x1A6', '\\', '\x3', '\x2', '\x2', '\x2', '\x1A7', - '\x1A8', '\a', 'u', '\x2', '\x2', '\x1A8', '\x1A9', '\a', 's', '\x2', - '\x2', '\x1A9', '\x1AA', '\a', 't', '\x2', '\x2', '\x1AA', '\x1AB', '\a', - '*', '\x2', '\x2', '\x1AB', '^', '\x3', '\x2', '\x2', '\x2', '\x1AC', - '\x1AD', '\a', 'n', '\x2', '\x2', '\x1AD', '\x1AE', '\a', 'p', '\x2', - '\x2', '\x1AE', '\x1AF', '\a', '*', '\x2', '\x2', '\x1AF', '`', '\x3', - '\x2', '\x2', '\x2', '\x1B0', '\x1B1', '\a', 'u', '\x2', '\x2', '\x1B1', - '\x1B2', '\a', 'k', '\x2', '\x2', '\x1B2', '\x1B3', '\a', 'p', '\x2', - '\x2', '\x1B3', '\x1B4', '\a', '*', '\x2', '\x2', '\x1B4', '\x62', '\x3', - '\x2', '\x2', '\x2', '\x1B5', '\x1B6', '\a', '\x65', '\x2', '\x2', '\x1B6', - '\x1B7', '\a', 'q', '\x2', '\x2', '\x1B7', '\x1B8', '\a', 'u', '\x2', - '\x2', '\x1B8', '\x1B9', '\a', '*', '\x2', '\x2', '\x1B9', '\x64', '\x3', - '\x2', '\x2', '\x2', '\x1BA', '\x1BB', '\a', 'v', '\x2', '\x2', '\x1BB', - '\x1BC', '\a', '\x63', '\x2', '\x2', '\x1BC', '\x1BD', '\a', 'p', '\x2', - '\x2', '\x1BD', '\x1BE', '\a', '*', '\x2', '\x2', '\x1BE', '\x66', '\x3', - '\x2', '\x2', '\x2', '\x1BF', '\x1C0', '\a', '\x65', '\x2', '\x2', '\x1C0', - '\x1C1', '\a', 'q', '\x2', '\x2', '\x1C1', '\x1C2', '\a', 'v', '\x2', - '\x2', '\x1C2', '\x1C3', '\a', '\x63', '\x2', '\x2', '\x1C3', '\x1C4', - '\a', 'p', '\x2', '\x2', '\x1C4', '\x1C5', '\a', '*', '\x2', '\x2', '\x1C5', - 'h', '\x3', '\x2', '\x2', '\x2', '\x1C6', '\x1C7', '\a', '\x65', '\x2', - '\x2', '\x1C7', '\x1C8', '\a', 'q', '\x2', '\x2', '\x1C8', '\x1C9', '\a', - 'v', '\x2', '\x2', '\x1C9', '\x1CA', '\a', '*', '\x2', '\x2', '\x1CA', - 'j', '\x3', '\x2', '\x2', '\x2', '\x1CB', '\x1CC', '\a', 'u', '\x2', '\x2', - '\x1CC', '\x1CD', '\a', 'g', '\x2', '\x2', '\x1CD', '\x1CE', '\a', '\x65', - '\x2', '\x2', '\x1CE', '\x1CF', '\a', '*', '\x2', '\x2', '\x1CF', 'l', - '\x3', '\x2', '\x2', '\x2', '\x1D0', '\x1D1', '\a', '\x65', '\x2', '\x2', - '\x1D1', '\x1D2', '\a', 'q', '\x2', '\x2', '\x1D2', '\x1D3', '\a', 'u', - '\x2', '\x2', '\x1D3', '\x1D4', '\a', 'g', '\x2', '\x2', '\x1D4', '\x1D5', - '\a', '\x65', '\x2', '\x2', '\x1D5', '\x1D6', '\a', '*', '\x2', '\x2', - '\x1D6', 'n', '\x3', '\x2', '\x2', '\x2', '\x1D7', '\x1D8', '\a', '\x65', - '\x2', '\x2', '\x1D8', '\x1D9', '\a', 'u', '\x2', '\x2', '\x1D9', '\x1DA', - '\a', '\x65', '\x2', '\x2', '\x1DA', '\x1DB', '\a', '*', '\x2', '\x2', - '\x1DB', 'p', '\x3', '\x2', '\x2', '\x2', '\x1DC', '\x1DD', '\a', '\x63', - '\x2', '\x2', '\x1DD', '\x1DE', '\a', 't', '\x2', '\x2', '\x1DE', '\x1DF', - '\a', '\x65', '\x2', '\x2', '\x1DF', '\x1E0', '\a', 'u', '\x2', '\x2', - '\x1E0', '\x1E1', '\a', 'k', '\x2', '\x2', '\x1E1', '\x1E2', '\a', 'p', - '\x2', '\x2', '\x1E2', '\x1E3', '\a', '*', '\x2', '\x2', '\x1E3', 'r', - '\x3', '\x2', '\x2', '\x2', '\x1E4', '\x1E5', '\a', '\x63', '\x2', '\x2', - '\x1E5', '\x1E6', '\a', 't', '\x2', '\x2', '\x1E6', '\x1E7', '\a', '\x65', - '\x2', '\x2', '\x1E7', '\x1E8', '\a', '\x65', '\x2', '\x2', '\x1E8', '\x1E9', - '\a', 'q', '\x2', '\x2', '\x1E9', '\x1EA', '\a', 'u', '\x2', '\x2', '\x1EA', - '\x1EB', '\a', '*', '\x2', '\x2', '\x1EB', 't', '\x3', '\x2', '\x2', '\x2', - '\x1EC', '\x1ED', '\a', '\x63', '\x2', '\x2', '\x1ED', '\x1EE', '\a', - 't', '\x2', '\x2', '\x1EE', '\x1EF', '\a', '\x65', '\x2', '\x2', '\x1EF', - '\x1F0', '\a', 'v', '\x2', '\x2', '\x1F0', '\x1F1', '\a', '\x63', '\x2', - '\x2', '\x1F1', '\x1F2', '\a', 'p', '\x2', '\x2', '\x1F2', '\x1F3', '\a', - '*', '\x2', '\x2', '\x1F3', 'v', '\x3', '\x2', '\x2', '\x2', '\x1F4', - '\x1F5', '\a', '\x63', '\x2', '\x2', '\x1F5', '\x1F6', '\a', 't', '\x2', - '\x2', '\x1F6', '\x1F7', '\a', '\x65', '\x2', '\x2', '\x1F7', '\x1F8', - '\a', '\x65', '\x2', '\x2', '\x1F8', '\x1F9', '\a', 'q', '\x2', '\x2', - '\x1F9', '\x1FA', '\a', 'v', '\x2', '\x2', '\x1FA', '\x1FB', '\a', '\x63', - '\x2', '\x2', '\x1FB', '\x1FC', '\a', 'p', '\x2', '\x2', '\x1FC', '\x1FD', - '\a', '*', '\x2', '\x2', '\x1FD', 'x', '\x3', '\x2', '\x2', '\x2', '\x1FE', - '\x1FF', '\a', '\x63', '\x2', '\x2', '\x1FF', '\x200', '\a', 't', '\x2', - '\x2', '\x200', '\x201', '\a', '\x65', '\x2', '\x2', '\x201', '\x202', - '\a', 'u', '\x2', '\x2', '\x202', '\x203', '\a', 'g', '\x2', '\x2', '\x203', - '\x204', '\a', '\x65', '\x2', '\x2', '\x204', '\x205', '\a', '*', '\x2', - '\x2', '\x205', 'z', '\x3', '\x2', '\x2', '\x2', '\x206', '\x207', '\a', - '\x63', '\x2', '\x2', '\x207', '\x208', '\a', 't', '\x2', '\x2', '\x208', - '\x209', '\a', '\x65', '\x2', '\x2', '\x209', '\x20A', '\a', '\x65', '\x2', - '\x2', '\x20A', '\x20B', '\a', 'q', '\x2', '\x2', '\x20B', '\x20C', '\a', - 'u', '\x2', '\x2', '\x20C', '\x20D', '\a', 'g', '\x2', '\x2', '\x20D', - '\x20E', '\a', '\x65', '\x2', '\x2', '\x20E', '\x20F', '\a', '*', '\x2', - '\x2', '\x20F', '|', '\x3', '\x2', '\x2', '\x2', '\x210', '\x211', '\a', - '\x63', '\x2', '\x2', '\x211', '\x212', '\a', 't', '\x2', '\x2', '\x212', - '\x213', '\a', '\x65', '\x2', '\x2', '\x213', '\x214', '\a', '\x65', '\x2', - '\x2', '\x214', '\x215', '\a', 'u', '\x2', '\x2', '\x215', '\x216', '\a', - '\x65', '\x2', '\x2', '\x216', '\x217', '\a', '*', '\x2', '\x2', '\x217', - '~', '\x3', '\x2', '\x2', '\x2', '\x218', '\x219', '\a', '\x63', '\x2', - '\x2', '\x219', '\x21A', '\a', '\x65', '\x2', '\x2', '\x21A', '\x21B', - '\a', 'u', '\x2', '\x2', '\x21B', '\x21C', '\a', '\x65', '\x2', '\x2', - '\x21C', '\x21D', '\a', '*', '\x2', '\x2', '\x21D', '\x80', '\x3', '\x2', - '\x2', '\x2', '\x21E', '\x21F', '\a', '\x63', '\x2', '\x2', '\x21F', '\x220', - '\a', 'u', '\x2', '\x2', '\x220', '\x221', '\a', 'k', '\x2', '\x2', '\x221', - '\x222', '\a', 'p', '\x2', '\x2', '\x222', '\x223', '\a', '*', '\x2', - '\x2', '\x223', '\x82', '\x3', '\x2', '\x2', '\x2', '\x224', '\x225', - '\a', '\x63', '\x2', '\x2', '\x225', '\x226', '\a', '\x65', '\x2', '\x2', - '\x226', '\x227', '\a', 'q', '\x2', '\x2', '\x227', '\x228', '\a', 'u', - '\x2', '\x2', '\x228', '\x229', '\a', '*', '\x2', '\x2', '\x229', '\x84', - '\x3', '\x2', '\x2', '\x2', '\x22A', '\x22B', '\a', '\x63', '\x2', '\x2', - '\x22B', '\x22C', '\a', 'v', '\x2', '\x2', '\x22C', '\x22D', '\a', '\x63', - '\x2', '\x2', '\x22D', '\x22E', '\a', 'p', '\x2', '\x2', '\x22E', '\x22F', - '\a', '*', '\x2', '\x2', '\x22F', '\x86', '\x3', '\x2', '\x2', '\x2', - '\x230', '\x231', '\a', '\x63', '\x2', '\x2', '\x231', '\x232', '\a', - '\x65', '\x2', '\x2', '\x232', '\x233', '\a', 'q', '\x2', '\x2', '\x233', - '\x234', '\a', 'v', '\x2', '\x2', '\x234', '\x235', '\a', '\x63', '\x2', - '\x2', '\x235', '\x236', '\a', 'p', '\x2', '\x2', '\x236', '\x237', '\a', - '*', '\x2', '\x2', '\x237', '\x88', '\x3', '\x2', '\x2', '\x2', '\x238', - '\x239', '\a', '\x63', '\x2', '\x2', '\x239', '\x23A', '\a', 'u', '\x2', - '\x2', '\x23A', '\x23B', '\a', 'g', '\x2', '\x2', '\x23B', '\x23C', '\a', - '\x65', '\x2', '\x2', '\x23C', '\x23D', '\a', '*', '\x2', '\x2', '\x23D', - '\x8A', '\x3', '\x2', '\x2', '\x2', '\x23E', '\x23F', '\a', '\x63', '\x2', - '\x2', '\x23F', '\x240', '\a', '\x65', '\x2', '\x2', '\x240', '\x241', - '\a', 'q', '\x2', '\x2', '\x241', '\x242', '\a', 'u', '\x2', '\x2', '\x242', - '\x243', '\a', 'g', '\x2', '\x2', '\x243', '\x244', '\a', '\x65', '\x2', - '\x2', '\x244', '\x245', '\a', '*', '\x2', '\x2', '\x245', '\x8C', '\x3', - '\x2', '\x2', '\x2', '\x246', '\x247', '\a', '\x63', '\x2', '\x2', '\x247', - '\x248', '\a', '\x65', '\x2', '\x2', '\x248', '\x249', '\a', 'q', '\x2', - '\x2', '\x249', '\x24A', '\a', 'v', '\x2', '\x2', '\x24A', '\x24B', '\a', - '*', '\x2', '\x2', '\x24B', '\x8E', '\x3', '\x2', '\x2', '\x2', '\x24C', - '\x24D', '\a', '\x63', '\x2', '\x2', '\x24D', '\x24E', '\a', 't', '\x2', - '\x2', '\x24E', '\x24F', '\a', '\x65', '\x2', '\x2', '\x24F', '\x250', - '\a', '\x65', '\x2', '\x2', '\x250', '\x251', '\a', 'q', '\x2', '\x2', - '\x251', '\x252', '\a', 'v', '\x2', '\x2', '\x252', '\x253', '\a', '*', - '\x2', '\x2', '\x253', '\x90', '\x3', '\x2', '\x2', '\x2', '\x254', '\x255', - '\a', 'u', '\x2', '\x2', '\x255', '\x256', '\a', 'k', '\x2', '\x2', '\x256', - '\x257', '\a', 'p', '\x2', '\x2', '\x257', '\x258', '\a', 'j', '\x2', - '\x2', '\x258', '\x259', '\a', '*', '\x2', '\x2', '\x259', '\x92', '\x3', - '\x2', '\x2', '\x2', '\x25A', '\x25B', '\a', 'u', '\x2', '\x2', '\x25B', - '\x25C', '\a', 'j', '\x2', '\x2', '\x25C', '\x25D', '\a', '*', '\x2', - '\x2', '\x25D', '\x94', '\x3', '\x2', '\x2', '\x2', '\x25E', '\x25F', - '\a', '\x65', '\x2', '\x2', '\x25F', '\x260', '\a', 'q', '\x2', '\x2', - '\x260', '\x261', '\a', 'u', '\x2', '\x2', '\x261', '\x262', '\a', 'j', - '\x2', '\x2', '\x262', '\x263', '\a', '*', '\x2', '\x2', '\x263', '\x96', - '\x3', '\x2', '\x2', '\x2', '\x264', '\x265', '\a', '\x65', '\x2', '\x2', - '\x265', '\x266', '\a', 'j', '\x2', '\x2', '\x266', '\x267', '\a', '*', - '\x2', '\x2', '\x267', '\x98', '\x3', '\x2', '\x2', '\x2', '\x268', '\x269', - '\a', 'v', '\x2', '\x2', '\x269', '\x26A', '\a', '\x63', '\x2', '\x2', - '\x26A', '\x26B', '\a', 'p', '\x2', '\x2', '\x26B', '\x26C', '\a', 'j', - '\x2', '\x2', '\x26C', '\x26D', '\a', '*', '\x2', '\x2', '\x26D', '\x9A', - '\x3', '\x2', '\x2', '\x2', '\x26E', '\x26F', '\a', 'v', '\x2', '\x2', - '\x26F', '\x270', '\a', 'j', '\x2', '\x2', '\x270', '\x271', '\a', '*', - '\x2', '\x2', '\x271', '\x9C', '\x3', '\x2', '\x2', '\x2', '\x272', '\x273', - '\a', '\x65', '\x2', '\x2', '\x273', '\x274', '\a', 'q', '\x2', '\x2', - '\x274', '\x275', '\a', 'v', '\x2', '\x2', '\x275', '\x276', '\a', '\x63', - '\x2', '\x2', '\x276', '\x277', '\a', 'p', '\x2', '\x2', '\x277', '\x278', - '\a', 'j', '\x2', '\x2', '\x278', '\x279', '\a', '*', '\x2', '\x2', '\x279', - '\x9E', '\x3', '\x2', '\x2', '\x2', '\x27A', '\x27B', '\a', '\x65', '\x2', - '\x2', '\x27B', '\x27C', '\a', 'q', '\x2', '\x2', '\x27C', '\x27D', '\a', - 'v', '\x2', '\x2', '\x27D', '\x27E', '\a', 'j', '\x2', '\x2', '\x27E', - '\x27F', '\a', '*', '\x2', '\x2', '\x27F', '\xA0', '\x3', '\x2', '\x2', - '\x2', '\x280', '\x281', '\a', '\x65', '\x2', '\x2', '\x281', '\x282', - '\a', 'v', '\x2', '\x2', '\x282', '\x283', '\a', 'j', '\x2', '\x2', '\x283', - '\x284', '\a', '*', '\x2', '\x2', '\x284', '\xA2', '\x3', '\x2', '\x2', - '\x2', '\x285', '\x286', '\a', 'u', '\x2', '\x2', '\x286', '\x287', '\a', - 'g', '\x2', '\x2', '\x287', '\x288', '\a', '\x65', '\x2', '\x2', '\x288', - '\x289', '\a', 'j', '\x2', '\x2', '\x289', '\x28A', '\a', '*', '\x2', - '\x2', '\x28A', '\xA4', '\x3', '\x2', '\x2', '\x2', '\x28B', '\x28C', - '\a', 'u', '\x2', '\x2', '\x28C', '\x28D', '\a', '\x65', '\x2', '\x2', - '\x28D', '\x28E', '\a', 'j', '\x2', '\x2', '\x28E', '\x28F', '\a', '*', - '\x2', '\x2', '\x28F', '\xA6', '\x3', '\x2', '\x2', '\x2', '\x290', '\x291', - '\a', '\x65', '\x2', '\x2', '\x291', '\x292', '\a', 'q', '\x2', '\x2', - '\x292', '\x293', '\a', 'u', '\x2', '\x2', '\x293', '\x294', '\a', 'g', - '\x2', '\x2', '\x294', '\x295', '\a', '\x65', '\x2', '\x2', '\x295', '\x296', - '\a', 'j', '\x2', '\x2', '\x296', '\x297', '\a', '*', '\x2', '\x2', '\x297', - '\xA8', '\x3', '\x2', '\x2', '\x2', '\x298', '\x299', '\a', '\x65', '\x2', - '\x2', '\x299', '\x29A', '\a', 'u', '\x2', '\x2', '\x29A', '\x29B', '\a', - '\x65', '\x2', '\x2', '\x29B', '\x29C', '\a', 'j', '\x2', '\x2', '\x29C', - '\x29D', '\a', '*', '\x2', '\x2', '\x29D', '\xAA', '\x3', '\x2', '\x2', - '\x2', '\x29E', '\x29F', '\a', '\x63', '\x2', '\x2', '\x29F', '\x2A0', - '\a', 'u', '\x2', '\x2', '\x2A0', '\x2A1', '\a', 'k', '\x2', '\x2', '\x2A1', - '\x2A2', '\a', 'p', '\x2', '\x2', '\x2A2', '\x2A3', '\a', 'j', '\x2', - '\x2', '\x2A3', '\x2A4', '\a', '*', '\x2', '\x2', '\x2A4', '\xAC', '\x3', - '\x2', '\x2', '\x2', '\x2A5', '\x2A6', '\a', '\x63', '\x2', '\x2', '\x2A6', - '\x2A7', '\a', 't', '\x2', '\x2', '\x2A7', '\x2A8', '\a', 'u', '\x2', - '\x2', '\x2A8', '\x2A9', '\a', 'k', '\x2', '\x2', '\x2A9', '\x2AA', '\a', - 'p', '\x2', '\x2', '\x2AA', '\x2AB', '\a', 'j', '\x2', '\x2', '\x2AB', - '\x2AC', '\a', '*', '\x2', '\x2', '\x2AC', '\xAE', '\x3', '\x2', '\x2', - '\x2', '\x2AD', '\x2AE', '\a', '\x63', '\x2', '\x2', '\x2AE', '\x2AF', - '\a', 't', '\x2', '\x2', '\x2AF', '\x2B0', '\a', 'u', '\x2', '\x2', '\x2B0', - '\x2B1', '\a', 'j', '\x2', '\x2', '\x2B1', '\x2B2', '\a', '*', '\x2', - '\x2', '\x2B2', '\xB0', '\x3', '\x2', '\x2', '\x2', '\x2B3', '\x2B4', - '\a', '\x63', '\x2', '\x2', '\x2B4', '\x2B5', '\a', '\x65', '\x2', '\x2', - '\x2B5', '\x2B6', '\a', 'q', '\x2', '\x2', '\x2B6', '\x2B7', '\a', 'u', - '\x2', '\x2', '\x2B7', '\x2B8', '\a', 'j', '\x2', '\x2', '\x2B8', '\x2B9', - '\a', '*', '\x2', '\x2', '\x2B9', '\xB2', '\x3', '\x2', '\x2', '\x2', - '\x2BA', '\x2BB', '\a', '\x63', '\x2', '\x2', '\x2BB', '\x2BC', '\a', - 't', '\x2', '\x2', '\x2BC', '\x2BD', '\a', '\x65', '\x2', '\x2', '\x2BD', - '\x2BE', '\a', 'q', '\x2', '\x2', '\x2BE', '\x2BF', '\a', 'u', '\x2', - '\x2', '\x2BF', '\x2C0', '\a', 'j', '\x2', '\x2', '\x2C0', '\x2C1', '\a', - '*', '\x2', '\x2', '\x2C1', '\xB4', '\x3', '\x2', '\x2', '\x2', '\x2C2', - '\x2C3', '\a', '\x63', '\x2', '\x2', '\x2C3', '\x2C4', '\a', 't', '\x2', - '\x2', '\x2C4', '\x2C5', '\a', '\x65', '\x2', '\x2', '\x2C5', '\x2C6', - '\a', 'j', '\x2', '\x2', '\x2C6', '\x2C7', '\a', '*', '\x2', '\x2', '\x2C7', - '\xB6', '\x3', '\x2', '\x2', '\x2', '\x2C8', '\x2C9', '\a', '\x63', '\x2', - '\x2', '\x2C9', '\x2CA', '\a', 'v', '\x2', '\x2', '\x2CA', '\x2CB', '\a', - '\x63', '\x2', '\x2', '\x2CB', '\x2CC', '\a', 'p', '\x2', '\x2', '\x2CC', - '\x2CD', '\a', 'j', '\x2', '\x2', '\x2CD', '\x2CE', '\a', '*', '\x2', - '\x2', '\x2CE', '\xB8', '\x3', '\x2', '\x2', '\x2', '\x2CF', '\x2D0', - '\a', '\x63', '\x2', '\x2', '\x2D0', '\x2D1', '\a', 't', '\x2', '\x2', - '\x2D1', '\x2D2', '\a', 'v', '\x2', '\x2', '\x2D2', '\x2D3', '\a', '\x63', - '\x2', '\x2', '\x2D3', '\x2D4', '\a', 'p', '\x2', '\x2', '\x2D4', '\x2D5', - '\a', 'j', '\x2', '\x2', '\x2D5', '\x2D6', '\a', '*', '\x2', '\x2', '\x2D6', - '\xBA', '\x3', '\x2', '\x2', '\x2', '\x2D7', '\x2D8', '\a', '\x63', '\x2', - '\x2', '\x2D8', '\x2D9', '\a', 't', '\x2', '\x2', '\x2D9', '\x2DA', '\a', - 'v', '\x2', '\x2', '\x2DA', '\x2DB', '\a', 'j', '\x2', '\x2', '\x2DB', - '\x2DC', '\a', '*', '\x2', '\x2', '\x2DC', '\xBC', '\x3', '\x2', '\x2', - '\x2', '\x2DD', '\x2DE', '\a', '\x63', '\x2', '\x2', '\x2DE', '\x2DF', - '\a', '\x65', '\x2', '\x2', '\x2DF', '\x2E0', '\a', 'q', '\x2', '\x2', - '\x2E0', '\x2E1', '\a', 'v', '\x2', '\x2', '\x2E1', '\x2E2', '\a', 'j', - '\x2', '\x2', '\x2E2', '\x2E3', '\a', '*', '\x2', '\x2', '\x2E3', '\xBE', - '\x3', '\x2', '\x2', '\x2', '\x2E4', '\x2E5', '\a', '\x63', '\x2', '\x2', - '\x2E5', '\x2E6', '\a', 't', '\x2', '\x2', '\x2E6', '\x2E7', '\a', '\x65', - '\x2', '\x2', '\x2E7', '\x2E8', '\a', 'q', '\x2', '\x2', '\x2E8', '\x2E9', - '\a', 'v', '\x2', '\x2', '\x2E9', '\x2EA', '\a', 'j', '\x2', '\x2', '\x2EA', - '\x2EB', '\a', '*', '\x2', '\x2', '\x2EB', '\xC0', '\x3', '\x2', '\x2', - '\x2', '\x2EC', '\x2ED', '\a', '\x63', '\x2', '\x2', '\x2ED', '\x2EE', - '\a', '\x65', '\x2', '\x2', '\x2EE', '\x2EF', '\a', 'q', '\x2', '\x2', - '\x2EF', '\x2F0', '\a', 'v', '\x2', '\x2', '\x2F0', '\x2F1', '\a', '\x63', - '\x2', '\x2', '\x2F1', '\x2F2', '\a', 'p', '\x2', '\x2', '\x2F2', '\x2F3', - '\a', 'j', '\x2', '\x2', '\x2F3', '\x2F4', '\a', '*', '\x2', '\x2', '\x2F4', - '\xC2', '\x3', '\x2', '\x2', '\x2', '\x2F5', '\x2F6', '\a', '\x63', '\x2', - '\x2', '\x2F6', '\x2F7', '\a', 't', '\x2', '\x2', '\x2F7', '\x2F8', '\a', - '\x65', '\x2', '\x2', '\x2F8', '\x2F9', '\a', 'q', '\x2', '\x2', '\x2F9', - '\x2FA', '\a', 'v', '\x2', '\x2', '\x2FA', '\x2FB', '\a', '\x63', '\x2', - '\x2', '\x2FB', '\x2FC', '\a', 'p', '\x2', '\x2', '\x2FC', '\x2FD', '\a', - 'j', '\x2', '\x2', '\x2FD', '\x2FE', '\a', '*', '\x2', '\x2', '\x2FE', - '\xC4', '\x3', '\x2', '\x2', '\x2', '\x2FF', '\x300', '\a', '\x63', '\x2', - '\x2', '\x300', '\x301', '\a', 't', '\x2', '\x2', '\x301', '\x302', '\a', - '\x65', '\x2', '\x2', '\x302', '\x303', '\a', 'v', '\x2', '\x2', '\x303', - '\x304', '\a', 'j', '\x2', '\x2', '\x304', '\x305', '\a', '*', '\x2', - '\x2', '\x305', '\xC6', '\x3', '\x2', '\x2', '\x2', '\x306', '\x307', - '\a', '\x63', '\x2', '\x2', '\x307', '\x308', '\a', 'u', '\x2', '\x2', - '\x308', '\x309', '\a', 'g', '\x2', '\x2', '\x309', '\x30A', '\a', '\x65', - '\x2', '\x2', '\x30A', '\x30B', '\a', 'j', '\x2', '\x2', '\x30B', '\x30C', - '\a', '*', '\x2', '\x2', '\x30C', '\xC8', '\x3', '\x2', '\x2', '\x2', - '\x30D', '\x30E', '\a', '\x63', '\x2', '\x2', '\x30E', '\x30F', '\a', - 't', '\x2', '\x2', '\x30F', '\x310', '\a', 'u', '\x2', '\x2', '\x310', - '\x311', '\a', 'g', '\x2', '\x2', '\x311', '\x312', '\a', '\x65', '\x2', - '\x2', '\x312', '\x313', '\a', 'j', '\x2', '\x2', '\x313', '\x314', '\a', - '*', '\x2', '\x2', '\x314', '\xCA', '\x3', '\x2', '\x2', '\x2', '\x315', - '\x316', '\a', '\x63', '\x2', '\x2', '\x316', '\x317', '\a', 't', '\x2', - '\x2', '\x317', '\x318', '\a', 'u', '\x2', '\x2', '\x318', '\x319', '\a', - '\x65', '\x2', '\x2', '\x319', '\x31A', '\a', 'j', '\x2', '\x2', '\x31A', - '\x31B', '\a', '*', '\x2', '\x2', '\x31B', '\xCC', '\x3', '\x2', '\x2', - '\x2', '\x31C', '\x31D', '\a', '\x63', '\x2', '\x2', '\x31D', '\x31E', - '\a', '\x65', '\x2', '\x2', '\x31E', '\x31F', '\a', 'q', '\x2', '\x2', - '\x31F', '\x320', '\a', 'u', '\x2', '\x2', '\x320', '\x321', '\a', 'g', - '\x2', '\x2', '\x321', '\x322', '\a', '\x65', '\x2', '\x2', '\x322', '\x323', - '\a', 'j', '\x2', '\x2', '\x323', '\x324', '\a', '*', '\x2', '\x2', '\x324', - '\xCE', '\x3', '\x2', '\x2', '\x2', '\x325', '\x326', '\a', '\x63', '\x2', - '\x2', '\x326', '\x327', '\a', 't', '\x2', '\x2', '\x327', '\x328', '\a', - '\x65', '\x2', '\x2', '\x328', '\x329', '\a', 'q', '\x2', '\x2', '\x329', - '\x32A', '\a', 'u', '\x2', '\x2', '\x32A', '\x32B', '\a', 'g', '\x2', - '\x2', '\x32B', '\x32C', '\a', '\x65', '\x2', '\x2', '\x32C', '\x32D', - '\a', 'j', '\x2', '\x2', '\x32D', '\x32E', '\a', '*', '\x2', '\x2', '\x32E', - '\xD0', '\x3', '\x2', '\x2', '\x2', '\x32F', '\x330', '\a', '\x63', '\x2', - '\x2', '\x330', '\x331', '\a', 't', '\x2', '\x2', '\x331', '\x332', '\a', - '\x65', '\x2', '\x2', '\x332', '\x333', '\a', 'u', '\x2', '\x2', '\x333', - '\x334', '\a', '\x65', '\x2', '\x2', '\x334', '\x335', '\a', 'j', '\x2', - '\x2', '\x335', '\x336', '\a', '*', '\x2', '\x2', '\x336', '\xD2', '\x3', - '\x2', '\x2', '\x2', '\x337', '\x338', '\a', '\x63', '\x2', '\x2', '\x338', - '\x339', '\a', '\x65', '\x2', '\x2', '\x339', '\x33A', '\a', 'u', '\x2', - '\x2', '\x33A', '\x33B', '\a', '\x65', '\x2', '\x2', '\x33B', '\x33C', - '\a', 'j', '\x2', '\x2', '\x33C', '\x33D', '\a', '*', '\x2', '\x2', '\x33D', - '\xD4', '\x3', '\x2', '\x2', '\x2', '\x33E', '\x33F', '\a', 'i', '\x2', - '\x2', '\x33F', '\x340', '\a', '\x63', '\x2', '\x2', '\x340', '\x341', - '\a', 'o', '\x2', '\x2', '\x341', '\x342', '\a', 'o', '\x2', '\x2', '\x342', - '\x343', '\a', '\x63', '\x2', '\x2', '\x343', '\x344', '\a', '*', '\x2', - '\x2', '\x344', '\xD6', '\x3', '\x2', '\x2', '\x2', '\x345', '\x346', - '\a', '\x66', '\x2', '\x2', '\x346', '\x347', '\a', 'g', '\x2', '\x2', - '\x347', '\x348', '\a', 't', '\x2', '\x2', '\x348', '\x349', '\a', 'k', - '\x2', '\x2', '\x349', '\x34A', '\a', 'x', '\x2', '\x2', '\x34A', '\x34B', - '\a', '\x63', '\x2', '\x2', '\x34B', '\x34C', '\a', 'v', '\x2', '\x2', - '\x34C', '\x34D', '\a', 'k', '\x2', '\x2', '\x34D', '\x34E', '\a', 'x', - '\x2', '\x2', '\x34E', '\x34F', '\a', 'g', '\x2', '\x2', '\x34F', '\x350', - '\a', '*', '\x2', '\x2', '\x350', '\xD8', '\x3', '\x2', '\x2', '\x2', - '\x351', '\x352', '\a', 'k', '\x2', '\x2', '\x352', '\x353', '\a', 'p', - '\x2', '\x2', '\x353', '\x354', '\a', 'v', '\x2', '\x2', '\x354', '\x355', - '\a', 'g', '\x2', '\x2', '\x355', '\x356', '\a', 'i', '\x2', '\x2', '\x356', - '\x357', '\a', 't', '\x2', '\x2', '\x357', '\x358', '\a', '\x63', '\x2', - '\x2', '\x358', '\x359', '\a', 'n', '\x2', '\x2', '\x359', '\x35A', '\a', - '*', '\x2', '\x2', '\x35A', '\xDA', '\x3', '\x2', '\x2', '\x2', '\x35B', - '\x35C', '\a', 'n', '\x2', '\x2', '\x35C', '\x35D', '\a', 'k', '\x2', - '\x2', '\x35D', '\x35E', '\a', 'o', '\x2', '\x2', '\x35E', '\x35F', '\a', - 'k', '\x2', '\x2', '\x35F', '\x360', '\a', 'v', '\x2', '\x2', '\x360', - '\x361', '\a', '*', '\x2', '\x2', '\x361', '\xDC', '\x3', '\x2', '\x2', - '\x2', '\x362', '\x363', '\a', 'n', '\x2', '\x2', '\x363', '\x364', '\a', - 'k', '\x2', '\x2', '\x364', '\x365', '\a', 'o', '\x2', '\x2', '\x365', - '\x366', '\a', 'k', '\x2', '\x2', '\x366', '\x367', '\a', 'v', '\x2', - '\x2', '\x367', '\x368', '\a', 'n', '\x2', '\x2', '\x368', '\x369', '\a', - 'g', '\x2', '\x2', '\x369', '\x36A', '\a', 'h', '\x2', '\x2', '\x36A', - '\x36B', '\a', 'v', '\x2', '\x2', '\x36B', '\x36C', '\a', '*', '\x2', - '\x2', '\x36C', '\xDE', '\x3', '\x2', '\x2', '\x2', '\x36D', '\x36E', - '\a', 'n', '\x2', '\x2', '\x36E', '\x36F', '\a', 'k', '\x2', '\x2', '\x36F', - '\x370', '\a', 'o', '\x2', '\x2', '\x370', '\x371', '\a', 'k', '\x2', - '\x2', '\x371', '\x372', '\a', 'v', '\x2', '\x2', '\x372', '\x373', '\a', - 't', '\x2', '\x2', '\x373', '\x374', '\a', 'k', '\x2', '\x2', '\x374', - '\x375', '\a', 'i', '\x2', '\x2', '\x375', '\x376', '\a', 'j', '\x2', - '\x2', '\x376', '\x377', '\a', 'v', '\x2', '\x2', '\x377', '\x378', '\a', - '*', '\x2', '\x2', '\x378', '\xE0', '\x3', '\x2', '\x2', '\x2', '\x379', - '\x37A', '\a', 'u', '\x2', '\x2', '\x37A', '\x37B', '\a', 'k', '\x2', - '\x2', '\x37B', '\x37C', '\a', 'i', '\x2', '\x2', '\x37C', '\x37D', '\a', - 'p', '\x2', '\x2', '\x37D', '\x37E', '\a', 'w', '\x2', '\x2', '\x37E', - '\x37F', '\a', 'o', '\x2', '\x2', '\x37F', '\x380', '\a', '*', '\x2', - '\x2', '\x380', '\xE2', '\x3', '\x2', '\x2', '\x2', '\x381', '\x382', - '\a', 'u', '\x2', '\x2', '\x382', '\x383', '\a', 'i', '\x2', '\x2', '\x383', - '\x384', '\a', 'p', '\x2', '\x2', '\x384', '\x385', '\a', '*', '\x2', - '\x2', '\x385', '\xE4', '\x3', '\x2', '\x2', '\x2', '\x386', '\x387', - '\a', 'u', '\x2', '\x2', '\x387', '\x388', '\a', 'k', '\x2', '\x2', '\x388', - '\x389', '\a', 'i', '\x2', '\x2', '\x389', '\x38A', '\a', 'p', '\x2', - '\x2', '\x38A', '\x38B', '\a', '*', '\x2', '\x2', '\x38B', '\xE6', '\x3', - '\x2', '\x2', '\x2', '\x38C', '\x38D', '\a', '\x63', '\x2', '\x2', '\x38D', - '\x38E', '\a', '\x64', '\x2', '\x2', '\x38E', '\x38F', '\a', 'u', '\x2', - '\x2', '\x38F', '\x390', '\a', '*', '\x2', '\x2', '\x390', '\xE8', '\x3', - '\x2', '\x2', '\x2', '\x391', '\x392', '\a', 'r', '\x2', '\x2', '\x392', - '\x393', '\a', 'j', '\x2', '\x2', '\x393', '\x394', '\a', 'k', '\x2', - '\x2', '\x394', '\x395', '\a', '*', '\x2', '\x2', '\x395', '\xEA', '\x3', - '\x2', '\x2', '\x2', '\x396', '\x397', '\a', '\x66', '\x2', '\x2', '\x397', - '\x398', '\a', 'q', '\x2', '\x2', '\x398', '\x399', '\a', 'o', '\x2', - '\x2', '\x399', '\x39A', '\a', '\x63', '\x2', '\x2', '\x39A', '\x39B', - '\a', 'k', '\x2', '\x2', '\x39B', '\x39C', '\a', 'p', '\x2', '\x2', '\x39C', - '\x39D', '\a', '*', '\x2', '\x2', '\x39D', '\xEC', '\x3', '\x2', '\x2', - '\x2', '\x39E', '\x39F', '\a', 'r', '\x2', '\x2', '\x39F', '\x3A0', '\a', - 'k', '\x2', '\x2', '\x3A0', '\x3A1', '\a', 'g', '\x2', '\x2', '\x3A1', - '\x3A2', '\a', '\x65', '\x2', '\x2', '\x3A2', '\x3A3', '\a', 'g', '\x2', - '\x2', '\x3A3', '\x3A4', '\a', 'y', '\x2', '\x2', '\x3A4', '\x3A5', '\a', - 'k', '\x2', '\x2', '\x3A5', '\x3A6', '\a', 'u', '\x2', '\x2', '\x3A6', - '\x3A7', '\a', 'g', '\x2', '\x2', '\x3A7', '\x3A8', '\a', '*', '\x2', - '\x2', '\x3A8', '\xEE', '\x3', '\x2', '\x2', '\x2', '\x3A9', '\x3AA', - '\a', '\x63', '\x2', '\x2', '\x3AA', '\x3AB', '\a', 'r', '\x2', '\x2', - '\x3AB', '\x3AC', '\a', 'r', '\x2', '\x2', '\x3AC', '\x3AD', '\a', 'n', - '\x2', '\x2', '\x3AD', '\x3AE', '\a', '{', '\x2', '\x2', '\x3AE', '\x3AF', - '\a', '*', '\x2', '\x2', '\x3AF', '\xF0', '\x3', '\x2', '\x2', '\x2', - '\x3B0', '\x3B1', '\a', 'n', '\x2', '\x2', '\x3B1', '\x3B2', '\a', '\x63', - '\x2', '\x2', '\x3B2', '\x3B3', '\a', 'o', '\x2', '\x2', '\x3B3', '\x3B4', - '\a', '\x64', '\x2', '\x2', '\x3B4', '\x3B5', '\a', '\x66', '\x2', '\x2', - '\x3B5', '\x3B6', '\a', '\x63', '\x2', '\x2', '\x3B6', '\x3B7', '\a', - '*', '\x2', '\x2', '\x3B7', '\xF2', '\x3', '\x2', '\x2', '\x2', '\x3B8', - '\x3BA', '\a', '\xF', '\x2', '\x2', '\x3B9', '\x3B8', '\x3', '\x2', '\x2', - '\x2', '\x3B9', '\x3BA', '\x3', '\x2', '\x2', '\x2', '\x3BA', '\x3BB', - '\x3', '\x2', '\x2', '\x2', '\x3BB', '\x3BD', '\a', '\f', '\x2', '\x2', - '\x3BC', '\x3B9', '\x3', '\x2', '\x2', '\x2', '\x3BD', '\x3BE', '\x3', - '\x2', '\x2', '\x2', '\x3BE', '\x3BC', '\x3', '\x2', '\x2', '\x2', '\x3BE', - '\x3BF', '\x3', '\x2', '\x2', '\x2', '\x3BF', '\x3C0', '\x3', '\x2', '\x2', - '\x2', '\x3C0', '\x3C1', '\b', 'z', '\x2', '\x2', '\x3C1', '\xF4', '\x3', - '\x2', '\x2', '\x2', '\x3C2', '\x3C4', '\t', '\x2', '\x2', '\x2', '\x3C3', - '\x3C5', '\t', '\x3', '\x2', '\x2', '\x3C4', '\x3C3', '\x3', '\x2', '\x2', - '\x2', '\x3C4', '\x3C5', '\x3', '\x2', '\x2', '\x2', '\x3C5', '\x3C7', - '\x3', '\x2', '\x2', '\x2', '\x3C6', '\x3C8', '\x4', '\x32', ';', '\x2', - '\x3C7', '\x3C6', '\x3', '\x2', '\x2', '\x2', '\x3C8', '\x3C9', '\x3', - '\x2', '\x2', '\x2', '\x3C9', '\x3C7', '\x3', '\x2', '\x2', '\x2', '\x3C9', - '\x3CA', '\x3', '\x2', '\x2', '\x2', '\x3CA', '\xF6', '\x3', '\x2', '\x2', - '\x2', '\x3CB', '\x3CD', '\x4', '\x32', ';', '\x2', '\x3CC', '\x3CB', - '\x3', '\x2', '\x2', '\x2', '\x3CD', '\x3CE', '\x3', '\x2', '\x2', '\x2', - '\x3CE', '\x3CC', '\x3', '\x2', '\x2', '\x2', '\x3CE', '\x3CF', '\x3', - '\x2', '\x2', '\x2', '\x3CF', '\x3D0', '\x3', '\x2', '\x2', '\x2', '\x3D0', - '\x3D4', '\a', '\x30', '\x2', '\x2', '\x3D1', '\x3D3', '\x4', '\x32', - ';', '\x2', '\x3D2', '\x3D1', '\x3', '\x2', '\x2', '\x2', '\x3D3', '\x3D6', - '\x3', '\x2', '\x2', '\x2', '\x3D4', '\x3D2', '\x3', '\x2', '\x2', '\x2', - '\x3D4', '\x3D5', '\x3', '\x2', '\x2', '\x2', '\x3D5', '\x3D8', '\x3', - '\x2', '\x2', '\x2', '\x3D6', '\x3D4', '\x3', '\x2', '\x2', '\x2', '\x3D7', - '\x3D9', '\x5', '\xF5', '{', '\x2', '\x3D8', '\x3D7', '\x3', '\x2', '\x2', - '\x2', '\x3D8', '\x3D9', '\x3', '\x2', '\x2', '\x2', '\x3D9', '\x3DB', - '\x3', '\x2', '\x2', '\x2', '\x3DA', '\x3DC', '\a', 'k', '\x2', '\x2', - '\x3DB', '\x3DA', '\x3', '\x2', '\x2', '\x2', '\x3DB', '\x3DC', '\x3', - '\x2', '\x2', '\x2', '\x3DC', '\x3ED', '\x3', '\x2', '\x2', '\x2', '\x3DD', - '\x3DF', '\a', '\x30', '\x2', '\x2', '\x3DE', '\x3DD', '\x3', '\x2', '\x2', - '\x2', '\x3DE', '\x3DF', '\x3', '\x2', '\x2', '\x2', '\x3DF', '\x3E1', - '\x3', '\x2', '\x2', '\x2', '\x3E0', '\x3E2', '\x4', '\x32', ';', '\x2', - '\x3E1', '\x3E0', '\x3', '\x2', '\x2', '\x2', '\x3E2', '\x3E3', '\x3', - '\x2', '\x2', '\x2', '\x3E3', '\x3E1', '\x3', '\x2', '\x2', '\x2', '\x3E3', - '\x3E4', '\x3', '\x2', '\x2', '\x2', '\x3E4', '\x3E6', '\x3', '\x2', '\x2', - '\x2', '\x3E5', '\x3E7', '\x5', '\xF5', '{', '\x2', '\x3E6', '\x3E5', - '\x3', '\x2', '\x2', '\x2', '\x3E6', '\x3E7', '\x3', '\x2', '\x2', '\x2', - '\x3E7', '\x3E9', '\x3', '\x2', '\x2', '\x2', '\x3E8', '\x3EA', '\a', - 'k', '\x2', '\x2', '\x3E9', '\x3E8', '\x3', '\x2', '\x2', '\x2', '\x3E9', - '\x3EA', '\x3', '\x2', '\x2', '\x2', '\x3EA', '\x3ED', '\x3', '\x2', '\x2', - '\x2', '\x3EB', '\x3ED', '\a', 'k', '\x2', '\x2', '\x3EC', '\x3CC', '\x3', - '\x2', '\x2', '\x2', '\x3EC', '\x3DE', '\x3', '\x2', '\x2', '\x2', '\x3EC', - '\x3EB', '\x3', '\x2', '\x2', '\x2', '\x3ED', '\xF8', '\x3', '\x2', '\x2', - '\x2', '\x3EE', '\x3EF', '\a', '\x45', '\x2', '\x2', '\x3EF', '\x3F9', - '\a', '\x45', '\x2', '\x2', '\x3F0', '\x3F1', '\a', 'T', '\x2', '\x2', - '\x3F1', '\x3F9', '\a', 'T', '\x2', '\x2', '\x3F2', '\x3F3', '\a', 'S', - '\x2', '\x2', '\x3F3', '\x3F9', '\a', 'S', '\x2', '\x2', '\x3F4', '\x3F5', - '\a', '\\', '\x2', '\x2', '\x3F5', '\x3F9', '\a', '\\', '\x2', '\x2', - '\x3F6', '\x3F7', '\a', '\x44', '\x2', '\x2', '\x3F7', '\x3F9', '\a', - '\x44', '\x2', '\x2', '\x3F8', '\x3EE', '\x3', '\x2', '\x2', '\x2', '\x3F8', - '\x3F0', '\x3', '\x2', '\x2', '\x2', '\x3F8', '\x3F2', '\x3', '\x2', '\x2', - '\x2', '\x3F8', '\x3F4', '\x3', '\x2', '\x2', '\x2', '\x3F8', '\x3F6', - '\x3', '\x2', '\x2', '\x2', '\x3F9', '\xFA', '\x3', '\x2', '\x2', '\x2', - '\x3FA', '\x3FB', '\a', 'v', '\x2', '\x2', '\x3FB', '\x3FC', '\a', 't', - '\x2', '\x2', '\x3FC', '\x3FD', '\a', 'w', '\x2', '\x2', '\x3FD', '\x40D', - '\a', 'g', '\x2', '\x2', '\x3FE', '\x3FF', '\a', 'V', '\x2', '\x2', '\x3FF', - '\x400', '\a', 't', '\x2', '\x2', '\x400', '\x401', '\a', 'w', '\x2', - '\x2', '\x401', '\x40D', '\a', 'g', '\x2', '\x2', '\x402', '\x403', '\a', - 'h', '\x2', '\x2', '\x403', '\x404', '\a', '\x63', '\x2', '\x2', '\x404', - '\x405', '\a', 'n', '\x2', '\x2', '\x405', '\x406', '\a', 'u', '\x2', - '\x2', '\x406', '\x40D', '\a', 'g', '\x2', '\x2', '\x407', '\x408', '\a', - 'H', '\x2', '\x2', '\x408', '\x409', '\a', '\x63', '\x2', '\x2', '\x409', - '\x40A', '\a', 'n', '\x2', '\x2', '\x40A', '\x40B', '\a', 'u', '\x2', - '\x2', '\x40B', '\x40D', '\a', 'g', '\x2', '\x2', '\x40C', '\x3FA', '\x3', - '\x2', '\x2', '\x2', '\x40C', '\x3FE', '\x3', '\x2', '\x2', '\x2', '\x40C', - '\x402', '\x3', '\x2', '\x2', '\x2', '\x40C', '\x407', '\x3', '\x2', '\x2', - '\x2', '\x40D', '\xFC', '\x3', '\x2', '\x2', '\x2', '\x40E', '\x410', - '\t', '\x4', '\x2', '\x2', '\x40F', '\x40E', '\x3', '\x2', '\x2', '\x2', - '\x410', '\x411', '\x3', '\x2', '\x2', '\x2', '\x411', '\x40F', '\x3', - '\x2', '\x2', '\x2', '\x411', '\x412', '\x3', '\x2', '\x2', '\x2', '\x412', - '\x419', '\x3', '\x2', '\x2', '\x2', '\x413', '\x415', '\a', '\x61', '\x2', - '\x2', '\x414', '\x416', '\t', '\x5', '\x2', '\x2', '\x415', '\x414', - '\x3', '\x2', '\x2', '\x2', '\x416', '\x417', '\x3', '\x2', '\x2', '\x2', - '\x417', '\x415', '\x3', '\x2', '\x2', '\x2', '\x417', '\x418', '\x3', - '\x2', '\x2', '\x2', '\x418', '\x41A', '\x3', '\x2', '\x2', '\x2', '\x419', - '\x413', '\x3', '\x2', '\x2', '\x2', '\x419', '\x41A', '\x3', '\x2', '\x2', - '\x2', '\x41A', '\xFE', '\x3', '\x2', '\x2', '\x2', '\x41B', '\x41C', - '\a', '\x31', '\x2', '\x2', '\x41C', '\x41D', '\a', '\x31', '\x2', '\x2', - '\x41D', '\x421', '\x3', '\x2', '\x2', '\x2', '\x41E', '\x420', '\n', - '\x6', '\x2', '\x2', '\x41F', '\x41E', '\x3', '\x2', '\x2', '\x2', '\x420', - '\x423', '\x3', '\x2', '\x2', '\x2', '\x421', '\x41F', '\x3', '\x2', '\x2', - '\x2', '\x421', '\x422', '\x3', '\x2', '\x2', '\x2', '\x422', '\x425', - '\x3', '\x2', '\x2', '\x2', '\x423', '\x421', '\x3', '\x2', '\x2', '\x2', - '\x424', '\x426', '\a', '\xF', '\x2', '\x2', '\x425', '\x424', '\x3', - '\x2', '\x2', '\x2', '\x425', '\x426', '\x3', '\x2', '\x2', '\x2', '\x426', - '\x427', '\x3', '\x2', '\x2', '\x2', '\x427', '\x434', '\a', '\f', '\x2', - '\x2', '\x428', '\x429', '\a', '\x31', '\x2', '\x2', '\x429', '\x42A', - '\a', ',', '\x2', '\x2', '\x42A', '\x42E', '\x3', '\x2', '\x2', '\x2', - '\x42B', '\x42D', '\v', '\x2', '\x2', '\x2', '\x42C', '\x42B', '\x3', - '\x2', '\x2', '\x2', '\x42D', '\x430', '\x3', '\x2', '\x2', '\x2', '\x42E', - '\x42F', '\x3', '\x2', '\x2', '\x2', '\x42E', '\x42C', '\x3', '\x2', '\x2', - '\x2', '\x42F', '\x431', '\x3', '\x2', '\x2', '\x2', '\x430', '\x42E', - '\x3', '\x2', '\x2', '\x2', '\x431', '\x432', '\a', ',', '\x2', '\x2', - '\x432', '\x434', '\a', '\x31', '\x2', '\x2', '\x433', '\x41B', '\x3', - '\x2', '\x2', '\x2', '\x433', '\x428', '\x3', '\x2', '\x2', '\x2', '\x434', - '\x435', '\x3', '\x2', '\x2', '\x2', '\x435', '\x436', '\b', '\x80', '\x2', - '\x2', '\x436', '\x100', '\x3', '\x2', '\x2', '\x2', '\x437', '\x439', - '\t', '\a', '\x2', '\x2', '\x438', '\x437', '\x3', '\x2', '\x2', '\x2', - '\x439', '\x43A', '\x3', '\x2', '\x2', '\x2', '\x43A', '\x438', '\x3', - '\x2', '\x2', '\x2', '\x43A', '\x43B', '\x3', '\x2', '\x2', '\x2', '\x43B', - '\x43C', '\x3', '\x2', '\x2', '\x2', '\x43C', '\x43D', '\b', '\x81', '\x2', - '\x2', '\x43D', '\x102', '\x3', '\x2', '\x2', '\x2', '\x1A', '\x2', '\x3B9', - '\x3BE', '\x3C4', '\x3C9', '\x3CE', '\x3D4', '\x3D8', '\x3DB', '\x3DE', - '\x3E3', '\x3E6', '\x3E9', '\x3EC', '\x3F8', '\x40C', '\x411', '\x417', - '\x419', '\x421', '\x425', '\x42E', '\x433', '\x43A', '\x3', '\b', '\x2', - '\x2', - }; - - public static readonly ATN _ATN = - new ATNDeserializer().Deserialize(_serializedATN); - - -} -} // namespace AngouriMath.Core.Antlr diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathLexer.interp b/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathLexer.interp deleted file mode 100644 index 9054ff44b..000000000 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathLexer.interp +++ /dev/null @@ -1,399 +0,0 @@ -token literal names: -null -'!' -'^' -'-' -'+' -'*' -'/' -'intersect' -'/\\' -'unite' -'\\/' -'setsubtract' -'\\' -'in' -'>=' -'<=' -'>' -'<' -'equalizes' -'=' -'not' -'and' -'&' -'xor' -'or' -'|' -'implies' -'->' -'provided' -',' -';' -':' -'+oo' -'-oo' -'(|' -'|)' -'[' -']T' -']' -'(' -')' -'{' -'}' -'log(' -'sqrt(' -'cbrt(' -'sqr(' -'ln(' -'sin(' -'cos(' -'tan(' -'cotan(' -'cot(' -'sec(' -'cosec(' -'csc(' -'arcsin(' -'arccos(' -'arctan(' -'arccotan(' -'arcsec(' -'arccosec(' -'arccsc(' -'acsc(' -'asin(' -'acos(' -'atan(' -'acotan(' -'asec(' -'acosec(' -'acot(' -'arccot(' -'sinh(' -'sh(' -'cosh(' -'ch(' -'tanh(' -'th(' -'cotanh(' -'coth(' -'cth(' -'sech(' -'sch(' -'cosech(' -'csch(' -'asinh(' -'arsinh(' -'arsh(' -'acosh(' -'arcosh(' -'arch(' -'atanh(' -'artanh(' -'arth(' -'acoth(' -'arcoth(' -'acotanh(' -'arcotanh(' -'arcth(' -'asech(' -'arsech(' -'arsch(' -'acosech(' -'arcosech(' -'arcsch(' -'acsch(' -'gamma(' -'derivative(' -'integral(' -'limit(' -'limitleft(' -'limitright(' -'signum(' -'sgn(' -'sign(' -'abs(' -'phi(' -'domain(' -'piecewise(' -'apply(' -'lambda(' -null -null -null -null -null -null -null - -token symbolic names: -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -null -NEWLINE -NUMBER -SPECIALSET -BOOLEAN -VARIABLE -COMMENT -WS - -rule names: -T__0 -T__1 -T__2 -T__3 -T__4 -T__5 -T__6 -T__7 -T__8 -T__9 -T__10 -T__11 -T__12 -T__13 -T__14 -T__15 -T__16 -T__17 -T__18 -T__19 -T__20 -T__21 -T__22 -T__23 -T__24 -T__25 -T__26 -T__27 -T__28 -T__29 -T__30 -T__31 -T__32 -T__33 -T__34 -T__35 -T__36 -T__37 -T__38 -T__39 -T__40 -T__41 -T__42 -T__43 -T__44 -T__45 -T__46 -T__47 -T__48 -T__49 -T__50 -T__51 -T__52 -T__53 -T__54 -T__55 -T__56 -T__57 -T__58 -T__59 -T__60 -T__61 -T__62 -T__63 -T__64 -T__65 -T__66 -T__67 -T__68 -T__69 -T__70 -T__71 -T__72 -T__73 -T__74 -T__75 -T__76 -T__77 -T__78 -T__79 -T__80 -T__81 -T__82 -T__83 -T__84 -T__85 -T__86 -T__87 -T__88 -T__89 -T__90 -T__91 -T__92 -T__93 -T__94 -T__95 -T__96 -T__97 -T__98 -T__99 -T__100 -T__101 -T__102 -T__103 -T__104 -T__105 -T__106 -T__107 -T__108 -T__109 -T__110 -T__111 -T__112 -T__113 -T__114 -T__115 -T__116 -T__117 -T__118 -T__119 -NEWLINE -EXPONENT -NUMBER -SPECIALSET -BOOLEAN -VARIABLE -COMMENT -WS - -channel names: -DEFAULT_TOKEN_CHANNEL -HIDDEN - -mode names: -DEFAULT_MODE - -atn: -[3, 24715, 42794, 33075, 47597, 16764, 15335, 30598, 22884, 2, 129, 1086, 8, 1, 4, 2, 9, 2, 4, 3, 9, 3, 4, 4, 9, 4, 4, 5, 9, 5, 4, 6, 9, 6, 4, 7, 9, 7, 4, 8, 9, 8, 4, 9, 9, 9, 4, 10, 9, 10, 4, 11, 9, 11, 4, 12, 9, 12, 4, 13, 9, 13, 4, 14, 9, 14, 4, 15, 9, 15, 4, 16, 9, 16, 4, 17, 9, 17, 4, 18, 9, 18, 4, 19, 9, 19, 4, 20, 9, 20, 4, 21, 9, 21, 4, 22, 9, 22, 4, 23, 9, 23, 4, 24, 9, 24, 4, 25, 9, 25, 4, 26, 9, 26, 4, 27, 9, 27, 4, 28, 9, 28, 4, 29, 9, 29, 4, 30, 9, 30, 4, 31, 9, 31, 4, 32, 9, 32, 4, 33, 9, 33, 4, 34, 9, 34, 4, 35, 9, 35, 4, 36, 9, 36, 4, 37, 9, 37, 4, 38, 9, 38, 4, 39, 9, 39, 4, 40, 9, 40, 4, 41, 9, 41, 4, 42, 9, 42, 4, 43, 9, 43, 4, 44, 9, 44, 4, 45, 9, 45, 4, 46, 9, 46, 4, 47, 9, 47, 4, 48, 9, 48, 4, 49, 9, 49, 4, 50, 9, 50, 4, 51, 9, 51, 4, 52, 9, 52, 4, 53, 9, 53, 4, 54, 9, 54, 4, 55, 9, 55, 4, 56, 9, 56, 4, 57, 9, 57, 4, 58, 9, 58, 4, 59, 9, 59, 4, 60, 9, 60, 4, 61, 9, 61, 4, 62, 9, 62, 4, 63, 9, 63, 4, 64, 9, 64, 4, 65, 9, 65, 4, 66, 9, 66, 4, 67, 9, 67, 4, 68, 9, 68, 4, 69, 9, 69, 4, 70, 9, 70, 4, 71, 9, 71, 4, 72, 9, 72, 4, 73, 9, 73, 4, 74, 9, 74, 4, 75, 9, 75, 4, 76, 9, 76, 4, 77, 9, 77, 4, 78, 9, 78, 4, 79, 9, 79, 4, 80, 9, 80, 4, 81, 9, 81, 4, 82, 9, 82, 4, 83, 9, 83, 4, 84, 9, 84, 4, 85, 9, 85, 4, 86, 9, 86, 4, 87, 9, 87, 4, 88, 9, 88, 4, 89, 9, 89, 4, 90, 9, 90, 4, 91, 9, 91, 4, 92, 9, 92, 4, 93, 9, 93, 4, 94, 9, 94, 4, 95, 9, 95, 4, 96, 9, 96, 4, 97, 9, 97, 4, 98, 9, 98, 4, 99, 9, 99, 4, 100, 9, 100, 4, 101, 9, 101, 4, 102, 9, 102, 4, 103, 9, 103, 4, 104, 9, 104, 4, 105, 9, 105, 4, 106, 9, 106, 4, 107, 9, 107, 4, 108, 9, 108, 4, 109, 9, 109, 4, 110, 9, 110, 4, 111, 9, 111, 4, 112, 9, 112, 4, 113, 9, 113, 4, 114, 9, 114, 4, 115, 9, 115, 4, 116, 9, 116, 4, 117, 9, 117, 4, 118, 9, 118, 4, 119, 9, 119, 4, 120, 9, 120, 4, 121, 9, 121, 4, 122, 9, 122, 4, 123, 9, 123, 4, 124, 9, 124, 4, 125, 9, 125, 4, 126, 9, 126, 4, 127, 9, 127, 4, 128, 9, 128, 4, 129, 9, 129, 3, 2, 3, 2, 3, 3, 3, 3, 3, 4, 3, 4, 3, 5, 3, 5, 3, 6, 3, 6, 3, 7, 3, 7, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 8, 3, 9, 3, 9, 3, 9, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 10, 3, 11, 3, 11, 3, 11, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 12, 3, 13, 3, 13, 3, 14, 3, 14, 3, 14, 3, 15, 3, 15, 3, 15, 3, 16, 3, 16, 3, 16, 3, 17, 3, 17, 3, 18, 3, 18, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 19, 3, 20, 3, 20, 3, 21, 3, 21, 3, 21, 3, 21, 3, 22, 3, 22, 3, 22, 3, 22, 3, 23, 3, 23, 3, 24, 3, 24, 3, 24, 3, 24, 3, 25, 3, 25, 3, 25, 3, 26, 3, 26, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 27, 3, 28, 3, 28, 3, 28, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 29, 3, 30, 3, 30, 3, 31, 3, 31, 3, 32, 3, 32, 3, 33, 3, 33, 3, 33, 3, 33, 3, 34, 3, 34, 3, 34, 3, 34, 3, 35, 3, 35, 3, 35, 3, 36, 3, 36, 3, 36, 3, 37, 3, 37, 3, 38, 3, 38, 3, 38, 3, 39, 3, 39, 3, 40, 3, 40, 3, 41, 3, 41, 3, 42, 3, 42, 3, 43, 3, 43, 3, 44, 3, 44, 3, 44, 3, 44, 3, 44, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 45, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 46, 3, 47, 3, 47, 3, 47, 3, 47, 3, 47, 3, 48, 3, 48, 3, 48, 3, 48, 3, 49, 3, 49, 3, 49, 3, 49, 3, 49, 3, 50, 3, 50, 3, 50, 3, 50, 3, 50, 3, 51, 3, 51, 3, 51, 3, 51, 3, 51, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 52, 3, 53, 3, 53, 3, 53, 3, 53, 3, 53, 3, 54, 3, 54, 3, 54, 3, 54, 3, 54, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 55, 3, 56, 3, 56, 3, 56, 3, 56, 3, 56, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 57, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 58, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 59, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 60, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 61, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 62, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 63, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 64, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 65, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 66, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 67, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 68, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 69, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 70, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 71, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 72, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 73, 3, 74, 3, 74, 3, 74, 3, 74, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 75, 3, 76, 3, 76, 3, 76, 3, 76, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 77, 3, 78, 3, 78, 3, 78, 3, 78, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 79, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 80, 3, 81, 3, 81, 3, 81, 3, 81, 3, 81, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 82, 3, 83, 3, 83, 3, 83, 3, 83, 3, 83, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 84, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 85, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 86, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 87, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 88, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 89, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 90, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 91, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 92, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 93, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 94, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 95, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 96, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 97, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 98, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 100, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 101, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 102, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 103, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 104, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 105, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 106, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 107, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 108, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 109, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 110, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 111, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 112, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 113, 3, 114, 3, 114, 3, 114, 3, 114, 3, 114, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 115, 3, 116, 3, 116, 3, 116, 3, 116, 3, 116, 3, 117, 3, 117, 3, 117, 3, 117, 3, 117, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 118, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 119, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 120, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 121, 3, 122, 5, 122, 954, 10, 122, 3, 122, 6, 122, 957, 10, 122, 13, 122, 14, 122, 958, 3, 122, 3, 122, 3, 123, 3, 123, 5, 123, 965, 10, 123, 3, 123, 6, 123, 968, 10, 123, 13, 123, 14, 123, 969, 3, 124, 6, 124, 973, 10, 124, 13, 124, 14, 124, 974, 3, 124, 3, 124, 7, 124, 979, 10, 124, 12, 124, 14, 124, 982, 11, 124, 3, 124, 5, 124, 985, 10, 124, 3, 124, 5, 124, 988, 10, 124, 3, 124, 5, 124, 991, 10, 124, 3, 124, 6, 124, 994, 10, 124, 13, 124, 14, 124, 995, 3, 124, 5, 124, 999, 10, 124, 3, 124, 5, 124, 1002, 10, 124, 3, 124, 5, 124, 1005, 10, 124, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 3, 125, 5, 125, 1017, 10, 125, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 3, 126, 5, 126, 1037, 10, 126, 3, 127, 6, 127, 1040, 10, 127, 13, 127, 14, 127, 1041, 3, 127, 3, 127, 6, 127, 1046, 10, 127, 13, 127, 14, 127, 1047, 5, 127, 1050, 10, 127, 3, 128, 3, 128, 3, 128, 3, 128, 7, 128, 1056, 10, 128, 12, 128, 14, 128, 1059, 11, 128, 3, 128, 5, 128, 1062, 10, 128, 3, 128, 3, 128, 3, 128, 3, 128, 3, 128, 7, 128, 1069, 10, 128, 12, 128, 14, 128, 1072, 11, 128, 3, 128, 3, 128, 5, 128, 1076, 10, 128, 3, 128, 3, 128, 3, 129, 6, 129, 1081, 10, 129, 13, 129, 14, 129, 1082, 3, 129, 3, 129, 3, 1070, 2, 130, 3, 3, 5, 4, 7, 5, 9, 6, 11, 7, 13, 8, 15, 9, 17, 10, 19, 11, 21, 12, 23, 13, 25, 14, 27, 15, 29, 16, 31, 17, 33, 18, 35, 19, 37, 20, 39, 21, 41, 22, 43, 23, 45, 24, 47, 25, 49, 26, 51, 27, 53, 28, 55, 29, 57, 30, 59, 31, 61, 32, 63, 33, 65, 34, 67, 35, 69, 36, 71, 37, 73, 38, 75, 39, 77, 40, 79, 41, 81, 42, 83, 43, 85, 44, 87, 45, 89, 46, 91, 47, 93, 48, 95, 49, 97, 50, 99, 51, 101, 52, 103, 53, 105, 54, 107, 55, 109, 56, 111, 57, 113, 58, 115, 59, 117, 60, 119, 61, 121, 62, 123, 63, 125, 64, 127, 65, 129, 66, 131, 67, 133, 68, 135, 69, 137, 70, 139, 71, 141, 72, 143, 73, 145, 74, 147, 75, 149, 76, 151, 77, 153, 78, 155, 79, 157, 80, 159, 81, 161, 82, 163, 83, 165, 84, 167, 85, 169, 86, 171, 87, 173, 88, 175, 89, 177, 90, 179, 91, 181, 92, 183, 93, 185, 94, 187, 95, 189, 96, 191, 97, 193, 98, 195, 99, 197, 100, 199, 101, 201, 102, 203, 103, 205, 104, 207, 105, 209, 106, 211, 107, 213, 108, 215, 109, 217, 110, 219, 111, 221, 112, 223, 113, 225, 114, 227, 115, 229, 116, 231, 117, 233, 118, 235, 119, 237, 120, 239, 121, 241, 122, 243, 123, 245, 2, 247, 124, 249, 125, 251, 126, 253, 127, 255, 128, 257, 129, 3, 2, 8, 4, 2, 71, 71, 103, 103, 4, 2, 45, 45, 47, 47, 6, 2, 67, 92, 99, 124, 882, 1281, 7938, 8193, 7, 2, 50, 59, 67, 92, 99, 124, 882, 1281, 7938, 8193, 4, 2, 12, 12, 15, 15, 4, 2, 11, 11, 34, 34, 2, 1113, 2, 3, 3, 2, 2, 2, 2, 5, 3, 2, 2, 2, 2, 7, 3, 2, 2, 2, 2, 9, 3, 2, 2, 2, 2, 11, 3, 2, 2, 2, 2, 13, 3, 2, 2, 2, 2, 15, 3, 2, 2, 2, 2, 17, 3, 2, 2, 2, 2, 19, 3, 2, 2, 2, 2, 21, 3, 2, 2, 2, 2, 23, 3, 2, 2, 2, 2, 25, 3, 2, 2, 2, 2, 27, 3, 2, 2, 2, 2, 29, 3, 2, 2, 2, 2, 31, 3, 2, 2, 2, 2, 33, 3, 2, 2, 2, 2, 35, 3, 2, 2, 2, 2, 37, 3, 2, 2, 2, 2, 39, 3, 2, 2, 2, 2, 41, 3, 2, 2, 2, 2, 43, 3, 2, 2, 2, 2, 45, 3, 2, 2, 2, 2, 47, 3, 2, 2, 2, 2, 49, 3, 2, 2, 2, 2, 51, 3, 2, 2, 2, 2, 53, 3, 2, 2, 2, 2, 55, 3, 2, 2, 2, 2, 57, 3, 2, 2, 2, 2, 59, 3, 2, 2, 2, 2, 61, 3, 2, 2, 2, 2, 63, 3, 2, 2, 2, 2, 65, 3, 2, 2, 2, 2, 67, 3, 2, 2, 2, 2, 69, 3, 2, 2, 2, 2, 71, 3, 2, 2, 2, 2, 73, 3, 2, 2, 2, 2, 75, 3, 2, 2, 2, 2, 77, 3, 2, 2, 2, 2, 79, 3, 2, 2, 2, 2, 81, 3, 2, 2, 2, 2, 83, 3, 2, 2, 2, 2, 85, 3, 2, 2, 2, 2, 87, 3, 2, 2, 2, 2, 89, 3, 2, 2, 2, 2, 91, 3, 2, 2, 2, 2, 93, 3, 2, 2, 2, 2, 95, 3, 2, 2, 2, 2, 97, 3, 2, 2, 2, 2, 99, 3, 2, 2, 2, 2, 101, 3, 2, 2, 2, 2, 103, 3, 2, 2, 2, 2, 105, 3, 2, 2, 2, 2, 107, 3, 2, 2, 2, 2, 109, 3, 2, 2, 2, 2, 111, 3, 2, 2, 2, 2, 113, 3, 2, 2, 2, 2, 115, 3, 2, 2, 2, 2, 117, 3, 2, 2, 2, 2, 119, 3, 2, 2, 2, 2, 121, 3, 2, 2, 2, 2, 123, 3, 2, 2, 2, 2, 125, 3, 2, 2, 2, 2, 127, 3, 2, 2, 2, 2, 129, 3, 2, 2, 2, 2, 131, 3, 2, 2, 2, 2, 133, 3, 2, 2, 2, 2, 135, 3, 2, 2, 2, 2, 137, 3, 2, 2, 2, 2, 139, 3, 2, 2, 2, 2, 141, 3, 2, 2, 2, 2, 143, 3, 2, 2, 2, 2, 145, 3, 2, 2, 2, 2, 147, 3, 2, 2, 2, 2, 149, 3, 2, 2, 2, 2, 151, 3, 2, 2, 2, 2, 153, 3, 2, 2, 2, 2, 155, 3, 2, 2, 2, 2, 157, 3, 2, 2, 2, 2, 159, 3, 2, 2, 2, 2, 161, 3, 2, 2, 2, 2, 163, 3, 2, 2, 2, 2, 165, 3, 2, 2, 2, 2, 167, 3, 2, 2, 2, 2, 169, 3, 2, 2, 2, 2, 171, 3, 2, 2, 2, 2, 173, 3, 2, 2, 2, 2, 175, 3, 2, 2, 2, 2, 177, 3, 2, 2, 2, 2, 179, 3, 2, 2, 2, 2, 181, 3, 2, 2, 2, 2, 183, 3, 2, 2, 2, 2, 185, 3, 2, 2, 2, 2, 187, 3, 2, 2, 2, 2, 189, 3, 2, 2, 2, 2, 191, 3, 2, 2, 2, 2, 193, 3, 2, 2, 2, 2, 195, 3, 2, 2, 2, 2, 197, 3, 2, 2, 2, 2, 199, 3, 2, 2, 2, 2, 201, 3, 2, 2, 2, 2, 203, 3, 2, 2, 2, 2, 205, 3, 2, 2, 2, 2, 207, 3, 2, 2, 2, 2, 209, 3, 2, 2, 2, 2, 211, 3, 2, 2, 2, 2, 213, 3, 2, 2, 2, 2, 215, 3, 2, 2, 2, 2, 217, 3, 2, 2, 2, 2, 219, 3, 2, 2, 2, 2, 221, 3, 2, 2, 2, 2, 223, 3, 2, 2, 2, 2, 225, 3, 2, 2, 2, 2, 227, 3, 2, 2, 2, 2, 229, 3, 2, 2, 2, 2, 231, 3, 2, 2, 2, 2, 233, 3, 2, 2, 2, 2, 235, 3, 2, 2, 2, 2, 237, 3, 2, 2, 2, 2, 239, 3, 2, 2, 2, 2, 241, 3, 2, 2, 2, 2, 243, 3, 2, 2, 2, 2, 247, 3, 2, 2, 2, 2, 249, 3, 2, 2, 2, 2, 251, 3, 2, 2, 2, 2, 253, 3, 2, 2, 2, 2, 255, 3, 2, 2, 2, 2, 257, 3, 2, 2, 2, 3, 259, 3, 2, 2, 2, 5, 261, 3, 2, 2, 2, 7, 263, 3, 2, 2, 2, 9, 265, 3, 2, 2, 2, 11, 267, 3, 2, 2, 2, 13, 269, 3, 2, 2, 2, 15, 271, 3, 2, 2, 2, 17, 281, 3, 2, 2, 2, 19, 284, 3, 2, 2, 2, 21, 290, 3, 2, 2, 2, 23, 293, 3, 2, 2, 2, 25, 305, 3, 2, 2, 2, 27, 307, 3, 2, 2, 2, 29, 310, 3, 2, 2, 2, 31, 313, 3, 2, 2, 2, 33, 316, 3, 2, 2, 2, 35, 318, 3, 2, 2, 2, 37, 320, 3, 2, 2, 2, 39, 330, 3, 2, 2, 2, 41, 332, 3, 2, 2, 2, 43, 336, 3, 2, 2, 2, 45, 340, 3, 2, 2, 2, 47, 342, 3, 2, 2, 2, 49, 346, 3, 2, 2, 2, 51, 349, 3, 2, 2, 2, 53, 351, 3, 2, 2, 2, 55, 359, 3, 2, 2, 2, 57, 362, 3, 2, 2, 2, 59, 371, 3, 2, 2, 2, 61, 373, 3, 2, 2, 2, 63, 375, 3, 2, 2, 2, 65, 377, 3, 2, 2, 2, 67, 381, 3, 2, 2, 2, 69, 385, 3, 2, 2, 2, 71, 388, 3, 2, 2, 2, 73, 391, 3, 2, 2, 2, 75, 393, 3, 2, 2, 2, 77, 396, 3, 2, 2, 2, 79, 398, 3, 2, 2, 2, 81, 400, 3, 2, 2, 2, 83, 402, 3, 2, 2, 2, 85, 404, 3, 2, 2, 2, 87, 406, 3, 2, 2, 2, 89, 411, 3, 2, 2, 2, 91, 417, 3, 2, 2, 2, 93, 423, 3, 2, 2, 2, 95, 428, 3, 2, 2, 2, 97, 432, 3, 2, 2, 2, 99, 437, 3, 2, 2, 2, 101, 442, 3, 2, 2, 2, 103, 447, 3, 2, 2, 2, 105, 454, 3, 2, 2, 2, 107, 459, 3, 2, 2, 2, 109, 464, 3, 2, 2, 2, 111, 471, 3, 2, 2, 2, 113, 476, 3, 2, 2, 2, 115, 484, 3, 2, 2, 2, 117, 492, 3, 2, 2, 2, 119, 500, 3, 2, 2, 2, 121, 510, 3, 2, 2, 2, 123, 518, 3, 2, 2, 2, 125, 528, 3, 2, 2, 2, 127, 536, 3, 2, 2, 2, 129, 542, 3, 2, 2, 2, 131, 548, 3, 2, 2, 2, 133, 554, 3, 2, 2, 2, 135, 560, 3, 2, 2, 2, 137, 568, 3, 2, 2, 2, 139, 574, 3, 2, 2, 2, 141, 582, 3, 2, 2, 2, 143, 588, 3, 2, 2, 2, 145, 596, 3, 2, 2, 2, 147, 602, 3, 2, 2, 2, 149, 606, 3, 2, 2, 2, 151, 612, 3, 2, 2, 2, 153, 616, 3, 2, 2, 2, 155, 622, 3, 2, 2, 2, 157, 626, 3, 2, 2, 2, 159, 634, 3, 2, 2, 2, 161, 640, 3, 2, 2, 2, 163, 645, 3, 2, 2, 2, 165, 651, 3, 2, 2, 2, 167, 656, 3, 2, 2, 2, 169, 664, 3, 2, 2, 2, 171, 670, 3, 2, 2, 2, 173, 677, 3, 2, 2, 2, 175, 685, 3, 2, 2, 2, 177, 691, 3, 2, 2, 2, 179, 698, 3, 2, 2, 2, 181, 706, 3, 2, 2, 2, 183, 712, 3, 2, 2, 2, 185, 719, 3, 2, 2, 2, 187, 727, 3, 2, 2, 2, 189, 733, 3, 2, 2, 2, 191, 740, 3, 2, 2, 2, 193, 748, 3, 2, 2, 2, 195, 757, 3, 2, 2, 2, 197, 767, 3, 2, 2, 2, 199, 774, 3, 2, 2, 2, 201, 781, 3, 2, 2, 2, 203, 789, 3, 2, 2, 2, 205, 796, 3, 2, 2, 2, 207, 805, 3, 2, 2, 2, 209, 815, 3, 2, 2, 2, 211, 823, 3, 2, 2, 2, 213, 830, 3, 2, 2, 2, 215, 837, 3, 2, 2, 2, 217, 849, 3, 2, 2, 2, 219, 859, 3, 2, 2, 2, 221, 866, 3, 2, 2, 2, 223, 877, 3, 2, 2, 2, 225, 889, 3, 2, 2, 2, 227, 897, 3, 2, 2, 2, 229, 902, 3, 2, 2, 2, 231, 908, 3, 2, 2, 2, 233, 913, 3, 2, 2, 2, 235, 918, 3, 2, 2, 2, 237, 926, 3, 2, 2, 2, 239, 937, 3, 2, 2, 2, 241, 944, 3, 2, 2, 2, 243, 956, 3, 2, 2, 2, 245, 962, 3, 2, 2, 2, 247, 1004, 3, 2, 2, 2, 249, 1016, 3, 2, 2, 2, 251, 1036, 3, 2, 2, 2, 253, 1039, 3, 2, 2, 2, 255, 1075, 3, 2, 2, 2, 257, 1080, 3, 2, 2, 2, 259, 260, 7, 35, 2, 2, 260, 4, 3, 2, 2, 2, 261, 262, 7, 96, 2, 2, 262, 6, 3, 2, 2, 2, 263, 264, 7, 47, 2, 2, 264, 8, 3, 2, 2, 2, 265, 266, 7, 45, 2, 2, 266, 10, 3, 2, 2, 2, 267, 268, 7, 44, 2, 2, 268, 12, 3, 2, 2, 2, 269, 270, 7, 49, 2, 2, 270, 14, 3, 2, 2, 2, 271, 272, 7, 107, 2, 2, 272, 273, 7, 112, 2, 2, 273, 274, 7, 118, 2, 2, 274, 275, 7, 103, 2, 2, 275, 276, 7, 116, 2, 2, 276, 277, 7, 117, 2, 2, 277, 278, 7, 103, 2, 2, 278, 279, 7, 101, 2, 2, 279, 280, 7, 118, 2, 2, 280, 16, 3, 2, 2, 2, 281, 282, 7, 49, 2, 2, 282, 283, 7, 94, 2, 2, 283, 18, 3, 2, 2, 2, 284, 285, 7, 119, 2, 2, 285, 286, 7, 112, 2, 2, 286, 287, 7, 107, 2, 2, 287, 288, 7, 118, 2, 2, 288, 289, 7, 103, 2, 2, 289, 20, 3, 2, 2, 2, 290, 291, 7, 94, 2, 2, 291, 292, 7, 49, 2, 2, 292, 22, 3, 2, 2, 2, 293, 294, 7, 117, 2, 2, 294, 295, 7, 103, 2, 2, 295, 296, 7, 118, 2, 2, 296, 297, 7, 117, 2, 2, 297, 298, 7, 119, 2, 2, 298, 299, 7, 100, 2, 2, 299, 300, 7, 118, 2, 2, 300, 301, 7, 116, 2, 2, 301, 302, 7, 99, 2, 2, 302, 303, 7, 101, 2, 2, 303, 304, 7, 118, 2, 2, 304, 24, 3, 2, 2, 2, 305, 306, 7, 94, 2, 2, 306, 26, 3, 2, 2, 2, 307, 308, 7, 107, 2, 2, 308, 309, 7, 112, 2, 2, 309, 28, 3, 2, 2, 2, 310, 311, 7, 64, 2, 2, 311, 312, 7, 63, 2, 2, 312, 30, 3, 2, 2, 2, 313, 314, 7, 62, 2, 2, 314, 315, 7, 63, 2, 2, 315, 32, 3, 2, 2, 2, 316, 317, 7, 64, 2, 2, 317, 34, 3, 2, 2, 2, 318, 319, 7, 62, 2, 2, 319, 36, 3, 2, 2, 2, 320, 321, 7, 103, 2, 2, 321, 322, 7, 115, 2, 2, 322, 323, 7, 119, 2, 2, 323, 324, 7, 99, 2, 2, 324, 325, 7, 110, 2, 2, 325, 326, 7, 107, 2, 2, 326, 327, 7, 124, 2, 2, 327, 328, 7, 103, 2, 2, 328, 329, 7, 117, 2, 2, 329, 38, 3, 2, 2, 2, 330, 331, 7, 63, 2, 2, 331, 40, 3, 2, 2, 2, 332, 333, 7, 112, 2, 2, 333, 334, 7, 113, 2, 2, 334, 335, 7, 118, 2, 2, 335, 42, 3, 2, 2, 2, 336, 337, 7, 99, 2, 2, 337, 338, 7, 112, 2, 2, 338, 339, 7, 102, 2, 2, 339, 44, 3, 2, 2, 2, 340, 341, 7, 40, 2, 2, 341, 46, 3, 2, 2, 2, 342, 343, 7, 122, 2, 2, 343, 344, 7, 113, 2, 2, 344, 345, 7, 116, 2, 2, 345, 48, 3, 2, 2, 2, 346, 347, 7, 113, 2, 2, 347, 348, 7, 116, 2, 2, 348, 50, 3, 2, 2, 2, 349, 350, 7, 126, 2, 2, 350, 52, 3, 2, 2, 2, 351, 352, 7, 107, 2, 2, 352, 353, 7, 111, 2, 2, 353, 354, 7, 114, 2, 2, 354, 355, 7, 110, 2, 2, 355, 356, 7, 107, 2, 2, 356, 357, 7, 103, 2, 2, 357, 358, 7, 117, 2, 2, 358, 54, 3, 2, 2, 2, 359, 360, 7, 47, 2, 2, 360, 361, 7, 64, 2, 2, 361, 56, 3, 2, 2, 2, 362, 363, 7, 114, 2, 2, 363, 364, 7, 116, 2, 2, 364, 365, 7, 113, 2, 2, 365, 366, 7, 120, 2, 2, 366, 367, 7, 107, 2, 2, 367, 368, 7, 102, 2, 2, 368, 369, 7, 103, 2, 2, 369, 370, 7, 102, 2, 2, 370, 58, 3, 2, 2, 2, 371, 372, 7, 46, 2, 2, 372, 60, 3, 2, 2, 2, 373, 374, 7, 61, 2, 2, 374, 62, 3, 2, 2, 2, 375, 376, 7, 60, 2, 2, 376, 64, 3, 2, 2, 2, 377, 378, 7, 45, 2, 2, 378, 379, 7, 113, 2, 2, 379, 380, 7, 113, 2, 2, 380, 66, 3, 2, 2, 2, 381, 382, 7, 47, 2, 2, 382, 383, 7, 113, 2, 2, 383, 384, 7, 113, 2, 2, 384, 68, 3, 2, 2, 2, 385, 386, 7, 42, 2, 2, 386, 387, 7, 126, 2, 2, 387, 70, 3, 2, 2, 2, 388, 389, 7, 126, 2, 2, 389, 390, 7, 43, 2, 2, 390, 72, 3, 2, 2, 2, 391, 392, 7, 93, 2, 2, 392, 74, 3, 2, 2, 2, 393, 394, 7, 95, 2, 2, 394, 395, 7, 86, 2, 2, 395, 76, 3, 2, 2, 2, 396, 397, 7, 95, 2, 2, 397, 78, 3, 2, 2, 2, 398, 399, 7, 42, 2, 2, 399, 80, 3, 2, 2, 2, 400, 401, 7, 43, 2, 2, 401, 82, 3, 2, 2, 2, 402, 403, 7, 125, 2, 2, 403, 84, 3, 2, 2, 2, 404, 405, 7, 127, 2, 2, 405, 86, 3, 2, 2, 2, 406, 407, 7, 110, 2, 2, 407, 408, 7, 113, 2, 2, 408, 409, 7, 105, 2, 2, 409, 410, 7, 42, 2, 2, 410, 88, 3, 2, 2, 2, 411, 412, 7, 117, 2, 2, 412, 413, 7, 115, 2, 2, 413, 414, 7, 116, 2, 2, 414, 415, 7, 118, 2, 2, 415, 416, 7, 42, 2, 2, 416, 90, 3, 2, 2, 2, 417, 418, 7, 101, 2, 2, 418, 419, 7, 100, 2, 2, 419, 420, 7, 116, 2, 2, 420, 421, 7, 118, 2, 2, 421, 422, 7, 42, 2, 2, 422, 92, 3, 2, 2, 2, 423, 424, 7, 117, 2, 2, 424, 425, 7, 115, 2, 2, 425, 426, 7, 116, 2, 2, 426, 427, 7, 42, 2, 2, 427, 94, 3, 2, 2, 2, 428, 429, 7, 110, 2, 2, 429, 430, 7, 112, 2, 2, 430, 431, 7, 42, 2, 2, 431, 96, 3, 2, 2, 2, 432, 433, 7, 117, 2, 2, 433, 434, 7, 107, 2, 2, 434, 435, 7, 112, 2, 2, 435, 436, 7, 42, 2, 2, 436, 98, 3, 2, 2, 2, 437, 438, 7, 101, 2, 2, 438, 439, 7, 113, 2, 2, 439, 440, 7, 117, 2, 2, 440, 441, 7, 42, 2, 2, 441, 100, 3, 2, 2, 2, 442, 443, 7, 118, 2, 2, 443, 444, 7, 99, 2, 2, 444, 445, 7, 112, 2, 2, 445, 446, 7, 42, 2, 2, 446, 102, 3, 2, 2, 2, 447, 448, 7, 101, 2, 2, 448, 449, 7, 113, 2, 2, 449, 450, 7, 118, 2, 2, 450, 451, 7, 99, 2, 2, 451, 452, 7, 112, 2, 2, 452, 453, 7, 42, 2, 2, 453, 104, 3, 2, 2, 2, 454, 455, 7, 101, 2, 2, 455, 456, 7, 113, 2, 2, 456, 457, 7, 118, 2, 2, 457, 458, 7, 42, 2, 2, 458, 106, 3, 2, 2, 2, 459, 460, 7, 117, 2, 2, 460, 461, 7, 103, 2, 2, 461, 462, 7, 101, 2, 2, 462, 463, 7, 42, 2, 2, 463, 108, 3, 2, 2, 2, 464, 465, 7, 101, 2, 2, 465, 466, 7, 113, 2, 2, 466, 467, 7, 117, 2, 2, 467, 468, 7, 103, 2, 2, 468, 469, 7, 101, 2, 2, 469, 470, 7, 42, 2, 2, 470, 110, 3, 2, 2, 2, 471, 472, 7, 101, 2, 2, 472, 473, 7, 117, 2, 2, 473, 474, 7, 101, 2, 2, 474, 475, 7, 42, 2, 2, 475, 112, 3, 2, 2, 2, 476, 477, 7, 99, 2, 2, 477, 478, 7, 116, 2, 2, 478, 479, 7, 101, 2, 2, 479, 480, 7, 117, 2, 2, 480, 481, 7, 107, 2, 2, 481, 482, 7, 112, 2, 2, 482, 483, 7, 42, 2, 2, 483, 114, 3, 2, 2, 2, 484, 485, 7, 99, 2, 2, 485, 486, 7, 116, 2, 2, 486, 487, 7, 101, 2, 2, 487, 488, 7, 101, 2, 2, 488, 489, 7, 113, 2, 2, 489, 490, 7, 117, 2, 2, 490, 491, 7, 42, 2, 2, 491, 116, 3, 2, 2, 2, 492, 493, 7, 99, 2, 2, 493, 494, 7, 116, 2, 2, 494, 495, 7, 101, 2, 2, 495, 496, 7, 118, 2, 2, 496, 497, 7, 99, 2, 2, 497, 498, 7, 112, 2, 2, 498, 499, 7, 42, 2, 2, 499, 118, 3, 2, 2, 2, 500, 501, 7, 99, 2, 2, 501, 502, 7, 116, 2, 2, 502, 503, 7, 101, 2, 2, 503, 504, 7, 101, 2, 2, 504, 505, 7, 113, 2, 2, 505, 506, 7, 118, 2, 2, 506, 507, 7, 99, 2, 2, 507, 508, 7, 112, 2, 2, 508, 509, 7, 42, 2, 2, 509, 120, 3, 2, 2, 2, 510, 511, 7, 99, 2, 2, 511, 512, 7, 116, 2, 2, 512, 513, 7, 101, 2, 2, 513, 514, 7, 117, 2, 2, 514, 515, 7, 103, 2, 2, 515, 516, 7, 101, 2, 2, 516, 517, 7, 42, 2, 2, 517, 122, 3, 2, 2, 2, 518, 519, 7, 99, 2, 2, 519, 520, 7, 116, 2, 2, 520, 521, 7, 101, 2, 2, 521, 522, 7, 101, 2, 2, 522, 523, 7, 113, 2, 2, 523, 524, 7, 117, 2, 2, 524, 525, 7, 103, 2, 2, 525, 526, 7, 101, 2, 2, 526, 527, 7, 42, 2, 2, 527, 124, 3, 2, 2, 2, 528, 529, 7, 99, 2, 2, 529, 530, 7, 116, 2, 2, 530, 531, 7, 101, 2, 2, 531, 532, 7, 101, 2, 2, 532, 533, 7, 117, 2, 2, 533, 534, 7, 101, 2, 2, 534, 535, 7, 42, 2, 2, 535, 126, 3, 2, 2, 2, 536, 537, 7, 99, 2, 2, 537, 538, 7, 101, 2, 2, 538, 539, 7, 117, 2, 2, 539, 540, 7, 101, 2, 2, 540, 541, 7, 42, 2, 2, 541, 128, 3, 2, 2, 2, 542, 543, 7, 99, 2, 2, 543, 544, 7, 117, 2, 2, 544, 545, 7, 107, 2, 2, 545, 546, 7, 112, 2, 2, 546, 547, 7, 42, 2, 2, 547, 130, 3, 2, 2, 2, 548, 549, 7, 99, 2, 2, 549, 550, 7, 101, 2, 2, 550, 551, 7, 113, 2, 2, 551, 552, 7, 117, 2, 2, 552, 553, 7, 42, 2, 2, 553, 132, 3, 2, 2, 2, 554, 555, 7, 99, 2, 2, 555, 556, 7, 118, 2, 2, 556, 557, 7, 99, 2, 2, 557, 558, 7, 112, 2, 2, 558, 559, 7, 42, 2, 2, 559, 134, 3, 2, 2, 2, 560, 561, 7, 99, 2, 2, 561, 562, 7, 101, 2, 2, 562, 563, 7, 113, 2, 2, 563, 564, 7, 118, 2, 2, 564, 565, 7, 99, 2, 2, 565, 566, 7, 112, 2, 2, 566, 567, 7, 42, 2, 2, 567, 136, 3, 2, 2, 2, 568, 569, 7, 99, 2, 2, 569, 570, 7, 117, 2, 2, 570, 571, 7, 103, 2, 2, 571, 572, 7, 101, 2, 2, 572, 573, 7, 42, 2, 2, 573, 138, 3, 2, 2, 2, 574, 575, 7, 99, 2, 2, 575, 576, 7, 101, 2, 2, 576, 577, 7, 113, 2, 2, 577, 578, 7, 117, 2, 2, 578, 579, 7, 103, 2, 2, 579, 580, 7, 101, 2, 2, 580, 581, 7, 42, 2, 2, 581, 140, 3, 2, 2, 2, 582, 583, 7, 99, 2, 2, 583, 584, 7, 101, 2, 2, 584, 585, 7, 113, 2, 2, 585, 586, 7, 118, 2, 2, 586, 587, 7, 42, 2, 2, 587, 142, 3, 2, 2, 2, 588, 589, 7, 99, 2, 2, 589, 590, 7, 116, 2, 2, 590, 591, 7, 101, 2, 2, 591, 592, 7, 101, 2, 2, 592, 593, 7, 113, 2, 2, 593, 594, 7, 118, 2, 2, 594, 595, 7, 42, 2, 2, 595, 144, 3, 2, 2, 2, 596, 597, 7, 117, 2, 2, 597, 598, 7, 107, 2, 2, 598, 599, 7, 112, 2, 2, 599, 600, 7, 106, 2, 2, 600, 601, 7, 42, 2, 2, 601, 146, 3, 2, 2, 2, 602, 603, 7, 117, 2, 2, 603, 604, 7, 106, 2, 2, 604, 605, 7, 42, 2, 2, 605, 148, 3, 2, 2, 2, 606, 607, 7, 101, 2, 2, 607, 608, 7, 113, 2, 2, 608, 609, 7, 117, 2, 2, 609, 610, 7, 106, 2, 2, 610, 611, 7, 42, 2, 2, 611, 150, 3, 2, 2, 2, 612, 613, 7, 101, 2, 2, 613, 614, 7, 106, 2, 2, 614, 615, 7, 42, 2, 2, 615, 152, 3, 2, 2, 2, 616, 617, 7, 118, 2, 2, 617, 618, 7, 99, 2, 2, 618, 619, 7, 112, 2, 2, 619, 620, 7, 106, 2, 2, 620, 621, 7, 42, 2, 2, 621, 154, 3, 2, 2, 2, 622, 623, 7, 118, 2, 2, 623, 624, 7, 106, 2, 2, 624, 625, 7, 42, 2, 2, 625, 156, 3, 2, 2, 2, 626, 627, 7, 101, 2, 2, 627, 628, 7, 113, 2, 2, 628, 629, 7, 118, 2, 2, 629, 630, 7, 99, 2, 2, 630, 631, 7, 112, 2, 2, 631, 632, 7, 106, 2, 2, 632, 633, 7, 42, 2, 2, 633, 158, 3, 2, 2, 2, 634, 635, 7, 101, 2, 2, 635, 636, 7, 113, 2, 2, 636, 637, 7, 118, 2, 2, 637, 638, 7, 106, 2, 2, 638, 639, 7, 42, 2, 2, 639, 160, 3, 2, 2, 2, 640, 641, 7, 101, 2, 2, 641, 642, 7, 118, 2, 2, 642, 643, 7, 106, 2, 2, 643, 644, 7, 42, 2, 2, 644, 162, 3, 2, 2, 2, 645, 646, 7, 117, 2, 2, 646, 647, 7, 103, 2, 2, 647, 648, 7, 101, 2, 2, 648, 649, 7, 106, 2, 2, 649, 650, 7, 42, 2, 2, 650, 164, 3, 2, 2, 2, 651, 652, 7, 117, 2, 2, 652, 653, 7, 101, 2, 2, 653, 654, 7, 106, 2, 2, 654, 655, 7, 42, 2, 2, 655, 166, 3, 2, 2, 2, 656, 657, 7, 101, 2, 2, 657, 658, 7, 113, 2, 2, 658, 659, 7, 117, 2, 2, 659, 660, 7, 103, 2, 2, 660, 661, 7, 101, 2, 2, 661, 662, 7, 106, 2, 2, 662, 663, 7, 42, 2, 2, 663, 168, 3, 2, 2, 2, 664, 665, 7, 101, 2, 2, 665, 666, 7, 117, 2, 2, 666, 667, 7, 101, 2, 2, 667, 668, 7, 106, 2, 2, 668, 669, 7, 42, 2, 2, 669, 170, 3, 2, 2, 2, 670, 671, 7, 99, 2, 2, 671, 672, 7, 117, 2, 2, 672, 673, 7, 107, 2, 2, 673, 674, 7, 112, 2, 2, 674, 675, 7, 106, 2, 2, 675, 676, 7, 42, 2, 2, 676, 172, 3, 2, 2, 2, 677, 678, 7, 99, 2, 2, 678, 679, 7, 116, 2, 2, 679, 680, 7, 117, 2, 2, 680, 681, 7, 107, 2, 2, 681, 682, 7, 112, 2, 2, 682, 683, 7, 106, 2, 2, 683, 684, 7, 42, 2, 2, 684, 174, 3, 2, 2, 2, 685, 686, 7, 99, 2, 2, 686, 687, 7, 116, 2, 2, 687, 688, 7, 117, 2, 2, 688, 689, 7, 106, 2, 2, 689, 690, 7, 42, 2, 2, 690, 176, 3, 2, 2, 2, 691, 692, 7, 99, 2, 2, 692, 693, 7, 101, 2, 2, 693, 694, 7, 113, 2, 2, 694, 695, 7, 117, 2, 2, 695, 696, 7, 106, 2, 2, 696, 697, 7, 42, 2, 2, 697, 178, 3, 2, 2, 2, 698, 699, 7, 99, 2, 2, 699, 700, 7, 116, 2, 2, 700, 701, 7, 101, 2, 2, 701, 702, 7, 113, 2, 2, 702, 703, 7, 117, 2, 2, 703, 704, 7, 106, 2, 2, 704, 705, 7, 42, 2, 2, 705, 180, 3, 2, 2, 2, 706, 707, 7, 99, 2, 2, 707, 708, 7, 116, 2, 2, 708, 709, 7, 101, 2, 2, 709, 710, 7, 106, 2, 2, 710, 711, 7, 42, 2, 2, 711, 182, 3, 2, 2, 2, 712, 713, 7, 99, 2, 2, 713, 714, 7, 118, 2, 2, 714, 715, 7, 99, 2, 2, 715, 716, 7, 112, 2, 2, 716, 717, 7, 106, 2, 2, 717, 718, 7, 42, 2, 2, 718, 184, 3, 2, 2, 2, 719, 720, 7, 99, 2, 2, 720, 721, 7, 116, 2, 2, 721, 722, 7, 118, 2, 2, 722, 723, 7, 99, 2, 2, 723, 724, 7, 112, 2, 2, 724, 725, 7, 106, 2, 2, 725, 726, 7, 42, 2, 2, 726, 186, 3, 2, 2, 2, 727, 728, 7, 99, 2, 2, 728, 729, 7, 116, 2, 2, 729, 730, 7, 118, 2, 2, 730, 731, 7, 106, 2, 2, 731, 732, 7, 42, 2, 2, 732, 188, 3, 2, 2, 2, 733, 734, 7, 99, 2, 2, 734, 735, 7, 101, 2, 2, 735, 736, 7, 113, 2, 2, 736, 737, 7, 118, 2, 2, 737, 738, 7, 106, 2, 2, 738, 739, 7, 42, 2, 2, 739, 190, 3, 2, 2, 2, 740, 741, 7, 99, 2, 2, 741, 742, 7, 116, 2, 2, 742, 743, 7, 101, 2, 2, 743, 744, 7, 113, 2, 2, 744, 745, 7, 118, 2, 2, 745, 746, 7, 106, 2, 2, 746, 747, 7, 42, 2, 2, 747, 192, 3, 2, 2, 2, 748, 749, 7, 99, 2, 2, 749, 750, 7, 101, 2, 2, 750, 751, 7, 113, 2, 2, 751, 752, 7, 118, 2, 2, 752, 753, 7, 99, 2, 2, 753, 754, 7, 112, 2, 2, 754, 755, 7, 106, 2, 2, 755, 756, 7, 42, 2, 2, 756, 194, 3, 2, 2, 2, 757, 758, 7, 99, 2, 2, 758, 759, 7, 116, 2, 2, 759, 760, 7, 101, 2, 2, 760, 761, 7, 113, 2, 2, 761, 762, 7, 118, 2, 2, 762, 763, 7, 99, 2, 2, 763, 764, 7, 112, 2, 2, 764, 765, 7, 106, 2, 2, 765, 766, 7, 42, 2, 2, 766, 196, 3, 2, 2, 2, 767, 768, 7, 99, 2, 2, 768, 769, 7, 116, 2, 2, 769, 770, 7, 101, 2, 2, 770, 771, 7, 118, 2, 2, 771, 772, 7, 106, 2, 2, 772, 773, 7, 42, 2, 2, 773, 198, 3, 2, 2, 2, 774, 775, 7, 99, 2, 2, 775, 776, 7, 117, 2, 2, 776, 777, 7, 103, 2, 2, 777, 778, 7, 101, 2, 2, 778, 779, 7, 106, 2, 2, 779, 780, 7, 42, 2, 2, 780, 200, 3, 2, 2, 2, 781, 782, 7, 99, 2, 2, 782, 783, 7, 116, 2, 2, 783, 784, 7, 117, 2, 2, 784, 785, 7, 103, 2, 2, 785, 786, 7, 101, 2, 2, 786, 787, 7, 106, 2, 2, 787, 788, 7, 42, 2, 2, 788, 202, 3, 2, 2, 2, 789, 790, 7, 99, 2, 2, 790, 791, 7, 116, 2, 2, 791, 792, 7, 117, 2, 2, 792, 793, 7, 101, 2, 2, 793, 794, 7, 106, 2, 2, 794, 795, 7, 42, 2, 2, 795, 204, 3, 2, 2, 2, 796, 797, 7, 99, 2, 2, 797, 798, 7, 101, 2, 2, 798, 799, 7, 113, 2, 2, 799, 800, 7, 117, 2, 2, 800, 801, 7, 103, 2, 2, 801, 802, 7, 101, 2, 2, 802, 803, 7, 106, 2, 2, 803, 804, 7, 42, 2, 2, 804, 206, 3, 2, 2, 2, 805, 806, 7, 99, 2, 2, 806, 807, 7, 116, 2, 2, 807, 808, 7, 101, 2, 2, 808, 809, 7, 113, 2, 2, 809, 810, 7, 117, 2, 2, 810, 811, 7, 103, 2, 2, 811, 812, 7, 101, 2, 2, 812, 813, 7, 106, 2, 2, 813, 814, 7, 42, 2, 2, 814, 208, 3, 2, 2, 2, 815, 816, 7, 99, 2, 2, 816, 817, 7, 116, 2, 2, 817, 818, 7, 101, 2, 2, 818, 819, 7, 117, 2, 2, 819, 820, 7, 101, 2, 2, 820, 821, 7, 106, 2, 2, 821, 822, 7, 42, 2, 2, 822, 210, 3, 2, 2, 2, 823, 824, 7, 99, 2, 2, 824, 825, 7, 101, 2, 2, 825, 826, 7, 117, 2, 2, 826, 827, 7, 101, 2, 2, 827, 828, 7, 106, 2, 2, 828, 829, 7, 42, 2, 2, 829, 212, 3, 2, 2, 2, 830, 831, 7, 105, 2, 2, 831, 832, 7, 99, 2, 2, 832, 833, 7, 111, 2, 2, 833, 834, 7, 111, 2, 2, 834, 835, 7, 99, 2, 2, 835, 836, 7, 42, 2, 2, 836, 214, 3, 2, 2, 2, 837, 838, 7, 102, 2, 2, 838, 839, 7, 103, 2, 2, 839, 840, 7, 116, 2, 2, 840, 841, 7, 107, 2, 2, 841, 842, 7, 120, 2, 2, 842, 843, 7, 99, 2, 2, 843, 844, 7, 118, 2, 2, 844, 845, 7, 107, 2, 2, 845, 846, 7, 120, 2, 2, 846, 847, 7, 103, 2, 2, 847, 848, 7, 42, 2, 2, 848, 216, 3, 2, 2, 2, 849, 850, 7, 107, 2, 2, 850, 851, 7, 112, 2, 2, 851, 852, 7, 118, 2, 2, 852, 853, 7, 103, 2, 2, 853, 854, 7, 105, 2, 2, 854, 855, 7, 116, 2, 2, 855, 856, 7, 99, 2, 2, 856, 857, 7, 110, 2, 2, 857, 858, 7, 42, 2, 2, 858, 218, 3, 2, 2, 2, 859, 860, 7, 110, 2, 2, 860, 861, 7, 107, 2, 2, 861, 862, 7, 111, 2, 2, 862, 863, 7, 107, 2, 2, 863, 864, 7, 118, 2, 2, 864, 865, 7, 42, 2, 2, 865, 220, 3, 2, 2, 2, 866, 867, 7, 110, 2, 2, 867, 868, 7, 107, 2, 2, 868, 869, 7, 111, 2, 2, 869, 870, 7, 107, 2, 2, 870, 871, 7, 118, 2, 2, 871, 872, 7, 110, 2, 2, 872, 873, 7, 103, 2, 2, 873, 874, 7, 104, 2, 2, 874, 875, 7, 118, 2, 2, 875, 876, 7, 42, 2, 2, 876, 222, 3, 2, 2, 2, 877, 878, 7, 110, 2, 2, 878, 879, 7, 107, 2, 2, 879, 880, 7, 111, 2, 2, 880, 881, 7, 107, 2, 2, 881, 882, 7, 118, 2, 2, 882, 883, 7, 116, 2, 2, 883, 884, 7, 107, 2, 2, 884, 885, 7, 105, 2, 2, 885, 886, 7, 106, 2, 2, 886, 887, 7, 118, 2, 2, 887, 888, 7, 42, 2, 2, 888, 224, 3, 2, 2, 2, 889, 890, 7, 117, 2, 2, 890, 891, 7, 107, 2, 2, 891, 892, 7, 105, 2, 2, 892, 893, 7, 112, 2, 2, 893, 894, 7, 119, 2, 2, 894, 895, 7, 111, 2, 2, 895, 896, 7, 42, 2, 2, 896, 226, 3, 2, 2, 2, 897, 898, 7, 117, 2, 2, 898, 899, 7, 105, 2, 2, 899, 900, 7, 112, 2, 2, 900, 901, 7, 42, 2, 2, 901, 228, 3, 2, 2, 2, 902, 903, 7, 117, 2, 2, 903, 904, 7, 107, 2, 2, 904, 905, 7, 105, 2, 2, 905, 906, 7, 112, 2, 2, 906, 907, 7, 42, 2, 2, 907, 230, 3, 2, 2, 2, 908, 909, 7, 99, 2, 2, 909, 910, 7, 100, 2, 2, 910, 911, 7, 117, 2, 2, 911, 912, 7, 42, 2, 2, 912, 232, 3, 2, 2, 2, 913, 914, 7, 114, 2, 2, 914, 915, 7, 106, 2, 2, 915, 916, 7, 107, 2, 2, 916, 917, 7, 42, 2, 2, 917, 234, 3, 2, 2, 2, 918, 919, 7, 102, 2, 2, 919, 920, 7, 113, 2, 2, 920, 921, 7, 111, 2, 2, 921, 922, 7, 99, 2, 2, 922, 923, 7, 107, 2, 2, 923, 924, 7, 112, 2, 2, 924, 925, 7, 42, 2, 2, 925, 236, 3, 2, 2, 2, 926, 927, 7, 114, 2, 2, 927, 928, 7, 107, 2, 2, 928, 929, 7, 103, 2, 2, 929, 930, 7, 101, 2, 2, 930, 931, 7, 103, 2, 2, 931, 932, 7, 121, 2, 2, 932, 933, 7, 107, 2, 2, 933, 934, 7, 117, 2, 2, 934, 935, 7, 103, 2, 2, 935, 936, 7, 42, 2, 2, 936, 238, 3, 2, 2, 2, 937, 938, 7, 99, 2, 2, 938, 939, 7, 114, 2, 2, 939, 940, 7, 114, 2, 2, 940, 941, 7, 110, 2, 2, 941, 942, 7, 123, 2, 2, 942, 943, 7, 42, 2, 2, 943, 240, 3, 2, 2, 2, 944, 945, 7, 110, 2, 2, 945, 946, 7, 99, 2, 2, 946, 947, 7, 111, 2, 2, 947, 948, 7, 100, 2, 2, 948, 949, 7, 102, 2, 2, 949, 950, 7, 99, 2, 2, 950, 951, 7, 42, 2, 2, 951, 242, 3, 2, 2, 2, 952, 954, 7, 15, 2, 2, 953, 952, 3, 2, 2, 2, 953, 954, 3, 2, 2, 2, 954, 955, 3, 2, 2, 2, 955, 957, 7, 12, 2, 2, 956, 953, 3, 2, 2, 2, 957, 958, 3, 2, 2, 2, 958, 956, 3, 2, 2, 2, 958, 959, 3, 2, 2, 2, 959, 960, 3, 2, 2, 2, 960, 961, 8, 122, 2, 2, 961, 244, 3, 2, 2, 2, 962, 964, 9, 2, 2, 2, 963, 965, 9, 3, 2, 2, 964, 963, 3, 2, 2, 2, 964, 965, 3, 2, 2, 2, 965, 967, 3, 2, 2, 2, 966, 968, 4, 50, 59, 2, 967, 966, 3, 2, 2, 2, 968, 969, 3, 2, 2, 2, 969, 967, 3, 2, 2, 2, 969, 970, 3, 2, 2, 2, 970, 246, 3, 2, 2, 2, 971, 973, 4, 50, 59, 2, 972, 971, 3, 2, 2, 2, 973, 974, 3, 2, 2, 2, 974, 972, 3, 2, 2, 2, 974, 975, 3, 2, 2, 2, 975, 976, 3, 2, 2, 2, 976, 980, 7, 48, 2, 2, 977, 979, 4, 50, 59, 2, 978, 977, 3, 2, 2, 2, 979, 982, 3, 2, 2, 2, 980, 978, 3, 2, 2, 2, 980, 981, 3, 2, 2, 2, 981, 984, 3, 2, 2, 2, 982, 980, 3, 2, 2, 2, 983, 985, 5, 245, 123, 2, 984, 983, 3, 2, 2, 2, 984, 985, 3, 2, 2, 2, 985, 987, 3, 2, 2, 2, 986, 988, 7, 107, 2, 2, 987, 986, 3, 2, 2, 2, 987, 988, 3, 2, 2, 2, 988, 1005, 3, 2, 2, 2, 989, 991, 7, 48, 2, 2, 990, 989, 3, 2, 2, 2, 990, 991, 3, 2, 2, 2, 991, 993, 3, 2, 2, 2, 992, 994, 4, 50, 59, 2, 993, 992, 3, 2, 2, 2, 994, 995, 3, 2, 2, 2, 995, 993, 3, 2, 2, 2, 995, 996, 3, 2, 2, 2, 996, 998, 3, 2, 2, 2, 997, 999, 5, 245, 123, 2, 998, 997, 3, 2, 2, 2, 998, 999, 3, 2, 2, 2, 999, 1001, 3, 2, 2, 2, 1000, 1002, 7, 107, 2, 2, 1001, 1000, 3, 2, 2, 2, 1001, 1002, 3, 2, 2, 2, 1002, 1005, 3, 2, 2, 2, 1003, 1005, 7, 107, 2, 2, 1004, 972, 3, 2, 2, 2, 1004, 990, 3, 2, 2, 2, 1004, 1003, 3, 2, 2, 2, 1005, 248, 3, 2, 2, 2, 1006, 1007, 7, 69, 2, 2, 1007, 1017, 7, 69, 2, 2, 1008, 1009, 7, 84, 2, 2, 1009, 1017, 7, 84, 2, 2, 1010, 1011, 7, 83, 2, 2, 1011, 1017, 7, 83, 2, 2, 1012, 1013, 7, 92, 2, 2, 1013, 1017, 7, 92, 2, 2, 1014, 1015, 7, 68, 2, 2, 1015, 1017, 7, 68, 2, 2, 1016, 1006, 3, 2, 2, 2, 1016, 1008, 3, 2, 2, 2, 1016, 1010, 3, 2, 2, 2, 1016, 1012, 3, 2, 2, 2, 1016, 1014, 3, 2, 2, 2, 1017, 250, 3, 2, 2, 2, 1018, 1019, 7, 118, 2, 2, 1019, 1020, 7, 116, 2, 2, 1020, 1021, 7, 119, 2, 2, 1021, 1037, 7, 103, 2, 2, 1022, 1023, 7, 86, 2, 2, 1023, 1024, 7, 116, 2, 2, 1024, 1025, 7, 119, 2, 2, 1025, 1037, 7, 103, 2, 2, 1026, 1027, 7, 104, 2, 2, 1027, 1028, 7, 99, 2, 2, 1028, 1029, 7, 110, 2, 2, 1029, 1030, 7, 117, 2, 2, 1030, 1037, 7, 103, 2, 2, 1031, 1032, 7, 72, 2, 2, 1032, 1033, 7, 99, 2, 2, 1033, 1034, 7, 110, 2, 2, 1034, 1035, 7, 117, 2, 2, 1035, 1037, 7, 103, 2, 2, 1036, 1018, 3, 2, 2, 2, 1036, 1022, 3, 2, 2, 2, 1036, 1026, 3, 2, 2, 2, 1036, 1031, 3, 2, 2, 2, 1037, 252, 3, 2, 2, 2, 1038, 1040, 9, 4, 2, 2, 1039, 1038, 3, 2, 2, 2, 1040, 1041, 3, 2, 2, 2, 1041, 1039, 3, 2, 2, 2, 1041, 1042, 3, 2, 2, 2, 1042, 1049, 3, 2, 2, 2, 1043, 1045, 7, 97, 2, 2, 1044, 1046, 9, 5, 2, 2, 1045, 1044, 3, 2, 2, 2, 1046, 1047, 3, 2, 2, 2, 1047, 1045, 3, 2, 2, 2, 1047, 1048, 3, 2, 2, 2, 1048, 1050, 3, 2, 2, 2, 1049, 1043, 3, 2, 2, 2, 1049, 1050, 3, 2, 2, 2, 1050, 254, 3, 2, 2, 2, 1051, 1052, 7, 49, 2, 2, 1052, 1053, 7, 49, 2, 2, 1053, 1057, 3, 2, 2, 2, 1054, 1056, 10, 6, 2, 2, 1055, 1054, 3, 2, 2, 2, 1056, 1059, 3, 2, 2, 2, 1057, 1055, 3, 2, 2, 2, 1057, 1058, 3, 2, 2, 2, 1058, 1061, 3, 2, 2, 2, 1059, 1057, 3, 2, 2, 2, 1060, 1062, 7, 15, 2, 2, 1061, 1060, 3, 2, 2, 2, 1061, 1062, 3, 2, 2, 2, 1062, 1063, 3, 2, 2, 2, 1063, 1076, 7, 12, 2, 2, 1064, 1065, 7, 49, 2, 2, 1065, 1066, 7, 44, 2, 2, 1066, 1070, 3, 2, 2, 2, 1067, 1069, 11, 2, 2, 2, 1068, 1067, 3, 2, 2, 2, 1069, 1072, 3, 2, 2, 2, 1070, 1071, 3, 2, 2, 2, 1070, 1068, 3, 2, 2, 2, 1071, 1073, 3, 2, 2, 2, 1072, 1070, 3, 2, 2, 2, 1073, 1074, 7, 44, 2, 2, 1074, 1076, 7, 49, 2, 2, 1075, 1051, 3, 2, 2, 2, 1075, 1064, 3, 2, 2, 2, 1076, 1077, 3, 2, 2, 2, 1077, 1078, 8, 128, 2, 2, 1078, 256, 3, 2, 2, 2, 1079, 1081, 9, 7, 2, 2, 1080, 1079, 3, 2, 2, 2, 1081, 1082, 3, 2, 2, 2, 1082, 1080, 3, 2, 2, 2, 1082, 1083, 3, 2, 2, 2, 1083, 1084, 3, 2, 2, 2, 1084, 1085, 8, 129, 2, 2, 1085, 258, 3, 2, 2, 2, 26, 2, 953, 958, 964, 969, 974, 980, 984, 987, 990, 995, 998, 1001, 1004, 1016, 1036, 1041, 1047, 1049, 1057, 1061, 1070, 1075, 1082, 3, 8, 2, 2] \ No newline at end of file diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathLexer.tokens b/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathLexer.tokens deleted file mode 100644 index 4eb67b898..000000000 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathLexer.tokens +++ /dev/null @@ -1,247 +0,0 @@ -T__0=1 -T__1=2 -T__2=3 -T__3=4 -T__4=5 -T__5=6 -T__6=7 -T__7=8 -T__8=9 -T__9=10 -T__10=11 -T__11=12 -T__12=13 -T__13=14 -T__14=15 -T__15=16 -T__16=17 -T__17=18 -T__18=19 -T__19=20 -T__20=21 -T__21=22 -T__22=23 -T__23=24 -T__24=25 -T__25=26 -T__26=27 -T__27=28 -T__28=29 -T__29=30 -T__30=31 -T__31=32 -T__32=33 -T__33=34 -T__34=35 -T__35=36 -T__36=37 -T__37=38 -T__38=39 -T__39=40 -T__40=41 -T__41=42 -T__42=43 -T__43=44 -T__44=45 -T__45=46 -T__46=47 -T__47=48 -T__48=49 -T__49=50 -T__50=51 -T__51=52 -T__52=53 -T__53=54 -T__54=55 -T__55=56 -T__56=57 -T__57=58 -T__58=59 -T__59=60 -T__60=61 -T__61=62 -T__62=63 -T__63=64 -T__64=65 -T__65=66 -T__66=67 -T__67=68 -T__68=69 -T__69=70 -T__70=71 -T__71=72 -T__72=73 -T__73=74 -T__74=75 -T__75=76 -T__76=77 -T__77=78 -T__78=79 -T__79=80 -T__80=81 -T__81=82 -T__82=83 -T__83=84 -T__84=85 -T__85=86 -T__86=87 -T__87=88 -T__88=89 -T__89=90 -T__90=91 -T__91=92 -T__92=93 -T__93=94 -T__94=95 -T__95=96 -T__96=97 -T__97=98 -T__98=99 -T__99=100 -T__100=101 -T__101=102 -T__102=103 -T__103=104 -T__104=105 -T__105=106 -T__106=107 -T__107=108 -T__108=109 -T__109=110 -T__110=111 -T__111=112 -T__112=113 -T__113=114 -T__114=115 -T__115=116 -T__116=117 -T__117=118 -T__118=119 -T__119=120 -NEWLINE=121 -NUMBER=122 -SPECIALSET=123 -BOOLEAN=124 -VARIABLE=125 -COMMENT=126 -WS=127 -'!'=1 -'^'=2 -'-'=3 -'+'=4 -'*'=5 -'/'=6 -'intersect'=7 -'/\\'=8 -'unite'=9 -'\\/'=10 -'setsubtract'=11 -'\\'=12 -'in'=13 -'>='=14 -'<='=15 -'>'=16 -'<'=17 -'equalizes'=18 -'='=19 -'not'=20 -'and'=21 -'&'=22 -'xor'=23 -'or'=24 -'|'=25 -'implies'=26 -'->'=27 -'provided'=28 -','=29 -';'=30 -':'=31 -'+oo'=32 -'-oo'=33 -'(|'=34 -'|)'=35 -'['=36 -']T'=37 -']'=38 -'('=39 -')'=40 -'{'=41 -'}'=42 -'log('=43 -'sqrt('=44 -'cbrt('=45 -'sqr('=46 -'ln('=47 -'sin('=48 -'cos('=49 -'tan('=50 -'cotan('=51 -'cot('=52 -'sec('=53 -'cosec('=54 -'csc('=55 -'arcsin('=56 -'arccos('=57 -'arctan('=58 -'arccotan('=59 -'arcsec('=60 -'arccosec('=61 -'arccsc('=62 -'acsc('=63 -'asin('=64 -'acos('=65 -'atan('=66 -'acotan('=67 -'asec('=68 -'acosec('=69 -'acot('=70 -'arccot('=71 -'sinh('=72 -'sh('=73 -'cosh('=74 -'ch('=75 -'tanh('=76 -'th('=77 -'cotanh('=78 -'coth('=79 -'cth('=80 -'sech('=81 -'sch('=82 -'cosech('=83 -'csch('=84 -'asinh('=85 -'arsinh('=86 -'arsh('=87 -'acosh('=88 -'arcosh('=89 -'arch('=90 -'atanh('=91 -'artanh('=92 -'arth('=93 -'acoth('=94 -'arcoth('=95 -'acotanh('=96 -'arcotanh('=97 -'arcth('=98 -'asech('=99 -'arsech('=100 -'arsch('=101 -'acosech('=102 -'arcosech('=103 -'arcsch('=104 -'acsch('=105 -'gamma('=106 -'derivative('=107 -'integral('=108 -'limit('=109 -'limitleft('=110 -'limitright('=111 -'signum('=112 -'sgn('=113 -'sign('=114 -'abs('=115 -'phi('=116 -'domain('=117 -'piecewise('=118 -'apply('=119 -'lambda('=120 diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathListener.cs b/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathListener.cs deleted file mode 100644 index ff9b7900b..000000000 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathListener.cs +++ /dev/null @@ -1,294 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// ANTLR Version: 4.8 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -// Generated from ./AngouriMath.g by ANTLR 4.8 - -// Unreachable code detected -#pragma warning disable 0162 -// The variable '...' is assigned but its value is never used -#pragma warning disable 0219 -// Missing XML comment for publicly visible type or member '...' -#pragma warning disable 1591 -// Ambiguous reference in cref attribute -#pragma warning disable 419 - -namespace AngouriMath.Core.Antlr { - - using System.Linq; - using AngouriMath; - using static AngouriMath.Core.Exceptions.FunctionArgumentCountException; - using static AngouriMath.Entity.Number; - using AngouriMath.Core.Exceptions; - using static AngouriMath.Entity.Set; - using static AngouriMath.Entity; - -using Antlr4.Runtime.Misc; -using IParseTreeListener = Antlr4.Runtime.Tree.IParseTreeListener; -using IToken = Antlr4.Runtime.IToken; - -/// -/// This interface defines a complete listener for a parse tree produced by -/// . -/// -[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.8")] -[System.CLSCompliant(false)] -internal interface IAngouriMathListener : IParseTreeListener { - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterFactorial_expression([NotNull] AngouriMathParser.Factorial_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitFactorial_expression([NotNull] AngouriMathParser.Factorial_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterPower_list([NotNull] AngouriMathParser.Power_listContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitPower_list([NotNull] AngouriMathParser.Power_listContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterPower_expression([NotNull] AngouriMathParser.Power_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitPower_expression([NotNull] AngouriMathParser.Power_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterUnary_expression([NotNull] AngouriMathParser.Unary_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitUnary_expression([NotNull] AngouriMathParser.Unary_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterMult_expression([NotNull] AngouriMathParser.Mult_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitMult_expression([NotNull] AngouriMathParser.Mult_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSum_expression([NotNull] AngouriMathParser.Sum_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSum_expression([NotNull] AngouriMathParser.Sum_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSet_operator_intersection([NotNull] AngouriMathParser.Set_operator_intersectionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSet_operator_intersection([NotNull] AngouriMathParser.Set_operator_intersectionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSet_operator_union([NotNull] AngouriMathParser.Set_operator_unionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSet_operator_union([NotNull] AngouriMathParser.Set_operator_unionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterSet_operator_setsubtraction([NotNull] AngouriMathParser.Set_operator_setsubtractionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitSet_operator_setsubtraction([NotNull] AngouriMathParser.Set_operator_setsubtractionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterIn_operator([NotNull] AngouriMathParser.In_operatorContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitIn_operator([NotNull] AngouriMathParser.In_operatorContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterInequality_expression([NotNull] AngouriMathParser.Inequality_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitInequality_expression([NotNull] AngouriMathParser.Inequality_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterTerms_list([NotNull] AngouriMathParser.Terms_listContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitTerms_list([NotNull] AngouriMathParser.Terms_listContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterEquality_expression([NotNull] AngouriMathParser.Equality_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitEquality_expression([NotNull] AngouriMathParser.Equality_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterNegate_expression([NotNull] AngouriMathParser.Negate_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitNegate_expression([NotNull] AngouriMathParser.Negate_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterAnd_expression([NotNull] AngouriMathParser.And_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitAnd_expression([NotNull] AngouriMathParser.And_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterXor_expression([NotNull] AngouriMathParser.Xor_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitXor_expression([NotNull] AngouriMathParser.Xor_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterOr_expression([NotNull] AngouriMathParser.Or_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitOr_expression([NotNull] AngouriMathParser.Or_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterImplies_expression([NotNull] AngouriMathParser.Implies_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitImplies_expression([NotNull] AngouriMathParser.Implies_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterProvided_expression([NotNull] AngouriMathParser.Provided_expressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitProvided_expression([NotNull] AngouriMathParser.Provided_expressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterExpression([NotNull] AngouriMathParser.ExpressionContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitExpression([NotNull] AngouriMathParser.ExpressionContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterFunction_arguments([NotNull] AngouriMathParser.Function_argumentsContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitFunction_arguments([NotNull] AngouriMathParser.Function_argumentsContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterInterval_arguments([NotNull] AngouriMathParser.Interval_argumentsContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitInterval_arguments([NotNull] AngouriMathParser.Interval_argumentsContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterCset_arguments([NotNull] AngouriMathParser.Cset_argumentsContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitCset_arguments([NotNull] AngouriMathParser.Cset_argumentsContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterAtom([NotNull] AngouriMathParser.AtomContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitAtom([NotNull] AngouriMathParser.AtomContext context); - /// - /// Enter a parse tree produced by . - /// - /// The parse tree. - void EnterStatement([NotNull] AngouriMathParser.StatementContext context); - /// - /// Exit a parse tree produced by . - /// - /// The parse tree. - void ExitStatement([NotNull] AngouriMathParser.StatementContext context); -} -} // namespace AngouriMath.Core.Antlr diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathParser.cs b/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathParser.cs deleted file mode 100644 index 768cdb241..000000000 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/AngouriMathParser.cs +++ /dev/null @@ -1,3518 +0,0 @@ -//------------------------------------------------------------------------------ -// -// This code was generated by a tool. -// ANTLR Version: 4.8 -// -// Changes to this file may cause incorrect behavior and will be lost if -// the code is regenerated. -// -//------------------------------------------------------------------------------ - -// Generated from ./AngouriMath.g by ANTLR 4.8 - -// Unreachable code detected -#pragma warning disable 0162 -// The variable '...' is assigned but its value is never used -#pragma warning disable 0219 -// Missing XML comment for publicly visible type or member '...' -#pragma warning disable 1591 -// Ambiguous reference in cref attribute -#pragma warning disable 419 - -namespace AngouriMath.Core.Antlr { - - using System.Linq; - using AngouriMath; - using static AngouriMath.Core.Exceptions.FunctionArgumentCountException; - using static AngouriMath.Entity.Number; - using AngouriMath.Core.Exceptions; - using static AngouriMath.Entity.Set; - using static AngouriMath.Entity; - -using System; -using System.IO; -using System.Text; -using System.Diagnostics; -using System.Collections.Generic; -using Antlr4.Runtime; -using Antlr4.Runtime.Atn; -using Antlr4.Runtime.Misc; -using Antlr4.Runtime.Tree; -using DFA = Antlr4.Runtime.Dfa.DFA; - -[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.8")] -[System.CLSCompliant(false)] -internal partial class AngouriMathParser : Parser { - protected static DFA[] decisionToDFA; - protected static PredictionContextCache sharedContextCache = new PredictionContextCache(); - public const int - T__0=1, T__1=2, T__2=3, T__3=4, T__4=5, T__5=6, T__6=7, T__7=8, T__8=9, - T__9=10, T__10=11, T__11=12, T__12=13, T__13=14, T__14=15, T__15=16, T__16=17, - T__17=18, T__18=19, T__19=20, T__20=21, T__21=22, T__22=23, T__23=24, - T__24=25, T__25=26, T__26=27, T__27=28, T__28=29, T__29=30, T__30=31, - T__31=32, T__32=33, T__33=34, T__34=35, T__35=36, T__36=37, T__37=38, - T__38=39, T__39=40, T__40=41, T__41=42, T__42=43, T__43=44, T__44=45, - T__45=46, T__46=47, T__47=48, T__48=49, T__49=50, T__50=51, T__51=52, - T__52=53, T__53=54, T__54=55, T__55=56, T__56=57, T__57=58, T__58=59, - T__59=60, T__60=61, T__61=62, T__62=63, T__63=64, T__64=65, T__65=66, - T__66=67, T__67=68, T__68=69, T__69=70, T__70=71, T__71=72, T__72=73, - T__73=74, T__74=75, T__75=76, T__76=77, T__77=78, T__78=79, T__79=80, - T__80=81, T__81=82, T__82=83, T__83=84, T__84=85, T__85=86, T__86=87, - T__87=88, T__88=89, T__89=90, T__90=91, T__91=92, T__92=93, T__93=94, - T__94=95, T__95=96, T__96=97, T__97=98, T__98=99, T__99=100, T__100=101, - T__101=102, T__102=103, T__103=104, T__104=105, T__105=106, T__106=107, - T__107=108, T__108=109, T__109=110, T__110=111, T__111=112, T__112=113, - T__113=114, T__114=115, T__115=116, T__116=117, T__117=118, T__118=119, - T__119=120, NEWLINE=121, NUMBER=122, SPECIALSET=123, BOOLEAN=124, VARIABLE=125, - COMMENT=126, WS=127; - public const int - RULE_factorial_expression = 0, RULE_power_list = 1, RULE_power_expression = 2, - RULE_unary_expression = 3, RULE_mult_expression = 4, RULE_sum_expression = 5, - RULE_set_operator_intersection = 6, RULE_set_operator_union = 7, RULE_set_operator_setsubtraction = 8, - RULE_in_operator = 9, RULE_inequality_expression = 10, RULE_terms_list = 11, - RULE_equality_expression = 12, RULE_negate_expression = 13, RULE_and_expression = 14, - RULE_xor_expression = 15, RULE_or_expression = 16, RULE_implies_expression = 17, - RULE_provided_expression = 18, RULE_expression = 19, RULE_function_arguments = 20, - RULE_interval_arguments = 21, RULE_cset_arguments = 22, RULE_atom = 23, - RULE_statement = 24; - public static readonly string[] ruleNames = { - "factorial_expression", "power_list", "power_expression", "unary_expression", - "mult_expression", "sum_expression", "set_operator_intersection", "set_operator_union", - "set_operator_setsubtraction", "in_operator", "inequality_expression", - "terms_list", "equality_expression", "negate_expression", "and_expression", - "xor_expression", "or_expression", "implies_expression", "provided_expression", - "expression", "function_arguments", "interval_arguments", "cset_arguments", - "atom", "statement" - }; - - private static readonly string[] _LiteralNames = { - null, "'!'", "'^'", "'-'", "'+'", "'*'", "'/'", "'intersect'", "'/\\'", - "'unite'", "'\\/'", "'setsubtract'", "'\\'", "'in'", "'>='", "'<='", "'>'", - "'<'", "'equalizes'", "'='", "'not'", "'and'", "'&'", "'xor'", "'or'", - "'|'", "'implies'", "'->'", "'provided'", "','", "';'", "':'", "'+oo'", - "'-oo'", "'(|'", "'|)'", "'['", "']T'", "']'", "'('", "')'", "'{'", "'}'", - "'log('", "'sqrt('", "'cbrt('", "'sqr('", "'ln('", "'sin('", "'cos('", - "'tan('", "'cotan('", "'cot('", "'sec('", "'cosec('", "'csc('", "'arcsin('", - "'arccos('", "'arctan('", "'arccotan('", "'arcsec('", "'arccosec('", "'arccsc('", - "'acsc('", "'asin('", "'acos('", "'atan('", "'acotan('", "'asec('", "'acosec('", - "'acot('", "'arccot('", "'sinh('", "'sh('", "'cosh('", "'ch('", "'tanh('", - "'th('", "'cotanh('", "'coth('", "'cth('", "'sech('", "'sch('", "'cosech('", - "'csch('", "'asinh('", "'arsinh('", "'arsh('", "'acosh('", "'arcosh('", - "'arch('", "'atanh('", "'artanh('", "'arth('", "'acoth('", "'arcoth('", - "'acotanh('", "'arcotanh('", "'arcth('", "'asech('", "'arsech('", "'arsch('", - "'acosech('", "'arcosech('", "'arcsch('", "'acsch('", "'gamma('", "'derivative('", - "'integral('", "'limit('", "'limitleft('", "'limitright('", "'signum('", - "'sgn('", "'sign('", "'abs('", "'phi('", "'domain('", "'piecewise('", - "'apply('", "'lambda('" - }; - private static readonly string[] _SymbolicNames = { - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, null, null, null, null, null, null, null, null, null, null, null, - null, "NEWLINE", "NUMBER", "SPECIALSET", "BOOLEAN", "VARIABLE", "COMMENT", - "WS" - }; - public static readonly IVocabulary DefaultVocabulary = new Vocabulary(_LiteralNames, _SymbolicNames); - - [NotNull] - public override IVocabulary Vocabulary - { - get - { - return DefaultVocabulary; - } - } - - public override string GrammarFileName { get { return "AngouriMath.g"; } } - - public override string[] RuleNames { get { return ruleNames; } } - - public override string SerializedAtn { get { return new string(_serializedATN); } } - - static AngouriMathParser() { - decisionToDFA = new DFA[_ATN.NumberOfDecisions]; - for (int i = 0; i < _ATN.NumberOfDecisions; i++) { - decisionToDFA[i] = new DFA(_ATN.GetDecisionState(i), i); - } - } - - - // Nullable reference type analysis is disabled by default for generated code without '#nullable enable' - public Entity Result = null; - - public void Parse() { this.statement(); } - - public AngouriMathParser(ITokenStream input) : this(input, Console.Out, Console.Error) { } - - public AngouriMathParser(ITokenStream input, TextWriter output, TextWriter errorOutput) - : base(input, output, errorOutput) - { - Interpreter = new ParserATNSimulator(this, _ATN, decisionToDFA, sharedContextCache); - } - - internal partial class Factorial_expressionContext : ParserRuleContext { - public Entity value; - public AtomContext p; - public AtomContext atom() { - return GetRuleContext(0); - } - public Factorial_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_factorial_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterFactorial_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitFactorial_expression(this); - } - } - - [RuleVersion(0)] - public Factorial_expressionContext factorial_expression() { - Factorial_expressionContext _localctx = new Factorial_expressionContext(Context, State); - EnterRule(_localctx, 0, RULE_factorial_expression); - try { - State = 57; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,0,Context) ) { - case 1: - EnterOuterAlt(_localctx, 1); - { - State = 50; _localctx.p = atom(); - State = 51; Match(T__0); - _localctx.value = MathS.Factorial(_localctx.p.value); - } - break; - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 54; _localctx.p = atom(); - _localctx.value = _localctx.p.value; - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Power_listContext : ParserRuleContext { - public List value; - public Factorial_expressionContext _factorial_expression; - public Unary_expressionContext _unary_expression; - public Factorial_expressionContext[] factorial_expression() { - return GetRuleContexts(); - } - public Factorial_expressionContext factorial_expression(int i) { - return GetRuleContext(i); - } - public Unary_expressionContext[] unary_expression() { - return GetRuleContexts(); - } - public Unary_expressionContext unary_expression(int i) { - return GetRuleContext(i); - } - public Power_listContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_power_list; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterPower_list(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitPower_list(this); - } - } - - [RuleVersion(0)] - public Power_listContext power_list() { - Power_listContext _localctx = new Power_listContext(Context, State); - EnterRule(_localctx, 2, RULE_power_list); - _localctx.value = new(); - try { - int _alt; - State = 75; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,3,Context) ) { - case 1: - EnterOuterAlt(_localctx, 1); - { - State = 63; - ErrorHandler.Sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - State = 59; Match(T__1); - State = 60; _localctx._factorial_expression = factorial_expression(); - _localctx.value.Add(_localctx._factorial_expression.value); - } - } - break; - default: - throw new NoViableAltException(this); - } - State = 65; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,1,Context); - } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); - } - break; - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 71; - ErrorHandler.Sync(this); - _alt = 1; - do { - switch (_alt) { - case 1: - { - { - State = 67; Match(T__1); - State = 68; _localctx._unary_expression = unary_expression(); - _localctx.value.Add(_localctx._unary_expression.value); - } - } - break; - default: - throw new NoViableAltException(this); - } - State = 73; - ErrorHandler.Sync(this); - _alt = Interpreter.AdaptivePredict(TokenStream,2,Context); - } while ( _alt!=2 && _alt!=global::Antlr4.Runtime.Atn.ATN.INVALID_ALT_NUMBER ); - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Power_expressionContext : ParserRuleContext { - public Entity value; - public Factorial_expressionContext _factorial_expression; - public Power_listContext _power_list; - public Factorial_expressionContext factorial_expression() { - return GetRuleContext(0); - } - public Power_listContext power_list() { - return GetRuleContext(0); - } - public Power_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_power_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterPower_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitPower_expression(this); - } - } - - [RuleVersion(0)] - public Power_expressionContext power_expression() { - Power_expressionContext _localctx = new Power_expressionContext(Context, State); - EnterRule(_localctx, 4, RULE_power_expression); - try { - EnterOuterAlt(_localctx, 1); - { - State = 77; _localctx._factorial_expression = factorial_expression(); - _localctx.value = _localctx._factorial_expression.value; - State = 82; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,4,Context) ) { - case 1: - { - State = 79; _localctx._power_list = power_list(); - - _localctx.value = _localctx._power_list.value - .Prepend(_localctx._factorial_expression.value) - .Reverse() - .Aggregate((exp, @base) => @base.Pow(exp)); - - } - break; - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Unary_expressionContext : ParserRuleContext { - public Entity value; - public Power_expressionContext p; - public Unary_expressionContext u; - public Power_expressionContext power_expression() { - return GetRuleContext(0); - } - public Unary_expressionContext unary_expression() { - return GetRuleContext(0); - } - public Unary_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_unary_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterUnary_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitUnary_expression(this); - } - } - - [RuleVersion(0)] - public Unary_expressionContext unary_expression() { - Unary_expressionContext _localctx = new Unary_expressionContext(Context, State); - EnterRule(_localctx, 6, RULE_unary_expression); - try { - State = 107; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,7,Context) ) { - case 1: - EnterOuterAlt(_localctx, 1); - { - State = 92; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__2: - { - State = 84; Match(T__2); - State = 85; _localctx.p = power_expression(); - _localctx.value = _localctx.p.value is Number num ? -num : -_localctx.p.value; - } - break; - case T__3: - { - State = 88; Match(T__3); - State = 89; _localctx.p = power_expression(); - _localctx.value = _localctx.p.value; - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 102; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__2: - { - State = 94; Match(T__2); - State = 95; _localctx.u = unary_expression(); - _localctx.value = -_localctx.u.value; - } - break; - case T__3: - { - State = 98; Match(T__3); - State = 99; _localctx.u = unary_expression(); - _localctx.value = _localctx.u.value; - } - break; - default: - throw new NoViableAltException(this); - } - } - break; - case 3: - EnterOuterAlt(_localctx, 3); - { - State = 104; _localctx.p = power_expression(); - _localctx.value = _localctx.p.value; - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Mult_expressionContext : ParserRuleContext { - public Entity value; - public Unary_expressionContext u1; - public Unary_expressionContext u2; - public Unary_expressionContext[] unary_expression() { - return GetRuleContexts(); - } - public Unary_expressionContext unary_expression(int i) { - return GetRuleContext(i); - } - public Mult_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_mult_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterMult_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitMult_expression(this); - } - } - - [RuleVersion(0)] - public Mult_expressionContext mult_expression() { - Mult_expressionContext _localctx = new Mult_expressionContext(Context, State); - EnterRule(_localctx, 8, RULE_mult_expression); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 109; _localctx.u1 = unary_expression(); - _localctx.value = _localctx.u1.value; - State = 121; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__4 || _la==T__5) { - { - State = 119; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__4: - { - State = 111; Match(T__4); - State = 112; _localctx.u2 = unary_expression(); - _localctx.value = _localctx.value * _localctx.u2.value; - } - break; - case T__5: - { - State = 115; Match(T__5); - State = 116; _localctx.u2 = unary_expression(); - _localctx.value = _localctx.value / _localctx.u2.value; - } - break; - default: - throw new NoViableAltException(this); - } - } - State = 123; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Sum_expressionContext : ParserRuleContext { - public Entity value; - public Mult_expressionContext m1; - public Mult_expressionContext m2; - public Mult_expressionContext[] mult_expression() { - return GetRuleContexts(); - } - public Mult_expressionContext mult_expression(int i) { - return GetRuleContext(i); - } - public Sum_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_sum_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterSum_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitSum_expression(this); - } - } - - [RuleVersion(0)] - public Sum_expressionContext sum_expression() { - Sum_expressionContext _localctx = new Sum_expressionContext(Context, State); - EnterRule(_localctx, 10, RULE_sum_expression); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 124; _localctx.m1 = mult_expression(); - _localctx.value = _localctx.m1.value; - State = 136; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__2 || _la==T__3) { - { - State = 134; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__3: - { - State = 126; Match(T__3); - State = 127; _localctx.m2 = mult_expression(); - _localctx.value = _localctx.value + _localctx.m2.value; - } - break; - case T__2: - { - State = 130; Match(T__2); - State = 131; _localctx.m2 = mult_expression(); - _localctx.value = _localctx.value - _localctx.m2.value; - } - break; - default: - throw new NoViableAltException(this); - } - } - State = 138; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Set_operator_intersectionContext : ParserRuleContext { - public Entity value; - public Sum_expressionContext left; - public Sum_expressionContext right; - public Sum_expressionContext[] sum_expression() { - return GetRuleContexts(); - } - public Sum_expressionContext sum_expression(int i) { - return GetRuleContext(i); - } - public Set_operator_intersectionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_set_operator_intersection; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterSet_operator_intersection(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitSet_operator_intersection(this); - } - } - - [RuleVersion(0)] - public Set_operator_intersectionContext set_operator_intersection() { - Set_operator_intersectionContext _localctx = new Set_operator_intersectionContext(Context, State); - EnterRule(_localctx, 12, RULE_set_operator_intersection); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 139; _localctx.left = sum_expression(); - _localctx.value = _localctx.left.value; - State = 151; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__6 || _la==T__7) { - { - State = 149; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__6: - { - State = 141; Match(T__6); - State = 142; _localctx.right = sum_expression(); - _localctx.value = _localctx.value.Intersect(_localctx.right.value); - } - break; - case T__7: - { - State = 145; Match(T__7); - State = 146; _localctx.right = sum_expression(); - _localctx.value = _localctx.value.Intersect(_localctx.right.value); - } - break; - default: - throw new NoViableAltException(this); - } - } - State = 153; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Set_operator_unionContext : ParserRuleContext { - public Entity value; - public Set_operator_intersectionContext left; - public Set_operator_intersectionContext right; - public Set_operator_intersectionContext[] set_operator_intersection() { - return GetRuleContexts(); - } - public Set_operator_intersectionContext set_operator_intersection(int i) { - return GetRuleContext(i); - } - public Set_operator_unionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_set_operator_union; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterSet_operator_union(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitSet_operator_union(this); - } - } - - [RuleVersion(0)] - public Set_operator_unionContext set_operator_union() { - Set_operator_unionContext _localctx = new Set_operator_unionContext(Context, State); - EnterRule(_localctx, 14, RULE_set_operator_union); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 154; _localctx.left = set_operator_intersection(); - _localctx.value = _localctx.left.value; - State = 166; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__8 || _la==T__9) { - { - State = 164; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__8: - { - State = 156; Match(T__8); - State = 157; _localctx.right = set_operator_intersection(); - _localctx.value = _localctx.value.Unite(_localctx.right.value); - } - break; - case T__9: - { - State = 160; Match(T__9); - State = 161; _localctx.right = set_operator_intersection(); - _localctx.value = _localctx.value.Unite(_localctx.right.value); - } - break; - default: - throw new NoViableAltException(this); - } - } - State = 168; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Set_operator_setsubtractionContext : ParserRuleContext { - public Entity value; - public Set_operator_unionContext left; - public Set_operator_unionContext right; - public Set_operator_unionContext[] set_operator_union() { - return GetRuleContexts(); - } - public Set_operator_unionContext set_operator_union(int i) { - return GetRuleContext(i); - } - public Set_operator_setsubtractionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_set_operator_setsubtraction; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterSet_operator_setsubtraction(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitSet_operator_setsubtraction(this); - } - } - - [RuleVersion(0)] - public Set_operator_setsubtractionContext set_operator_setsubtraction() { - Set_operator_setsubtractionContext _localctx = new Set_operator_setsubtractionContext(Context, State); - EnterRule(_localctx, 16, RULE_set_operator_setsubtraction); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 169; _localctx.left = set_operator_union(); - _localctx.value = _localctx.left.value; - State = 181; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__10 || _la==T__11) { - { - State = 179; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__10: - { - State = 171; Match(T__10); - State = 172; _localctx.right = set_operator_union(); - _localctx.value = _localctx.value.SetSubtract(_localctx.right.value); - } - break; - case T__11: - { - State = 175; Match(T__11); - State = 176; _localctx.right = set_operator_union(); - _localctx.value = _localctx.value.SetSubtract(_localctx.right.value); - } - break; - default: - throw new NoViableAltException(this); - } - } - State = 183; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class In_operatorContext : ParserRuleContext { - public Entity value; - public Set_operator_setsubtractionContext m1; - public Set_operator_setsubtractionContext m2; - public Set_operator_setsubtractionContext[] set_operator_setsubtraction() { - return GetRuleContexts(); - } - public Set_operator_setsubtractionContext set_operator_setsubtraction(int i) { - return GetRuleContext(i); - } - public In_operatorContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_in_operator; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterIn_operator(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitIn_operator(this); - } - } - - [RuleVersion(0)] - public In_operatorContext in_operator() { - In_operatorContext _localctx = new In_operatorContext(Context, State); - EnterRule(_localctx, 18, RULE_in_operator); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 184; _localctx.m1 = set_operator_setsubtraction(); - _localctx.value = _localctx.m1.value; - State = 192; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__12) { - { - { - State = 186; Match(T__12); - State = 187; _localctx.m2 = set_operator_setsubtraction(); - _localctx.value = _localctx.value.In(_localctx.m2.value); - } - } - State = 194; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Inequality_expressionContext : ParserRuleContext { - public Entity value; - public In_operatorContext m1; - public In_operatorContext m2; - public In_operatorContext[] in_operator() { - return GetRuleContexts(); - } - public In_operatorContext in_operator(int i) { - return GetRuleContext(i); - } - public Inequality_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_inequality_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterInequality_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitInequality_expression(this); - } - } - - [RuleVersion(0)] - public Inequality_expressionContext inequality_expression() { - Inequality_expressionContext _localctx = new Inequality_expressionContext(Context, State); - EnterRule(_localctx, 20, RULE_inequality_expression); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 195; _localctx.m1 = in_operator(); - _localctx.value = _localctx.m1.value; - State = 219; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__13) | (1L << T__14) | (1L << T__15) | (1L << T__16) | (1L << T__17))) != 0)) { - { - State = 217; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__13: - { - State = 197; Match(T__13); - State = 198; _localctx.m2 = in_operator(); - _localctx.value = _localctx.value >= _localctx.m2.value; - } - break; - case T__14: - { - State = 201; Match(T__14); - State = 202; _localctx.m2 = in_operator(); - _localctx.value = _localctx.value <= _localctx.m2.value; - } - break; - case T__15: - { - State = 205; Match(T__15); - State = 206; _localctx.m2 = in_operator(); - _localctx.value = _localctx.value > _localctx.m2.value; - } - break; - case T__16: - { - State = 209; Match(T__16); - State = 210; _localctx.m2 = in_operator(); - _localctx.value = _localctx.value < _localctx.m2.value; - } - break; - case T__17: - { - State = 213; Match(T__17); - State = 214; _localctx.m2 = in_operator(); - _localctx.value = MathS.Equality(_localctx.value, _localctx.m2.value); - } - break; - default: - throw new NoViableAltException(this); - } - } - State = 221; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Terms_listContext : ParserRuleContext { - public List terms; - public Inequality_expressionContext term; - public Inequality_expressionContext[] inequality_expression() { - return GetRuleContexts(); - } - public Inequality_expressionContext inequality_expression(int i) { - return GetRuleContext(i); - } - public Terms_listContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_terms_list; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterTerms_list(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitTerms_list(this); - } - } - - [RuleVersion(0)] - public Terms_listContext terms_list() { - Terms_listContext _localctx = new Terms_listContext(Context, State); - EnterRule(_localctx, 22, RULE_terms_list); - _localctx.terms = new(); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 226; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - do { - { - { - State = 222; Match(T__18); - State = 223; _localctx.term = inequality_expression(); - _localctx.terms.Add(_localctx.term.value); - } - } - State = 228; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } while ( _la==T__18 ); - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Equality_expressionContext : ParserRuleContext { - public Entity value; - public Inequality_expressionContext expr; - public Terms_listContext _terms_list; - public Inequality_expressionContext inequality_expression() { - return GetRuleContext(0); - } - public Terms_listContext terms_list() { - return GetRuleContext(0); - } - public Equality_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_equality_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterEquality_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitEquality_expression(this); - } - } - - [RuleVersion(0)] - public Equality_expressionContext equality_expression() { - Equality_expressionContext _localctx = new Equality_expressionContext(Context, State); - EnterRule(_localctx, 24, RULE_equality_expression); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 230; _localctx.expr = inequality_expression(); - _localctx.value = _localctx.expr.value; - State = 235; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if (_la==T__18) { - { - State = 232; _localctx._terms_list = terms_list(); - - var list = _localctx._terms_list.terms.Prepend(_localctx.value).ToArray(); - List eqTerms = new(); - for (int i = 0; i < list.Length - 1; i++) - eqTerms.Add(list[i].Equalizes(list[i + 1])); - _localctx.value = eqTerms.Aggregate((eq1, eq2) => eq1 & eq2); - - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Negate_expressionContext : ParserRuleContext { - public Entity value; - public Equality_expressionContext op; - public Negate_expressionContext opn; - public Equality_expressionContext equality_expression() { - return GetRuleContext(0); - } - public Negate_expressionContext negate_expression() { - return GetRuleContext(0); - } - public Negate_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_negate_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterNegate_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitNegate_expression(this); - } - } - - [RuleVersion(0)] - public Negate_expressionContext negate_expression() { - Negate_expressionContext _localctx = new Negate_expressionContext(Context, State); - EnterRule(_localctx, 26, RULE_negate_expression); - try { - State = 248; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,23,Context) ) { - case 1: - EnterOuterAlt(_localctx, 1); - { - State = 237; Match(T__19); - State = 238; _localctx.op = equality_expression(); - _localctx.value = !_localctx.op.value; - } - break; - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 241; Match(T__19); - State = 242; _localctx.opn = negate_expression(); - _localctx.value = !_localctx.opn.value; - } - break; - case 3: - EnterOuterAlt(_localctx, 3); - { - State = 245; _localctx.op = equality_expression(); - _localctx.value = _localctx.op.value; - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class And_expressionContext : ParserRuleContext { - public Entity value; - public Negate_expressionContext m1; - public Negate_expressionContext m2; - public Negate_expressionContext[] negate_expression() { - return GetRuleContexts(); - } - public Negate_expressionContext negate_expression(int i) { - return GetRuleContext(i); - } - public And_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_and_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterAnd_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitAnd_expression(this); - } - } - - [RuleVersion(0)] - public And_expressionContext and_expression() { - And_expressionContext _localctx = new And_expressionContext(Context, State); - EnterRule(_localctx, 28, RULE_and_expression); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 250; _localctx.m1 = negate_expression(); - _localctx.value = _localctx.m1.value; - State = 262; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__20 || _la==T__21) { - { - State = 260; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__20: - { - State = 252; Match(T__20); - State = 253; _localctx.m2 = negate_expression(); - _localctx.value = _localctx.value & _localctx.m2.value; - } - break; - case T__21: - { - State = 256; Match(T__21); - State = 257; _localctx.m2 = negate_expression(); - _localctx.value = _localctx.value & _localctx.m2.value; - } - break; - default: - throw new NoViableAltException(this); - } - } - State = 264; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Xor_expressionContext : ParserRuleContext { - public Entity value; - public And_expressionContext m1; - public And_expressionContext m2; - public And_expressionContext[] and_expression() { - return GetRuleContexts(); - } - public And_expressionContext and_expression(int i) { - return GetRuleContext(i); - } - public Xor_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_xor_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterXor_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitXor_expression(this); - } - } - - [RuleVersion(0)] - public Xor_expressionContext xor_expression() { - Xor_expressionContext _localctx = new Xor_expressionContext(Context, State); - EnterRule(_localctx, 30, RULE_xor_expression); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 265; _localctx.m1 = and_expression(); - _localctx.value = _localctx.m1.value; - State = 273; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__22) { - { - { - State = 267; Match(T__22); - State = 268; _localctx.m2 = and_expression(); - _localctx.value = _localctx.value ^ _localctx.m2.value; - } - } - State = 275; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Or_expressionContext : ParserRuleContext { - public Entity value; - public Xor_expressionContext m1; - public Xor_expressionContext m2; - public Xor_expressionContext[] xor_expression() { - return GetRuleContexts(); - } - public Xor_expressionContext xor_expression(int i) { - return GetRuleContext(i); - } - public Or_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_or_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterOr_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitOr_expression(this); - } - } - - [RuleVersion(0)] - public Or_expressionContext or_expression() { - Or_expressionContext _localctx = new Or_expressionContext(Context, State); - EnterRule(_localctx, 32, RULE_or_expression); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 276; _localctx.m1 = xor_expression(); - _localctx.value = _localctx.m1.value; - State = 288; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__23 || _la==T__24) { - { - State = 286; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__23: - { - State = 278; Match(T__23); - State = 279; _localctx.m2 = xor_expression(); - _localctx.value = _localctx.value | _localctx.m2.value; - } - break; - case T__24: - { - State = 282; Match(T__24); - State = 283; _localctx.m2 = xor_expression(); - _localctx.value = _localctx.value | _localctx.m2.value; - } - break; - default: - throw new NoViableAltException(this); - } - } - State = 290; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Implies_expressionContext : ParserRuleContext { - public Entity value; - public Or_expressionContext m1; - public Or_expressionContext m2; - public Or_expressionContext[] or_expression() { - return GetRuleContexts(); - } - public Or_expressionContext or_expression(int i) { - return GetRuleContext(i); - } - public Implies_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_implies_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterImplies_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitImplies_expression(this); - } - } - - [RuleVersion(0)] - public Implies_expressionContext implies_expression() { - Implies_expressionContext _localctx = new Implies_expressionContext(Context, State); - EnterRule(_localctx, 34, RULE_implies_expression); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 291; _localctx.m1 = or_expression(); - _localctx.value = _localctx.m1.value; - State = 303; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__25 || _la==T__26) { - { - State = 301; - ErrorHandler.Sync(this); - switch (TokenStream.LA(1)) { - case T__25: - { - State = 293; Match(T__25); - State = 294; _localctx.m2 = or_expression(); - _localctx.value = _localctx.value.Implies(_localctx.m2.value); - } - break; - case T__26: - { - State = 297; Match(T__26); - State = 298; _localctx.m2 = or_expression(); - _localctx.value = _localctx.value.Implies(_localctx.m2.value); - } - break; - default: - throw new NoViableAltException(this); - } - } - State = 305; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Provided_expressionContext : ParserRuleContext { - public Entity value; - public Implies_expressionContext expr; - public Implies_expressionContext pred; - public Implies_expressionContext[] implies_expression() { - return GetRuleContexts(); - } - public Implies_expressionContext implies_expression(int i) { - return GetRuleContext(i); - } - public Provided_expressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_provided_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterProvided_expression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitProvided_expression(this); - } - } - - [RuleVersion(0)] - public Provided_expressionContext provided_expression() { - Provided_expressionContext _localctx = new Provided_expressionContext(Context, State); - EnterRule(_localctx, 36, RULE_provided_expression); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 306; _localctx.expr = implies_expression(); - _localctx.value = _localctx.expr.value; - State = 314; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__27) { - { - { - State = 308; Match(T__27); - State = 309; _localctx.pred = implies_expression(); - _localctx.value = _localctx.value.Provided(_localctx.pred.value); - } - } - State = 316; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class ExpressionContext : ParserRuleContext { - public Entity value; - public Provided_expressionContext s; - public Provided_expressionContext provided_expression() { - return GetRuleContext(0); - } - public ExpressionContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_expression; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterExpression(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitExpression(this); - } - } - - [RuleVersion(0)] - public ExpressionContext expression() { - ExpressionContext _localctx = new ExpressionContext(Context, State); - EnterRule(_localctx, 38, RULE_expression); - try { - EnterOuterAlt(_localctx, 1); - { - State = 317; _localctx.s = provided_expression(); - _localctx.value = _localctx.s.value; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Function_argumentsContext : ParserRuleContext { - public List list; - public ExpressionContext e; - public ExpressionContext[] expression() { - return GetRuleContexts(); - } - public ExpressionContext expression(int i) { - return GetRuleContext(i); - } - public Function_argumentsContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_function_arguments; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterFunction_arguments(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitFunction_arguments(this); - } - } - - [RuleVersion(0)] - public Function_argumentsContext function_arguments() { - Function_argumentsContext _localctx = new Function_argumentsContext(Context, State); - EnterRule(_localctx, 40, RULE_function_arguments); - _localctx.list = new List(); - int _la; - try { - EnterOuterAlt(_localctx, 1); - { - State = 331; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - if ((((_la) & ~0x3f) == 0 && ((1L << _la) & ((1L << T__2) | (1L << T__3) | (1L << T__19) | (1L << T__31) | (1L << T__32) | (1L << T__33) | (1L << T__35) | (1L << T__38) | (1L << T__40) | (1L << T__42) | (1L << T__43) | (1L << T__44) | (1L << T__45) | (1L << T__46) | (1L << T__47) | (1L << T__48) | (1L << T__49) | (1L << T__50) | (1L << T__51) | (1L << T__52) | (1L << T__53) | (1L << T__54) | (1L << T__55) | (1L << T__56) | (1L << T__57) | (1L << T__58) | (1L << T__59) | (1L << T__60) | (1L << T__61) | (1L << T__62))) != 0) || ((((_la - 64)) & ~0x3f) == 0 && ((1L << (_la - 64)) & ((1L << (T__63 - 64)) | (1L << (T__64 - 64)) | (1L << (T__65 - 64)) | (1L << (T__66 - 64)) | (1L << (T__67 - 64)) | (1L << (T__68 - 64)) | (1L << (T__69 - 64)) | (1L << (T__70 - 64)) | (1L << (T__71 - 64)) | (1L << (T__72 - 64)) | (1L << (T__73 - 64)) | (1L << (T__74 - 64)) | (1L << (T__75 - 64)) | (1L << (T__76 - 64)) | (1L << (T__77 - 64)) | (1L << (T__78 - 64)) | (1L << (T__79 - 64)) | (1L << (T__80 - 64)) | (1L << (T__81 - 64)) | (1L << (T__82 - 64)) | (1L << (T__83 - 64)) | (1L << (T__84 - 64)) | (1L << (T__85 - 64)) | (1L << (T__86 - 64)) | (1L << (T__87 - 64)) | (1L << (T__88 - 64)) | (1L << (T__89 - 64)) | (1L << (T__90 - 64)) | (1L << (T__91 - 64)) | (1L << (T__92 - 64)) | (1L << (T__93 - 64)) | (1L << (T__94 - 64)) | (1L << (T__95 - 64)) | (1L << (T__96 - 64)) | (1L << (T__97 - 64)) | (1L << (T__98 - 64)) | (1L << (T__99 - 64)) | (1L << (T__100 - 64)) | (1L << (T__101 - 64)) | (1L << (T__102 - 64)) | (1L << (T__103 - 64)) | (1L << (T__104 - 64)) | (1L << (T__105 - 64)) | (1L << (T__106 - 64)) | (1L << (T__107 - 64)) | (1L << (T__108 - 64)) | (1L << (T__109 - 64)) | (1L << (T__110 - 64)) | (1L << (T__111 - 64)) | (1L << (T__112 - 64)) | (1L << (T__113 - 64)) | (1L << (T__114 - 64)) | (1L << (T__115 - 64)) | (1L << (T__116 - 64)) | (1L << (T__117 - 64)) | (1L << (T__118 - 64)) | (1L << (T__119 - 64)) | (1L << (NUMBER - 64)) | (1L << (SPECIALSET - 64)) | (1L << (BOOLEAN - 64)) | (1L << (VARIABLE - 64)))) != 0)) { - { - State = 320; _localctx.e = expression(); - _localctx.list.Add(_localctx.e.value); - State = 328; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - while (_la==T__28) { - { - { - State = 322; Match(T__28); - State = 323; _localctx.e = expression(); - _localctx.list.Add(_localctx.e.value); - } - } - State = 330; - ErrorHandler.Sync(this); - _la = TokenStream.LA(1); - } - } - } - - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Interval_argumentsContext : ParserRuleContext { - public (Entity from, Entity to) couple; - public ExpressionContext from; - public ExpressionContext to; - public ExpressionContext[] expression() { - return GetRuleContexts(); - } - public ExpressionContext expression(int i) { - return GetRuleContext(i); - } - public Interval_argumentsContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_interval_arguments; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterInterval_arguments(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitInterval_arguments(this); - } - } - - [RuleVersion(0)] - public Interval_argumentsContext interval_arguments() { - Interval_argumentsContext _localctx = new Interval_argumentsContext(Context, State); - EnterRule(_localctx, 42, RULE_interval_arguments); - try { - EnterOuterAlt(_localctx, 1); - { - State = 333; _localctx.from = expression(); - _localctx.couple.from = _localctx.from.value; - State = 335; Match(T__29); - State = 336; _localctx.to = expression(); - _localctx.couple.to = _localctx.to.value; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class Cset_argumentsContext : ParserRuleContext { - public (Entity variable, Entity predicate) couple; - public ExpressionContext variable; - public ExpressionContext predicate; - public ExpressionContext[] expression() { - return GetRuleContexts(); - } - public ExpressionContext expression(int i) { - return GetRuleContext(i); - } - public Cset_argumentsContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_cset_arguments; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterCset_arguments(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitCset_arguments(this); - } - } - - [RuleVersion(0)] - public Cset_argumentsContext cset_arguments() { - Cset_argumentsContext _localctx = new Cset_argumentsContext(Context, State); - EnterRule(_localctx, 44, RULE_cset_arguments); - try { - EnterOuterAlt(_localctx, 1); - { - State = 339; _localctx.variable = expression(); - _localctx.couple.variable = _localctx.variable.value; - State = 341; Match(T__30); - State = 342; _localctx.predicate = expression(); - _localctx.couple.predicate = _localctx.predicate.value; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class AtomContext : ParserRuleContext { - public Entity value; - public IToken _NUMBER; - public IToken _BOOLEAN; - public IToken _SPECIALSET; - public IToken _VARIABLE; - public ExpressionContext _expression; - public Function_argumentsContext _function_arguments; - public Interval_argumentsContext _interval_arguments; - public Cset_argumentsContext cset_args; - public Function_argumentsContext args; - public ITerminalNode NUMBER() { return GetToken(AngouriMathParser.NUMBER, 0); } - public ITerminalNode BOOLEAN() { return GetToken(AngouriMathParser.BOOLEAN, 0); } - public ITerminalNode SPECIALSET() { return GetToken(AngouriMathParser.SPECIALSET, 0); } - public ITerminalNode VARIABLE() { return GetToken(AngouriMathParser.VARIABLE, 0); } - public ExpressionContext expression() { - return GetRuleContext(0); - } - public Function_argumentsContext function_arguments() { - return GetRuleContext(0); - } - public Interval_argumentsContext interval_arguments() { - return GetRuleContext(0); - } - public Cset_argumentsContext cset_arguments() { - return GetRuleContext(0); - } - public AtomContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_atom; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterAtom(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitAtom(this); - } - } - - [RuleVersion(0)] - public AtomContext atom() { - AtomContext _localctx = new AtomContext(Context, State); - EnterRule(_localctx, 46, RULE_atom); - try { - State = 797; - ErrorHandler.Sync(this); - switch ( Interpreter.AdaptivePredict(TokenStream,34,Context) ) { - case 1: - EnterOuterAlt(_localctx, 1); - { - State = 345; Match(T__31); - _localctx.value = Entity.Number.Real.PositiveInfinity; - } - break; - case 2: - EnterOuterAlt(_localctx, 2); - { - State = 347; Match(T__32); - _localctx.value = Entity.Number.Real.NegativeInfinity; - } - break; - case 3: - EnterOuterAlt(_localctx, 3); - { - State = 349; _localctx._NUMBER = Match(NUMBER); - _localctx.value = Entity.Number.Complex.Parse((_localctx._NUMBER!=null?_localctx._NUMBER.Text:null)); - } - break; - case 4: - EnterOuterAlt(_localctx, 4); - { - State = 351; _localctx._BOOLEAN = Match(BOOLEAN); - _localctx.value = Entity.Boolean.Parse((_localctx._BOOLEAN!=null?_localctx._BOOLEAN.Text:null)); - } - break; - case 5: - EnterOuterAlt(_localctx, 5); - { - State = 353; _localctx._SPECIALSET = Match(SPECIALSET); - _localctx.value = Entity.Set.SpecialSet.Create((_localctx._SPECIALSET!=null?_localctx._SPECIALSET.Text:null)); - } - break; - case 6: - EnterOuterAlt(_localctx, 6); - { - State = 355; _localctx._VARIABLE = Match(VARIABLE); - _localctx.value = Entity.Variable.CreateVariableUnchecked((_localctx._VARIABLE!=null?_localctx._VARIABLE.Text:null)); - } - break; - case 7: - EnterOuterAlt(_localctx, 7); - { - State = 357; Match(T__33); - State = 358; _localctx._expression = expression(); - State = 359; Match(T__34); - _localctx.value = _localctx._expression.value.Abs(); - } - break; - case 8: - EnterOuterAlt(_localctx, 8); - { - State = 362; Match(T__35); - State = 363; _localctx._function_arguments = function_arguments(); - State = 364; Match(T__36); - _localctx.value = ParsingHelpers.TryBuildingMatrix(_localctx._function_arguments.list).T; - } - break; - case 9: - EnterOuterAlt(_localctx, 9); - { - State = 367; Match(T__35); - State = 368; _localctx._function_arguments = function_arguments(); - State = 369; Match(T__37); - _localctx.value = ParsingHelpers.TryBuildingMatrix(_localctx._function_arguments.list); - } - break; - case 10: - EnterOuterAlt(_localctx, 10); - { - State = 372; Match(T__38); - State = 373; _localctx._interval_arguments = interval_arguments(); - State = 374; Match(T__39); - _localctx.value = new Entity.Set.Interval(_localctx._interval_arguments.couple.from, false, _localctx._interval_arguments.couple.to, false); - } - break; - case 11: - EnterOuterAlt(_localctx, 11); - { - State = 377; Match(T__35); - State = 378; _localctx._interval_arguments = interval_arguments(); - State = 379; Match(T__39); - _localctx.value = new Entity.Set.Interval(_localctx._interval_arguments.couple.from, true, _localctx._interval_arguments.couple.to, false); - } - break; - case 12: - EnterOuterAlt(_localctx, 12); - { - State = 382; Match(T__35); - State = 383; _localctx._interval_arguments = interval_arguments(); - State = 384; Match(T__37); - _localctx.value = new Entity.Set.Interval(_localctx._interval_arguments.couple.from, true, _localctx._interval_arguments.couple.to, true); - } - break; - case 13: - EnterOuterAlt(_localctx, 13); - { - State = 387; Match(T__38); - State = 388; _localctx._interval_arguments = interval_arguments(); - State = 389; Match(T__37); - _localctx.value = new Entity.Set.Interval(_localctx._interval_arguments.couple.from, false, _localctx._interval_arguments.couple.to, true); - } - break; - case 14: - EnterOuterAlt(_localctx, 14); - { - State = 392; Match(T__38); - State = 393; _localctx._expression = expression(); - State = 394; Match(T__39); - _localctx.value = _localctx._expression.value; - } - break; - case 15: - EnterOuterAlt(_localctx, 15); - { - State = 397; Match(T__40); - State = 398; _localctx.cset_args = cset_arguments(); - State = 399; Match(T__41); - _localctx.value = new ConditionalSet(_localctx.cset_args.couple.variable, _localctx.cset_args.couple.predicate); - } - break; - case 16: - EnterOuterAlt(_localctx, 16); - { - State = 402; Match(T__40); - State = 403; _localctx.args = function_arguments(); - State = 404; Match(T__41); - _localctx.value = new FiniteSet((IEnumerable)_localctx.args.list); - } - break; - case 17: - EnterOuterAlt(_localctx, 17); - { - State = 407; Match(T__42); - State = 408; _localctx.args = function_arguments(); - State = 409; Match(T__39); - _localctx.value = Assert("log", (1, 2), _localctx.args.list.Count) ? MathS.Log(10, _localctx.args.list[0]) : MathS.Log(_localctx.args.list[0], _localctx.args.list[1]); - } - break; - case 18: - EnterOuterAlt(_localctx, 18); - { - State = 412; Match(T__43); - State = 413; _localctx.args = function_arguments(); - State = 414; Match(T__39); - Assert("sqrt", 1, _localctx.args.list.Count); _localctx.value = MathS.Sqrt(_localctx.args.list[0]); - } - break; - case 19: - EnterOuterAlt(_localctx, 19); - { - State = 417; Match(T__44); - State = 418; _localctx.args = function_arguments(); - State = 419; Match(T__39); - Assert("cbrt", 1, _localctx.args.list.Count); _localctx.value = MathS.Cbrt(_localctx.args.list[0]); - } - break; - case 20: - EnterOuterAlt(_localctx, 20); - { - State = 422; Match(T__45); - State = 423; _localctx.args = function_arguments(); - State = 424; Match(T__39); - Assert("sqr", 1, _localctx.args.list.Count); _localctx.value = MathS.Sqr(_localctx.args.list[0]); - } - break; - case 21: - EnterOuterAlt(_localctx, 21); - { - State = 427; Match(T__46); - State = 428; _localctx.args = function_arguments(); - State = 429; Match(T__39); - Assert("ln", 1, _localctx.args.list.Count); _localctx.value = MathS.Ln(_localctx.args.list[0]); - } - break; - case 22: - EnterOuterAlt(_localctx, 22); - { - State = 432; Match(T__47); - State = 433; _localctx.args = function_arguments(); - State = 434; Match(T__39); - Assert("sin", 1, _localctx.args.list.Count); _localctx.value = MathS.Sin(_localctx.args.list[0]); - } - break; - case 23: - EnterOuterAlt(_localctx, 23); - { - State = 437; Match(T__48); - State = 438; _localctx.args = function_arguments(); - State = 439; Match(T__39); - Assert("cos", 1, _localctx.args.list.Count); _localctx.value = MathS.Cos(_localctx.args.list[0]); - } - break; - case 24: - EnterOuterAlt(_localctx, 24); - { - State = 442; Match(T__49); - State = 443; _localctx.args = function_arguments(); - State = 444; Match(T__39); - Assert("tan", 1, _localctx.args.list.Count); _localctx.value = MathS.Tan(_localctx.args.list[0]); - } - break; - case 25: - EnterOuterAlt(_localctx, 25); - { - State = 447; Match(T__50); - State = 448; _localctx.args = function_arguments(); - State = 449; Match(T__39); - Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Cotan(_localctx.args.list[0]); - } - break; - case 26: - EnterOuterAlt(_localctx, 26); - { - State = 452; Match(T__51); - State = 453; _localctx.args = function_arguments(); - State = 454; Match(T__39); - Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Cotan(_localctx.args.list[0]); - } - break; - case 27: - EnterOuterAlt(_localctx, 27); - { - State = 457; Match(T__52); - State = 458; _localctx.args = function_arguments(); - State = 459; Match(T__39); - Assert("sec", 1, _localctx.args.list.Count); _localctx.value = MathS.Sec(_localctx.args.list[0]); - } - break; - case 28: - EnterOuterAlt(_localctx, 28); - { - State = 462; Match(T__53); - State = 463; _localctx.args = function_arguments(); - State = 464; Match(T__39); - Assert("cosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Cosec(_localctx.args.list[0]); - } - break; - case 29: - EnterOuterAlt(_localctx, 29); - { - State = 467; Match(T__54); - State = 468; _localctx.args = function_arguments(); - State = 469; Match(T__39); - Assert("cosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Cosec(_localctx.args.list[0]); - } - break; - case 30: - EnterOuterAlt(_localctx, 30); - { - State = 472; Match(T__55); - State = 473; _localctx.args = function_arguments(); - State = 474; Match(T__39); - Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Arcsin(_localctx.args.list[0]); - } - break; - case 31: - EnterOuterAlt(_localctx, 31); - { - State = 477; Match(T__56); - State = 478; _localctx.args = function_arguments(); - State = 479; Match(T__39); - Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccos(_localctx.args.list[0]); - } - break; - case 32: - EnterOuterAlt(_localctx, 32); - { - State = 482; Match(T__57); - State = 483; _localctx.args = function_arguments(); - State = 484; Match(T__39); - Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arctan(_localctx.args.list[0]); - } - break; - case 33: - EnterOuterAlt(_localctx, 33); - { - State = 487; Match(T__58); - State = 488; _localctx.args = function_arguments(); - State = 489; Match(T__39); - Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccotan(_localctx.args.list[0]); - } - break; - case 34: - EnterOuterAlt(_localctx, 34); - { - State = 492; Match(T__59); - State = 493; _localctx.args = function_arguments(); - State = 494; Match(T__39); - Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arcsec(_localctx.args.list[0]); - } - break; - case 35: - EnterOuterAlt(_localctx, 35); - { - State = 497; Match(T__60); - State = 498; _localctx.args = function_arguments(); - State = 499; Match(T__39); - Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccosec(_localctx.args.list[0]); - } - break; - case 36: - EnterOuterAlt(_localctx, 36); - { - State = 502; Match(T__61); - State = 503; _localctx.args = function_arguments(); - State = 504; Match(T__39); - Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccosec(_localctx.args.list[0]); - } - break; - case 37: - EnterOuterAlt(_localctx, 37); - { - State = 507; Match(T__62); - State = 508; _localctx.args = function_arguments(); - State = 509; Match(T__39); - Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccosec(_localctx.args.list[0]); - } - break; - case 38: - EnterOuterAlt(_localctx, 38); - { - State = 512; Match(T__63); - State = 513; _localctx.args = function_arguments(); - State = 514; Match(T__39); - Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Arcsin(_localctx.args.list[0]); - } - break; - case 39: - EnterOuterAlt(_localctx, 39); - { - State = 517; Match(T__64); - State = 518; _localctx.args = function_arguments(); - State = 519; Match(T__39); - Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccos(_localctx.args.list[0]); - } - break; - case 40: - EnterOuterAlt(_localctx, 40); - { - State = 522; Match(T__65); - State = 523; _localctx.args = function_arguments(); - State = 524; Match(T__39); - Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arctan(_localctx.args.list[0]); - } - break; - case 41: - EnterOuterAlt(_localctx, 41); - { - State = 527; Match(T__66); - State = 528; _localctx.args = function_arguments(); - State = 529; Match(T__39); - Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccotan(_localctx.args.list[0]); - } - break; - case 42: - EnterOuterAlt(_localctx, 42); - { - State = 532; Match(T__67); - State = 533; _localctx.args = function_arguments(); - State = 534; Match(T__39); - Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arcsec(_localctx.args.list[0]); - } - break; - case 43: - EnterOuterAlt(_localctx, 43); - { - State = 537; Match(T__68); - State = 538; _localctx.args = function_arguments(); - State = 539; Match(T__39); - Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccosec(_localctx.args.list[0]); - } - break; - case 44: - EnterOuterAlt(_localctx, 44); - { - State = 542; Match(T__69); - State = 543; _localctx.args = function_arguments(); - State = 544; Match(T__39); - Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccotan(_localctx.args.list[0]); - } - break; - case 45: - EnterOuterAlt(_localctx, 45); - { - State = 547; Match(T__70); - State = 548; _localctx.args = function_arguments(); - State = 549; Match(T__39); - Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Arccotan(_localctx.args.list[0]); - } - break; - case 46: - EnterOuterAlt(_localctx, 46); - { - State = 552; Match(T__71); - State = 553; _localctx.args = function_arguments(); - State = 554; Match(T__39); - Assert("sin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Sinh(_localctx.args.list[0]); - } - break; - case 47: - EnterOuterAlt(_localctx, 47); - { - State = 557; Match(T__72); - State = 558; _localctx.args = function_arguments(); - State = 559; Match(T__39); - Assert("sin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Sinh(_localctx.args.list[0]); - } - break; - case 48: - EnterOuterAlt(_localctx, 48); - { - State = 562; Match(T__73); - State = 563; _localctx.args = function_arguments(); - State = 564; Match(T__39); - Assert("cos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cosh(_localctx.args.list[0]); - } - break; - case 49: - EnterOuterAlt(_localctx, 49); - { - State = 567; Match(T__74); - State = 568; _localctx.args = function_arguments(); - State = 569; Match(T__39); - Assert("cos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cosh(_localctx.args.list[0]); - } - break; - case 50: - EnterOuterAlt(_localctx, 50); - { - State = 572; Match(T__75); - State = 573; _localctx.args = function_arguments(); - State = 574; Match(T__39); - Assert("tan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Tanh(_localctx.args.list[0]); - } - break; - case 51: - EnterOuterAlt(_localctx, 51); - { - State = 577; Match(T__76); - State = 578; _localctx.args = function_arguments(); - State = 579; Match(T__39); - Assert("tan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Tanh(_localctx.args.list[0]); - } - break; - case 52: - EnterOuterAlt(_localctx, 52); - { - State = 582; Match(T__77); - State = 583; _localctx.args = function_arguments(); - State = 584; Match(T__39); - Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cotanh(_localctx.args.list[0]); - } - break; - case 53: - EnterOuterAlt(_localctx, 53); - { - State = 587; Match(T__78); - State = 588; _localctx.args = function_arguments(); - State = 589; Match(T__39); - Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cotanh(_localctx.args.list[0]); - } - break; - case 54: - EnterOuterAlt(_localctx, 54); - { - State = 592; Match(T__79); - State = 593; _localctx.args = function_arguments(); - State = 594; Match(T__39); - Assert("cotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cotanh(_localctx.args.list[0]); - } - break; - case 55: - EnterOuterAlt(_localctx, 55); - { - State = 597; Match(T__80); - State = 598; _localctx.args = function_arguments(); - State = 599; Match(T__39); - Assert("sec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Sech(_localctx.args.list[0]); - } - break; - case 56: - EnterOuterAlt(_localctx, 56); - { - State = 602; Match(T__81); - State = 603; _localctx.args = function_arguments(); - State = 604; Match(T__39); - Assert("sec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Sech(_localctx.args.list[0]); - } - break; - case 57: - EnterOuterAlt(_localctx, 57); - { - State = 607; Match(T__82); - State = 608; _localctx.args = function_arguments(); - State = 609; Match(T__39); - Assert("cosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cosech(_localctx.args.list[0]); - } - break; - case 58: - EnterOuterAlt(_localctx, 58); - { - State = 612; Match(T__83); - State = 613; _localctx.args = function_arguments(); - State = 614; Match(T__39); - Assert("cosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Cosech(_localctx.args.list[0]); - } - break; - case 59: - EnterOuterAlt(_localctx, 59); - { - State = 617; Match(T__84); - State = 618; _localctx.args = function_arguments(); - State = 619; Match(T__39); - Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsinh(_localctx.args.list[0]); - } - break; - case 60: - EnterOuterAlt(_localctx, 60); - { - State = 622; Match(T__85); - State = 623; _localctx.args = function_arguments(); - State = 624; Match(T__39); - Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsinh(_localctx.args.list[0]); - } - break; - case 61: - EnterOuterAlt(_localctx, 61); - { - State = 627; Match(T__86); - State = 628; _localctx.args = function_arguments(); - State = 629; Match(T__39); - Assert("arcsin", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsinh(_localctx.args.list[0]); - } - break; - case 62: - EnterOuterAlt(_localctx, 62); - { - State = 632; Match(T__87); - State = 633; _localctx.args = function_arguments(); - State = 634; Match(T__39); - Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosh(_localctx.args.list[0]); - } - break; - case 63: - EnterOuterAlt(_localctx, 63); - { - State = 637; Match(T__88); - State = 638; _localctx.args = function_arguments(); - State = 639; Match(T__39); - Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosh(_localctx.args.list[0]); - } - break; - case 64: - EnterOuterAlt(_localctx, 64); - { - State = 642; Match(T__89); - State = 643; _localctx.args = function_arguments(); - State = 644; Match(T__39); - Assert("arccos", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosh(_localctx.args.list[0]); - } - break; - case 65: - EnterOuterAlt(_localctx, 65); - { - State = 647; Match(T__90); - State = 648; _localctx.args = function_arguments(); - State = 649; Match(T__39); - Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Artanh(_localctx.args.list[0]); - } - break; - case 66: - EnterOuterAlt(_localctx, 66); - { - State = 652; Match(T__91); - State = 653; _localctx.args = function_arguments(); - State = 654; Match(T__39); - Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Artanh(_localctx.args.list[0]); - } - break; - case 67: - EnterOuterAlt(_localctx, 67); - { - State = 657; Match(T__92); - State = 658; _localctx.args = function_arguments(); - State = 659; Match(T__39); - Assert("arctan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Artanh(_localctx.args.list[0]); - } - break; - case 68: - EnterOuterAlt(_localctx, 68); - { - State = 662; Match(T__93); - State = 663; _localctx.args = function_arguments(); - State = 664; Match(T__39); - Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); - } - break; - case 69: - EnterOuterAlt(_localctx, 69); - { - State = 667; Match(T__94); - State = 668; _localctx.args = function_arguments(); - State = 669; Match(T__39); - Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); - } - break; - case 70: - EnterOuterAlt(_localctx, 70); - { - State = 672; Match(T__95); - State = 673; _localctx.args = function_arguments(); - State = 674; Match(T__39); - Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); - } - break; - case 71: - EnterOuterAlt(_localctx, 71); - { - State = 677; Match(T__96); - State = 678; _localctx.args = function_arguments(); - State = 679; Match(T__39); - Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); - } - break; - case 72: - EnterOuterAlt(_localctx, 72); - { - State = 682; Match(T__97); - State = 683; _localctx.args = function_arguments(); - State = 684; Match(T__39); - Assert("arccotan", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcotanh(_localctx.args.list[0]); - } - break; - case 73: - EnterOuterAlt(_localctx, 73); - { - State = 687; Match(T__98); - State = 688; _localctx.args = function_arguments(); - State = 689; Match(T__39); - Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsech(_localctx.args.list[0]); - } - break; - case 74: - EnterOuterAlt(_localctx, 74); - { - State = 692; Match(T__99); - State = 693; _localctx.args = function_arguments(); - State = 694; Match(T__39); - Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsech(_localctx.args.list[0]); - } - break; - case 75: - EnterOuterAlt(_localctx, 75); - { - State = 697; Match(T__100); - State = 698; _localctx.args = function_arguments(); - State = 699; Match(T__39); - Assert("arcsec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arsech(_localctx.args.list[0]); - } - break; - case 76: - EnterOuterAlt(_localctx, 76); - { - State = 702; Match(T__101); - State = 703; _localctx.args = function_arguments(); - State = 704; Match(T__39); - Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosech(_localctx.args.list[0]); - } - break; - case 77: - EnterOuterAlt(_localctx, 77); - { - State = 707; Match(T__102); - State = 708; _localctx.args = function_arguments(); - State = 709; Match(T__39); - Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosech(_localctx.args.list[0]); - } - break; - case 78: - EnterOuterAlt(_localctx, 78); - { - State = 712; Match(T__103); - State = 713; _localctx.args = function_arguments(); - State = 714; Match(T__39); - Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosech(_localctx.args.list[0]); - } - break; - case 79: - EnterOuterAlt(_localctx, 79); - { - State = 717; Match(T__104); - State = 718; _localctx.args = function_arguments(); - State = 719; Match(T__39); - Assert("arccosec", 1, _localctx.args.list.Count); _localctx.value = MathS.Hyperbolic.Arcosech(_localctx.args.list[0]); - } - break; - case 80: - EnterOuterAlt(_localctx, 80); - { - State = 722; Match(T__105); - State = 723; _localctx.args = function_arguments(); - State = 724; Match(T__39); - Assert("gamma", 1, _localctx.args.list.Count); _localctx.value = MathS.Gamma(_localctx.args.list[0]); - } - break; - case 81: - EnterOuterAlt(_localctx, 81); - { - State = 727; Match(T__106); - State = 728; _localctx.args = function_arguments(); - State = 729; Match(T__39); - - if (Assert("derivative", (3, 2), _localctx.args.list.Count)) - { - if (_localctx.args.list[2] is Integer { EInteger: var asEInt }) - _localctx.value = MathS.Derivative(_localctx.args.list[0], _localctx.args.list[1], asEInt.ToInt32Checked()); - else - throw new InvalidArgumentParseException("Expected integer number for the third argument of derivative"); - } - else - _localctx.value = MathS.Derivative(_localctx.args.list[0], _localctx.args.list[1]); - - } - break; - case 82: - EnterOuterAlt(_localctx, 82); - { - State = 732; Match(T__107); - State = 733; _localctx.args = function_arguments(); - State = 734; Match(T__39); - - if (Assert("integral", (3, 2), _localctx.args.list.Count)) - { - if (_localctx.args.list[2] is Integer { EInteger: var asEInt }) - _localctx.value = MathS.Integral(_localctx.args.list[0], _localctx.args.list[1], asEInt.ToInt32Checked()); - else - throw new InvalidArgumentParseException("Expected number for the third argument of integral"); - } - else - _localctx.value = MathS.Integral(_localctx.args.list[0], _localctx.args.list[1]); - - } - break; - case 83: - EnterOuterAlt(_localctx, 83); - { - State = 737; Match(T__108); - State = 738; _localctx.args = function_arguments(); - State = 739; Match(T__39); - Assert("limit", 3, _localctx.args.list.Count); _localctx.value = MathS.Limit(_localctx.args.list[0], _localctx.args.list[1], _localctx.args.list[2]); - } - break; - case 84: - EnterOuterAlt(_localctx, 84); - { - State = 742; Match(T__109); - State = 743; _localctx.args = function_arguments(); - State = 744; Match(T__39); - Assert("limitleft", 3, _localctx.args.list.Count); _localctx.value = MathS.Limit(_localctx.args.list[0], _localctx.args.list[1], _localctx.args.list[2], AngouriMath.Core.ApproachFrom.Left); - } - break; - case 85: - EnterOuterAlt(_localctx, 85); - { - State = 747; Match(T__110); - State = 748; _localctx.args = function_arguments(); - State = 749; Match(T__39); - Assert("limitright", 3, _localctx.args.list.Count); _localctx.value = MathS.Limit(_localctx.args.list[0], _localctx.args.list[1], _localctx.args.list[2], AngouriMath.Core.ApproachFrom.Right); - } - break; - case 86: - EnterOuterAlt(_localctx, 86); - { - State = 752; Match(T__111); - State = 753; _localctx.args = function_arguments(); - State = 754; Match(T__39); - Assert("signum", 1, _localctx.args.list.Count); _localctx.value = MathS.Signum(_localctx.args.list[0]); - } - break; - case 87: - EnterOuterAlt(_localctx, 87); - { - State = 757; Match(T__112); - State = 758; _localctx.args = function_arguments(); - State = 759; Match(T__39); - Assert("sgn", 1, _localctx.args.list.Count); _localctx.value = MathS.Signum(_localctx.args.list[0]); - } - break; - case 88: - EnterOuterAlt(_localctx, 88); - { - State = 762; Match(T__113); - State = 763; _localctx.args = function_arguments(); - State = 764; Match(T__39); - Assert("sign", 1, _localctx.args.list.Count); _localctx.value = MathS.Signum(_localctx.args.list[0]); - } - break; - case 89: - EnterOuterAlt(_localctx, 89); - { - State = 767; Match(T__114); - State = 768; _localctx.args = function_arguments(); - State = 769; Match(T__39); - Assert("abs", 1, _localctx.args.list.Count); _localctx.value = MathS.Abs(_localctx.args.list[0]); - } - break; - case 90: - EnterOuterAlt(_localctx, 90); - { - State = 772; Match(T__115); - State = 773; _localctx.args = function_arguments(); - State = 774; Match(T__39); - Assert("phi", 1, _localctx.args.list.Count); _localctx.value = MathS.NumberTheory.Phi(_localctx.args.list[0]); - } - break; - case 91: - EnterOuterAlt(_localctx, 91); - { - State = 777; Match(T__116); - State = 778; _localctx.args = function_arguments(); - State = 779; Match(T__39); - - Assert("domain", 2, _localctx.args.list.Count); - if (_localctx.args.list[1] is not SpecialSet ss) - throw new InvalidArgumentParseException($"Unrecognized special set {_localctx.args.list[1].Stringize()}"); - _localctx.value = _localctx.args.list[0].WithCodomain(ss.ToDomain()); - - } - break; - case 92: - EnterOuterAlt(_localctx, 92); - { - State = 782; Match(T__117); - State = 783; _localctx.args = function_arguments(); - State = 784; Match(T__39); - - var cases = new List(); - foreach (var arg in _localctx.args.list) - if (arg is Providedf provided) - cases.Add(provided); - else - cases.Add(new Providedf(arg, true)); - _localctx.value = new Piecewise(cases); - - } - break; - case 93: - EnterOuterAlt(_localctx, 93); - { - State = 787; Match(T__118); - State = 788; _localctx.args = function_arguments(); - State = 789; Match(T__39); - - if (_localctx.args.list.Count < 2) - throw new FunctionArgumentCountException("Should be at least one argument in apply function"); - _localctx.value = _localctx.args.list[0].Apply(_localctx.args.list.Skip(1).ToLList()); - - } - break; - case 94: - EnterOuterAlt(_localctx, 94); - { - State = 792; Match(T__119); - State = 793; _localctx.args = function_arguments(); - State = 794; Match(T__39); - - if (_localctx.args.list.Count < 2) - throw new FunctionArgumentCountException("Should be at least two arguments in lambda function"); - var body = _localctx.args.list.Last(); - foreach (var x in ((IEnumerable)_localctx.args.list).Reverse().Skip(1)) - { - if (x is not Variable v) throw new InvalidArgumentParseException($"Lambda is expected to have valid parameters, {x} encountered instead"); - body = body.LambdaOver(v); - } - _localctx.value = body; - - } - break; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - internal partial class StatementContext : ParserRuleContext { - public ExpressionContext _expression; - public ExpressionContext expression() { - return GetRuleContext(0); - } - public ITerminalNode Eof() { return GetToken(AngouriMathParser.Eof, 0); } - public StatementContext(ParserRuleContext parent, int invokingState) - : base(parent, invokingState) - { - } - public override int RuleIndex { get { return RULE_statement; } } - public override void EnterRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.EnterStatement(this); - } - public override void ExitRule(IParseTreeListener listener) { - IAngouriMathListener typedListener = listener as IAngouriMathListener; - if (typedListener != null) typedListener.ExitStatement(this); - } - } - - [RuleVersion(0)] - public StatementContext statement() { - StatementContext _localctx = new StatementContext(Context, State); - EnterRule(_localctx, 48, RULE_statement); - try { - EnterOuterAlt(_localctx, 1); - { - State = 799; _localctx._expression = expression(); - State = 800; Match(Eof); - Result = _localctx._expression.value; - } - } - catch (RecognitionException re) { - _localctx.exception = re; - ErrorHandler.ReportError(this, re); - ErrorHandler.Recover(this, re); - } - finally { - ExitRule(); - } - return _localctx; - } - - private static char[] _serializedATN = { - '\x3', '\x608B', '\xA72A', '\x8133', '\xB9ED', '\x417C', '\x3BE7', '\x7786', - '\x5964', '\x3', '\x81', '\x326', '\x4', '\x2', '\t', '\x2', '\x4', '\x3', - '\t', '\x3', '\x4', '\x4', '\t', '\x4', '\x4', '\x5', '\t', '\x5', '\x4', - '\x6', '\t', '\x6', '\x4', '\a', '\t', '\a', '\x4', '\b', '\t', '\b', - '\x4', '\t', '\t', '\t', '\x4', '\n', '\t', '\n', '\x4', '\v', '\t', '\v', - '\x4', '\f', '\t', '\f', '\x4', '\r', '\t', '\r', '\x4', '\xE', '\t', - '\xE', '\x4', '\xF', '\t', '\xF', '\x4', '\x10', '\t', '\x10', '\x4', - '\x11', '\t', '\x11', '\x4', '\x12', '\t', '\x12', '\x4', '\x13', '\t', - '\x13', '\x4', '\x14', '\t', '\x14', '\x4', '\x15', '\t', '\x15', '\x4', - '\x16', '\t', '\x16', '\x4', '\x17', '\t', '\x17', '\x4', '\x18', '\t', - '\x18', '\x4', '\x19', '\t', '\x19', '\x4', '\x1A', '\t', '\x1A', '\x3', - '\x2', '\x3', '\x2', '\x3', '\x2', '\x3', '\x2', '\x3', '\x2', '\x3', - '\x2', '\x3', '\x2', '\x5', '\x2', '<', '\n', '\x2', '\x3', '\x3', '\x3', - '\x3', '\x3', '\x3', '\x3', '\x3', '\x6', '\x3', '\x42', '\n', '\x3', - '\r', '\x3', '\xE', '\x3', '\x43', '\x3', '\x3', '\x3', '\x3', '\x3', - '\x3', '\x3', '\x3', '\x6', '\x3', 'J', '\n', '\x3', '\r', '\x3', '\xE', - '\x3', 'K', '\x5', '\x3', 'N', '\n', '\x3', '\x3', '\x4', '\x3', '\x4', - '\x3', '\x4', '\x3', '\x4', '\x3', '\x4', '\x5', '\x4', 'U', '\n', '\x4', - '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', - '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', '\x5', '\x5', '_', '\n', '\x5', - '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', - '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', '\x5', '\x5', 'i', '\n', '\x5', - '\x3', '\x5', '\x3', '\x5', '\x3', '\x5', '\x5', '\x5', 'n', '\n', '\x5', - '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', - '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', '\x3', '\x6', - '\a', '\x6', 'z', '\n', '\x6', '\f', '\x6', '\xE', '\x6', '}', '\v', '\x6', - '\x3', '\a', '\x3', '\a', '\x3', '\a', '\x3', '\a', '\x3', '\a', '\x3', - '\a', '\x3', '\a', '\x3', '\a', '\x3', '\a', '\x3', '\a', '\a', '\a', - '\x89', '\n', '\a', '\f', '\a', '\xE', '\a', '\x8C', '\v', '\a', '\x3', - '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', - '\x3', '\b', '\x3', '\b', '\x3', '\b', '\x3', '\b', '\a', '\b', '\x98', - '\n', '\b', '\f', '\b', '\xE', '\b', '\x9B', '\v', '\b', '\x3', '\t', - '\x3', '\t', '\x3', '\t', '\x3', '\t', '\x3', '\t', '\x3', '\t', '\x3', - '\t', '\x3', '\t', '\x3', '\t', '\x3', '\t', '\a', '\t', '\xA7', '\n', - '\t', '\f', '\t', '\xE', '\t', '\xAA', '\v', '\t', '\x3', '\n', '\x3', - '\n', '\x3', '\n', '\x3', '\n', '\x3', '\n', '\x3', '\n', '\x3', '\n', - '\x3', '\n', '\x3', '\n', '\x3', '\n', '\a', '\n', '\xB6', '\n', '\n', - '\f', '\n', '\xE', '\n', '\xB9', '\v', '\n', '\x3', '\v', '\x3', '\v', - '\x3', '\v', '\x3', '\v', '\x3', '\v', '\x3', '\v', '\a', '\v', '\xC1', - '\n', '\v', '\f', '\v', '\xE', '\v', '\xC4', '\v', '\v', '\x3', '\f', - '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', - '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', - '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', - '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\x3', '\f', '\a', '\f', - '\xDC', '\n', '\f', '\f', '\f', '\xE', '\f', '\xDF', '\v', '\f', '\x3', - '\r', '\x3', '\r', '\x3', '\r', '\x3', '\r', '\x6', '\r', '\xE5', '\n', - '\r', '\r', '\r', '\xE', '\r', '\xE6', '\x3', '\xE', '\x3', '\xE', '\x3', - '\xE', '\x3', '\xE', '\x3', '\xE', '\x5', '\xE', '\xEE', '\n', '\xE', - '\x3', '\xF', '\x3', '\xF', '\x3', '\xF', '\x3', '\xF', '\x3', '\xF', - '\x3', '\xF', '\x3', '\xF', '\x3', '\xF', '\x3', '\xF', '\x3', '\xF', - '\x3', '\xF', '\x5', '\xF', '\xFB', '\n', '\xF', '\x3', '\x10', '\x3', - '\x10', '\x3', '\x10', '\x3', '\x10', '\x3', '\x10', '\x3', '\x10', '\x3', - '\x10', '\x3', '\x10', '\x3', '\x10', '\x3', '\x10', '\a', '\x10', '\x107', - '\n', '\x10', '\f', '\x10', '\xE', '\x10', '\x10A', '\v', '\x10', '\x3', - '\x11', '\x3', '\x11', '\x3', '\x11', '\x3', '\x11', '\x3', '\x11', '\x3', - '\x11', '\a', '\x11', '\x112', '\n', '\x11', '\f', '\x11', '\xE', '\x11', - '\x115', '\v', '\x11', '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\x3', - '\x12', '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\x3', '\x12', '\x3', - '\x12', '\x3', '\x12', '\a', '\x12', '\x121', '\n', '\x12', '\f', '\x12', - '\xE', '\x12', '\x124', '\v', '\x12', '\x3', '\x13', '\x3', '\x13', '\x3', - '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', '\x13', '\x3', - '\x13', '\x3', '\x13', '\x3', '\x13', '\a', '\x13', '\x130', '\n', '\x13', - '\f', '\x13', '\xE', '\x13', '\x133', '\v', '\x13', '\x3', '\x14', '\x3', - '\x14', '\x3', '\x14', '\x3', '\x14', '\x3', '\x14', '\x3', '\x14', '\a', - '\x14', '\x13B', '\n', '\x14', '\f', '\x14', '\xE', '\x14', '\x13E', '\v', - '\x14', '\x3', '\x15', '\x3', '\x15', '\x3', '\x15', '\x3', '\x16', '\x3', - '\x16', '\x3', '\x16', '\x3', '\x16', '\x3', '\x16', '\x3', '\x16', '\a', - '\x16', '\x149', '\n', '\x16', '\f', '\x16', '\xE', '\x16', '\x14C', '\v', - '\x16', '\x5', '\x16', '\x14E', '\n', '\x16', '\x3', '\x17', '\x3', '\x17', - '\x3', '\x17', '\x3', '\x17', '\x3', '\x17', '\x3', '\x17', '\x3', '\x18', - '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', '\x3', '\x18', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', '\x3', '\x19', - '\x3', '\x19', '\x3', '\x19', '\x5', '\x19', '\x320', '\n', '\x19', '\x3', - '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x3', '\x1A', '\x2', - '\x2', '\x1B', '\x2', '\x4', '\x6', '\b', '\n', '\f', '\xE', '\x10', '\x12', - '\x14', '\x16', '\x18', '\x1A', '\x1C', '\x1E', ' ', '\"', '$', '&', '(', - '*', ',', '.', '\x30', '\x32', '\x2', '\x2', '\x2', '\x390', '\x2', ';', - '\x3', '\x2', '\x2', '\x2', '\x4', 'M', '\x3', '\x2', '\x2', '\x2', '\x6', - 'O', '\x3', '\x2', '\x2', '\x2', '\b', 'm', '\x3', '\x2', '\x2', '\x2', - '\n', 'o', '\x3', '\x2', '\x2', '\x2', '\f', '~', '\x3', '\x2', '\x2', - '\x2', '\xE', '\x8D', '\x3', '\x2', '\x2', '\x2', '\x10', '\x9C', '\x3', - '\x2', '\x2', '\x2', '\x12', '\xAB', '\x3', '\x2', '\x2', '\x2', '\x14', - '\xBA', '\x3', '\x2', '\x2', '\x2', '\x16', '\xC5', '\x3', '\x2', '\x2', - '\x2', '\x18', '\xE4', '\x3', '\x2', '\x2', '\x2', '\x1A', '\xE8', '\x3', - '\x2', '\x2', '\x2', '\x1C', '\xFA', '\x3', '\x2', '\x2', '\x2', '\x1E', - '\xFC', '\x3', '\x2', '\x2', '\x2', ' ', '\x10B', '\x3', '\x2', '\x2', - '\x2', '\"', '\x116', '\x3', '\x2', '\x2', '\x2', '$', '\x125', '\x3', - '\x2', '\x2', '\x2', '&', '\x134', '\x3', '\x2', '\x2', '\x2', '(', '\x13F', - '\x3', '\x2', '\x2', '\x2', '*', '\x14D', '\x3', '\x2', '\x2', '\x2', - ',', '\x14F', '\x3', '\x2', '\x2', '\x2', '.', '\x155', '\x3', '\x2', - '\x2', '\x2', '\x30', '\x31F', '\x3', '\x2', '\x2', '\x2', '\x32', '\x321', - '\x3', '\x2', '\x2', '\x2', '\x34', '\x35', '\x5', '\x30', '\x19', '\x2', - '\x35', '\x36', '\a', '\x3', '\x2', '\x2', '\x36', '\x37', '\b', '\x2', - '\x1', '\x2', '\x37', '<', '\x3', '\x2', '\x2', '\x2', '\x38', '\x39', - '\x5', '\x30', '\x19', '\x2', '\x39', ':', '\b', '\x2', '\x1', '\x2', - ':', '<', '\x3', '\x2', '\x2', '\x2', ';', '\x34', '\x3', '\x2', '\x2', - '\x2', ';', '\x38', '\x3', '\x2', '\x2', '\x2', '<', '\x3', '\x3', '\x2', - '\x2', '\x2', '=', '>', '\a', '\x4', '\x2', '\x2', '>', '?', '\x5', '\x2', - '\x2', '\x2', '?', '@', '\b', '\x3', '\x1', '\x2', '@', '\x42', '\x3', - '\x2', '\x2', '\x2', '\x41', '=', '\x3', '\x2', '\x2', '\x2', '\x42', - '\x43', '\x3', '\x2', '\x2', '\x2', '\x43', '\x41', '\x3', '\x2', '\x2', - '\x2', '\x43', '\x44', '\x3', '\x2', '\x2', '\x2', '\x44', 'N', '\x3', - '\x2', '\x2', '\x2', '\x45', '\x46', '\a', '\x4', '\x2', '\x2', '\x46', - 'G', '\x5', '\b', '\x5', '\x2', 'G', 'H', '\b', '\x3', '\x1', '\x2', 'H', - 'J', '\x3', '\x2', '\x2', '\x2', 'I', '\x45', '\x3', '\x2', '\x2', '\x2', - 'J', 'K', '\x3', '\x2', '\x2', '\x2', 'K', 'I', '\x3', '\x2', '\x2', '\x2', - 'K', 'L', '\x3', '\x2', '\x2', '\x2', 'L', 'N', '\x3', '\x2', '\x2', '\x2', - 'M', '\x41', '\x3', '\x2', '\x2', '\x2', 'M', 'I', '\x3', '\x2', '\x2', - '\x2', 'N', '\x5', '\x3', '\x2', '\x2', '\x2', 'O', 'P', '\x5', '\x2', - '\x2', '\x2', 'P', 'T', '\b', '\x4', '\x1', '\x2', 'Q', 'R', '\x5', '\x4', - '\x3', '\x2', 'R', 'S', '\b', '\x4', '\x1', '\x2', 'S', 'U', '\x3', '\x2', - '\x2', '\x2', 'T', 'Q', '\x3', '\x2', '\x2', '\x2', 'T', 'U', '\x3', '\x2', - '\x2', '\x2', 'U', '\a', '\x3', '\x2', '\x2', '\x2', 'V', 'W', '\a', '\x5', - '\x2', '\x2', 'W', 'X', '\x5', '\x6', '\x4', '\x2', 'X', 'Y', '\b', '\x5', - '\x1', '\x2', 'Y', '_', '\x3', '\x2', '\x2', '\x2', 'Z', '[', '\a', '\x6', - '\x2', '\x2', '[', '\\', '\x5', '\x6', '\x4', '\x2', '\\', ']', '\b', - '\x5', '\x1', '\x2', ']', '_', '\x3', '\x2', '\x2', '\x2', '^', 'V', '\x3', - '\x2', '\x2', '\x2', '^', 'Z', '\x3', '\x2', '\x2', '\x2', '_', 'n', '\x3', - '\x2', '\x2', '\x2', '`', '\x61', '\a', '\x5', '\x2', '\x2', '\x61', '\x62', - '\x5', '\b', '\x5', '\x2', '\x62', '\x63', '\b', '\x5', '\x1', '\x2', - '\x63', 'i', '\x3', '\x2', '\x2', '\x2', '\x64', '\x65', '\a', '\x6', - '\x2', '\x2', '\x65', '\x66', '\x5', '\b', '\x5', '\x2', '\x66', 'g', - '\b', '\x5', '\x1', '\x2', 'g', 'i', '\x3', '\x2', '\x2', '\x2', 'h', - '`', '\x3', '\x2', '\x2', '\x2', 'h', '\x64', '\x3', '\x2', '\x2', '\x2', - 'i', 'n', '\x3', '\x2', '\x2', '\x2', 'j', 'k', '\x5', '\x6', '\x4', '\x2', - 'k', 'l', '\b', '\x5', '\x1', '\x2', 'l', 'n', '\x3', '\x2', '\x2', '\x2', - 'm', '^', '\x3', '\x2', '\x2', '\x2', 'm', 'h', '\x3', '\x2', '\x2', '\x2', - 'm', 'j', '\x3', '\x2', '\x2', '\x2', 'n', '\t', '\x3', '\x2', '\x2', - '\x2', 'o', 'p', '\x5', '\b', '\x5', '\x2', 'p', '{', '\b', '\x6', '\x1', - '\x2', 'q', 'r', '\a', '\a', '\x2', '\x2', 'r', 's', '\x5', '\b', '\x5', - '\x2', 's', 't', '\b', '\x6', '\x1', '\x2', 't', 'z', '\x3', '\x2', '\x2', - '\x2', 'u', 'v', '\a', '\b', '\x2', '\x2', 'v', 'w', '\x5', '\b', '\x5', - '\x2', 'w', 'x', '\b', '\x6', '\x1', '\x2', 'x', 'z', '\x3', '\x2', '\x2', - '\x2', 'y', 'q', '\x3', '\x2', '\x2', '\x2', 'y', 'u', '\x3', '\x2', '\x2', - '\x2', 'z', '}', '\x3', '\x2', '\x2', '\x2', '{', 'y', '\x3', '\x2', '\x2', - '\x2', '{', '|', '\x3', '\x2', '\x2', '\x2', '|', '\v', '\x3', '\x2', - '\x2', '\x2', '}', '{', '\x3', '\x2', '\x2', '\x2', '~', '\x7F', '\x5', - '\n', '\x6', '\x2', '\x7F', '\x8A', '\b', '\a', '\x1', '\x2', '\x80', - '\x81', '\a', '\x6', '\x2', '\x2', '\x81', '\x82', '\x5', '\n', '\x6', - '\x2', '\x82', '\x83', '\b', '\a', '\x1', '\x2', '\x83', '\x89', '\x3', - '\x2', '\x2', '\x2', '\x84', '\x85', '\a', '\x5', '\x2', '\x2', '\x85', - '\x86', '\x5', '\n', '\x6', '\x2', '\x86', '\x87', '\b', '\a', '\x1', - '\x2', '\x87', '\x89', '\x3', '\x2', '\x2', '\x2', '\x88', '\x80', '\x3', - '\x2', '\x2', '\x2', '\x88', '\x84', '\x3', '\x2', '\x2', '\x2', '\x89', - '\x8C', '\x3', '\x2', '\x2', '\x2', '\x8A', '\x88', '\x3', '\x2', '\x2', - '\x2', '\x8A', '\x8B', '\x3', '\x2', '\x2', '\x2', '\x8B', '\r', '\x3', - '\x2', '\x2', '\x2', '\x8C', '\x8A', '\x3', '\x2', '\x2', '\x2', '\x8D', - '\x8E', '\x5', '\f', '\a', '\x2', '\x8E', '\x99', '\b', '\b', '\x1', '\x2', - '\x8F', '\x90', '\a', '\t', '\x2', '\x2', '\x90', '\x91', '\x5', '\f', - '\a', '\x2', '\x91', '\x92', '\b', '\b', '\x1', '\x2', '\x92', '\x98', - '\x3', '\x2', '\x2', '\x2', '\x93', '\x94', '\a', '\n', '\x2', '\x2', - '\x94', '\x95', '\x5', '\f', '\a', '\x2', '\x95', '\x96', '\b', '\b', - '\x1', '\x2', '\x96', '\x98', '\x3', '\x2', '\x2', '\x2', '\x97', '\x8F', - '\x3', '\x2', '\x2', '\x2', '\x97', '\x93', '\x3', '\x2', '\x2', '\x2', - '\x98', '\x9B', '\x3', '\x2', '\x2', '\x2', '\x99', '\x97', '\x3', '\x2', - '\x2', '\x2', '\x99', '\x9A', '\x3', '\x2', '\x2', '\x2', '\x9A', '\xF', - '\x3', '\x2', '\x2', '\x2', '\x9B', '\x99', '\x3', '\x2', '\x2', '\x2', - '\x9C', '\x9D', '\x5', '\xE', '\b', '\x2', '\x9D', '\xA8', '\b', '\t', - '\x1', '\x2', '\x9E', '\x9F', '\a', '\v', '\x2', '\x2', '\x9F', '\xA0', - '\x5', '\xE', '\b', '\x2', '\xA0', '\xA1', '\b', '\t', '\x1', '\x2', '\xA1', - '\xA7', '\x3', '\x2', '\x2', '\x2', '\xA2', '\xA3', '\a', '\f', '\x2', - '\x2', '\xA3', '\xA4', '\x5', '\xE', '\b', '\x2', '\xA4', '\xA5', '\b', - '\t', '\x1', '\x2', '\xA5', '\xA7', '\x3', '\x2', '\x2', '\x2', '\xA6', - '\x9E', '\x3', '\x2', '\x2', '\x2', '\xA6', '\xA2', '\x3', '\x2', '\x2', - '\x2', '\xA7', '\xAA', '\x3', '\x2', '\x2', '\x2', '\xA8', '\xA6', '\x3', - '\x2', '\x2', '\x2', '\xA8', '\xA9', '\x3', '\x2', '\x2', '\x2', '\xA9', - '\x11', '\x3', '\x2', '\x2', '\x2', '\xAA', '\xA8', '\x3', '\x2', '\x2', - '\x2', '\xAB', '\xAC', '\x5', '\x10', '\t', '\x2', '\xAC', '\xB7', '\b', - '\n', '\x1', '\x2', '\xAD', '\xAE', '\a', '\r', '\x2', '\x2', '\xAE', - '\xAF', '\x5', '\x10', '\t', '\x2', '\xAF', '\xB0', '\b', '\n', '\x1', - '\x2', '\xB0', '\xB6', '\x3', '\x2', '\x2', '\x2', '\xB1', '\xB2', '\a', - '\xE', '\x2', '\x2', '\xB2', '\xB3', '\x5', '\x10', '\t', '\x2', '\xB3', - '\xB4', '\b', '\n', '\x1', '\x2', '\xB4', '\xB6', '\x3', '\x2', '\x2', - '\x2', '\xB5', '\xAD', '\x3', '\x2', '\x2', '\x2', '\xB5', '\xB1', '\x3', - '\x2', '\x2', '\x2', '\xB6', '\xB9', '\x3', '\x2', '\x2', '\x2', '\xB7', - '\xB5', '\x3', '\x2', '\x2', '\x2', '\xB7', '\xB8', '\x3', '\x2', '\x2', - '\x2', '\xB8', '\x13', '\x3', '\x2', '\x2', '\x2', '\xB9', '\xB7', '\x3', - '\x2', '\x2', '\x2', '\xBA', '\xBB', '\x5', '\x12', '\n', '\x2', '\xBB', - '\xC2', '\b', '\v', '\x1', '\x2', '\xBC', '\xBD', '\a', '\xF', '\x2', - '\x2', '\xBD', '\xBE', '\x5', '\x12', '\n', '\x2', '\xBE', '\xBF', '\b', - '\v', '\x1', '\x2', '\xBF', '\xC1', '\x3', '\x2', '\x2', '\x2', '\xC0', - '\xBC', '\x3', '\x2', '\x2', '\x2', '\xC1', '\xC4', '\x3', '\x2', '\x2', - '\x2', '\xC2', '\xC0', '\x3', '\x2', '\x2', '\x2', '\xC2', '\xC3', '\x3', - '\x2', '\x2', '\x2', '\xC3', '\x15', '\x3', '\x2', '\x2', '\x2', '\xC4', - '\xC2', '\x3', '\x2', '\x2', '\x2', '\xC5', '\xC6', '\x5', '\x14', '\v', - '\x2', '\xC6', '\xDD', '\b', '\f', '\x1', '\x2', '\xC7', '\xC8', '\a', - '\x10', '\x2', '\x2', '\xC8', '\xC9', '\x5', '\x14', '\v', '\x2', '\xC9', - '\xCA', '\b', '\f', '\x1', '\x2', '\xCA', '\xDC', '\x3', '\x2', '\x2', - '\x2', '\xCB', '\xCC', '\a', '\x11', '\x2', '\x2', '\xCC', '\xCD', '\x5', - '\x14', '\v', '\x2', '\xCD', '\xCE', '\b', '\f', '\x1', '\x2', '\xCE', - '\xDC', '\x3', '\x2', '\x2', '\x2', '\xCF', '\xD0', '\a', '\x12', '\x2', - '\x2', '\xD0', '\xD1', '\x5', '\x14', '\v', '\x2', '\xD1', '\xD2', '\b', - '\f', '\x1', '\x2', '\xD2', '\xDC', '\x3', '\x2', '\x2', '\x2', '\xD3', - '\xD4', '\a', '\x13', '\x2', '\x2', '\xD4', '\xD5', '\x5', '\x14', '\v', - '\x2', '\xD5', '\xD6', '\b', '\f', '\x1', '\x2', '\xD6', '\xDC', '\x3', - '\x2', '\x2', '\x2', '\xD7', '\xD8', '\a', '\x14', '\x2', '\x2', '\xD8', - '\xD9', '\x5', '\x14', '\v', '\x2', '\xD9', '\xDA', '\b', '\f', '\x1', - '\x2', '\xDA', '\xDC', '\x3', '\x2', '\x2', '\x2', '\xDB', '\xC7', '\x3', - '\x2', '\x2', '\x2', '\xDB', '\xCB', '\x3', '\x2', '\x2', '\x2', '\xDB', - '\xCF', '\x3', '\x2', '\x2', '\x2', '\xDB', '\xD3', '\x3', '\x2', '\x2', - '\x2', '\xDB', '\xD7', '\x3', '\x2', '\x2', '\x2', '\xDC', '\xDF', '\x3', - '\x2', '\x2', '\x2', '\xDD', '\xDB', '\x3', '\x2', '\x2', '\x2', '\xDD', - '\xDE', '\x3', '\x2', '\x2', '\x2', '\xDE', '\x17', '\x3', '\x2', '\x2', - '\x2', '\xDF', '\xDD', '\x3', '\x2', '\x2', '\x2', '\xE0', '\xE1', '\a', - '\x15', '\x2', '\x2', '\xE1', '\xE2', '\x5', '\x16', '\f', '\x2', '\xE2', - '\xE3', '\b', '\r', '\x1', '\x2', '\xE3', '\xE5', '\x3', '\x2', '\x2', - '\x2', '\xE4', '\xE0', '\x3', '\x2', '\x2', '\x2', '\xE5', '\xE6', '\x3', - '\x2', '\x2', '\x2', '\xE6', '\xE4', '\x3', '\x2', '\x2', '\x2', '\xE6', - '\xE7', '\x3', '\x2', '\x2', '\x2', '\xE7', '\x19', '\x3', '\x2', '\x2', - '\x2', '\xE8', '\xE9', '\x5', '\x16', '\f', '\x2', '\xE9', '\xED', '\b', - '\xE', '\x1', '\x2', '\xEA', '\xEB', '\x5', '\x18', '\r', '\x2', '\xEB', - '\xEC', '\b', '\xE', '\x1', '\x2', '\xEC', '\xEE', '\x3', '\x2', '\x2', - '\x2', '\xED', '\xEA', '\x3', '\x2', '\x2', '\x2', '\xED', '\xEE', '\x3', - '\x2', '\x2', '\x2', '\xEE', '\x1B', '\x3', '\x2', '\x2', '\x2', '\xEF', - '\xF0', '\a', '\x16', '\x2', '\x2', '\xF0', '\xF1', '\x5', '\x1A', '\xE', - '\x2', '\xF1', '\xF2', '\b', '\xF', '\x1', '\x2', '\xF2', '\xFB', '\x3', - '\x2', '\x2', '\x2', '\xF3', '\xF4', '\a', '\x16', '\x2', '\x2', '\xF4', - '\xF5', '\x5', '\x1C', '\xF', '\x2', '\xF5', '\xF6', '\b', '\xF', '\x1', - '\x2', '\xF6', '\xFB', '\x3', '\x2', '\x2', '\x2', '\xF7', '\xF8', '\x5', - '\x1A', '\xE', '\x2', '\xF8', '\xF9', '\b', '\xF', '\x1', '\x2', '\xF9', - '\xFB', '\x3', '\x2', '\x2', '\x2', '\xFA', '\xEF', '\x3', '\x2', '\x2', - '\x2', '\xFA', '\xF3', '\x3', '\x2', '\x2', '\x2', '\xFA', '\xF7', '\x3', - '\x2', '\x2', '\x2', '\xFB', '\x1D', '\x3', '\x2', '\x2', '\x2', '\xFC', - '\xFD', '\x5', '\x1C', '\xF', '\x2', '\xFD', '\x108', '\b', '\x10', '\x1', - '\x2', '\xFE', '\xFF', '\a', '\x17', '\x2', '\x2', '\xFF', '\x100', '\x5', - '\x1C', '\xF', '\x2', '\x100', '\x101', '\b', '\x10', '\x1', '\x2', '\x101', - '\x107', '\x3', '\x2', '\x2', '\x2', '\x102', '\x103', '\a', '\x18', '\x2', - '\x2', '\x103', '\x104', '\x5', '\x1C', '\xF', '\x2', '\x104', '\x105', - '\b', '\x10', '\x1', '\x2', '\x105', '\x107', '\x3', '\x2', '\x2', '\x2', - '\x106', '\xFE', '\x3', '\x2', '\x2', '\x2', '\x106', '\x102', '\x3', - '\x2', '\x2', '\x2', '\x107', '\x10A', '\x3', '\x2', '\x2', '\x2', '\x108', - '\x106', '\x3', '\x2', '\x2', '\x2', '\x108', '\x109', '\x3', '\x2', '\x2', - '\x2', '\x109', '\x1F', '\x3', '\x2', '\x2', '\x2', '\x10A', '\x108', - '\x3', '\x2', '\x2', '\x2', '\x10B', '\x10C', '\x5', '\x1E', '\x10', '\x2', - '\x10C', '\x113', '\b', '\x11', '\x1', '\x2', '\x10D', '\x10E', '\a', - '\x19', '\x2', '\x2', '\x10E', '\x10F', '\x5', '\x1E', '\x10', '\x2', - '\x10F', '\x110', '\b', '\x11', '\x1', '\x2', '\x110', '\x112', '\x3', - '\x2', '\x2', '\x2', '\x111', '\x10D', '\x3', '\x2', '\x2', '\x2', '\x112', - '\x115', '\x3', '\x2', '\x2', '\x2', '\x113', '\x111', '\x3', '\x2', '\x2', - '\x2', '\x113', '\x114', '\x3', '\x2', '\x2', '\x2', '\x114', '!', '\x3', - '\x2', '\x2', '\x2', '\x115', '\x113', '\x3', '\x2', '\x2', '\x2', '\x116', - '\x117', '\x5', ' ', '\x11', '\x2', '\x117', '\x122', '\b', '\x12', '\x1', - '\x2', '\x118', '\x119', '\a', '\x1A', '\x2', '\x2', '\x119', '\x11A', - '\x5', ' ', '\x11', '\x2', '\x11A', '\x11B', '\b', '\x12', '\x1', '\x2', - '\x11B', '\x121', '\x3', '\x2', '\x2', '\x2', '\x11C', '\x11D', '\a', - '\x1B', '\x2', '\x2', '\x11D', '\x11E', '\x5', ' ', '\x11', '\x2', '\x11E', - '\x11F', '\b', '\x12', '\x1', '\x2', '\x11F', '\x121', '\x3', '\x2', '\x2', - '\x2', '\x120', '\x118', '\x3', '\x2', '\x2', '\x2', '\x120', '\x11C', - '\x3', '\x2', '\x2', '\x2', '\x121', '\x124', '\x3', '\x2', '\x2', '\x2', - '\x122', '\x120', '\x3', '\x2', '\x2', '\x2', '\x122', '\x123', '\x3', - '\x2', '\x2', '\x2', '\x123', '#', '\x3', '\x2', '\x2', '\x2', '\x124', - '\x122', '\x3', '\x2', '\x2', '\x2', '\x125', '\x126', '\x5', '\"', '\x12', - '\x2', '\x126', '\x131', '\b', '\x13', '\x1', '\x2', '\x127', '\x128', - '\a', '\x1C', '\x2', '\x2', '\x128', '\x129', '\x5', '\"', '\x12', '\x2', - '\x129', '\x12A', '\b', '\x13', '\x1', '\x2', '\x12A', '\x130', '\x3', - '\x2', '\x2', '\x2', '\x12B', '\x12C', '\a', '\x1D', '\x2', '\x2', '\x12C', - '\x12D', '\x5', '\"', '\x12', '\x2', '\x12D', '\x12E', '\b', '\x13', '\x1', - '\x2', '\x12E', '\x130', '\x3', '\x2', '\x2', '\x2', '\x12F', '\x127', - '\x3', '\x2', '\x2', '\x2', '\x12F', '\x12B', '\x3', '\x2', '\x2', '\x2', - '\x130', '\x133', '\x3', '\x2', '\x2', '\x2', '\x131', '\x12F', '\x3', - '\x2', '\x2', '\x2', '\x131', '\x132', '\x3', '\x2', '\x2', '\x2', '\x132', - '%', '\x3', '\x2', '\x2', '\x2', '\x133', '\x131', '\x3', '\x2', '\x2', - '\x2', '\x134', '\x135', '\x5', '$', '\x13', '\x2', '\x135', '\x13C', - '\b', '\x14', '\x1', '\x2', '\x136', '\x137', '\a', '\x1E', '\x2', '\x2', - '\x137', '\x138', '\x5', '$', '\x13', '\x2', '\x138', '\x139', '\b', '\x14', - '\x1', '\x2', '\x139', '\x13B', '\x3', '\x2', '\x2', '\x2', '\x13A', '\x136', - '\x3', '\x2', '\x2', '\x2', '\x13B', '\x13E', '\x3', '\x2', '\x2', '\x2', - '\x13C', '\x13A', '\x3', '\x2', '\x2', '\x2', '\x13C', '\x13D', '\x3', - '\x2', '\x2', '\x2', '\x13D', '\'', '\x3', '\x2', '\x2', '\x2', '\x13E', - '\x13C', '\x3', '\x2', '\x2', '\x2', '\x13F', '\x140', '\x5', '&', '\x14', - '\x2', '\x140', '\x141', '\b', '\x15', '\x1', '\x2', '\x141', ')', '\x3', - '\x2', '\x2', '\x2', '\x142', '\x143', '\x5', '(', '\x15', '\x2', '\x143', - '\x14A', '\b', '\x16', '\x1', '\x2', '\x144', '\x145', '\a', '\x1F', '\x2', - '\x2', '\x145', '\x146', '\x5', '(', '\x15', '\x2', '\x146', '\x147', - '\b', '\x16', '\x1', '\x2', '\x147', '\x149', '\x3', '\x2', '\x2', '\x2', - '\x148', '\x144', '\x3', '\x2', '\x2', '\x2', '\x149', '\x14C', '\x3', - '\x2', '\x2', '\x2', '\x14A', '\x148', '\x3', '\x2', '\x2', '\x2', '\x14A', - '\x14B', '\x3', '\x2', '\x2', '\x2', '\x14B', '\x14E', '\x3', '\x2', '\x2', - '\x2', '\x14C', '\x14A', '\x3', '\x2', '\x2', '\x2', '\x14D', '\x142', - '\x3', '\x2', '\x2', '\x2', '\x14D', '\x14E', '\x3', '\x2', '\x2', '\x2', - '\x14E', '+', '\x3', '\x2', '\x2', '\x2', '\x14F', '\x150', '\x5', '(', - '\x15', '\x2', '\x150', '\x151', '\b', '\x17', '\x1', '\x2', '\x151', - '\x152', '\a', ' ', '\x2', '\x2', '\x152', '\x153', '\x5', '(', '\x15', - '\x2', '\x153', '\x154', '\b', '\x17', '\x1', '\x2', '\x154', '-', '\x3', - '\x2', '\x2', '\x2', '\x155', '\x156', '\x5', '(', '\x15', '\x2', '\x156', - '\x157', '\b', '\x18', '\x1', '\x2', '\x157', '\x158', '\a', '!', '\x2', - '\x2', '\x158', '\x159', '\x5', '(', '\x15', '\x2', '\x159', '\x15A', - '\b', '\x18', '\x1', '\x2', '\x15A', '/', '\x3', '\x2', '\x2', '\x2', - '\x15B', '\x15C', '\a', '\"', '\x2', '\x2', '\x15C', '\x320', '\b', '\x19', - '\x1', '\x2', '\x15D', '\x15E', '\a', '#', '\x2', '\x2', '\x15E', '\x320', - '\b', '\x19', '\x1', '\x2', '\x15F', '\x160', '\a', '|', '\x2', '\x2', - '\x160', '\x320', '\b', '\x19', '\x1', '\x2', '\x161', '\x162', '\a', - '~', '\x2', '\x2', '\x162', '\x320', '\b', '\x19', '\x1', '\x2', '\x163', - '\x164', '\a', '}', '\x2', '\x2', '\x164', '\x320', '\b', '\x19', '\x1', - '\x2', '\x165', '\x166', '\a', '\x7F', '\x2', '\x2', '\x166', '\x320', - '\b', '\x19', '\x1', '\x2', '\x167', '\x168', '\a', '$', '\x2', '\x2', - '\x168', '\x169', '\x5', '(', '\x15', '\x2', '\x169', '\x16A', '\a', '%', - '\x2', '\x2', '\x16A', '\x16B', '\b', '\x19', '\x1', '\x2', '\x16B', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x16C', '\x16D', '\a', '&', '\x2', '\x2', - '\x16D', '\x16E', '\x5', '*', '\x16', '\x2', '\x16E', '\x16F', '\a', '\'', - '\x2', '\x2', '\x16F', '\x170', '\b', '\x19', '\x1', '\x2', '\x170', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x171', '\x172', '\a', '&', '\x2', '\x2', - '\x172', '\x173', '\x5', '*', '\x16', '\x2', '\x173', '\x174', '\a', '(', - '\x2', '\x2', '\x174', '\x175', '\b', '\x19', '\x1', '\x2', '\x175', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x176', '\x177', '\a', ')', '\x2', '\x2', - '\x177', '\x178', '\x5', ',', '\x17', '\x2', '\x178', '\x179', '\a', '*', - '\x2', '\x2', '\x179', '\x17A', '\b', '\x19', '\x1', '\x2', '\x17A', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x17B', '\x17C', '\a', '&', '\x2', '\x2', - '\x17C', '\x17D', '\x5', ',', '\x17', '\x2', '\x17D', '\x17E', '\a', '*', - '\x2', '\x2', '\x17E', '\x17F', '\b', '\x19', '\x1', '\x2', '\x17F', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x180', '\x181', '\a', '&', '\x2', '\x2', - '\x181', '\x182', '\x5', ',', '\x17', '\x2', '\x182', '\x183', '\a', '(', - '\x2', '\x2', '\x183', '\x184', '\b', '\x19', '\x1', '\x2', '\x184', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x185', '\x186', '\a', ')', '\x2', '\x2', - '\x186', '\x187', '\x5', ',', '\x17', '\x2', '\x187', '\x188', '\a', '(', - '\x2', '\x2', '\x188', '\x189', '\b', '\x19', '\x1', '\x2', '\x189', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x18A', '\x18B', '\a', ')', '\x2', '\x2', - '\x18B', '\x18C', '\x5', '(', '\x15', '\x2', '\x18C', '\x18D', '\a', '*', - '\x2', '\x2', '\x18D', '\x18E', '\b', '\x19', '\x1', '\x2', '\x18E', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x18F', '\x190', '\a', '+', '\x2', '\x2', - '\x190', '\x191', '\x5', '.', '\x18', '\x2', '\x191', '\x192', '\a', ',', - '\x2', '\x2', '\x192', '\x193', '\b', '\x19', '\x1', '\x2', '\x193', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x194', '\x195', '\a', '+', '\x2', '\x2', - '\x195', '\x196', '\x5', '*', '\x16', '\x2', '\x196', '\x197', '\a', ',', - '\x2', '\x2', '\x197', '\x198', '\b', '\x19', '\x1', '\x2', '\x198', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x199', '\x19A', '\a', '-', '\x2', '\x2', - '\x19A', '\x19B', '\x5', '*', '\x16', '\x2', '\x19B', '\x19C', '\a', '*', - '\x2', '\x2', '\x19C', '\x19D', '\b', '\x19', '\x1', '\x2', '\x19D', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x19E', '\x19F', '\a', '.', '\x2', '\x2', - '\x19F', '\x1A0', '\x5', '*', '\x16', '\x2', '\x1A0', '\x1A1', '\a', '*', - '\x2', '\x2', '\x1A1', '\x1A2', '\b', '\x19', '\x1', '\x2', '\x1A2', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1A3', '\x1A4', '\a', '/', '\x2', '\x2', - '\x1A4', '\x1A5', '\x5', '*', '\x16', '\x2', '\x1A5', '\x1A6', '\a', '*', - '\x2', '\x2', '\x1A6', '\x1A7', '\b', '\x19', '\x1', '\x2', '\x1A7', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1A8', '\x1A9', '\a', '\x30', '\x2', '\x2', - '\x1A9', '\x1AA', '\x5', '*', '\x16', '\x2', '\x1AA', '\x1AB', '\a', '*', - '\x2', '\x2', '\x1AB', '\x1AC', '\b', '\x19', '\x1', '\x2', '\x1AC', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1AD', '\x1AE', '\a', '\x31', '\x2', '\x2', - '\x1AE', '\x1AF', '\x5', '*', '\x16', '\x2', '\x1AF', '\x1B0', '\a', '*', - '\x2', '\x2', '\x1B0', '\x1B1', '\b', '\x19', '\x1', '\x2', '\x1B1', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1B2', '\x1B3', '\a', '\x32', '\x2', '\x2', - '\x1B3', '\x1B4', '\x5', '*', '\x16', '\x2', '\x1B4', '\x1B5', '\a', '*', - '\x2', '\x2', '\x1B5', '\x1B6', '\b', '\x19', '\x1', '\x2', '\x1B6', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1B7', '\x1B8', '\a', '\x33', '\x2', '\x2', - '\x1B8', '\x1B9', '\x5', '*', '\x16', '\x2', '\x1B9', '\x1BA', '\a', '*', - '\x2', '\x2', '\x1BA', '\x1BB', '\b', '\x19', '\x1', '\x2', '\x1BB', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1BC', '\x1BD', '\a', '\x34', '\x2', '\x2', - '\x1BD', '\x1BE', '\x5', '*', '\x16', '\x2', '\x1BE', '\x1BF', '\a', '*', - '\x2', '\x2', '\x1BF', '\x1C0', '\b', '\x19', '\x1', '\x2', '\x1C0', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1C1', '\x1C2', '\a', '\x35', '\x2', '\x2', - '\x1C2', '\x1C3', '\x5', '*', '\x16', '\x2', '\x1C3', '\x1C4', '\a', '*', - '\x2', '\x2', '\x1C4', '\x1C5', '\b', '\x19', '\x1', '\x2', '\x1C5', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1C6', '\x1C7', '\a', '\x36', '\x2', '\x2', - '\x1C7', '\x1C8', '\x5', '*', '\x16', '\x2', '\x1C8', '\x1C9', '\a', '*', - '\x2', '\x2', '\x1C9', '\x1CA', '\b', '\x19', '\x1', '\x2', '\x1CA', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1CB', '\x1CC', '\a', '\x37', '\x2', '\x2', - '\x1CC', '\x1CD', '\x5', '*', '\x16', '\x2', '\x1CD', '\x1CE', '\a', '*', - '\x2', '\x2', '\x1CE', '\x1CF', '\b', '\x19', '\x1', '\x2', '\x1CF', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1D0', '\x1D1', '\a', '\x38', '\x2', '\x2', - '\x1D1', '\x1D2', '\x5', '*', '\x16', '\x2', '\x1D2', '\x1D3', '\a', '*', - '\x2', '\x2', '\x1D3', '\x1D4', '\b', '\x19', '\x1', '\x2', '\x1D4', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1D5', '\x1D6', '\a', '\x39', '\x2', '\x2', - '\x1D6', '\x1D7', '\x5', '*', '\x16', '\x2', '\x1D7', '\x1D8', '\a', '*', - '\x2', '\x2', '\x1D8', '\x1D9', '\b', '\x19', '\x1', '\x2', '\x1D9', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1DA', '\x1DB', '\a', ':', '\x2', '\x2', - '\x1DB', '\x1DC', '\x5', '*', '\x16', '\x2', '\x1DC', '\x1DD', '\a', '*', - '\x2', '\x2', '\x1DD', '\x1DE', '\b', '\x19', '\x1', '\x2', '\x1DE', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1DF', '\x1E0', '\a', ';', '\x2', '\x2', - '\x1E0', '\x1E1', '\x5', '*', '\x16', '\x2', '\x1E1', '\x1E2', '\a', '*', - '\x2', '\x2', '\x1E2', '\x1E3', '\b', '\x19', '\x1', '\x2', '\x1E3', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1E4', '\x1E5', '\a', '<', '\x2', '\x2', - '\x1E5', '\x1E6', '\x5', '*', '\x16', '\x2', '\x1E6', '\x1E7', '\a', '*', - '\x2', '\x2', '\x1E7', '\x1E8', '\b', '\x19', '\x1', '\x2', '\x1E8', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1E9', '\x1EA', '\a', '=', '\x2', '\x2', - '\x1EA', '\x1EB', '\x5', '*', '\x16', '\x2', '\x1EB', '\x1EC', '\a', '*', - '\x2', '\x2', '\x1EC', '\x1ED', '\b', '\x19', '\x1', '\x2', '\x1ED', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1EE', '\x1EF', '\a', '>', '\x2', '\x2', - '\x1EF', '\x1F0', '\x5', '*', '\x16', '\x2', '\x1F0', '\x1F1', '\a', '*', - '\x2', '\x2', '\x1F1', '\x1F2', '\b', '\x19', '\x1', '\x2', '\x1F2', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1F3', '\x1F4', '\a', '?', '\x2', '\x2', - '\x1F4', '\x1F5', '\x5', '*', '\x16', '\x2', '\x1F5', '\x1F6', '\a', '*', - '\x2', '\x2', '\x1F6', '\x1F7', '\b', '\x19', '\x1', '\x2', '\x1F7', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1F8', '\x1F9', '\a', '@', '\x2', '\x2', - '\x1F9', '\x1FA', '\x5', '*', '\x16', '\x2', '\x1FA', '\x1FB', '\a', '*', - '\x2', '\x2', '\x1FB', '\x1FC', '\b', '\x19', '\x1', '\x2', '\x1FC', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x1FD', '\x1FE', '\a', '\x41', '\x2', '\x2', - '\x1FE', '\x1FF', '\x5', '*', '\x16', '\x2', '\x1FF', '\x200', '\a', '*', - '\x2', '\x2', '\x200', '\x201', '\b', '\x19', '\x1', '\x2', '\x201', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x202', '\x203', '\a', '\x42', '\x2', '\x2', - '\x203', '\x204', '\x5', '*', '\x16', '\x2', '\x204', '\x205', '\a', '*', - '\x2', '\x2', '\x205', '\x206', '\b', '\x19', '\x1', '\x2', '\x206', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x207', '\x208', '\a', '\x43', '\x2', '\x2', - '\x208', '\x209', '\x5', '*', '\x16', '\x2', '\x209', '\x20A', '\a', '*', - '\x2', '\x2', '\x20A', '\x20B', '\b', '\x19', '\x1', '\x2', '\x20B', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x20C', '\x20D', '\a', '\x44', '\x2', '\x2', - '\x20D', '\x20E', '\x5', '*', '\x16', '\x2', '\x20E', '\x20F', '\a', '*', - '\x2', '\x2', '\x20F', '\x210', '\b', '\x19', '\x1', '\x2', '\x210', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x211', '\x212', '\a', '\x45', '\x2', '\x2', - '\x212', '\x213', '\x5', '*', '\x16', '\x2', '\x213', '\x214', '\a', '*', - '\x2', '\x2', '\x214', '\x215', '\b', '\x19', '\x1', '\x2', '\x215', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x216', '\x217', '\a', '\x46', '\x2', '\x2', - '\x217', '\x218', '\x5', '*', '\x16', '\x2', '\x218', '\x219', '\a', '*', - '\x2', '\x2', '\x219', '\x21A', '\b', '\x19', '\x1', '\x2', '\x21A', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x21B', '\x21C', '\a', 'G', '\x2', '\x2', - '\x21C', '\x21D', '\x5', '*', '\x16', '\x2', '\x21D', '\x21E', '\a', '*', - '\x2', '\x2', '\x21E', '\x21F', '\b', '\x19', '\x1', '\x2', '\x21F', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x220', '\x221', '\a', 'H', '\x2', '\x2', - '\x221', '\x222', '\x5', '*', '\x16', '\x2', '\x222', '\x223', '\a', '*', - '\x2', '\x2', '\x223', '\x224', '\b', '\x19', '\x1', '\x2', '\x224', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x225', '\x226', '\a', 'I', '\x2', '\x2', - '\x226', '\x227', '\x5', '*', '\x16', '\x2', '\x227', '\x228', '\a', '*', - '\x2', '\x2', '\x228', '\x229', '\b', '\x19', '\x1', '\x2', '\x229', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x22A', '\x22B', '\a', 'J', '\x2', '\x2', - '\x22B', '\x22C', '\x5', '*', '\x16', '\x2', '\x22C', '\x22D', '\a', '*', - '\x2', '\x2', '\x22D', '\x22E', '\b', '\x19', '\x1', '\x2', '\x22E', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x22F', '\x230', '\a', 'K', '\x2', '\x2', - '\x230', '\x231', '\x5', '*', '\x16', '\x2', '\x231', '\x232', '\a', '*', - '\x2', '\x2', '\x232', '\x233', '\b', '\x19', '\x1', '\x2', '\x233', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x234', '\x235', '\a', 'L', '\x2', '\x2', - '\x235', '\x236', '\x5', '*', '\x16', '\x2', '\x236', '\x237', '\a', '*', - '\x2', '\x2', '\x237', '\x238', '\b', '\x19', '\x1', '\x2', '\x238', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x239', '\x23A', '\a', 'M', '\x2', '\x2', - '\x23A', '\x23B', '\x5', '*', '\x16', '\x2', '\x23B', '\x23C', '\a', '*', - '\x2', '\x2', '\x23C', '\x23D', '\b', '\x19', '\x1', '\x2', '\x23D', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x23E', '\x23F', '\a', 'N', '\x2', '\x2', - '\x23F', '\x240', '\x5', '*', '\x16', '\x2', '\x240', '\x241', '\a', '*', - '\x2', '\x2', '\x241', '\x242', '\b', '\x19', '\x1', '\x2', '\x242', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x243', '\x244', '\a', 'O', '\x2', '\x2', - '\x244', '\x245', '\x5', '*', '\x16', '\x2', '\x245', '\x246', '\a', '*', - '\x2', '\x2', '\x246', '\x247', '\b', '\x19', '\x1', '\x2', '\x247', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x248', '\x249', '\a', 'P', '\x2', '\x2', - '\x249', '\x24A', '\x5', '*', '\x16', '\x2', '\x24A', '\x24B', '\a', '*', - '\x2', '\x2', '\x24B', '\x24C', '\b', '\x19', '\x1', '\x2', '\x24C', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x24D', '\x24E', '\a', 'Q', '\x2', '\x2', - '\x24E', '\x24F', '\x5', '*', '\x16', '\x2', '\x24F', '\x250', '\a', '*', - '\x2', '\x2', '\x250', '\x251', '\b', '\x19', '\x1', '\x2', '\x251', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x252', '\x253', '\a', 'R', '\x2', '\x2', - '\x253', '\x254', '\x5', '*', '\x16', '\x2', '\x254', '\x255', '\a', '*', - '\x2', '\x2', '\x255', '\x256', '\b', '\x19', '\x1', '\x2', '\x256', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x257', '\x258', '\a', 'S', '\x2', '\x2', - '\x258', '\x259', '\x5', '*', '\x16', '\x2', '\x259', '\x25A', '\a', '*', - '\x2', '\x2', '\x25A', '\x25B', '\b', '\x19', '\x1', '\x2', '\x25B', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x25C', '\x25D', '\a', 'T', '\x2', '\x2', - '\x25D', '\x25E', '\x5', '*', '\x16', '\x2', '\x25E', '\x25F', '\a', '*', - '\x2', '\x2', '\x25F', '\x260', '\b', '\x19', '\x1', '\x2', '\x260', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x261', '\x262', '\a', 'U', '\x2', '\x2', - '\x262', '\x263', '\x5', '*', '\x16', '\x2', '\x263', '\x264', '\a', '*', - '\x2', '\x2', '\x264', '\x265', '\b', '\x19', '\x1', '\x2', '\x265', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x266', '\x267', '\a', 'V', '\x2', '\x2', - '\x267', '\x268', '\x5', '*', '\x16', '\x2', '\x268', '\x269', '\a', '*', - '\x2', '\x2', '\x269', '\x26A', '\b', '\x19', '\x1', '\x2', '\x26A', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x26B', '\x26C', '\a', 'W', '\x2', '\x2', - '\x26C', '\x26D', '\x5', '*', '\x16', '\x2', '\x26D', '\x26E', '\a', '*', - '\x2', '\x2', '\x26E', '\x26F', '\b', '\x19', '\x1', '\x2', '\x26F', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x270', '\x271', '\a', 'X', '\x2', '\x2', - '\x271', '\x272', '\x5', '*', '\x16', '\x2', '\x272', '\x273', '\a', '*', - '\x2', '\x2', '\x273', '\x274', '\b', '\x19', '\x1', '\x2', '\x274', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x275', '\x276', '\a', 'Y', '\x2', '\x2', - '\x276', '\x277', '\x5', '*', '\x16', '\x2', '\x277', '\x278', '\a', '*', - '\x2', '\x2', '\x278', '\x279', '\b', '\x19', '\x1', '\x2', '\x279', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x27A', '\x27B', '\a', 'Z', '\x2', '\x2', - '\x27B', '\x27C', '\x5', '*', '\x16', '\x2', '\x27C', '\x27D', '\a', '*', - '\x2', '\x2', '\x27D', '\x27E', '\b', '\x19', '\x1', '\x2', '\x27E', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x27F', '\x280', '\a', '[', '\x2', '\x2', - '\x280', '\x281', '\x5', '*', '\x16', '\x2', '\x281', '\x282', '\a', '*', - '\x2', '\x2', '\x282', '\x283', '\b', '\x19', '\x1', '\x2', '\x283', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x284', '\x285', '\a', '\\', '\x2', '\x2', - '\x285', '\x286', '\x5', '*', '\x16', '\x2', '\x286', '\x287', '\a', '*', - '\x2', '\x2', '\x287', '\x288', '\b', '\x19', '\x1', '\x2', '\x288', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x289', '\x28A', '\a', ']', '\x2', '\x2', - '\x28A', '\x28B', '\x5', '*', '\x16', '\x2', '\x28B', '\x28C', '\a', '*', - '\x2', '\x2', '\x28C', '\x28D', '\b', '\x19', '\x1', '\x2', '\x28D', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x28E', '\x28F', '\a', '^', '\x2', '\x2', - '\x28F', '\x290', '\x5', '*', '\x16', '\x2', '\x290', '\x291', '\a', '*', - '\x2', '\x2', '\x291', '\x292', '\b', '\x19', '\x1', '\x2', '\x292', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x293', '\x294', '\a', '_', '\x2', '\x2', - '\x294', '\x295', '\x5', '*', '\x16', '\x2', '\x295', '\x296', '\a', '*', - '\x2', '\x2', '\x296', '\x297', '\b', '\x19', '\x1', '\x2', '\x297', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x298', '\x299', '\a', '`', '\x2', '\x2', - '\x299', '\x29A', '\x5', '*', '\x16', '\x2', '\x29A', '\x29B', '\a', '*', - '\x2', '\x2', '\x29B', '\x29C', '\b', '\x19', '\x1', '\x2', '\x29C', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x29D', '\x29E', '\a', '\x61', '\x2', '\x2', - '\x29E', '\x29F', '\x5', '*', '\x16', '\x2', '\x29F', '\x2A0', '\a', '*', - '\x2', '\x2', '\x2A0', '\x2A1', '\b', '\x19', '\x1', '\x2', '\x2A1', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2A2', '\x2A3', '\a', '\x62', '\x2', '\x2', - '\x2A3', '\x2A4', '\x5', '*', '\x16', '\x2', '\x2A4', '\x2A5', '\a', '*', - '\x2', '\x2', '\x2A5', '\x2A6', '\b', '\x19', '\x1', '\x2', '\x2A6', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2A7', '\x2A8', '\a', '\x63', '\x2', '\x2', - '\x2A8', '\x2A9', '\x5', '*', '\x16', '\x2', '\x2A9', '\x2AA', '\a', '*', - '\x2', '\x2', '\x2AA', '\x2AB', '\b', '\x19', '\x1', '\x2', '\x2AB', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2AC', '\x2AD', '\a', '\x64', '\x2', '\x2', - '\x2AD', '\x2AE', '\x5', '*', '\x16', '\x2', '\x2AE', '\x2AF', '\a', '*', - '\x2', '\x2', '\x2AF', '\x2B0', '\b', '\x19', '\x1', '\x2', '\x2B0', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2B1', '\x2B2', '\a', '\x65', '\x2', '\x2', - '\x2B2', '\x2B3', '\x5', '*', '\x16', '\x2', '\x2B3', '\x2B4', '\a', '*', - '\x2', '\x2', '\x2B4', '\x2B5', '\b', '\x19', '\x1', '\x2', '\x2B5', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2B6', '\x2B7', '\a', '\x66', '\x2', '\x2', - '\x2B7', '\x2B8', '\x5', '*', '\x16', '\x2', '\x2B8', '\x2B9', '\a', '*', - '\x2', '\x2', '\x2B9', '\x2BA', '\b', '\x19', '\x1', '\x2', '\x2BA', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2BB', '\x2BC', '\a', 'g', '\x2', '\x2', - '\x2BC', '\x2BD', '\x5', '*', '\x16', '\x2', '\x2BD', '\x2BE', '\a', '*', - '\x2', '\x2', '\x2BE', '\x2BF', '\b', '\x19', '\x1', '\x2', '\x2BF', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2C0', '\x2C1', '\a', 'h', '\x2', '\x2', - '\x2C1', '\x2C2', '\x5', '*', '\x16', '\x2', '\x2C2', '\x2C3', '\a', '*', - '\x2', '\x2', '\x2C3', '\x2C4', '\b', '\x19', '\x1', '\x2', '\x2C4', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2C5', '\x2C6', '\a', 'i', '\x2', '\x2', - '\x2C6', '\x2C7', '\x5', '*', '\x16', '\x2', '\x2C7', '\x2C8', '\a', '*', - '\x2', '\x2', '\x2C8', '\x2C9', '\b', '\x19', '\x1', '\x2', '\x2C9', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2CA', '\x2CB', '\a', 'j', '\x2', '\x2', - '\x2CB', '\x2CC', '\x5', '*', '\x16', '\x2', '\x2CC', '\x2CD', '\a', '*', - '\x2', '\x2', '\x2CD', '\x2CE', '\b', '\x19', '\x1', '\x2', '\x2CE', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2CF', '\x2D0', '\a', 'k', '\x2', '\x2', - '\x2D0', '\x2D1', '\x5', '*', '\x16', '\x2', '\x2D1', '\x2D2', '\a', '*', - '\x2', '\x2', '\x2D2', '\x2D3', '\b', '\x19', '\x1', '\x2', '\x2D3', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2D4', '\x2D5', '\a', 'l', '\x2', '\x2', - '\x2D5', '\x2D6', '\x5', '*', '\x16', '\x2', '\x2D6', '\x2D7', '\a', '*', - '\x2', '\x2', '\x2D7', '\x2D8', '\b', '\x19', '\x1', '\x2', '\x2D8', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2D9', '\x2DA', '\a', 'm', '\x2', '\x2', - '\x2DA', '\x2DB', '\x5', '*', '\x16', '\x2', '\x2DB', '\x2DC', '\a', '*', - '\x2', '\x2', '\x2DC', '\x2DD', '\b', '\x19', '\x1', '\x2', '\x2DD', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2DE', '\x2DF', '\a', 'n', '\x2', '\x2', - '\x2DF', '\x2E0', '\x5', '*', '\x16', '\x2', '\x2E0', '\x2E1', '\a', '*', - '\x2', '\x2', '\x2E1', '\x2E2', '\b', '\x19', '\x1', '\x2', '\x2E2', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2E3', '\x2E4', '\a', 'o', '\x2', '\x2', - '\x2E4', '\x2E5', '\x5', '*', '\x16', '\x2', '\x2E5', '\x2E6', '\a', '*', - '\x2', '\x2', '\x2E6', '\x2E7', '\b', '\x19', '\x1', '\x2', '\x2E7', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2E8', '\x2E9', '\a', 'p', '\x2', '\x2', - '\x2E9', '\x2EA', '\x5', '*', '\x16', '\x2', '\x2EA', '\x2EB', '\a', '*', - '\x2', '\x2', '\x2EB', '\x2EC', '\b', '\x19', '\x1', '\x2', '\x2EC', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2ED', '\x2EE', '\a', 'q', '\x2', '\x2', - '\x2EE', '\x2EF', '\x5', '*', '\x16', '\x2', '\x2EF', '\x2F0', '\a', '*', - '\x2', '\x2', '\x2F0', '\x2F1', '\b', '\x19', '\x1', '\x2', '\x2F1', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2F2', '\x2F3', '\a', 'r', '\x2', '\x2', - '\x2F3', '\x2F4', '\x5', '*', '\x16', '\x2', '\x2F4', '\x2F5', '\a', '*', - '\x2', '\x2', '\x2F5', '\x2F6', '\b', '\x19', '\x1', '\x2', '\x2F6', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2F7', '\x2F8', '\a', 's', '\x2', '\x2', - '\x2F8', '\x2F9', '\x5', '*', '\x16', '\x2', '\x2F9', '\x2FA', '\a', '*', - '\x2', '\x2', '\x2FA', '\x2FB', '\b', '\x19', '\x1', '\x2', '\x2FB', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x2FC', '\x2FD', '\a', 't', '\x2', '\x2', - '\x2FD', '\x2FE', '\x5', '*', '\x16', '\x2', '\x2FE', '\x2FF', '\a', '*', - '\x2', '\x2', '\x2FF', '\x300', '\b', '\x19', '\x1', '\x2', '\x300', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x301', '\x302', '\a', 'u', '\x2', '\x2', - '\x302', '\x303', '\x5', '*', '\x16', '\x2', '\x303', '\x304', '\a', '*', - '\x2', '\x2', '\x304', '\x305', '\b', '\x19', '\x1', '\x2', '\x305', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x306', '\x307', '\a', 'v', '\x2', '\x2', - '\x307', '\x308', '\x5', '*', '\x16', '\x2', '\x308', '\x309', '\a', '*', - '\x2', '\x2', '\x309', '\x30A', '\b', '\x19', '\x1', '\x2', '\x30A', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x30B', '\x30C', '\a', 'w', '\x2', '\x2', - '\x30C', '\x30D', '\x5', '*', '\x16', '\x2', '\x30D', '\x30E', '\a', '*', - '\x2', '\x2', '\x30E', '\x30F', '\b', '\x19', '\x1', '\x2', '\x30F', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x310', '\x311', '\a', 'x', '\x2', '\x2', - '\x311', '\x312', '\x5', '*', '\x16', '\x2', '\x312', '\x313', '\a', '*', - '\x2', '\x2', '\x313', '\x314', '\b', '\x19', '\x1', '\x2', '\x314', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x315', '\x316', '\a', 'y', '\x2', '\x2', - '\x316', '\x317', '\x5', '*', '\x16', '\x2', '\x317', '\x318', '\a', '*', - '\x2', '\x2', '\x318', '\x319', '\b', '\x19', '\x1', '\x2', '\x319', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x31A', '\x31B', '\a', 'z', '\x2', '\x2', - '\x31B', '\x31C', '\x5', '*', '\x16', '\x2', '\x31C', '\x31D', '\a', '*', - '\x2', '\x2', '\x31D', '\x31E', '\b', '\x19', '\x1', '\x2', '\x31E', '\x320', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x15B', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x15D', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x15F', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x161', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x163', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x165', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x167', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x16C', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x171', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x176', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x17B', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x180', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x185', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x18A', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x18F', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x194', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x199', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x19E', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x1A3', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x1A8', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x1AD', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x1B2', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x1B7', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x1BC', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x1C1', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x1C6', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x1CB', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x1D0', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x1D5', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x1DA', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x1DF', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x1E4', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x1E9', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x1EE', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x1F3', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x1F8', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x1FD', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x202', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x207', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x20C', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x211', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x216', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x21B', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x220', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x225', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x22A', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x22F', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x234', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x239', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x23E', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x243', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x248', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x24D', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x252', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x257', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x25C', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x261', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x266', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x26B', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x270', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x275', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x27A', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x27F', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x284', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x289', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x28E', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x293', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x298', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x29D', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2A2', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x2A7', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2AC', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2B1', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x2B6', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2BB', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x2C0', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x2C5', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2CA', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x2CF', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2D4', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2D9', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x2DE', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2E3', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x2E8', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x2ED', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2F2', '\x3', '\x2', '\x2', - '\x2', '\x31F', '\x2F7', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x2FC', - '\x3', '\x2', '\x2', '\x2', '\x31F', '\x301', '\x3', '\x2', '\x2', '\x2', - '\x31F', '\x306', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x30B', '\x3', - '\x2', '\x2', '\x2', '\x31F', '\x310', '\x3', '\x2', '\x2', '\x2', '\x31F', - '\x315', '\x3', '\x2', '\x2', '\x2', '\x31F', '\x31A', '\x3', '\x2', '\x2', - '\x2', '\x320', '\x31', '\x3', '\x2', '\x2', '\x2', '\x321', '\x322', - '\x5', '(', '\x15', '\x2', '\x322', '\x323', '\a', '\x2', '\x2', '\x3', - '\x323', '\x324', '\b', '\x1A', '\x1', '\x2', '\x324', '\x33', '\x3', - '\x2', '\x2', '\x2', '%', ';', '\x43', 'K', 'M', 'T', '^', 'h', 'm', 'y', - '{', '\x88', '\x8A', '\x97', '\x99', '\xA6', '\xA8', '\xB5', '\xB7', '\xC2', - '\xDB', '\xDD', '\xE6', '\xED', '\xFA', '\x106', '\x108', '\x113', '\x120', - '\x122', '\x12F', '\x131', '\x13C', '\x14A', '\x14D', '\x31F', - }; - - public static readonly ATN _ATN = - new ATNDeserializer().Deserialize(_serializedATN); - - -} -} // namespace AngouriMath.Core.Antlr diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/antlr-4.8-complete.jar b/Sources/AngouriMath/AngouriMath/Core/Antlr/antlr-4.8-complete.jar deleted file mode 100644 index 89a0640e2..000000000 Binary files a/Sources/AngouriMath/AngouriMath/Core/Antlr/antlr-4.8-complete.jar and /dev/null differ diff --git a/Sources/AngouriMath/AngouriMath/Core/Exceptions/ParseException.cs b/Sources/AngouriMath/AngouriMath/Core/Exceptions/ParseException.cs index 43e9cc1ac..b95b5e06d 100644 --- a/Sources/AngouriMath/AngouriMath/Core/Exceptions/ParseException.cs +++ b/Sources/AngouriMath/AngouriMath/Core/Exceptions/ParseException.cs @@ -12,8 +12,11 @@ namespace AngouriMath.Core.Exceptions /// Thrown when trying to parse an invalid string public abstract class ParseException : MathSException { internal ParseException(string msg) : base(msg) { } } - /// Can only occur in the ANTLR parser when it is unclear what exactly happened + /// Can only occur in the parser when it is unclear what exactly happened public sealed class UnhandledParseException : ParseException { internal UnhandledParseException(string msg) : base(msg) { } } + + /// Occurs trying to apply an expression to a number + public sealed class CannotApplyException : ParseException { internal CannotApplyException(string msg) : base(msg) { } } /// Thrown when an invalid argument passed to a AM's function public sealed class InvalidArgumentParseException : ParseException { internal InvalidArgumentParseException(string msg) : base(msg) { } } diff --git a/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/AngouriMathTokenType.cs b/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/AngouriMathTokenType.cs new file mode 100644 index 000000000..4b7a2a85c --- /dev/null +++ b/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/AngouriMathTokenType.cs @@ -0,0 +1,82 @@ +// +// Copyright (c) 2019-2022 Angouri. +// AngouriMath is licensed under MIT. +// Details: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md. +// Website: https://am.angouri.org. +// + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yoakke.SynKit.Lexer; +using Yoakke.SynKit.Lexer.Attributes; + +namespace AngouriMath.Core.NovaSyntax +{ + public enum AngouriMathTokenType + { + [Error] Error, + [End] End, + + [Ignore] + [Regex(Regexes.Whitespace)] + [Regex(Regexes.LineComment)] + [Regex(Regexes.MultilineComment)] Ignore, + + [Regex(@"[0-9]+.[0-9]*([eE](\+|-)?[0-9+])?i?")] + [Regex(@".?[0-9]+([eE](\+|-)?[0-9+])?i?")] + [Token("i")] Number, + + [Token("+oo"), Token("-oo")] Infinity, + + [Regex(@"[Tt]rue")] + [Regex(@"[Ff]alse")] Boolean, + + [Token("!")] + [Token("^")] + [Token("+"), Token("-")] + [Token("*"), Token("/")] + [Token("intersect"), Token(@"/\\")] + [Token("unite"), Token(@"\\/")] + [Token("setsubtract"), Token(@"\\")] + [Token("in")] + [Token(">"), Token("<"), Token(">="), Token("<="), Token("equalizes")] + [Token("=")] + [Token("not")] + [Token("and"), Token("&")] + [Token("xor")] + [Token("or"), Token("|")] + [Token("implies"), Token("->")] + [Token("provided")] Operator, + + [Token(","), Token(":"), Token(";")] + [Token("("), Token(")")] + [Token("["), Token("]")] + [Token("{"), Token("}")] + [Token("(|"), Token("|)")] Punctuation, + + [Token("CC"), Token("RR"), Token("QQ"), Token("ZZ"), Token("BB")] SpecialSet, + + [Token("apply"), Token("lambda"), Token("integral"), Token("derivative"), Token("gamma"), + Token("limit"), Token("limitleft"), Token("limitright"), + Token("signum"), Token("sgn"), Token("sign"), Token("abs"), Token("phi"), + Token("domain"), Token("piecewise"), + Token("log"), Token("sqrt"), Token("cbrt"), Token("sqr"), Token("ln"), + Token("sin"), Token("cos"), Token("tan"), Token("cot"), Token("cotan"), + Token("sec"), Token("cosec"), Token("csc"), Token("arcsin"), Token("arccos"), + Token("arctan"), Token("arccotan"), Token("arcsec"), Token("arccosec"), Token("arccsc"), + Token("acsc"), Token("asin"), Token("acos"), Token("atan"), Token("acotan"), + Token("asec"), Token("acosec"), Token("acot"), Token("arccot"), + Token("sinh"), Token("sh"), Token("cosh"), Token("ch"), Token("tanh"), Token("th"), + Token("cotanh"), Token("coth"), Token("cth"), Token("sech"), Token("sch"), + Token("cosech"), Token("csch"), Token("asinh"), Token("arsinh"), Token("arsh"), + Token("acosh"), Token("arcosh"), Token("arch"), Token("atanh"), Token("artanh"), Token("arth"), + Token("acoth"), Token("arcoth"), Token("acotanh"), Token("arcotanh"), Token("arcth"), + Token("asech"), Token("arsech"), Token("arsch"), Token("acosech"), Token("arcosech"), + Token("arcsch"), Token("acsch")] Keyword, + + [Regex(@"([A-Za-zΑ-ωА-я])+(_([0-9A-Za-zΑ-ωА-я])+)?")] Identifier, + } +} diff --git a/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/NovaLexer.cs b/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/NovaLexer.cs new file mode 100644 index 000000000..f180e75d7 --- /dev/null +++ b/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/NovaLexer.cs @@ -0,0 +1,35 @@ +// +// Copyright (c) 2019-2022 Angouri. +// AngouriMath is licensed under MIT. +// Details: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md. +// Website: https://am.angouri.org. +// + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yoakke.SynKit.Lexer; +using Yoakke.SynKit.Lexer.Attributes; + +namespace AngouriMath.Core.NovaSyntax +{ + [Lexer(typeof(AngouriMathTokenType))] +#pragma warning disable SealedOrAbstract // AMAnalyzer + public partial class NovaLexer +#pragma warning restore SealedOrAbstract // AMAnalyzer + { + public IEnumerable> LexAll() + { + var list = new List>(); + while (true) + { + var token = Next(); + list.Add(token); + if (token.Kind == AngouriMathTokenType.End) break; + } + return list; + } + } +} diff --git a/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/NovaParser.cs b/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/NovaParser.cs new file mode 100644 index 000000000..e5570c22e --- /dev/null +++ b/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/NovaParser.cs @@ -0,0 +1,335 @@ +// +// Copyright (c) 2019-2022 Angouri. +// AngouriMath is licensed under MIT. +// Details: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md. +// Website: https://am.angouri.org. +// + +using AngouriMath.Core.Exceptions; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Yoakke.SynKit.Parser; +using Yoakke.SynKit.Parser.Attributes; +using static AngouriMath.Entity; +using static AngouriMath.Entity.Set; +using Token = Yoakke.SynKit.Lexer.IToken; + +namespace AngouriMath.Core.NovaSyntax +{ + /* + REFERENCE GRAMMAR + + call_expression : call_expression atom+ + | call_expression '(' expression_list ')' + | atom + + factorial_expression : call '!'? + + power_expression : factorial_expression '^' unary_expression + | factorial_expression + + unary_expression : ('-' | '+') unary_expression + | power_expression + + mult_expression : mult_expression ('*' | '/') unary_expression + | unary_expression + + sum_expression : sum_expression ('+' | '-') mult_expression + | mult_expression + + set_operator_intersection : set_operator_intersection ('intersect' | '/\') sum_expression + | sum_expression + + set_operator_union : set_operator_union ('unite' | '\/' ) set_operator_intersection + | set_operator_intersection + + set_operator_setsubtraction : set_operator_setsubtraction ('setsubtract' | '\') set_operator_union + | set_operator_union + + in_operator : in_operator 'in' set_operator_setsubtraction + | set_operator_setsubtraction + + inequality_expression : inequality_expression ('>=' | '<=' | '>' | '<' | 'equalizes') in_operator + | in_operator + + equality_expression : inequality_expression ('=' inequality_expression)* + + negate_expression : 'not' negate_expression + | equality_expression + + and_expression : and_expression ('and' | '&') negate_expression + | negate_expression + + xor_expression : xor_expression 'xor' and_expression + | and_expression + + or_expression : or_expression ('or' | '|') xor_expression + | xor_expression + + implies_expression : implies_expression ('implies' | '->') or_expression + | or_expression + + provided_expression : provided_expression 'provided' implies_expression + | implies_expression + + expression : provided_expression + + expression_list : (expression (',' expression)*)? + + atom : '+oo' + | '-oo' + | Number + | Boolean + | SpecialSet + | Identifier + | '(|' expression '|)' + | '[' expression_list ']' 'T'? + | ('(' | '[') expression ';' expression (')' | ']') + | '(' expression ')' + | '{' expression ':' expression '}' + | '{' expression_list '}' + | Identifier '(' expression_list ')' + + statement : expression End + + */ + + [Yoakke.SynKit.Parser.Attributes.Parser(typeof(AngouriMathTokenType))] +#pragma warning disable SealedOrAbstract // AMAnalyzer + public partial class NovaParser +#pragma warning restore SealedOrAbstract // AMAnalyzer + { + [Rule("factorial_expression : call_expression '!'")] + private static Entity Factorial(Entity call, Token? exclamation) => call.Factorial(); + + [Rule("power_expression : factorial_expression '^' unary_expression")] + private static Entity Power(Entity expr, Token hat, Entity exponent) => expr.Pow(exponent); + + [Rule("unary_expression : '+' unary_expression")] + private static Entity UnaryPlus(Token plus, Entity unary) => unary; + + [Rule("unary_expression : '-' unary_expression")] + private static Entity UnaryMinus(Token minus, Entity unary) + => unary is Real { IsNegative: false } n ? -n : -unary; + + [Rule("mult_expression : mult_expression ('*' | '/') unary_expression")] + [Rule("sum_expression : sum_expression ('+' | '-') mult_expression")] + [Rule(@"set_operator_intersection : set_operator_intersection ('intersect' | '/\\') sum_expression")] + [Rule(@"set_operator_union : set_operator_union ('unite' | '\\/' ) set_operator_intersection")] + [Rule(@"set_operator_setsubtraction : set_operator_setsubtraction ('setsubtract' | '\\') set_operator_union")] + [Rule("in_operator : in_operator 'in' set_operator_setsubtraction")] + [Rule("inequality_expression : inequality_expression ('>=' | '<=' | '>' | '<' | 'equalizes') in_operator")] + [Rule("and_expression : and_expression ('and' | '&') negate_expression")] + [Rule("xor_expression : xor_expression 'xor' and_expression")] + [Rule("or_expression : or_expression ('or' | '|') xor_expression")] + [Rule("implies_expression : implies_expression ('implies' | '->') or_expression")] + [Rule("provided_expression : provided_expression 'provided' implies_expression")] + private static Entity Binary(Entity left, Token op, Entity right) => op.Text switch + { + "*" => left * right, + "/" => left / right, + "+" => left + right, + "-" => left - right, + "intersect" or @"/\" => left.Intersect(right), + "unite" or @"\/" => left.Unite(right), + "setsubtract" or @"\" => left.SetSubtract(right), + "in" => left.In(right), + ">" => left > right, + "<" => left < right, + ">=" => left >= right, + "<=" => left <= right, + "equalizes" => left.Equalizes(right), + "and" or "&" => left & right, + "xor" => left ^ right, + "or" or "|" => left | right, + "implies" or "->" => left.Implies(right), + "provided" => left.Provided(right), + _ => throw new InvalidOperationException(), + }; + + [Rule("equality_expression : inequality_expression ('=' inequality_expression)*")] + private static Entity Equality(Entity first, IReadOnlyList<(Token Eq, Entity Right)> second) + { + if (second.Count == 0) return first; + var result = first.Equalizes(second[0].Right); + for (var i = 1; i < second.Count; ++i) + { + var eq = second[i - 1].Right.Equalizes(second[i].Right); + result = result & eq; + } + return result; + } + + [Rule("negate_expression : 'not' negate_expression")] + private static Entity Negate(Token not, Entity expr) => !expr; + + [Rule("call_expression : atom")] + [Rule("factorial_expression : call_expression")] + [Rule("expression : provided_expression")] + [Rule("power_expression : factorial_expression")] + [Rule("unary_expression : power_expression")] + [Rule("mult_expression : unary_expression")] + [Rule("sum_expression : mult_expression")] + [Rule("set_operator_intersection : sum_expression")] + [Rule("set_operator_union : set_operator_intersection")] + [Rule("set_operator_setsubtraction : set_operator_union")] + [Rule("in_operator : set_operator_setsubtraction")] + [Rule("inequality_expression : in_operator")] + [Rule("negate_expression : equality_expression")] + [Rule("and_expression : negate_expression")] + [Rule("xor_expression : and_expression")] + [Rule("or_expression : xor_expression")] + [Rule("implies_expression : or_expression")] + [Rule("provided_expression : implies_expression")] + private static Entity Identity(Entity e) => e; + + [Rule("expression_list : (expression (',' expression)*)?")] + private static IReadOnlyList ExpressionList(Punctuated exprs) => exprs.Values.ToList(); + + [Rule("atom : '+oo' | '-oo'")] + private static Entity Infinity(Token infinity) => infinity.Text[0] == '+' ? Real.PositiveInfinity : Real.NegativeInfinity; + + [Rule("atom : Number")] + private static Entity Number(Token num) => Complex.Parse(num.Text); + + [Rule("atom : Boolean")] + private static Entity Boole(Token boolean) => Entity.Boolean.Parse(boolean.Text); + + [Rule("atom : SpecialSet")] + private static Entity SpecialSet(Token set) => Entity.Set.SpecialSet.Create(set.Text); + + [Rule("atom : Identifier")] + private static Entity Variable(Token name) => Entity.Variable.CreateVariableUnchecked(name.Text); + + [Rule("atom : Keyword")] + private static Entity Keyword(Token name) => Entity.Variable.CreateVariableUnchecked(name.Text); + + [Rule("atom : '(|' expression '|)'")] + private static Entity Abs(Token open, Entity expr, Token close) => expr.Abs(); + + [Rule("atom : '[' expression_list ']' 'T'?")] + private static Entity Matrix(Token open, IReadOnlyList exprs, Token close, Token? transpose) + => transpose is null + ? TryBuildingMatrix(exprs) + : TryBuildingMatrix(exprs).T; + + [Rule("atom : ('(' | '[') expression ';' expression (')' | ']')")] + private static Entity Interval(Token open, Entity from, Token semicol, Entity to, Token close) => + new Interval(from, open.Text == "[", to, close.Text == "]"); + + [Rule("atom : '(' expression ')'")] + private static Entity Grouping(Token open, Entity expr, Token close) => expr; + + [Rule("atom : '{' expression ':' expression '}'")] + private static Entity SetComprehension(Token open, Entity variable, Token col, Entity predicate, Token close) => + new ConditionalSet(variable, predicate); + + [Rule("atom : '{' expression_list '}'")] + private static Entity Set(Token open, IReadOnlyList exprs, Token close) => new FiniteSet(exprs); + + [Rule("call_expression : call_expression atom+")] + private static Entity Call(Entity f, IReadOnlyList args) + => f is Number ? throw new CannotApplyException($"{f} cannot take arguments") : f.Apply(args.ToArray()); + + [Rule("call_expression : Keyword '(' expression_list ')'")] + private static Entity CallToKeyword(Token kw, Token open, IReadOnlyList args, Token close) + { + static IEnumerable SupplyOptionalArgs(IReadOnlyList currArgs, string funcName) + => (funcName, currArgs.Count) switch + { + ("log", 1) => currArgs.Prepend(10), + ("derivative" or "integral", 2) => currArgs.Append(1), + _ => currArgs + }; + + if (kw.Text == "apply") + return Apply(kw, open, args, close); + if (kw.Text == "lambda") + return Lambda(kw, open, args, close); + if (kw.Text == "piecewise") + return Piecewise(kw, open, args, close); + + if (args.Count is 0) + throw new FunctionArgumentCountException("When using (), one is required to provide at least one argument"); + + var tryApplied = Application.KeywordToApplied(kw.Text, SupplyOptionalArgs(args, kw.Text).ToLList(), out var badArgument, out _); + + if (badArgument) + throw new InvalidArgumentParseException($"Bad arguments {args} for function {kw.Text}"); + if (tryApplied is not var (applied, otherArgs)) + throw new AngouriBugException($"Unrecognized function {kw.Text}"); + if (otherArgs is not LEmpty) + throw new FunctionArgumentCountException($"Too many ({args.Count}) args for function {kw.Text}"); + if (applied is Application or Entity.Variable) + throw new FunctionArgumentCountException($"Not enough ({args.Count}) arguments for function {kw.Text}"); + return applied; + } + + [Rule("call_expression : 'apply' '(' expression_list ')'")] + private static Entity Apply(Token apply, Token open, IReadOnlyList args, Token close) + { + if (args.Count < 2) throw new FunctionArgumentCountException("apply needs at least 2 arguments"); + return args[0].Apply(args.Skip(1).ToArray()); + } + + [Rule("call_expression : 'lambda' '(' expression_list ')'")] + private static Entity Lambda(Token lambda, Token open, IReadOnlyList args, Token close) + { + if (args.Count < 2) throw new FunctionArgumentCountException("lambda needs at least 2 arguments"); + var result = args[args.Count - 1]; + for (var i = args.Count - 2; i >= 0; --i) + { + if (args[i] is not Variable arg) throw new InvalidArgumentParseException("lambda argument must be a variable"); + result = result.LambdaOver(arg); + } + return result; + } + + [Rule("call_expression : 'piecewise' '(' expression_list ')'")] + private static Entity Piecewise(Token piecewise, Token open, IReadOnlyList args, Token close) + { + var cases = new List(); + foreach (var arg in args) + { + if (arg is Providedf provided) cases.Add(provided); + else cases.Add(new Providedf(arg, true)); + } + return new Piecewise(cases); + } + + [Rule("call_expression : call_expression '(' expression_list ')'")] + private static Entity Call(Entity f, Token open, IReadOnlyList args, Token close) + => f.Apply(args.ToArray()); + + [Rule("statement : expression End")] + private static Entity Statement(Entity expr, Token end) => expr; + + private static Entity AssertArgc(int argc, IReadOnlyList args, Func makeFunc) + { + if (args.Count != argc) throw new FunctionArgumentCountException($"Expected {argc} arguments, but {args.Count} were provided"); + return makeFunc(); + } + + private static Matrix TryBuildingMatrix(IReadOnlyList elements) + { + if (!elements.Any()) + return MathS.Vector(elements.ToArray()); + var first = elements.First(); + if (first is not Matrix { IsVector: true } firstVec) + return MathS.Vector(elements.ToArray()); + var tb = new MatrixBuilder(firstVec.RowCount); + foreach (var row in elements) + { + if (row is not Matrix { IsVector: true } rowVec) + return MathS.Vector(elements.ToArray()); + if (rowVec.RowCount != firstVec.RowCount) + return MathS.Vector(elements.ToArray()); + tb.Add(rowVec); + } + return tb.ToMatrix() ?? throw new AngouriBugException("Should've been checked already"); + } + } +} diff --git a/Sources/AngouriMath/AngouriMath/Core/Antlr/ParsingHelpers.cs b/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/ParsingHelpers.cs similarity index 96% rename from Sources/AngouriMath/AngouriMath/Core/Antlr/ParsingHelpers.cs rename to Sources/AngouriMath/AngouriMath/Core/NovaSyntax/ParsingHelpers.cs index 3363c3045..7e838fa74 100644 --- a/Sources/AngouriMath/AngouriMath/Core/Antlr/ParsingHelpers.cs +++ b/Sources/AngouriMath/AngouriMath/Core/NovaSyntax/ParsingHelpers.cs @@ -8,7 +8,7 @@ using AngouriMath.Core.Exceptions; using static AngouriMath.Entity; -namespace AngouriMath.Core.Antlr +namespace AngouriMath.Core.NovaSyntax { internal static class ParsingHelpers { diff --git a/Sources/AngouriMath/AngouriMath/Core/Parser.cs b/Sources/AngouriMath/AngouriMath/Core/Parser.cs index c54b3e35b..26d8cb5ba 100644 --- a/Sources/AngouriMath/AngouriMath/Core/Parser.cs +++ b/Sources/AngouriMath/AngouriMath/Core/Parser.cs @@ -13,158 +13,108 @@ Any modifications to other source files will be overwritten when the parser is r */ -using Antlr4.Runtime; using System.IO; using System.Text; +using AngouriMath.Core.NovaSyntax; +using Yoakke.Streams; +using Yoakke.SynKit.Lexer; +using Yoakke.SynKit.Text; +using Nova = AngouriMath.Core.NovaSyntax.AngouriMathTokenType; [assembly: System.CLSCompliant(false)] namespace AngouriMath.Core { - using Antlr; using Exceptions; - using static ReasonOfFailureWhileParsing; - - /// - /// Nesting class for reasons of why parsing could fail. The type union for it - /// is - /// - public abstract record ReasonOfFailureWhileParsing - { - /// - /// The error is an unclassified error returned by the - /// ANTLR's parser. - /// - public sealed record Unknown(string Reason); - - - /// - /// This error is when the explicit parsing mode is enabled, - /// but the input lacks an operator (which is normally inserted - /// automatically with explicit parsing mode turned off). For - /// example, "2x" would give this error. - /// - public sealed record MissingOperator(string Details); - - /// - /// This is a bug of AngouriMath. Something that we definitely - /// do not expect. More: . - /// Please, report to the main repository. - /// - public sealed record InternalError(string Details); - } - - internal static class Parser { - // Antlr parser spams errors into TextWriter provided, we inherit from it to handle lexer/parser errors as ParseExceptions - private sealed class AngouriMathTextWriter : TextWriter - { - public override Encoding Encoding => Encoding.UTF8; - public override void WriteLine(string? s) => errors.Add(new Unknown(s ?? throw new System.ArgumentNullException())); - public readonly List errors = new(); - } - private static int? GetNextToken(IList tokens, int currPos) + // TODO: how to sync it with the lexer? + [ConstantField] + private static readonly HashSet keywords = new (new [] { - while (tokens[currPos].Channel != 0) - if (++currPos >= tokens.Count) - return null; - return currPos; - } - - /// - /// This method inserts omitted tokens when no - /// explicit-only parsing is enabled. Otherwise, - /// it will throw an exception. - /// - private static Either InsertOmittedTokensOrProvideDiagnostic(IList tokenList, AngouriMathLexer lexer) + "apply","lambda","integral","derivative","gamma","limit","limitleft","limitright","signum","sgn","sign","abs","phi","domain","piecewise","log","sqrt","cbrt","sqr","ln","sin","cos","tan","cot","cotan","sec","cosec","csc","arcsin","arccos","arctan","arccotan","arcsec","arccosec","arccsc","acsc","asin","acos","atan","acotan","asec","acosec","acot","arccot","sinh","sh","cosh","ch","tanh","th","cotanh","coth","cth","sech","sch","cosech","csch","asinh","arsinh","arsh","acosh","arcosh","arch","atanh","artanh","arth","acoth","arcoth","acotanh","arcotanh","arcth","asech","arsech","arsch","acosech","arcosech","arcsch","acsch" + }); + + private static List> InsertOmittedOperators(IReadOnlyList> tokens) { - const string NUMBER = nameof(NUMBER); - const string VARIABLE = nameof(VARIABLE); - const string PARENTHESIS_OPEN = "'('"; - const string PARENTHESIS_CLOSE = "')'"; - const string FUNCTION_OPEN = "\x1"; // Fake display name for all function tokens e.g. "'sin('" - - if (GetNextToken(tokenList, 0) is not { } leftId) - return new Unit(); - - for (var rightId = leftId + 1; rightId < tokenList.Count; leftId = rightId++) + var list = new List>(); + for (int i = 0; i < tokens.Count - 1; i++) { - if (GetNextToken(tokenList, rightId) is not { } nextRightId) - return new Unit(); - rightId = nextRightId; - if ((GetType(tokenList[leftId]), GetType(tokenList[rightId])) switch - { - // 2x -> 2 * x 2sqrt -> 2 * sqrt 2( -> 2 * ( - // x y -> x * y x sqrt -> x * sqrt x( -> x * ( - // )x -> ) * x )sqrt -> ) * sqrt )( -> ) * ( - (NUMBER or VARIABLE or PARENTHESIS_CLOSE, VARIABLE or FUNCTION_OPEN or PARENTHESIS_OPEN) - => lexer.Multiply, - // 3 2 -> 3 ^ 2 x2 -> x ^ 2 )2 -> ) ^ 2 - (NUMBER or VARIABLE or PARENTHESIS_CLOSE, NUMBER) => lexer.Power, - - _ => null - } is { } insertToken) - { - if (!MathS.Settings.ExplicitParsingOnly) - // Insert at j because we need to keep the first one behind - tokenList.Insert(rightId, insertToken); - else - return new ReasonWhyParsingFailed(new MissingOperator($"There should be an operator between {tokenList[leftId]} and {tokenList[rightId]}")); - } + var (left, right) = (tokens[i], tokens[i + 1]); + list.Add(left); + Token? toInsert = (left, right) switch + { + // 2x -> 2 * x 2sqrt -> 2 * sqrt 2( -> 2 * ( + // )x -> ) * x )sqrt -> ) * sqrt )( -> ) * ( + ( { Kind: Nova.Number } or { Kind: Nova.Punctuation, Text: ")" }, { Kind: Nova.Identifier or Nova.Keyword } or { Kind: Nova.Punctuation, Text: "(" } ) + => new(default, "*", Nova.Operator), + + // x y -> x * y x sqrt -> x * sqrt x( -> x * ( + ( { Kind: Nova.Identifier, Text: var varName }, { Kind: Nova.Identifier or Nova.Keyword } or { Kind: Nova.Punctuation, Text: "(" } ) + when !keywords.Contains(varName) => new(default, "*", Nova.Operator), + + // 3 2 -> 3 ^ 2 )2 -> ) ^ 2 + ( { Kind: Nova.Number } or { Kind: Nova.Punctuation, Text: ")" }, { Kind: Nova.Number } ) + => new(default, "^", Nova.Operator), + + // x2 -> x ^ 2 + ( { Kind: Nova.Identifier, Text: var varName }, { Kind: Nova.Number } ) + when !keywords.Contains(varName) => new(default, "^", Nova.Operator), + + _ => null + }; + if (toInsert is { } actualToken) + list.Add(actualToken); } - - return new Unit(); - - static string GetType(IToken token) => - AngouriMathLexer.DefaultVocabulary.GetDisplayName(token.Type) is var type - && type is not PARENTHESIS_OPEN && type.EndsWith("('") ? FUNCTION_OPEN : type; + list.Add(tokens[^1]); + return list; } - internal static Either> ParseSilent(string source) + internal static Either, ParseException> ParseSilent(string source) { - var writer = new AngouriMathTextWriter(); - - if (writer.errors.Count > 0) - return new Failure(writer.errors[0]); - - var lexer = new AngouriMathLexer(new AntlrInputStream(source), null, writer); - var tokenStream = new CommonTokenStream(lexer); - tokenStream.Fill(); - var tokenList = tokenStream.GetTokens(); - - if (tokenList.Count is 0) - return new Failure( - new ReasonWhyParsingFailed( - new InternalError( - $"{nameof(ParseException)} should have been thrown" - ) - ) - ); - - if (InsertOmittedTokensOrProvideDiagnostic(tokenList, lexer).Is(out var whyFailed)) - return new Failure(whyFailed); + var lexer = new NovaLexer(source); + var tokens = lexer.LexAll().ToList(); + if (!tokens.Any()) + return new Failure("Empty expression"); - var parser = new AngouriMathParser(tokenStream, null, writer); - parser.Parse(); + if (!MathS.Settings.ExplicitParsingOnly) + tokens = InsertOmittedOperators(tokens); - if (writer.errors.Count > 0) - return new Failure(writer.errors[0]); - - return parser.Result; + try + { + var result = new NovaParser(tokens).ParseStatement(); + + if (result.IsError) + { + var err = result.Error; + var sb = new StringBuilder(); + foreach (var element in err.Elements.Values) + { + sb + .Append($"Expected ") + .Append(string.Join(" or ", (IEnumerable)element.Expected)) + .Append(" while parsing ") + .Append(element.Context) + .Append("\n"); + } + sb.Append($"But got {(err.Got == null ? "end of input" : err.Got)}"); + return new Failure(sb.ToString()); + } + return result.Ok.Value; + } catch (ParseException pe) + { + return pe; + } } internal static Entity Parse(string source) => ParseSilent(source) .Switch( valid => valid, - failure => failure.Reason.Switch( - unknown => throw new UnhandledParseException(unknown.Reason), - missingOperator => throw new MissingOperatorParseException(missingOperator.Details), - internalError => throw new AngouriBugException(internalError.Details) - ) - ); + failure => throw new UnhandledParseException(failure.Reason), + exception => throw exception + ); } } \ No newline at end of file diff --git a/Sources/AngouriMath/AngouriMath/Docs/Contributing/ImproveParser.md b/Sources/AngouriMath/AngouriMath/Docs/Contributing/ImproveParser.md deleted file mode 100644 index 3087234ce..000000000 --- a/Sources/AngouriMath/AngouriMath/Docs/Contributing/ImproveParser.md +++ /dev/null @@ -1,5 +0,0 @@ -If you want to contribute to the parser, follow these steps: -1. Make sure you have the JRE (Java Runtime Environment) installed on your machine -2. Change the file ./AngouriMath/Core/Antlr/AngouriMath.g (other source files in the Antlr folder are generated from this file) -3. Run `start ./Utils/antlr_rerun.bat` or `./Utils/antlr_rerun.bat` to regenerate the parser via ANTLR -4. Observe that other source files in the Antlr folder have been updated \ No newline at end of file diff --git a/Sources/AngouriMath/AngouriMath/Docs/Contributing/README.md b/Sources/AngouriMath/AngouriMath/Docs/Contributing/README.md index be6511356..ee2e23dec 100644 --- a/Sources/AngouriMath/AngouriMath/Docs/Contributing/README.md +++ b/Sources/AngouriMath/AngouriMath/Docs/Contributing/README.md @@ -9,5 +9,4 @@ If you aren't sure about what to add, you may want to check the current projects #### Table of content 1. General information 2. Adding a new node (function, operator) -3. Improve parser -4. Adding a public member \ No newline at end of file +3. Adding a public member \ No newline at end of file diff --git a/Sources/AngouriMath/AngouriMath/Functions/Evaluation/Evaluation.Omni/Evaluation.Omni.Classes.cs b/Sources/AngouriMath/AngouriMath/Functions/Evaluation/Evaluation.Omni/Evaluation.Omni.Classes.cs index 8ad8ee434..502f390f7 100644 --- a/Sources/AngouriMath/AngouriMath/Functions/Evaluation/Evaluation.Omni/Evaluation.Omni.Classes.cs +++ b/Sources/AngouriMath/AngouriMath/Functions/Evaluation/Evaluation.Omni/Evaluation.Omni.Classes.cs @@ -255,82 +255,113 @@ partial record Application private static Entity ApplyOthersIfNeeded(Entity outer, LList arguments) => arguments switch { - LEmpty => outer, + LEmpty or null => outer, var nonEmpty => outer.Apply(nonEmpty) }; - /// - protected override Entity InnerSimplify() - => ((Expression.InnerSimplified, Arguments.Map(arg => arg.InnerSimplified)) switch - { - (var identifier, LEmpty) => identifier, - (Application(var any, var argsInner), var argsOuter) => any.Apply(argsInner.Concat(argsOuter).ToLList()), - - (Variable("sin"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Sin(), otherArgs), - (Variable("cos"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Cos(), otherArgs), - (Variable("tan"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Tan(), otherArgs), - (Variable("cotan" or "cot"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Cotan(), otherArgs), - (Variable("sec"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Sec(), otherArgs), - (Variable("cosec" or "csc"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Cosec(), otherArgs), - (Variable("arcsin" or "asin"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Arcsin(), otherArgs), - (Variable("arccos" or "acos"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Arccos(), otherArgs), - (Variable("arctan" or "atan"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Arctan(), otherArgs), - (Variable("arccotan" or "acotan" or "acot" or "arccot"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Arccotan(), otherArgs), - (Variable("arcsec" or "asec"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Arcsec(), otherArgs), - (Variable("arccosec" or "arccsc" or "acsc" or "acosec"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Arccosec(), otherArgs), - - (Variable("sinh" or "sh"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Sinh(x), otherArgs), - (Variable("cosh" or "ch"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Cosh(x), otherArgs), - (Variable("tanh" or "th"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Tanh(x), otherArgs), - (Variable("cotanh" or "coth" or "cth"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Cotanh(x), otherArgs), - (Variable("sech" or "sch"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Sech(x), otherArgs), - (Variable("cosech" or "csch"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Cosech(x), otherArgs), - (Variable("asinh" or "arsinh" or "arsh"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Arsinh(x), otherArgs), - (Variable("acosh" or "arcosh" or "arch"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Arcosh(x), otherArgs), - (Variable("atanh" or "artanh" or "arth"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Artanh(x), otherArgs), - (Variable("acoth" or "arcoth" or "acotanh" or "arcotanh" or "arcth"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Arcotanh(x), otherArgs), - (Variable("asech" or "arsech" or "arsch"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Arsech(x), otherArgs), - (Variable("acosech" or "arcosech" or "arcsch" or "acsch"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Hyperbolic.Arcosech(x), otherArgs), - - (Variable("gamma"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Gamma(x), otherArgs), - (Variable("phi"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.PhiFunction(), otherArgs), - (Variable("abs"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Abs(), otherArgs), - (Variable("sqrt"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Sqrt(x), otherArgs), - (Variable("cbrt"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Cbrt(x), otherArgs), - (Variable("sqr"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Sqr(x), otherArgs), - (Variable("signum" or "sign" or "sgn"), (var x, var otherArgs)) => ApplyOthersIfNeeded(x.Signum(), otherArgs), - - (Variable("ln"), (var x, var otherArgs)) => ApplyOthersIfNeeded(MathS.Ln(x), otherArgs), - (Variable("log") v, (var x, LEmpty) args) => New(v, args), - (Variable("log"), (var p, (var x, var otherArgs))) => ApplyOthersIfNeeded(MathS.Log(p, x), otherArgs), - - (Variable("derivative") v, (var expr, LEmpty) args) => New(v, args), - (Variable("derivative"), (var expr, (var x, var otherArgs))) => ApplyOthersIfNeeded(MathS.Derivative(expr, x), otherArgs), - - (Variable("integral") v, (_, LEmpty) args) => New(v, args), - (Variable("integral"), (var expr, (var x, var otherArgs))) => ApplyOthersIfNeeded(MathS.Integral(expr, x), otherArgs), - - (Variable("limit") v, ((_, LEmpty) or (_, (_, LEmpty))) and var args) => New(v, args), - (Variable("limit") v, (var expr, (var x, (var to, var otherArgs)))) => ApplyOthersIfNeeded(MathS.Limit(expr, x, to), otherArgs), - - (Variable("limitleft") v, ((_, LEmpty) or (_, (_, LEmpty))) and var args) => New(v, args), - (Variable("limitleft") v, (var expr, (var x, (var to, var otherArgs)))) => ApplyOthersIfNeeded(MathS.Limit(expr, x, to, ApproachFrom.Left), otherArgs), - - (Variable("limitright") v, ((_, LEmpty) or (_, (_, LEmpty))) and var args) => New(v, args), - (Variable("limitright") v, (var expr, (var x, (var to, var otherArgs)))) => ApplyOthersIfNeeded(MathS.Limit(expr, x, to, ApproachFrom.Right), otherArgs), - - (Lambda(var x, var body), (var arg, var otherArgs)) => ApplyOthersIfNeeded(body.Substitute(x, arg), otherArgs), - - (var exprSimplified, var argsSimplified) => New(exprSimplified, argsSimplified), - }) switch + internal static (Entity Applied, LList RemainingArgs)? KeywordToApplied(string kw, LList arguments, out bool badArgument, out bool applied) + => (kw, arguments).Let(out badArgument, false).Let(out applied, true) switch { - var thisAgain when ReferenceEquals(thisAgain, this) => this, - var newOne => newOne.InnerSimplified + (("sin"), (var x, var otherArgs)) => (x.Sin(), otherArgs), + (("cos"), (var x, var otherArgs)) => (x.Cos(), otherArgs), + (("tan"), (var x, var otherArgs)) => (x.Tan(), otherArgs), + (("cotan" or "cot"), (var x, var otherArgs)) => (x.Cotan(), otherArgs), + (("sec"), (var x, var otherArgs)) => (x.Sec(), otherArgs), + (("cosec" or "csc"), (var x, var otherArgs)) => (x.Cosec(), otherArgs), + (("arcsin" or "asin"), (var x, var otherArgs)) => (x.Arcsin(), otherArgs), + (("arccos" or "acos"), (var x, var otherArgs)) => (x.Arccos(), otherArgs), + (("arctan" or "atan"), (var x, var otherArgs)) => (x.Arctan(), otherArgs), + (("arccotan" or "acotan" or "acot" or "arccot"), (var x, var otherArgs)) => (x.Arccotan(), otherArgs), + (("arcsec" or "asec"), (var x, var otherArgs)) => (x.Arcsec(), otherArgs), + (("arccosec" or "arccsc" or "acsc" or "acosec"), (var x, var otherArgs)) => (x.Arccosec(), otherArgs), + + (("sinh" or "sh"), (var x, var otherArgs)) => (MathS.Hyperbolic.Sinh(x), otherArgs), + (("cosh" or "ch"), (var x, var otherArgs)) => (MathS.Hyperbolic.Cosh(x), otherArgs), + (("tanh" or "th"), (var x, var otherArgs)) => (MathS.Hyperbolic.Tanh(x), otherArgs), + (("cotanh" or "coth" or "cth"), (var x, var otherArgs)) => (MathS.Hyperbolic.Cotanh(x), otherArgs), + (("sech" or "sch"), (var x, var otherArgs)) => (MathS.Hyperbolic.Sech(x), otherArgs), + (("cosech" or "csch"), (var x, var otherArgs)) => (MathS.Hyperbolic.Cosech(x), otherArgs), + (("asinh" or "arsinh" or "arsh"), (var x, var otherArgs)) => (MathS.Hyperbolic.Arsinh(x), otherArgs), + (("acosh" or "arcosh" or "arch"), (var x, var otherArgs)) => (MathS.Hyperbolic.Arcosh(x), otherArgs), + (("atanh" or "artanh" or "arth"), (var x, var otherArgs)) => (MathS.Hyperbolic.Artanh(x), otherArgs), + (("acoth" or "arcoth" or "acotanh" or "arcotanh" or "arcth"), (var x, var otherArgs)) => (MathS.Hyperbolic.Arcotanh(x), otherArgs), + (("asech" or "arsech" or "arsch"), (var x, var otherArgs)) => (MathS.Hyperbolic.Arsech(x), otherArgs), + (("acosech" or "arcosech" or "arcsch" or "acsch"), (var x, var otherArgs)) => (MathS.Hyperbolic.Arcosech(x), otherArgs), + + (("gamma"), (var x, var otherArgs)) => (MathS.Gamma(x), otherArgs), + (("phi"), (var x, var otherArgs)) => (x.PhiFunction(), otherArgs), + (("abs"), (var x, var otherArgs)) => (x.Abs(), otherArgs), + (("sqrt"), (var x, var otherArgs)) => (MathS.Sqrt(x), otherArgs), + (("cbrt"), (var x, var otherArgs)) => (MathS.Cbrt(x), otherArgs), + (("sqr"), (var x, var otherArgs)) => (MathS.Sqr(x), otherArgs), + (("signum" or "sign" or "sgn"), (var x, var otherArgs)) => (x.Signum(), otherArgs), + + (("ln"), (var x, var otherArgs)) => (MathS.Ln(x), otherArgs), + (("log"), (var x, LEmpty) args) => (new Application(Variable.CreateVariableUnchecked("log"), args), LList.Empty).Let(out applied, false), + (("log"), (var p, (var x, var otherArgs))) => (MathS.Log(p, x), otherArgs), + + (("derivative"), (var expr, LEmpty) args) => (new Application(Variable.CreateVariableUnchecked("derivative"), args), LList.Empty).Let(out applied, false), + (("derivative"), (var expr, (var x, (Integer power, var otherArgs)))) => (MathS.Derivative(expr, x, (int)power), otherArgs), + (("derivative"), (var expr, (var x, (_, var otherArgs)))) => (MathS.Derivative(expr, x), otherArgs).Let(out badArgument, true), + (("derivative"), (var expr, (var x, var otherArgs))) => (MathS.Derivative(expr, x), otherArgs), + + (("integral"), (_, LEmpty) args) => (new Application(Variable.CreateVariableUnchecked("integral"), args), LList.Empty).Let(out applied, false), + (("integral"), (var expr, (var x, (Integer power, var otherArgs)))) => (MathS.Integral(expr, x, (int)power), otherArgs), + (("integral"), (var expr, (var x, (_, var otherArgs)))) => (MathS.Integral(expr, x), otherArgs).Let(out badArgument, true), + (("integral"), (var expr, (var x, var otherArgs))) => (MathS.Integral(expr, x), otherArgs), + + (("limit"), ((_, LEmpty) or (_, (_, LEmpty))) and var args) => (new Application(Variable.CreateVariableUnchecked("limit"), args), LList.Empty).Let(out applied, false), + (("limit"), (var expr, (var x, (var to, var otherArgs)))) => (MathS.Limit(expr, x, to), otherArgs), + + (("limitleft"), ((_, LEmpty) or (_, (_, LEmpty))) and var args) => (new Application(Variable.CreateVariableUnchecked("limitleft"), args), LList.Empty).Let(out applied, false), + (("limitleft"), (var expr, (var x, (var to, var otherArgs)))) => (MathS.Limit(expr, x, to, ApproachFrom.Left), otherArgs), + + ("limitright", ((_, LEmpty) or (_, (_, LEmpty))) and var args) => (new Application(Variable.CreateVariableUnchecked("limitright"), args), LList.Empty).Let(out applied, false), + ("limitright", (var expr, (var x, (var to, var otherArgs)))) => (MathS.Limit(expr, x, to, ApproachFrom.Right), otherArgs), + + ("domain", (var x, LEmpty) args) => (new Application(Variable.CreateVariableUnchecked("domain"), args), LList.Empty).Let(out applied, false), + ("domain", (var expr, (Set.SpecialSet ss, var otherArgs))) => (expr.WithCodomain(ss.ToDomain()), otherArgs), + ("domain", (var x, var _) args) => (new Application(Variable.CreateVariableUnchecked("domain"), args), LList.Empty).Let(out badArgument, true).Let(out applied, false), + + _ => null }; + private (Entity Result, bool RerunAgain) InnerProcess(Entity expr, LList allArgs) + => (expr, allArgs) switch + { + (var identifier, LEmpty) + => (identifier, false), + + (Application(var any, var argsInner), var argsOuter) + => (any.Apply(argsInner.Concat(argsOuter).ToLList()), true), + + (Variable(var name), var arguments) when KeywordToApplied(name, arguments, out _, out var isApplied) is var (applied, args) + => (ApplyOthersIfNeeded(applied, args), isApplied), + + (Lambda(var x, var body), (var arg, var otherArgs)) + => (ApplyOthersIfNeeded(body.Substitute(x, arg), otherArgs), true), + + (var exprSimplified, var argsSimplified) + => (New(exprSimplified, argsSimplified), false) + }; + + /// + protected override Entity InnerSimplify() + { + var (expr, toRunOuter) = InnerProcess(Expression.InnerSimplified, Arguments.Map(arg => arg.InnerSimplified)); + if (toRunOuter) + return expr.InnerSimplified; + return expr; + } + /// protected override Entity InnerEval() - => InnerSimplify(); + { + var (expr, toRunOuter) = InnerProcess(Expression.Evaled, Arguments.Map(arg => arg.Evaled)); + if (toRunOuter) + return expr.Evaled; + return expr; + } } partial record Lambda diff --git a/Sources/AngouriMath/AngouriMath/GlobalUsings.cs b/Sources/AngouriMath/AngouriMath/GlobalUsings.cs index 9501960c6..c530ec635 100644 --- a/Sources/AngouriMath/AngouriMath/GlobalUsings.cs +++ b/Sources/AngouriMath/AngouriMath/GlobalUsings.cs @@ -12,24 +12,4 @@ global using AngouriMath.Core; global using AngouriMath.Functions; - -global using ReasonWhyParsingFailed = - HonkSharp.Functional.Either< - AngouriMath.Core.ReasonOfFailureWhileParsing.Unknown, - AngouriMath.Core.ReasonOfFailureWhileParsing.MissingOperator, - AngouriMath.Core.ReasonOfFailureWhileParsing.InternalError - >; - -global using ParsingResult = - HonkSharp.Functional.Either< - AngouriMath.Entity, - HonkSharp.Functional.Failure< - HonkSharp.Functional.Either< - AngouriMath.Core.ReasonOfFailureWhileParsing.Unknown, - AngouriMath.Core.ReasonOfFailureWhileParsing.MissingOperator, - AngouriMath.Core.ReasonOfFailureWhileParsing.InternalError - > - > - >; - global using static AngouriMath.Entity.Number; diff --git a/Sources/AngouriMath/Directory.Build.props b/Sources/AngouriMath/Directory.Build.props index c152651ac..f744a521b 100644 --- a/Sources/AngouriMath/Directory.Build.props +++ b/Sources/AngouriMath/Directory.Build.props @@ -20,7 +20,7 @@ enable - NU5104;CA2252 + NU5104;CA2252;CS1591 true true @@ -28,7 +28,7 @@ - + @@ -39,13 +39,18 @@ - + + + + + + diff --git a/Sources/Samples/Samples/Program.cs b/Sources/Samples/Samples/Program.cs index f225d12c2..78c24a6be 100644 --- a/Sources/Samples/Samples/Program.cs +++ b/Sources/Samples/Samples/Program.cs @@ -9,6 +9,7 @@ using HonkSharp.Fluency; using System; +using AngouriMath.Core.NovaSyntax; using static AngouriMath.Entity; using AngouriMath.Extensions; using static AngouriMath.Entity.Number; @@ -16,6 +17,26 @@ using static AngouriMath.MathS; using static System.Console; using PeterO.Numbers; +using Yoakke.Streams; +using Yoakke.SynKit.Lexer; + +foreach (var c in "([A-Za-zΑ-ω])+(_([0-9A-Za-zΑ-ω])+)?") + WriteLine($"{c}: {(int)c}"); + +var e = "x"; + +/* +var allTokens = new NovaLexer(e).LexAll(); +var stream1 = new NovaLexer(e).ToStream().ToBuffered(); +var stream2 = new EnumerableStream>(allTokens).ToBuffered(); + + +WriteLine(string.Join(", ", allTokens)); +WriteLine(); +WriteLine(stream1.Peek()); +WriteLine(stream2.Peek()); + +return;*/ // var system = Equations( @@ -24,8 +45,30 @@ // ); // Console.WriteLine(system.Solve("x", "y")); +var expr = @" +x + b a c +"; + +var lexer = new NovaLexer(expr); +while (true) +{ + var token = lexer.Next(); + if (token.Kind == AngouriMathTokenType.End) break; + Console.WriteLine(token); +} + +using var _ = MathS.Diagnostic.OutputExplicit.Set(true); + +WriteLine(((Sumf)expr).Addend.GetType()); + +// lexer.Next() +// var parser = new NovaParser(lexer); +// Console.WriteLine(parser.ParseExpression().Ok.Value); +/* + Console.WriteLine(@" apply( lambda(x, y, apply(x, y)), y) ".Simplify()); +*/ \ No newline at end of file diff --git a/Sources/Tests/UnitTests/Common/InnerSimplifyTest.cs b/Sources/Tests/UnitTests/Common/InnerSimplifyTest.cs index 8ffa0c1a0..94d138e80 100644 --- a/Sources/Tests/UnitTests/Common/InnerSimplifyTest.cs +++ b/Sources/Tests/UnitTests/Common/InnerSimplifyTest.cs @@ -352,8 +352,8 @@ public void InequalityShouldBeNaN(string expr) [InlineData("0 >= 1 / 0")] [InlineData("i > i")] [InlineData("i < i")] - [InlineData("i >= -i")] - [InlineData("i <= -i")] + [InlineData("i >= i")] + [InlineData("i <= i")] public void InequalityShouldBeKeptInnerSimplify(string expr) => expr.ToEntity().InnerSimplified.ShouldBe(expr); } diff --git a/Sources/Tests/UnitTests/Convenience/FromStringTest.cs b/Sources/Tests/UnitTests/Convenience/FromStringTest.cs index 9a15054bb..4a081c17e 100644 --- a/Sources/Tests/UnitTests/Convenience/FromStringTest.cs +++ b/Sources/Tests/UnitTests/Convenience/FromStringTest.cs @@ -27,32 +27,33 @@ public sealed class FromStringTest public static readonly Entity.Variable z = Var(nameof(z)); [Theory] - [InlineData("", "line 1:0")] - [InlineData(" ", "line 1:1")] - [InlineData("\t", "line 1:1")] - [InlineData(" ", "line 1:2")] - [InlineData("//", "line 1:0")] - [InlineData("//\n", "line 2:0")] - [InlineData("/**/", "line 1:4")] - [InlineData("a+", "line 1:2")] - [InlineData("*a", "line 1:0")] - [InlineData("a*a_", "line 1:3")] - [InlineData("+!", "line 1:1")] - [InlineData("_", "line 1:0")] - [InlineData("()", "line 1:1")] - public void Error(string input, string errorPrefix) => - Assert.StartsWith(errorPrefix, - Assert.Throws(() => (Entity)input).Message); + [InlineData("")] + [InlineData(" ")] + [InlineData("\t")] + [InlineData(" ")] + [InlineData("//")] + [InlineData("//\n")] + [InlineData("/**/")] + [InlineData("a+")] + [InlineData("*a")] + [InlineData("a*a_")] + [InlineData("+!")] + [InlineData("_")] + [InlineData("()")] + public void Error(string input) + => Assert.Throws(() => (Entity)input); + [Theory] - [InlineData("limitleft()", "limitleft should have exactly 3 arguments but 0 arguments are provided")] - [InlineData("derivative(3)", "derivative should have exactly 3 arguments or 2 arguments but 1 argument is provided")] - [InlineData("integral(3)", "integral should have exactly 3 arguments or 2 arguments but 1 argument is provided")] - [InlineData("ln(3, 5)", "ln should have exactly 1 argument but 2 arguments are provided")] - [InlineData("sin(3, 5, 8)", "sin should have exactly 1 argument but 3 arguments are provided")] - [InlineData("log()", "log should have exactly 1 argument or 2 arguments but 0 arguments are provided")] - [InlineData("log(1, 1, 1)", "log should have exactly 1 argument or 2 arguments but 3 arguments are provided")] + [InlineData("limitleft()", "at least one")] + [InlineData("derivative(3)", "not enough")] + [InlineData("integral(3)", "not enough")] + [InlineData("ln(3, 5)", "too many")] + [InlineData("sin(3, 5, 8)", "too many")] + [InlineData("log()", "at least one")] + [InlineData("log(1, 1, 1)", "too many")] public void WrongNumbersOfArgs(string input, string message) => - Assert.Equal(message, Assert.Throws(() => (Entity)input).Message); + Assert.Contains(message, Assert.Throws(() => (Entity)input).Message.ToLower()); + [Theory] [InlineData("x+1")] [InlineData("sin(x)")] @@ -212,12 +213,12 @@ public void TestHyperbolic(string parsedName, string methodName) [Fact] public void TestInvalidArg1() => Assert.Throws(() => FromString("integral(x)")); [Fact] public void TestInvalidArg2() => Assert.Throws(() => FromString("integral(24)")); [Fact] public void TestInvalidArg3() => Assert.Throws(() => FromString("integral(x, x, 4, x)")); - [Fact] public void TestInvalidArg4() => Assert.Throws(() => FromString("integral(x, x, x, x)")); + [Fact] public void TestInvalidArg4() => Assert.Throws(() => FromString("integral(x, x, x, x)")); [Fact] public void TestInvalidArg5() => Assert.Throws(() => FromString("integral(x, x, a)")); [Fact] public void TestInvalidArg6() => Assert.Throws(() => FromString("derivative(x)")); [Fact] public void TestInvalidArg7() => Assert.Throws(() => FromString("derivative(24)")); [Fact] public void TestInvalidArg8() => Assert.Throws(() => FromString("derivative(x, x, 4, x)")); - [Fact] public void TestInvalidArg9() => Assert.Throws(() => FromString("derivative(x, x, x, x)")); + [Fact] public void TestInvalidArg9() => Assert.Throws(() => FromString("derivative(x, x, x, x)")); [Fact] public void TestInvalidArg10() => Assert.Throws(() => FromString("derivative(x, x, a)")); [Fact] public void TestPowerUnary1() => Assert.Equal(Pow(x, "-5"), FromString("x^-5")); [Fact] public void TestPowerUnary2() => Assert.Equal(Pow(x, -x), FromString("x^-x")); @@ -306,12 +307,12 @@ public void TestInequalityCompositionPrettySyntax( [InlineData("1 + αb_3", "αb_3")] [InlineData("αβγδεζηθικλμνξοπρσςτυφχψω", "αβγδεζηθικλμνξοπρσςτυφχψω")] [InlineData("sin(αβγδεζηθικλμ)", "αβγδεζηθικλμ")] - [InlineData("ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣϹΤΥΦΧΨΩ", "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣϹΤΥΦΧΨΩ")] - [InlineData("1 + ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣϹΤΥΦΧΨΩ + 1", "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣϹΤΥΦΧΨΩ")] + [InlineData("ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ", "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ")] + [InlineData("1 + ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ + 1", "ΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡΣΤΥΦΧΨΩ")] [InlineData("йцукенгшщзхъфывапролджэячсмитьбю", "йцукенгшщзхъфывапролджэячсмитьбю")] [InlineData("ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ", "ЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ")] [InlineData("cos(АнгуриMath)", "АнгуриMath")] - [InlineData("ΑγγούριMath + 11", "ΑγγούριMath")] + [InlineData("ΑγγουριMath + 11", "ΑγγουριMath")] [InlineData("БЕZHΘГIM_64 ^ 2", "БЕZHΘГIM_64")] [InlineData("ВсЕмПрИвЕтВэТоМчАтИкЕ < 3", "ВсЕмПрИвЕтВэТоМчАтИкЕ")] [InlineData("йА кΨеВеТкΩ", "йА")] @@ -323,52 +324,43 @@ public void TestUnicodeVariablesParser(string exprRaw, string expectedName) } [Theory] - [InlineData("2x")] - [InlineData("2 x")] [InlineData("x2")] [InlineData("x 2")] - [InlineData("x + 1 2")] - [InlineData("2(x + 2)")] [InlineData("(x + 1)2")] [InlineData("x(x + 1)")] [InlineData("(x + 1)x")] [InlineData("(x + 1)(1 + 2)")] - [InlineData("2sin(x)")] [InlineData("sin(x)2")] [InlineData("a sin(x)")] + [InlineData("a b")] + [InlineData("sin a")] + [InlineData("b sin")] [InlineData("sin(x) a")] - public void ThrowsAsExplicitParsingEnabled(string exprRaw) + public void ApplicationParse(string exprRaw) { - exprRaw.ToEntity(); // doesn't throw, good using var _ = Settings.ExplicitParsingOnly.Set(true); - Assert.Throws(exprRaw.ToEntity); + Assert.IsType(exprRaw.ToEntity()); } [Theory] - [InlineData("x", false, "Success")] - [InlineData("x2", false, "Success")] - [InlineData("x2", true, "Missing")] - [InlineData("2x", false, "Success")] - [InlineData("2x", true, "Missing")] - [InlineData("x a", false, "Success")] - [InlineData("x a", true, "Missing")] - [InlineData("1 + x", false, "Success")] - [InlineData("x;", false, "Unknown")] - [InlineData("x -", false, "Unknown")] - [InlineData("(x", false, "Unknown")] - public void ReturnsTheFollowing(string exprRaw, bool explicitOnly, string result) - => Settings.ExplicitParsingOnly.As(explicitOnly, - () => Parse(exprRaw) - .Switch( - valid => "Success", - invalid => invalid.Reason.Switch( - unknown => "Unknown", - missing => "Missing", - internalError => "Internal" - ) - ) - .Should().Be(result) - ); + [InlineData("2x")] + [InlineData("2 x")] + [InlineData("2(x + 2)")] + [InlineData("2sin(x)")] + public void CannotApply(string expr) + { + using var _ = Settings.ExplicitParsingOnly.Set(true); + Assert.Throws(() => FromString(expr)); + } + + [Fact] public void ApplicationParse1() + => Settings.ExplicitParsingOnly.As(true, () => Assert.Equal("x".ToEntity().Apply("a", "b", "c"), "x a b c".ToEntity())); + + [Fact] public void ApplicationParse2() + => Settings.ExplicitParsingOnly.As(true, () => Assert.Equal("x".ToEntity().Apply("a".ToEntity().Apply("b", "c")), "x (a b c)".ToEntity())); + + [Fact] public void ApplicationParse3() + => Settings.ExplicitParsingOnly.As(true, () => Assert.Equal("sin a", "sin".ToEntity().Apply("a"))); } } diff --git a/Sources/Utils/Utils/AntlrPostProcessor.cs b/Sources/Utils/Utils/AntlrPostProcessor.cs deleted file mode 100644 index e7c8aafb8..000000000 --- a/Sources/Utils/Utils/AntlrPostProcessor.cs +++ /dev/null @@ -1,36 +0,0 @@ -// -// Copyright (c) 2019-2022 Angouri. -// AngouriMath is licensed under MIT. -// Details: https://github.com/asc-community/AngouriMath/blob/master/LICENSE.md. -// Website: https://am.angouri.org. -// - -using System.IO; -using System.Text; - -namespace Utils -{ - public static class AntlrPostProcessorReplacePublicWithInternal - { - public const string ANTLR_PATH = "../AngouriMath/Core/Antlr/"; - - private static void ProcessFile(string path) - { - var finalPath = Path.Combine(ANTLR_PATH, path); - - var textSb = new StringBuilder(File.ReadAllText(finalPath)); - textSb.Replace("public sealed class", "internal class"); - textSb.Replace("public partial class", "internal partial class"); - textSb.Replace("public interface", "internal interface"); - File.WriteAllText(finalPath, textSb.ToString()); - } - - public static void Do() - { - ProcessFile("AngouriMathBaseListener.cs"); - ProcessFile("AngouriMathLexer.cs"); - ProcessFile("AngouriMathListener.cs"); - ProcessFile("AngouriMathParser.cs"); - } - } -}