diff --git a/jexl-eval/src/lib.rs b/jexl-eval/src/lib.rs index 7312acb..d97e02c 100644 --- a/jexl-eval/src/lib.rs +++ b/jexl-eval/src/lib.rs @@ -34,7 +34,7 @@ //! use jexl_parser::{ - ast::{Expression, OpCode}, + ast::{Expression, OpCode, UnOpCode}, Parser, }; use serde_json::{json as value, Value}; @@ -215,6 +215,9 @@ impl<'a> Evaluator<'a> { } } + Expression::UnaryOperation { operation, right } => { + self.apply_unary_op(operation, right, context) + } Expression::BinaryOperation { left, right, @@ -264,6 +267,19 @@ impl<'a> Evaluator<'a> { } } + fn apply_unary_op<'b>( + &self, + operation: UnOpCode, + right: Box, + context: &Context, + ) -> Result<'b, Value> { + let right = self.eval_ast(*right, context)?; + + match operation { + UnOpCode::Negate => Ok(value!(!right.is_truthy())), + } + } + fn eval_op<'b>( &self, operation: OpCode, @@ -968,4 +984,43 @@ mod tests { assert!(res.is_ok()); assert_eq!(res.unwrap(), value!(42.0)); } + + #[test] + fn test_negation() { + let evaluator = Evaluator::new(); + + let res = evaluator.eval("!true"); + assert_eq!(res.unwrap(), value!(false)); + + let res = evaluator.eval("!true == !(!null)"); + assert_eq!(res.unwrap(), value!(true)); + + let res = evaluator.eval(r#"!(!"") != true"#); + assert_eq!(res.unwrap(), value!(true)); + + let res = evaluator.eval("!0.0 in [true]"); + assert_eq!(res.unwrap(), value!(true)); + + let res = evaluator.eval("! (2 in [3, 2, 1])"); + assert_eq!(res.unwrap(), value!(false)); + + let context = value!({ + "foo": [false] + }); + let res = evaluator.eval_in_context("foo[0] == false", &context); + assert_eq!(res.unwrap(), value!(true)); + + let res = evaluator.eval_in_context("!foo[0] == true", &context); + assert_eq!(res.unwrap(), value!(true)); + + let context = value!({ + "foo": value!({"bar": false}) + }); + + let res = evaluator.eval_in_context("foo.bar == false", &context); + assert_eq!(res.unwrap(), value!(true)); + + let res = evaluator.eval_in_context("!foo.bar == true", &context); + assert_eq!(res.unwrap(), value!(true)); + } } diff --git a/jexl-parser/src/ast.rs b/jexl-parser/src/ast.rs index 7482a9a..e8c0551 100644 --- a/jexl-parser/src/ast.rs +++ b/jexl-parser/src/ast.rs @@ -12,6 +12,11 @@ pub enum Expression { Identifier(String), Null, + UnaryOperation { + operation: UnOpCode, + right: Box, + }, + BinaryOperation { operation: OpCode, left: Box, @@ -44,6 +49,11 @@ pub enum Expression { }, } +#[derive(Debug, PartialEq, Eq, Copy, Clone)] +pub enum UnOpCode { + Negate, +} + #[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum OpCode { Add, diff --git a/jexl-parser/src/lib.rs b/jexl-parser/src/lib.rs index 86114bd..ccacde1 100644 --- a/jexl-parser/src/lib.rs +++ b/jexl-parser/src/lib.rs @@ -21,7 +21,7 @@ impl Parser { #[cfg(test)] mod tests { use super::*; - use crate::ast::{Expression, OpCode}; + use crate::ast::{Expression, OpCode, UnOpCode}; #[test] fn literal() { @@ -169,6 +169,36 @@ mod tests { ); } + #[test] + fn test_simple_negation() { + let exp = "!false"; + let parsed = Parser::parse(exp).unwrap(); + assert_eq!( + parsed, + Expression::UnaryOperation { + operation: UnOpCode::Negate, + right: Box::new(Expression::Boolean(false)), + } + ); + } + + #[test] + fn test_negation() { + let exp = "! a && b"; + let parsed = Parser::parse(exp).unwrap(); + assert_eq!( + parsed, + Expression::BinaryOperation { + operation: OpCode::And, + left: Box::new(Expression::UnaryOperation { + operation: UnOpCode::Negate, + right: Box::new(Expression::Identifier("a".to_string())), + }), + right: Box::new(Expression::Identifier("b".to_string())), + } + ); + } + #[test] fn test_parsing_null() { assert_eq!(Parser::parse("null"), Ok(Expression::Null)); diff --git a/jexl-parser/src/parser.lalrpop b/jexl-parser/src/parser.lalrpop index a7d7145..3f41540 100644 --- a/jexl-parser/src/parser.lalrpop +++ b/jexl-parser/src/parser.lalrpop @@ -1,6 +1,6 @@ use std::str::FromStr; -use crate::ast::{Expression, OpCode}; +use crate::ast::{Expression, OpCode, UnOpCode}; grammar; @@ -41,6 +41,11 @@ Expr60: Box = { Expr70 }; +Expr70: Box = { + => Box::new(Expression::UnaryOperation { operation, right }), + Expr80 +} + /// Expression for dereferencing. /// Used for dereferencing object literals, array literals, and the context @@ -49,7 +54,7 @@ Expr60: Box = { /// - Or an `index` operation, taking an expression on the left hand side, and another expression inside square ("[]") brackets. /// /// # Examples: -/// +/// /// Assume our context is the following /// ``` ///{ @@ -64,13 +69,13 @@ Expr60: Box = { /// `foo.bar[0] == {"baz": 1}` /// `foo.bar[1].bobo[0] == 13` /// `[1, 2, 3][1] == 2` -Expr70: Box = { - => Box::new(Expression::IndexOperation{subject, index}), - "." => Box::new(Expression::DotOperation{subject, ident}), - Expr80 +Expr80: Box = { + => Box::new(Expression::IndexOperation{subject, index}), + "." => Box::new(Expression::DotOperation{subject, ident}), + Expr90 }; -Expr80: Box = { +Expr90: Box = { Number => Box::new(Expression::Number(<>)), Boolean => Box::new(Expression::Boolean(<>)), String => Box::new(Expression::String(<>)), @@ -116,6 +121,10 @@ Op50: OpCode = { "^" => OpCode::Exponent, }; +UnOp80: UnOpCode = { + "!" => UnOpCode::Negate, +}; + Number: f64 = { r"[0-9]+" => f64::from_str(<>).unwrap(), r"[0-9]+\.[0-9]*" => f64::from_str(<>).unwrap(), @@ -136,7 +145,7 @@ Identifier: String = { } Index: Box = { - "[" "." "]" => Box::new(Expression::Filter {ident, op, right}), + "[" "." "]" => Box::new(Expression::Filter {ident, op, right}), "[" "]", } @@ -167,6 +176,6 @@ Object: Vec<(String, Box)> = { } ObjectIdentifier: String = { - String, + String, Identifier } diff --git a/jexl-parser/src/parser.rs b/jexl-parser/src/parser.rs index 99e01a2..71d3fdb 100644 --- a/jexl-parser/src/parser.rs +++ b/jexl-parser/src/parser.rs @@ -1,7 +1,5 @@ -// auto-generated: "lalrpop 0.19.8" -// sha3: bceacaa24ba21e6d6ec6b336c5fdd6fcdaa08bf5094824af45d3f7273cd647e7 use std::str::FromStr; -use crate::ast::{Expression, OpCode}; +use crate::ast::{Expression, OpCode, UnOpCode}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -14,7 +12,7 @@ mod __parse__Expression { #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports, unused_parens, clippy::all)] use std::str::FromStr; - use crate::ast::{Expression, OpCode}; + use crate::ast::{Expression, OpCode, UnOpCode}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -40,215 +38,220 @@ mod __parse__Expression { Variant12(Option>), Variant13(f64), Variant14(OpCode), + Variant15(UnOpCode), } const __ACTION: &[i8] = &[ // State 0 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 1 - 63, 0, -29, 0, -29, 0, 0, -29, 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, 0, 0, 0, 0, -29, 0, 0, 69, 0, 0, 0, 0, 0, -29, -29, 0, 0, 0, 0, 0, 0, + 0, 65, 0, -29, 0, -29, 0, 0, -29, 0, 0, 0, 0, 0, 66, 67, 68, 69, 70, 0, 0, -29, 0, 0, 71, 0, 0, 0, 0, 0, -29, -29, 0, 0, 0, 0, 0, 0, // State 2 - -31, 0, -31, 0, -31, 0, 70, -31, 71, 0, 0, 0, 0, -31, -31, -31, -31, -31, 0, 0, 0, 0, -31, 0, 0, -31, 0, 0, 0, 0, 0, -31, -31, 0, 0, 0, 0, 0, 0, + 0, -31, 0, -31, 0, -31, 0, 72, -31, 73, 0, 0, 0, 0, -31, -31, -31, -31, -31, 0, 0, -31, 0, 0, -31, 0, 0, 0, 0, 0, -31, -31, 0, 0, 0, 0, 0, 0, // State 3 - -33, 0, -33, 0, -33, 72, -33, -33, -33, 0, 73, 74, 0, -33, -33, -33, -33, -33, 0, 0, 0, 0, -33, 0, 0, -33, 0, 0, 0, 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, + 0, -33, 0, -33, 0, -33, 74, -33, -33, -33, 0, 75, 76, 0, -33, -33, -33, -33, -33, 0, 0, -33, 0, 0, -33, 0, 0, 0, 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, // State 4 - -35, 75, -35, 0, -35, -35, -35, -35, -35, 0, -35, -35, 0, -35, -35, -35, -35, -35, 0, 0, 0, 0, -35, 76, 0, -35, 0, 0, 0, 0, 0, -35, -35, 0, 0, 0, 0, 0, 0, + 0, -35, 77, -35, 0, -35, -35, -35, -35, -35, 0, -35, -35, 0, -35, -35, -35, -35, -35, 0, 0, -35, 78, 0, -35, 0, 0, 0, 0, 0, -35, -35, 0, 0, 0, 0, 0, 0, // State 5 - -42, -42, -42, 0, -42, -42, -42, -42, -42, 17, -42, -42, -42, -42, -42, -42, -42, -42, -42, 0, 0, 18, -42, -42, 0, -42, 0, 0, 0, 0, -42, -42, -42, 0, 0, 0, 0, 0, 0, + 0, -44, -44, -44, 0, -44, -44, -44, -44, -44, 18, -44, -44, -44, -44, -44, -44, -44, -44, -44, 19, -44, -44, 0, -44, 0, 0, 0, 0, -44, -44, -44, 0, 0, 0, 0, 0, 0, // State 6 - 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, // State 7 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 8 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, -25, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 9 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 57, 58, 0, 0, 61, 0, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -25, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 10 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -21, 59, 60, 0, 0, 63, 0, // State 11 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 12 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 13 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 14 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 15 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 16 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, // State 17 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, // State 18 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 19 - 0, 0, 78, 0, 88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 20 - 0, 0, 0, 8, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, -27, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 0, -43, -43, -43, 0, -43, -43, -43, -43, -43, 18, -43, -43, -43, -43, -43, -43, -43, -43, -43, 19, -43, -43, 0, -43, 0, 0, 0, 0, -43, -43, -43, 0, 0, 0, 0, 0, 0, // State 21 - 0, 0, 78, 0, -24, 0, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 90, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, // State 22 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 57, 58, 0, 0, 61, 0, + 54, 0, 0, 0, 9, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, -27, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 23 - -30, 0, -30, 0, -30, 0, 70, -30, 71, 0, 0, 0, 0, -30, -30, -30, -30, -30, 0, 0, 0, 0, -30, 0, 0, -30, 0, 0, 0, 0, 0, -30, -30, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 0, -24, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, // State 24 - -32, 0, -32, 0, -32, 72, -32, -32, -32, 0, 73, 74, 0, -32, -32, -32, -32, -32, 0, 0, 0, 0, -32, 0, 0, -32, 0, 0, 0, 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 59, 60, 0, 0, 63, 0, // State 25 - -34, 75, -34, 0, -34, -34, -34, -34, -34, 0, -34, -34, 0, -34, -34, -34, -34, -34, 0, 0, 0, 0, -34, 76, 0, -34, 0, 0, 0, 0, 0, -34, -34, 0, 0, 0, 0, 0, 0, + 0, -30, 0, -30, 0, -30, 0, 72, -30, 73, 0, 0, 0, 0, -30, -30, -30, -30, -30, 0, 0, -30, 0, 0, -30, 0, 0, 0, 0, 0, -30, -30, 0, 0, 0, 0, 0, 0, // State 26 - -41, -41, -41, 34, -41, -41, -41, -41, -41, 0, -41, -41, -41, -41, -41, -41, -41, -41, -41, 0, 0, 0, -41, -41, 0, -41, 0, 0, 0, 0, -41, -41, -41, 0, 0, 0, 0, 0, 0, + 0, -32, 0, -32, 0, -32, 74, -32, -32, -32, 0, 75, 76, 0, -32, -32, -32, -32, -32, 0, 0, -32, 0, 0, -32, 0, 0, 0, 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, // State 27 - 0, 0, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, + 0, -34, 77, -34, 0, -34, -34, -34, -34, -34, 0, -34, -34, 0, -34, -34, -34, -34, -34, 0, 0, -34, 78, 0, -34, 0, 0, 0, 0, 0, -34, -34, 0, 0, 0, 0, 0, 0, // State 28 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, + 0, -41, -41, -41, 36, -41, -41, -41, -41, -41, 0, -41, -41, -41, -41, -41, -41, -41, -41, -41, 0, -41, -41, 0, -41, 0, 0, 0, 0, -41, -41, -41, 0, 0, 0, 0, 0, 0, // State 29 - 63, 0, -28, 0, -28, 0, 0, -28, 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, 0, 0, 0, 0, -28, 0, 0, 69, 0, 0, 0, 0, 0, -28, -28, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, // State 30 - 0, 0, 78, 0, -26, 0, 0, 95, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 79, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 63, 0, // State 31 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 0, 65, 0, -28, 0, -28, 0, 0, -28, 0, 0, 0, 0, 0, 66, 67, 68, 69, 70, 0, 0, -28, 0, 0, 71, 0, 0, 0, 0, 0, -28, -28, 0, 0, 0, 0, 0, 0, // State 32 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 0, 0, 0, 80, 0, -26, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -26, 0, 0, 0, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 0, // State 33 - 0, 0, 0, 8, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 34 - 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 64, 65, 66, 67, 68, 0, 0, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 35 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 36 - 0, 0, 78, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, -20, 0, 0, 0, 0, 0, 0, + 0, 65, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 66, 67, 68, 69, 70, 0, 0, 0, 0, 0, 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 37 - 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 52, 9, 0, 0, 53, 0, 54, 55, 10, 56, 0, 0, 0, 57, 58, 59, 60, 61, 62, + 54, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 38 - 0, 0, 78, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 79, -22, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, -20, 0, 0, 0, 0, 0, 0, // State 39 - -49, -49, -49, 0, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, 0, 0, -49, -49, -49, 0, -49, 0, 0, 0, 0, -49, -49, -49, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 55, 0, 56, 57, 11, 58, 0, 0, 0, 59, 60, 61, 62, 63, 64, // State 40 - -47, -47, -47, 0, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, 0, 0, -47, -47, -47, 0, -47, 0, 0, 0, 0, -47, -47, -47, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 80, 0, 0, 0, 0, 103, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 81, -22, 0, 0, 0, 0, 0, 0, // State 41 - 0, 0, -54, 0, -54, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -54, 0, 0, 0, 0, 0, 0, 0, 0, -54, -54, 0, 0, 0, 0, 0, 0, + 0, -51, -51, -51, 0, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, 0, -51, 0, 0, 0, 0, -51, -51, -51, 0, 0, 0, 0, 0, 0, // State 42 - -37, -37, -37, 0, -37, -37, -37, -37, -37, 0, -37, -37, 0, -37, -37, -37, -37, -37, 15, 0, 0, 0, -37, -37, 0, -37, 0, 0, 0, 0, 0, -37, -37, 0, 0, 0, 0, 0, 0, + 0, -49, -49, -49, 0, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, 0, -49, 0, 0, 0, 0, -49, -49, -49, 0, 0, 0, 0, 0, 0, // State 43 - -39, -39, -39, 0, -39, -39, -39, -39, -39, 0, -39, -39, 0, -39, -39, -39, -39, -39, -39, 0, 0, 0, -39, -39, 0, -39, 0, 0, 0, 0, 16, -39, -39, 0, 0, 0, 0, 0, 0, + 0, 0, 0, -56, 0, -56, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -56, 0, 0, 0, 0, 0, 0, 0, 0, -56, -56, 0, 0, 0, 0, 0, 0, // State 44 - -45, -45, -45, 0, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, 0, 0, -45, -45, -45, 0, -45, 0, 0, 0, 0, -45, -45, -45, 0, 0, 0, 0, 0, 0, + 0, -37, -37, -37, 0, -37, -37, -37, -37, -37, 0, -37, -37, 0, -37, -37, -37, -37, -37, 16, 0, -37, -37, 0, -37, 0, 0, 0, 0, 0, -37, -37, 0, 0, 0, 0, 0, 0, // State 45 - -52, -52, -52, 0, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, 0, 0, -52, -52, -52, 0, -52, 0, 0, 0, 0, -52, -52, -52, 0, 0, 0, 0, 0, 0, + 0, -39, -39, -39, 0, -39, -39, -39, -39, -39, 0, -39, -39, 0, -39, -39, -39, -39, -39, -39, 0, -39, -39, 0, -39, 0, 0, 0, 0, 17, -39, -39, 0, 0, 0, 0, 0, 0, // State 46 - -51, -51, -51, 0, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, 0, 0, -51, -51, -51, 0, -51, 0, 0, 0, 0, -51, -51, -51, 0, 0, 0, 0, 0, 0, + 0, -42, -42, -42, 0, -42, -42, -42, -42, -42, 0, -42, -42, -42, -42, -42, -42, -42, -42, -42, 0, -42, -42, 0, -42, 0, 0, 0, 0, -42, -42, -42, 0, 0, 0, 0, 0, 0, // State 47 - -46, -46, -46, 0, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, 0, 0, -46, -46, -46, 0, -46, 0, 0, 0, 0, -46, -46, -46, 0, 0, 0, 0, 0, 0, + 0, -47, -47, -47, 0, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, 0, -47, 0, 0, 0, 0, -47, -47, -47, 0, 0, 0, 0, 0, 0, // State 48 - -50, -50, -50, 0, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, 0, 0, -50, -50, -50, 0, -50, 0, 0, 0, 0, -50, -50, -50, 0, 0, 0, 0, 0, 0, + 0, -54, -54, -54, 0, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, -54, 0, -54, 0, 0, 0, 0, -54, -54, -54, 0, 0, 0, 0, 0, 0, // State 49 - -48, -48, -48, 0, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, 0, 0, -48, -48, -48, 0, -48, 0, 0, 0, 0, -48, -48, -48, 0, 0, 0, 0, 0, 0, + 0, -53, -53, -53, 0, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, 0, -53, 0, 0, 0, 0, -53, -53, -53, 0, 0, 0, 0, 0, 0, // State 50 - -62, -62, -62, 0, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, 0, 0, -62, -62, -62, 0, -62, 0, 0, 0, 0, -62, -62, -62, 0, 0, 0, 0, 0, 0, + 0, -48, -48, -48, 0, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, 0, -48, 0, 0, 0, 0, -48, -48, -48, 0, 0, 0, 0, 0, 0, // State 51 - -60, -60, -60, 0, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, 0, 0, -60, -60, -60, 0, -60, 0, 0, 0, 0, -60, -60, -60, 0, 0, 0, 0, 0, 0, + 0, -52, -52, -52, 0, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, 0, -52, 0, 0, 0, 0, -52, -52, -52, 0, 0, 0, 0, 0, 0, // State 52 - -19, -19, -19, 0, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, 0, 0, -19, -19, -19, 0, -19, 0, 0, 0, 0, -19, -19, -19, 0, 0, 0, 0, 0, 0, + 0, -50, -50, -50, 0, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, 0, -50, 0, 0, 0, 0, -50, -50, -50, 0, 0, 0, 0, 0, 0, // State 53 - -61, -61, -61, 0, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, 0, 0, -61, -61, -61, 0, -61, 0, 0, 0, 0, -61, -61, -61, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -88, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -88, 0, 0, -88, 0, -88, -88, -88, -88, 0, 0, 0, -88, -88, -88, -88, -88, -88, // State 54 - -18, -18, -18, 0, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 0, 0, -18, -18, -18, 0, -18, 0, 0, 0, 0, -18, -18, -18, 0, 0, 0, 0, 0, 0, + 0, -19, -19, -19, 0, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, 0, -19, 0, 0, 0, 0, -19, -19, -19, 0, 0, 0, 0, 0, 0, // State 55 - -67, -67, -67, 0, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, 0, 0, -67, -67, -67, 0, -67, 0, 0, 0, 0, -67, -67, -67, 0, 0, 0, 0, 0, 0, + 0, -62, -62, -62, 0, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, -62, 0, -62, 0, 0, 0, 0, -62, -62, -62, 0, 0, 0, 0, 0, 0, // State 56 - -86, -86, -86, 0, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, 0, 0, -86, -86, -86, 0, -86, 0, 0, 0, 0, -86, -86, -86, 0, 0, 0, 0, 0, 0, + 0, -18, -18, -18, 0, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, 0, -18, 0, 0, 0, 0, -18, -18, -18, 0, 0, 0, 0, 0, 0, // State 57 - -87, -87, -87, 0, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, 0, 0, -87, -87, -87, 0, -87, 0, 0, 0, 0, -87, -87, -87, 0, 0, 0, 0, 0, 0, + 0, -67, -67, -67, 0, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, -67, 0, -67, 0, 0, 0, 0, -67, -67, -67, 0, 0, 0, 0, 0, 0, // State 58 - -63, -63, -63, 0, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, 0, 0, -63, -63, -63, 0, -63, 0, 0, 0, 0, -63, -63, -63, 0, 0, 0, 0, 0, 0, + 0, -86, -86, -86, 0, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, -86, 0, -86, 0, 0, 0, 0, -86, -86, -86, 0, 0, 0, 0, 0, 0, // State 59 - -64, -64, -64, 0, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, 0, 0, -64, -64, -64, 0, -64, 0, 0, 0, 0, -64, -64, -64, 0, 0, 0, 0, 0, 0, + 0, -87, -87, -87, 0, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, -87, 0, -87, 0, 0, 0, 0, -87, -87, -87, 0, 0, 0, 0, 0, 0, // State 60 - -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, -57, 0, 0, -57, -57, -57, 0, -57, 0, 0, 0, 0, -57, -57, -57, 0, 0, 0, 0, 0, 0, + 0, -63, -63, -63, 0, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, -63, 0, -63, 0, 0, 0, 0, -63, -63, -63, 0, 0, 0, 0, 0, 0, // State 61 - -65, -65, -65, 0, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, 0, 0, -65, -65, -65, 0, -65, 0, 0, 0, 0, -65, -65, -65, 0, 0, 0, 0, 0, 0, + 0, -64, -64, -64, 0, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, -64, 0, -64, 0, 0, 0, 0, -64, -64, -64, 0, 0, 0, 0, 0, 0, // State 62 - 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, -73, -73, 0, 0, -73, 0, -73, -73, -73, -73, 0, 0, 0, -73, -73, -73, -73, -73, -73, + 0, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, 0, -59, 0, 0, 0, 0, -59, -59, -59, 0, 0, 0, 0, 0, 0, // State 63 - 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, -77, -77, 0, 0, -77, 0, -77, -77, -77, -77, 0, 0, 0, -77, -77, -77, -77, -77, -77, + 0, -65, -65, -65, 0, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, 0, -65, 0, 0, 0, 0, -65, -65, -65, 0, 0, 0, 0, 0, 0, // State 64 - 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, -75, -75, 0, 0, -75, 0, -75, -75, -75, -75, 0, 0, 0, -75, -75, -75, -75, -75, -75, + -73, 0, 0, 0, -73, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, 0, 0, -73, 0, -73, -73, -73, -73, 0, 0, 0, -73, -73, -73, -73, -73, -73, // State 65 - 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, -72, -72, 0, 0, -72, 0, -72, -72, -72, -72, 0, 0, 0, -72, -72, -72, -72, -72, -72, + -77, 0, 0, 0, -77, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -77, 0, 0, -77, 0, -77, -77, -77, -77, 0, 0, 0, -77, -77, -77, -77, -77, -77, // State 66 - 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, -76, -76, 0, 0, -76, 0, -76, -76, -76, -76, 0, 0, 0, -76, -76, -76, -76, -76, -76, + -75, 0, 0, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, -75, 0, -75, -75, -75, -75, 0, 0, 0, -75, -75, -75, -75, -75, -75, // State 67 - 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, -74, -74, 0, 0, -74, 0, -74, -74, -74, -74, 0, 0, 0, -74, -74, -74, -74, -74, -74, + -72, 0, 0, 0, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, -72, 0, -72, -72, -72, -72, 0, 0, 0, -72, -72, -72, -72, -72, -72, // State 68 - 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, -78, -78, 0, 0, -78, 0, -78, -78, -78, -78, 0, 0, 0, -78, -78, -78, -78, -78, -78, + -76, 0, 0, 0, -76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -76, 0, 0, -76, 0, -76, -76, -76, -76, 0, 0, 0, -76, -76, -76, -76, -76, -76, // State 69 - 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, -79, -79, 0, 0, -79, 0, -79, -79, -79, -79, 0, 0, 0, -79, -79, -79, -79, -79, -79, + -74, 0, 0, 0, -74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -74, 0, 0, -74, 0, -74, -74, -74, -74, 0, 0, 0, -74, -74, -74, -74, -74, -74, // State 70 - 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, -80, -80, 0, 0, -80, 0, -80, -80, -80, -80, 0, 0, 0, -80, -80, -80, -80, -80, -80, + -78, 0, 0, 0, -78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -78, 0, 0, -78, 0, -78, -78, -78, -78, 0, 0, 0, -78, -78, -78, -78, -78, -78, // State 71 - 0, 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, -81, -81, 0, 0, -81, 0, -81, -81, -81, -81, 0, 0, 0, -81, -81, -81, -81, -81, -81, + -79, 0, 0, 0, -79, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -79, 0, 0, -79, 0, -79, -79, -79, -79, 0, 0, 0, -79, -79, -79, -79, -79, -79, // State 72 - 0, 0, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, -83, -83, 0, 0, -83, 0, -83, -83, -83, -83, 0, 0, 0, -83, -83, -83, -83, -83, -83, + -80, 0, 0, 0, -80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -80, 0, 0, -80, 0, -80, -80, -80, -80, 0, 0, 0, -80, -80, -80, -80, -80, -80, // State 73 - 0, 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82, -82, -82, 0, 0, -82, 0, -82, -82, -82, -82, 0, 0, 0, -82, -82, -82, -82, -82, -82, + -81, 0, 0, 0, -81, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -81, 0, 0, -81, 0, -81, -81, -81, -81, 0, 0, 0, -81, -81, -81, -81, -81, -81, // State 74 - 0, 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, -84, -84, 0, 0, -84, 0, -84, -84, -84, -84, 0, 0, 0, -84, -84, -84, -84, -84, -84, + -83, 0, 0, 0, -83, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -83, 0, 0, -83, 0, -83, -83, -83, -83, 0, 0, 0, -83, -83, -83, -83, -83, -83, // State 75 - 0, 0, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, -85, -85, 0, 0, -85, 0, -85, -85, -85, -85, 0, 0, 0, -85, -85, -85, -85, -85, -85, + -82, 0, 0, 0, -82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -82, 0, 0, -82, 0, -82, -82, -82, -82, 0, 0, 0, -82, -82, -82, -82, -82, -82, // State 76 - -43, -43, -43, 0, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, 0, 0, -43, -43, -43, 0, -43, 0, 0, 0, 0, -43, -43, -43, 0, 0, 0, 0, 0, 0, + -84, 0, 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -84, 0, 0, -84, 0, -84, -84, -84, -84, 0, 0, 0, -84, -84, -84, -84, -84, -84, // State 77 - 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, -70, -70, 0, 0, -70, 0, -70, -70, -70, -70, 0, 0, 0, -70, -70, -70, -70, -70, -70, + -85, 0, 0, 0, -85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -85, 0, 0, -85, 0, -85, -85, -85, -85, 0, 0, 0, -85, -85, -85, -85, -85, -85, // State 78 - 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, -71, -71, 0, 0, -71, 0, -71, -71, -71, -71, 0, 0, 0, -71, -71, -71, -71, -71, -71, + 0, -45, -45, -45, 0, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, 0, -45, 0, 0, 0, 0, -45, -45, -45, 0, 0, 0, 0, 0, 0, // State 79 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -70, 0, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, -70, 0, -70, -70, -70, -70, 0, 0, 0, -70, -70, -70, -70, -70, -70, // State 80 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, + -71, 0, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, -71, 0, -71, -71, -71, -71, 0, 0, 0, -71, -71, -71, -71, -71, -71, // State 81 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 91, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 82 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 94, 0, 0, 0, 0, 0, 0, // State 83 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 84 - -36, -36, -36, 0, -36, -36, -36, -36, -36, 0, -36, -36, 0, -36, -36, -36, -36, -36, 15, 0, 0, 0, -36, -36, 0, -36, 0, 0, 0, 0, 0, -36, -36, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 85 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 86 - -44, -44, -44, 0, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, 0, 0, -44, -44, -44, 0, -44, 0, 0, 0, 0, -44, -44, -44, 0, 0, 0, 0, 0, 0, + 0, -36, -36, -36, 0, -36, -36, -36, -36, -36, 0, -36, -36, 0, -36, -36, -36, -36, -36, 16, 0, -36, -36, 0, -36, 0, 0, 0, 0, 0, -36, -36, 0, 0, 0, 0, 0, 0, // State 87 - -53, -53, -53, 0, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, 0, 0, -53, -53, -53, 0, -53, 0, 0, 0, 0, -53, -53, -53, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 0, 0, // State 88 - -17, -17, -17, 0, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 0, 0, -17, -17, -17, 0, -17, 0, 0, 0, 0, -17, -17, -17, 0, 0, 0, 0, 0, 0, + 0, -46, -46, -46, 0, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, 0, -46, 0, 0, 0, 0, -46, -46, -46, 0, 0, 0, 0, 0, 0, // State 89 - 0, 0, 0, -9, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -9, -9, -9, 0, -9, 0, -9, -9, -9, -9, 0, 0, 0, -9, -9, -9, -9, -9, -9, + 0, -55, -55, -55, 0, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, -55, 0, -55, 0, 0, 0, 0, -55, -55, -55, 0, 0, 0, 0, 0, 0, // State 90 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, -17, -17, -17, 0, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, 0, -17, 0, 0, 0, 0, -17, -17, -17, 0, 0, 0, 0, 0, 0, // State 91 - -66, -66, -66, 0, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, 0, 0, -66, -66, -66, 0, -66, 0, 0, 0, 0, -66, -66, -66, 0, 0, 0, 0, 0, 0, + -9, 0, 0, 0, -9, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, -9, 0, -9, 0, -9, -9, -9, -9, 0, 0, 0, -9, -9, -9, -9, -9, -9, // State 92 - -40, -40, -40, 0, -40, -40, -40, -40, -40, 0, -40, -40, -40, -40, -40, -40, -40, -40, -40, 0, 0, 0, -40, -40, 0, -40, 0, 0, 0, 0, -40, -40, -40, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 93 - -59, -59, -59, 0, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, -59, 0, 0, -59, -59, -59, 0, -59, 0, 0, 0, 0, -59, -59, -59, 0, 0, 0, 0, 0, 0, + 0, -66, -66, -66, 0, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, -66, 0, -66, 0, 0, 0, 0, -66, -66, -66, 0, 0, 0, 0, 0, 0, // State 94 - 0, 0, 0, -10, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -10, -10, -10, 0, -10, 0, -10, -10, -10, -10, 0, 0, 0, -10, -10, -10, -10, -10, -10, + 0, -40, -40, -40, 0, -40, -40, -40, -40, -40, 0, -40, -40, -40, -40, -40, -40, -40, -40, -40, 0, -40, -40, 0, -40, 0, 0, 0, 0, -40, -40, -40, 0, 0, 0, 0, 0, 0, // State 95 - -38, -38, -38, 0, -38, -38, -38, -38, -38, 0, -38, -38, 0, -38, -38, -38, -38, -38, -38, 0, 0, 0, -38, -38, 0, -38, 0, 0, 0, 0, 16, -38, -38, 0, 0, 0, 0, 0, 0, + 0, -61, -61, -61, 0, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, 0, -61, 0, 0, 0, 0, -61, -61, -61, 0, 0, 0, 0, 0, 0, // State 96 - 0, 0, 0, 0, 99, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -10, 0, 0, 0, -10, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -10, 0, -10, 0, -10, -10, -10, -10, 0, 0, 0, -10, -10, -10, -10, -10, -10, // State 97 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -4, -4, 0, 0, -4, 0, + 0, -38, -38, -38, 0, -38, -38, -38, -38, -38, 0, -38, -38, 0, -38, -38, -38, -38, -38, -38, 0, -38, -38, 0, -38, 0, 0, 0, 0, 17, -38, -38, 0, 0, 0, 0, 0, 0, // State 98 - -14, -14, -14, 0, -14, -14, -14, -14, -14, 0, -14, -14, -14, -14, -14, -14, -14, -14, -14, 0, 0, 0, -14, -14, 0, -14, 0, 0, 0, 0, -14, -14, -14, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 99 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -4, -4, -4, 0, 0, -4, 0, // State 100 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -5, -5, 0, 0, -5, 0, + 0, -14, -14, -14, 0, -14, -14, -14, -14, -14, 0, -14, -14, -14, -14, -14, -14, -14, -14, -14, 0, -14, -14, 0, -14, 0, 0, 0, 0, -14, -14, -14, 0, 0, 0, 0, 0, 0, // State 101 - -58, -58, -58, 0, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, -58, 0, 0, -58, -58, -58, 0, -58, 0, 0, 0, 0, -58, -58, -58, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 102 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, -5, -5, 0, 0, -5, 0, + // State 103 + 0, -60, -60, -60, 0, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, -60, 0, -60, 0, 0, 0, 0, -60, -60, -60, 0, 0, 0, 0, 0, 0, ]; fn __action(state: i8, integer: usize) -> i8 { - __ACTION[(state as usize) * 39 + integer] + __ACTION[(state as usize) * 38 + integer] } const __EOF_ACTION: &[i8] = &[ // State 0 @@ -262,9 +265,9 @@ mod __parse__Expression { // State 4 -35, // State 5 - -42, + -44, // State 6 - -88, + -89, // State 7 0, // State 8 @@ -292,29 +295,29 @@ mod __parse__Expression { // State 19 0, // State 20 - 0, + -43, // State 21 0, // State 22 0, // State 23 - -30, + 0, // State 24 - -32, + 0, // State 25 - -34, + -30, // State 26 - -41, + -32, // State 27 - 0, + -34, // State 28 - 0, + -41, // State 29 - -28, + 0, // State 30 0, // State 31 - 0, + -28, // State 32 0, // State 33 @@ -330,55 +333,55 @@ mod __parse__Expression { // State 38 0, // State 39 - -49, + 0, // State 40 - -47, + 0, // State 41 - -54, + -51, // State 42 - -37, + -49, // State 43 - -39, + -56, // State 44 - -45, + -37, // State 45 - -52, + -39, // State 46 - -51, + -42, // State 47 - -46, + -47, // State 48 - -50, + -54, // State 49 - -48, + -53, // State 50 - -62, + -48, // State 51 - -60, + -52, // State 52 - -19, + -50, // State 53 - -61, + 0, // State 54 - -18, + -19, // State 55 - -67, + -62, // State 56 - -86, + -18, // State 57 - -87, + -67, // State 58 - -63, + -86, // State 59 - -64, + -87, // State 60 - -57, + -63, // State 61 - -65, + -64, // State 62 - 0, + -59, // State 63 - 0, + -65, // State 64 0, // State 65 @@ -404,11 +407,11 @@ mod __parse__Expression { // State 75 0, // State 76 - -43, + 0, // State 77 0, // State 78 - 0, + -45, // State 79 0, // State 80 @@ -420,126 +423,136 @@ mod __parse__Expression { // State 83 0, // State 84 - -36, + 0, // State 85 0, // State 86 - -44, + -36, // State 87 - -53, + 0, // State 88 - -17, + -46, // State 89 - 0, + -55, // State 90 - 0, + -17, // State 91 - -66, + 0, // State 92 - -40, + 0, // State 93 - -59, + -66, // State 94 - 0, + -40, // State 95 - -38, + -61, // State 96 0, // State 97 - 0, + -38, // State 98 - -14, + 0, // State 99 0, // State 100 - 0, + -14, // State 101 - -58, + 0, + // State 102 + 0, + // State 103 + -60, ]; fn __goto(state: i8, nt: usize) -> i8 { match nt { - 2 => 22, - 5 => 20, - 8 => 92, - 10 => 39, - 11 => 40, - 12 => 80, + 2 => 24, + 5 => 22, + 8 => 94, + 10 => 41, + 11 => 42, + 12 => 82, 13 => match state { - 33 => 96, - _ => 79, + 35 => 98, + _ => 81, }, - 14 => 41, + 14 => 43, 15 => match state { - 18 => 29, + 19 => 31, _ => 1, }, 16 => match state { - 10 => 23, + 11 => 25, _ => 2, }, 17 => match state { - 11 => 24, + 12 => 26, _ => 3, }, 18 => match state { - 12 => 25, + 13 => 27, _ => 4, }, 19 => match state { - 13 => 84, - _ => 42, + 14 => 86, + _ => 44, }, 20 => match state { - 14 => 85, - 32 => 95, - _ => 43, + 15 => 87, + 34 => 97, + _ => 45, }, - 21 => 5, + 21 => 46, 22 => match state { - 37 => 99, - _ => 44, + 7 => 20, + _ => 5, }, 23 => match state { + 39 => 101, + _ => 47, + }, + 24 => match state { 0 => 6, - 7 => 19, - 17 => 27, - 20 => 30, - 31 => 36, - 35 => 38, - _ => 21, + 8 => 21, + 18 => 29, + 22 => 32, + 33 => 38, + 37 => 40, + _ => 23, }, - 25 => match state { - 15 => 26, - 28 => 34, - 9 | 22 => 81, - 16 => 86, - _ => 45, + 26 => match state { + 16 => 28, + 30 => 36, + 10 | 24 => 83, + 17 => 88, + _ => 48, }, - 26 => 76, - 27 => 46, - 28 => 47, - 29 => 48, - 30 => match state { - 22 => 90, - _ => 82, + 27 => 78, + 28 => 49, + 29 => 50, + 30 => 51, + 31 => match state { + 24 => 92, + _ => 84, }, - 31 => 18, - 32 => match state { - 34 => 37, - _ => 10, + 32 => 19, + 33 => match state { + 36 => 39, + _ => 11, }, - 33 => 11, 34 => 12, 35 => 13, - 36 => match state { - 9 | 22 => 83, - _ => 49, + 36 => 14, + 37 => match state { + 10 | 24 => 85, + _ => 52, }, + 38 => 7, _ => 0, } } fn __expected_tokens(__state: i8) -> alloc::vec::Vec { const __TERMINAL: &[&str] = &[ + r###""!""###, r###""!=""###, r###""%""###, r###""&&""###, @@ -559,8 +572,6 @@ mod __parse__Expression { r###"">""###, r###"">=""###, r###""?""###, - r###""NULL""###, - r###""Null""###, r###""[""###, r###""]""###, r###""^""###, @@ -590,13 +601,13 @@ mod __parse__Expression { }).collect() } pub(crate) struct __StateMachine<'input> - where + where { input: &'input str, __phantom: core::marker::PhantomData<(&'input ())>, } impl<'input> __state_machine::ParserDefinition for __StateMachine<'input> - where + where { type Location = usize; type Error = &'static str; @@ -631,7 +642,7 @@ mod __parse__Expression { #[inline] fn error_action(&self, state: i8) -> i8 { - __action(state, 39 - 1) + __action(state, 38 - 1) } #[inline] @@ -726,13 +737,12 @@ mod __parse__Expression { Token(35, _) if true => Some(29), Token(36, _) if true => Some(30), Token(37, _) if true => Some(31), - Token(38, _) if true => Some(32), - Token(0, _) if true => Some(33), - Token(1, _) if true => Some(34), - Token(2, _) if true => Some(35), - Token(3, _) if true => Some(36), - Token(4, _) if true => Some(37), - Token(5, _) if true => Some(38), + Token(0, _) if true => Some(32), + Token(1, _) if true => Some(33), + Token(2, _) if true => Some(34), + Token(3, _) if true => Some(35), + Token(4, _) if true => Some(36), + Token(5, _) if true => Some(37), _ => None, } } @@ -745,8 +755,8 @@ mod __parse__Expression { ) -> __Symbol<'input> { match __token_index { - 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 => match __token { - Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(13, __tok0) | Token(14, __tok0) | Token(15, __tok0) | Token(16, __tok0) | Token(17, __tok0) | Token(18, __tok0) | Token(19, __tok0) | Token(20, __tok0) | Token(21, __tok0) | Token(22, __tok0) | Token(23, __tok0) | Token(24, __tok0) | Token(25, __tok0) | Token(26, __tok0) | Token(27, __tok0) | Token(28, __tok0) | Token(29, __tok0) | Token(30, __tok0) | Token(31, __tok0) | Token(32, __tok0) | Token(33, __tok0) | Token(34, __tok0) | Token(35, __tok0) | Token(36, __tok0) | Token(37, __tok0) | Token(38, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) | Token(4, __tok0) | Token(5, __tok0) if true => __Symbol::Variant0(__tok0), + 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 => match __token { + Token(6, __tok0) | Token(7, __tok0) | Token(8, __tok0) | Token(9, __tok0) | Token(10, __tok0) | Token(11, __tok0) | Token(12, __tok0) | Token(13, __tok0) | Token(14, __tok0) | Token(15, __tok0) | Token(16, __tok0) | Token(17, __tok0) | Token(18, __tok0) | Token(19, __tok0) | Token(20, __tok0) | Token(21, __tok0) | Token(22, __tok0) | Token(23, __tok0) | Token(24, __tok0) | Token(25, __tok0) | Token(26, __tok0) | Token(27, __tok0) | Token(28, __tok0) | Token(29, __tok0) | Token(30, __tok0) | Token(31, __tok0) | Token(32, __tok0) | Token(33, __tok0) | Token(34, __tok0) | Token(35, __tok0) | Token(36, __tok0) | Token(37, __tok0) | Token(0, __tok0) | Token(1, __tok0) | Token(2, __tok0) | Token(3, __tok0) | Token(4, __tok0) | Token(5, __tok0) if true => __Symbol::Variant0(__tok0), _ => unreachable!(), }, _ => unreachable!(), @@ -1058,6 +1068,9 @@ mod __parse__Expression { __reduce86(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) } 87 => { + __reduce87(input, __lookahead_start, __symbols, core::marker::PhantomData::<(&())>) + } + 88 => { // __Expression = Expression => ActionFn(0); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); @@ -1133,6 +1146,17 @@ mod __parse__Expression { _ => __symbol_type_mismatch() } } + fn __pop_Variant15< + 'input, + >( + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, UnOpCode, usize) + { + match __symbols.pop() { + Some((__l, __Symbol::Variant15(__v), __r)) => (__l, __v, __r), + _ => __symbol_type_mismatch() + } + } fn __pop_Variant9< 'input, >( @@ -1252,7 +1276,7 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // (<( ":" )> ",") = ObjectIdentifier, ":", Expression, "," => ActionFn(81); + // (<( ":" )> ",") = ObjectIdentifier, ":", Expression, "," => ActionFn(82); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant0(__symbols); let __sym2 = __pop_Variant3(__symbols); @@ -1260,7 +1284,7 @@ mod __parse__Expression { let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym3.2.clone(); - let __nt = super::__action81::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action82::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (4, 0) } @@ -1273,10 +1297,10 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // (<( ":" )> ",")* = => ActionFn(74); + // (<( ":" )> ",")* = => ActionFn(75); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action74::<>(input, &__start, &__end); + let __nt = super::__action75::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (0, 1) } @@ -1289,11 +1313,11 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // (<( ":" )> ",")* = (<( ":" )> ",")+ => ActionFn(75); + // (<( ":" )> ",")* = (<( ":" )> ",")+ => ActionFn(76); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action75::<>(input, __sym0); + let __nt = super::__action76::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (1, 1) } @@ -1306,7 +1330,7 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // (<( ":" )> ",")+ = ObjectIdentifier, ":", Expression, "," => ActionFn(83); + // (<( ":" )> ",")+ = ObjectIdentifier, ":", Expression, "," => ActionFn(84); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant0(__symbols); let __sym2 = __pop_Variant3(__symbols); @@ -1314,7 +1338,7 @@ mod __parse__Expression { let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym3.2.clone(); - let __nt = super::__action83::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (4, 2) } @@ -1327,7 +1351,7 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // (<( ":" )> ",")+ = (<( ":" )> ",")+, ObjectIdentifier, ":", Expression, "," => ActionFn(84); + // (<( ":" )> ",")+ = (<( ":" )> ",")+, ObjectIdentifier, ":", Expression, "," => ActionFn(85); assert!(__symbols.len() >= 5); let __sym4 = __pop_Variant0(__symbols); let __sym3 = __pop_Variant3(__symbols); @@ -1336,7 +1360,7 @@ mod __parse__Expression { let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym4.2.clone(); - let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); (5, 2) } @@ -1349,13 +1373,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",") = Expression, "," => ActionFn(71); + // ( ",") = Expression, "," => ActionFn(72); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action71::<>(input, __sym0, __sym1); + let __nt = super::__action72::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 3) } @@ -1368,10 +1392,10 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = => ActionFn(69); + // ( ",")* = => ActionFn(70); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action69::<>(input, &__start, &__end); + let __nt = super::__action70::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (0, 4) } @@ -1384,11 +1408,11 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")* = ( ",")+ => ActionFn(70); + // ( ",")* = ( ",")+ => ActionFn(71); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action70::<>(input, __sym0); + let __nt = super::__action71::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (1, 4) } @@ -1401,13 +1425,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = Expression, "," => ActionFn(87); + // ( ",")+ = Expression, "," => ActionFn(88); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action87::<>(input, __sym0, __sym1); + let __nt = super::__action88::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (2, 5) } @@ -1420,14 +1444,14 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ",")+ = ( ",")+, Expression, "," => ActionFn(88); + // ( ",")+ = ( ",")+, Expression, "," => ActionFn(89); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); (3, 5) } @@ -1440,14 +1464,14 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ":" ) = ObjectIdentifier, ":", Expression => ActionFn(63); + // ( ":" ) = ObjectIdentifier, ":", Expression => ActionFn(64); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant3(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (3, 6) } @@ -1460,14 +1484,14 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ":" )? = ObjectIdentifier, ":", Expression => ActionFn(82); + // ( ":" )? = ObjectIdentifier, ":", Expression => ActionFn(83); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant3(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action82::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action83::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 7) } @@ -1480,10 +1504,10 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ( ":" )? = => ActionFn(73); + // ( ":" )? = => ActionFn(74); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action73::<>(input, &__start, &__end); + let __nt = super::__action74::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (0, 7) } @@ -1496,14 +1520,14 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Args = "(", Comma, ")" => ActionFn(27); + // Args = "(", Comma, ")" => ActionFn(29); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action27::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action29::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (3, 8) } @@ -1516,11 +1540,11 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Args? = Args => ActionFn(65); + // Args? = Args => ActionFn(66); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action65::<>(input, __sym0); + let __nt = super::__action66::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (1, 9) } @@ -1533,10 +1557,10 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Args? = => ActionFn(66); + // Args? = => ActionFn(67); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action66::<>(input, &__start, &__end); + let __nt = super::__action67::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (0, 9) } @@ -1549,14 +1573,14 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Array = "[", Comma, "]" => ActionFn(57); + // Array = "[", Comma, "]" => ActionFn(58); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (3, 10) } @@ -1569,11 +1593,11 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Boolean = "true" => ActionFn(55); + // Boolean = "true" => ActionFn(56); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action55::<>(input, __sym0); + let __nt = super::__action56::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -1586,11 +1610,11 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Boolean = "false" => ActionFn(56); + // Boolean = "false" => ActionFn(57); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action56::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 11) } @@ -1603,14 +1627,14 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma<( ":" )> = ObjectIdentifier, ":", Expression => ActionFn(91); + // Comma<( ":" )> = ObjectIdentifier, ":", Expression => ActionFn(92); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant3(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action92::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (3, 12) } @@ -1623,10 +1647,10 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma<( ":" )> = => ActionFn(92); + // Comma<( ":" )> = => ActionFn(93); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action92::<>(input, &__start, &__end); + let __nt = super::__action93::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (0, 12) } @@ -1639,7 +1663,7 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma<( ":" )> = (<( ":" )> ",")+, ObjectIdentifier, ":", Expression => ActionFn(93); + // Comma<( ":" )> = (<( ":" )> ",")+, ObjectIdentifier, ":", Expression => ActionFn(94); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant3(__symbols); let __sym2 = __pop_Variant0(__symbols); @@ -1647,7 +1671,7 @@ mod __parse__Expression { let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym3.2.clone(); - let __nt = super::__action93::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (4, 12) } @@ -1660,11 +1684,11 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma<( ":" )> = (<( ":" )> ",")+ => ActionFn(94); + // Comma<( ":" )> = (<( ":" )> ",")+ => ActionFn(95); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action94::<>(input, __sym0); + let __nt = super::__action95::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 12) } @@ -1677,11 +1701,11 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = Expression => ActionFn(97); + // Comma = Expression => ActionFn(98); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action97::<>(input, __sym0); + let __nt = super::__action98::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 13) } @@ -1694,10 +1718,10 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = => ActionFn(98); + // Comma = => ActionFn(99); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action98::<>(input, &__start, &__end); + let __nt = super::__action99::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (0, 13) } @@ -1710,13 +1734,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+, Expression => ActionFn(99); + // Comma = ( ",")+, Expression => ActionFn(100); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action99::<>(input, __sym0, __sym1); + let __nt = super::__action100::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 13) } @@ -1729,11 +1753,11 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Comma = ( ",")+ => ActionFn(100); + // Comma = ( ",")+ => ActionFn(101); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action100::<>(input, __sym0); + let __nt = super::__action101::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 13) } @@ -1970,7 +1994,7 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr60 = Expr60, "|", Identifier, Args => ActionFn(95); + // Expr60 = Expr60, "|", Identifier, Args => ActionFn(96); assert!(__symbols.len() >= 4); let __sym3 = __pop_Variant6(__symbols); let __sym2 = __pop_Variant11(__symbols); @@ -1978,7 +2002,7 @@ mod __parse__Expression { let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym3.2.clone(); - let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action96::<>(input, __sym0, __sym1, __sym2, __sym3); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (4, 20) } @@ -1991,14 +2015,14 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr60 = Expr60, "|", Identifier => ActionFn(96); + // Expr60 = Expr60, "|", Identifier => ActionFn(97); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant11(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action96::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action97::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (3, 20) } @@ -2028,10 +2052,10 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr70 = Expr70, Index => ActionFn(16); + // Expr70 = UnOp80, Expr80 => ActionFn(16); assert!(__symbols.len() >= 2); let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant15(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); let __nt = super::__action16::<>(input, __sym0, __sym1); @@ -2047,16 +2071,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr70 = Expr70, ".", Identifier => ActionFn(17); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant11(__symbols); - let __sym1 = __pop_Variant0(__symbols); + // Expr70 = Expr80 => ActionFn(17); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action17::<>(input, __sym0, __sym1, __sym2); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (3, 21) + (1, 21) } pub(crate) fn __reduce44< 'input, @@ -2067,13 +2088,15 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr70 = Expr80 => ActionFn(18); + // Expr80 = Expr80, Index => ActionFn(18); + assert!(__symbols.len() >= 2); + let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action18::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action18::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 21) + (2, 22) } pub(crate) fn __reduce45< 'input, @@ -2084,13 +2107,16 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr80 = Number => ActionFn(19); - let __sym0 = __pop_Variant13(__symbols); + // Expr80 = Expr80, ".", Identifier => ActionFn(19); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant11(__symbols); + let __sym1 = __pop_Variant0(__symbols); + let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 22) + (3, 22) } pub(crate) fn __reduce46< 'input, @@ -2101,8 +2127,8 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr80 = Boolean => ActionFn(20); - let __sym0 = __pop_Variant8(__symbols); + // Expr80 = Expr90 => ActionFn(20); + let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action20::<>(input, __sym0); @@ -2118,13 +2144,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr80 = String => ActionFn(21); - let __sym0 = __pop_Variant11(__symbols); + // Expr90 = Number => ActionFn(21); + let __sym0 = __pop_Variant13(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 22) + (1, 23) } pub(crate) fn __reduce48< 'input, @@ -2135,13 +2161,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr80 = Array => ActionFn(22); - let __sym0 = __pop_Variant6(__symbols); + // Expr90 = Boolean => ActionFn(22); + let __sym0 = __pop_Variant8(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action22::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 22) + (1, 23) } pub(crate) fn __reduce49< 'input, @@ -2152,13 +2178,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr80 = Object => ActionFn(23); - let __sym0 = __pop_Variant9(__symbols); + // Expr90 = String => ActionFn(23); + let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 22) + (1, 23) } pub(crate) fn __reduce50< 'input, @@ -2169,13 +2195,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr80 = Null => ActionFn(24); - let __sym0 = __pop_Variant12(__symbols); + // Expr90 = Array => ActionFn(24); + let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action24::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 22) + (1, 23) } pub(crate) fn __reduce51< 'input, @@ -2186,13 +2212,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr80 = Identifier => ActionFn(25); - let __sym0 = __pop_Variant11(__symbols); + // Expr90 = Object => ActionFn(25); + let __sym0 = __pop_Variant9(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); let __nt = super::__action25::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 22) + (1, 23) } pub(crate) fn __reduce52< 'input, @@ -2203,18 +2229,52 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr80 = "(", Expression, ")" => ActionFn(26); + // Expr90 = Null => ActionFn(26); + let __sym0 = __pop_Variant12(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action26::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) + } + pub(crate) fn __reduce53< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr90 = Identifier => ActionFn(27); + let __sym0 = __pop_Variant11(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action27::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 23) + } + pub(crate) fn __reduce54< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Expr90 = "(", Expression, ")" => ActionFn(28); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action26::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action28::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (3, 22) + (3, 23) } - pub(crate) fn __reduce53< + pub(crate) fn __reduce55< 'input, >( input: &'input str, @@ -2229,9 +2289,9 @@ mod __parse__Expression { let __end = __sym0.2.clone(); let __nt = super::__action1::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 23) + (1, 24) } - pub(crate) fn __reduce54< + pub(crate) fn __reduce56< 'input, >( input: &'input str, @@ -2240,15 +2300,15 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expression? = Expression => ActionFn(67); + // Expression? = Expression => ActionFn(68); let __sym0 = __pop_Variant3(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action67::<>(input, __sym0); + let __nt = super::__action68::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); - (1, 24) + (1, 25) } - pub(crate) fn __reduce55< + pub(crate) fn __reduce57< 'input, >( input: &'input str, @@ -2257,14 +2317,14 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expression? = => ActionFn(68); + // Expression? = => ActionFn(69); let __start = __lookahead_start.cloned().or_else(|| __symbols.last().map(|s| s.2.clone())).unwrap_or_default(); let __end = __start.clone(); - let __nt = super::__action68::<>(input, &__start, &__end); + let __nt = super::__action69::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant10(__nt), __end)); - (0, 24) + (0, 25) } - pub(crate) fn __reduce56< + pub(crate) fn __reduce58< 'input, >( input: &'input str, @@ -2273,15 +2333,15 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(52); + // Identifier = r#"[a-zA-Z_][a-zA-Z0-9_]*"# => ActionFn(53); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action52::<>(input, __sym0); + let __nt = super::__action53::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 25) + (1, 26) } - pub(crate) fn __reduce57< + pub(crate) fn __reduce59< 'input, >( input: &'input str, @@ -2290,7 +2350,7 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Index = "[", ".", Identifier, Op20, Expr80, "]" => ActionFn(53); + // Index = "[", ".", Identifier, Op20, Expr90, "]" => ActionFn(54); assert!(__symbols.len() >= 6); let __sym5 = __pop_Variant0(__symbols); let __sym4 = __pop_Variant3(__symbols); @@ -2300,11 +2360,11 @@ mod __parse__Expression { let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym5.2.clone(); - let __nt = super::__action53::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __nt = super::__action54::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (6, 26) + (6, 27) } - pub(crate) fn __reduce58< + pub(crate) fn __reduce60< 'input, >( input: &'input str, @@ -2313,18 +2373,18 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Index = "[", Expression, "]" => ActionFn(54); + // Index = "[", Expression, "]" => ActionFn(55); assert!(__symbols.len() >= 3); let __sym2 = __pop_Variant0(__symbols); let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action54::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (3, 26) + (3, 27) } - pub(crate) fn __reduce59< + pub(crate) fn __reduce61< 'input, >( input: &'input str, @@ -2333,15 +2393,15 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Null = "Null" => ActionFn(49); + // Null = "null" => ActionFn(52); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action49::<>(input, __sym0); + let __nt = super::__action52::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 27) + (1, 28) } - pub(crate) fn __reduce60< + pub(crate) fn __reduce62< 'input, >( input: &'input str, @@ -2350,15 +2410,15 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Null = "null" => ActionFn(50); + // Number = r#"[0-9]+"# => ActionFn(47); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action50::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 27) + let __nt = super::__action47::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 29) } - pub(crate) fn __reduce61< + pub(crate) fn __reduce63< 'input, >( input: &'input str, @@ -2367,15 +2427,15 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Null = "NULL" => ActionFn(51); + // Number = r#"[0-9]+\\.[0-9]*"# => ActionFn(48); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action51::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant12(__nt), __end)); - (1, 27) + let __nt = super::__action48::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant13(__nt), __end)); + (1, 29) } - pub(crate) fn __reduce62< + pub(crate) fn __reduce64< 'input, >( input: &'input str, @@ -2384,15 +2444,15 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Number = r#"[0-9]+"# => ActionFn(44); + // Number = r#"\\.[0-9]+"# => ActionFn(49); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action49::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 28) + (1, 29) } - pub(crate) fn __reduce63< + pub(crate) fn __reduce65< 'input, >( input: &'input str, @@ -2401,15 +2461,18 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Number = r#"[0-9]+\\.[0-9]*"# => ActionFn(45); + // Object = "{", Comma<( ":" )>, "}" => ActionFn(59); + assert!(__symbols.len() >= 3); + let __sym2 = __pop_Variant0(__symbols); + let __sym1 = __pop_Variant9(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action45::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 28) + let __end = __sym2.2.clone(); + let __nt = super::__action59::<>(input, __sym0, __sym1, __sym2); + __symbols.push((__start, __Symbol::Variant9(__nt), __end)); + (3, 30) } - pub(crate) fn __reduce64< + pub(crate) fn __reduce66< 'input, >( input: &'input str, @@ -2418,50 +2481,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Number = r#"\\.[0-9]+"# => ActionFn(46); + // Object = "{}" => ActionFn(60); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action46::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant13(__nt), __end)); - (1, 28) - } - pub(crate) fn __reduce65< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // Object = "{", Comma<( ":" )>, "}" => ActionFn(58); - assert!(__symbols.len() >= 3); - let __sym2 = __pop_Variant0(__symbols); - let __sym1 = __pop_Variant9(__symbols); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant9(__nt), __end)); - (3, 29) - } - pub(crate) fn __reduce66< - 'input, - >( - input: &'input str, - __lookahead_start: Option<&usize>, - __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: core::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // Object = "{}" => ActionFn(59); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action59::<>(input, __sym0); + let __nt = super::__action60::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); - (1, 29) + (1, 30) } pub(crate) fn __reduce67< 'input, @@ -2472,13 +2498,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ObjectIdentifier = String => ActionFn(60); + // ObjectIdentifier = String => ActionFn(61); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action60::<>(input, __sym0); + let __nt = super::__action61::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 30) + (1, 31) } pub(crate) fn __reduce68< 'input, @@ -2489,13 +2515,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ObjectIdentifier = Identifier => ActionFn(61); + // ObjectIdentifier = Identifier => ActionFn(62); let __sym0 = __pop_Variant11(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action61::<>(input, __sym0); + let __nt = super::__action62::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 30) + (1, 31) } pub(crate) fn __reduce69< 'input, @@ -2506,13 +2532,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op10 = "&&" => ActionFn(28); + // Op10 = "&&" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action28::<>(input, __sym0); + let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 31) + (1, 32) } pub(crate) fn __reduce70< 'input, @@ -2523,13 +2549,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op10 = "||" => ActionFn(29); + // Op10 = "||" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action29::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 31) + (1, 32) } pub(crate) fn __reduce71< 'input, @@ -2540,13 +2566,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op20 = "==" => ActionFn(30); + // Op20 = "==" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); + let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 32) + (1, 33) } pub(crate) fn __reduce72< 'input, @@ -2557,13 +2583,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op20 = "!=" => ActionFn(31); + // Op20 = "!=" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action31::<>(input, __sym0); + let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 32) + (1, 33) } pub(crate) fn __reduce73< 'input, @@ -2574,13 +2600,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op20 = ">=" => ActionFn(32); + // Op20 = ">=" => ActionFn(34); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action32::<>(input, __sym0); + let __nt = super::__action34::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 32) + (1, 33) } pub(crate) fn __reduce74< 'input, @@ -2591,13 +2617,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op20 = "<=" => ActionFn(33); + // Op20 = "<=" => ActionFn(35); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action35::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 32) + (1, 33) } pub(crate) fn __reduce75< 'input, @@ -2608,13 +2634,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op20 = ">" => ActionFn(34); + // Op20 = ">" => ActionFn(36); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action34::<>(input, __sym0); + let __nt = super::__action36::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 32) + (1, 33) } pub(crate) fn __reduce76< 'input, @@ -2625,13 +2651,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op20 = "<" => ActionFn(35); + // Op20 = "<" => ActionFn(37); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action35::<>(input, __sym0); + let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 32) + (1, 33) } pub(crate) fn __reduce77< 'input, @@ -2642,13 +2668,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op20 = "in" => ActionFn(36); + // Op20 = "in" => ActionFn(38); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action36::<>(input, __sym0); + let __nt = super::__action38::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 32) + (1, 33) } pub(crate) fn __reduce78< 'input, @@ -2659,13 +2685,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op30 = "+" => ActionFn(37); + // Op30 = "+" => ActionFn(39); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action37::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 33) + (1, 34) } pub(crate) fn __reduce79< 'input, @@ -2676,13 +2702,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op30 = "-" => ActionFn(38); + // Op30 = "-" => ActionFn(40); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action38::<>(input, __sym0); + let __nt = super::__action40::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 33) + (1, 34) } pub(crate) fn __reduce80< 'input, @@ -2693,13 +2719,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op40 = "*" => ActionFn(39); + // Op40 = "*" => ActionFn(41); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); + let __nt = super::__action41::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 34) + (1, 35) } pub(crate) fn __reduce81< 'input, @@ -2710,13 +2736,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op40 = "//" => ActionFn(40); + // Op40 = "//" => ActionFn(42); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 34) + (1, 35) } pub(crate) fn __reduce82< 'input, @@ -2727,13 +2753,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op40 = "/" => ActionFn(41); + // Op40 = "/" => ActionFn(43); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action41::<>(input, __sym0); + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 34) + (1, 35) } pub(crate) fn __reduce83< 'input, @@ -2744,13 +2770,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op50 = "%" => ActionFn(42); + // Op50 = "%" => ActionFn(44); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action42::<>(input, __sym0); + let __nt = super::__action44::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 35) + (1, 36) } pub(crate) fn __reduce84< 'input, @@ -2761,13 +2787,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Op50 = "^" => ActionFn(43); + // Op50 = "^" => ActionFn(45); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action43::<>(input, __sym0); + let __nt = super::__action45::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant14(__nt), __end)); - (1, 35) + (1, 36) } pub(crate) fn __reduce85< 'input, @@ -2778,13 +2804,13 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // String = r#"\"([^\"\\\\]*(\\\\\")?)*\""# => ActionFn(47); + // String = r#"\"([^\"\\\\]*(\\\\\")?)*\""# => ActionFn(50); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action47::<>(input, __sym0); + let __nt = super::__action50::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 36) + (1, 37) } pub(crate) fn __reduce86< 'input, @@ -2795,13 +2821,30 @@ mod __parse__Expression { _: core::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // String = r#"'([^'\\\\]*(\\\\')?)*'"# => ActionFn(48); + // String = r#"'([^'\\\\]*(\\\\')?)*'"# => ActionFn(51); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action48::<>(input, __sym0); + let __nt = super::__action51::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (1, 36) + (1, 37) + } + pub(crate) fn __reduce87< + 'input, + >( + input: &'input str, + __lookahead_start: Option<&usize>, + __symbols: &mut alloc::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: core::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // UnOp80 = "!" => ActionFn(46); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action46::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant15(__nt), __end)); + (1, 38) } } pub use self::__parse__Expression::ExpressionParser; @@ -2809,7 +2852,7 @@ pub use self::__parse__Expression::ExpressionParser; mod __intern_token { #![allow(unused_imports)] use std::str::FromStr; - use crate::ast::{Expression, OpCode}; + use crate::ast::{Expression, OpCode, UnOpCode}; #[allow(unused_extern_crates)] extern crate lalrpop_util as __lalrpop_util; #[allow(unused_imports)] @@ -2824,6 +2867,7 @@ mod __intern_token { ("^([0-9]+\\.[0-9]*)", false), ("^([A-Z_a-z][0-9A-Z_a-z]*)", false), ("^(\\.[0-9]+)", false), + ("^(!)", false), ("^(!=)", false), ("^(%)", false), ("^(\\&\\&)", false), @@ -2843,8 +2887,6 @@ mod __intern_token { ("^(>)", false), ("^(>=)", false), ("^(\\?)", false), - ("^(NULL)", false), - ("^(Null)", false), ("^(\\[)", false), ("^(\\])", false), ("^(\\^)", false), @@ -3060,6 +3102,29 @@ fn __action15< #[allow(unused_variables)] fn __action16< 'input, +>( + input: &'input str, + (_, operation, _): (usize, UnOpCode, usize), + (_, right, _): (usize, Box, usize), +) -> Box +{ + Box::new(Expression::UnaryOperation { operation, right }) +} + +#[allow(unused_variables)] +fn __action17< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, Box, usize), +) -> Box +{ + __0 +} + +#[allow(unused_variables)] +fn __action18< + 'input, >( input: &'input str, (_, subject, _): (usize, Box, usize), @@ -3070,7 +3135,7 @@ fn __action16< } #[allow(unused_variables)] -fn __action17< +fn __action19< 'input, >( input: &'input str, @@ -3083,7 +3148,7 @@ fn __action17< } #[allow(unused_variables)] -fn __action18< +fn __action20< 'input, >( input: &'input str, @@ -3094,7 +3159,7 @@ fn __action18< } #[allow(unused_variables)] -fn __action19< +fn __action21< 'input, >( input: &'input str, @@ -3105,7 +3170,7 @@ fn __action19< } #[allow(unused_variables)] -fn __action20< +fn __action22< 'input, >( input: &'input str, @@ -3116,7 +3181,7 @@ fn __action20< } #[allow(unused_variables)] -fn __action21< +fn __action23< 'input, >( input: &'input str, @@ -3127,7 +3192,7 @@ fn __action21< } #[allow(unused_variables)] -fn __action22< +fn __action24< 'input, >( input: &'input str, @@ -3138,7 +3203,7 @@ fn __action22< } #[allow(unused_variables)] -fn __action23< +fn __action25< 'input, >( input: &'input str, @@ -3149,7 +3214,7 @@ fn __action23< } #[allow(unused_variables)] -fn __action24< +fn __action26< 'input, >( input: &'input str, @@ -3160,7 +3225,7 @@ fn __action24< } #[allow(unused_variables)] -fn __action25< +fn __action27< 'input, >( input: &'input str, @@ -3171,7 +3236,7 @@ fn __action25< } #[allow(unused_variables)] -fn __action26< +fn __action28< 'input, >( input: &'input str, @@ -3184,7 +3249,7 @@ fn __action26< } #[allow(unused_variables)] -fn __action27< +fn __action29< 'input, >( input: &'input str, @@ -3197,7 +3262,7 @@ fn __action27< } #[allow(unused_variables)] -fn __action28< +fn __action30< 'input, >( input: &'input str, @@ -3208,7 +3273,7 @@ fn __action28< } #[allow(unused_variables)] -fn __action29< +fn __action31< 'input, >( input: &'input str, @@ -3219,7 +3284,7 @@ fn __action29< } #[allow(unused_variables)] -fn __action30< +fn __action32< 'input, >( input: &'input str, @@ -3230,7 +3295,7 @@ fn __action30< } #[allow(unused_variables)] -fn __action31< +fn __action33< 'input, >( input: &'input str, @@ -3241,7 +3306,7 @@ fn __action31< } #[allow(unused_variables)] -fn __action32< +fn __action34< 'input, >( input: &'input str, @@ -3252,7 +3317,7 @@ fn __action32< } #[allow(unused_variables)] -fn __action33< +fn __action35< 'input, >( input: &'input str, @@ -3263,7 +3328,7 @@ fn __action33< } #[allow(unused_variables)] -fn __action34< +fn __action36< 'input, >( input: &'input str, @@ -3274,7 +3339,7 @@ fn __action34< } #[allow(unused_variables)] -fn __action35< +fn __action37< 'input, >( input: &'input str, @@ -3285,7 +3350,7 @@ fn __action35< } #[allow(unused_variables)] -fn __action36< +fn __action38< 'input, >( input: &'input str, @@ -3296,7 +3361,7 @@ fn __action36< } #[allow(unused_variables)] -fn __action37< +fn __action39< 'input, >( input: &'input str, @@ -3307,7 +3372,7 @@ fn __action37< } #[allow(unused_variables)] -fn __action38< +fn __action40< 'input, >( input: &'input str, @@ -3318,7 +3383,7 @@ fn __action38< } #[allow(unused_variables)] -fn __action39< +fn __action41< 'input, >( input: &'input str, @@ -3329,7 +3394,7 @@ fn __action39< } #[allow(unused_variables)] -fn __action40< +fn __action42< 'input, >( input: &'input str, @@ -3340,7 +3405,7 @@ fn __action40< } #[allow(unused_variables)] -fn __action41< +fn __action43< 'input, >( input: &'input str, @@ -3351,7 +3416,7 @@ fn __action41< } #[allow(unused_variables)] -fn __action42< +fn __action44< 'input, >( input: &'input str, @@ -3362,7 +3427,7 @@ fn __action42< } #[allow(unused_variables)] -fn __action43< +fn __action45< 'input, >( input: &'input str, @@ -3373,18 +3438,18 @@ fn __action43< } #[allow(unused_variables)] -fn __action44< +fn __action46< 'input, >( input: &'input str, (_, __0, _): (usize, &'input str, usize), -) -> f64 +) -> UnOpCode { - f64::from_str(__0).unwrap() + UnOpCode::Negate } #[allow(unused_variables)] -fn __action45< +fn __action47< 'input, >( input: &'input str, @@ -3395,7 +3460,7 @@ fn __action45< } #[allow(unused_variables)] -fn __action46< +fn __action48< 'input, >( input: &'input str, @@ -3406,51 +3471,40 @@ fn __action46< } #[allow(unused_variables)] -fn __action47< +fn __action49< 'input, >( input: &'input str, - (_, s, _): (usize, &'input str, usize), -) -> String + (_, __0, _): (usize, &'input str, usize), +) -> f64 { - s[1..s.len() - 1].to_string().replace("\\\"", "\"") + f64::from_str(__0).unwrap() } #[allow(unused_variables)] -fn __action48< +fn __action50< 'input, >( input: &'input str, (_, s, _): (usize, &'input str, usize), ) -> String { - s[1..s.len() - 1].to_string().replace("\\'", "'") -} - -#[allow(unused_variables)] -fn __action49< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, &'input str, usize), -) -> Option> -{ - None + s[1..s.len() - 1].to_string().replace("\\\"", "\"") } #[allow(unused_variables)] -fn __action50< +fn __action51< 'input, >( input: &'input str, - (_, __0, _): (usize, &'input str, usize), -) -> Option> + (_, s, _): (usize, &'input str, usize), +) -> String { - None + s[1..s.len() - 1].to_string().replace("\\'", "'") } #[allow(unused_variables)] -fn __action51< +fn __action52< 'input, >( input: &'input str, @@ -3461,7 +3515,7 @@ fn __action51< } #[allow(unused_variables)] -fn __action52< +fn __action53< 'input, >( input: &'input str, @@ -3472,7 +3526,7 @@ fn __action52< } #[allow(unused_variables)] -fn __action53< +fn __action54< 'input, >( input: &'input str, @@ -3488,7 +3542,7 @@ fn __action53< } #[allow(unused_variables)] -fn __action54< +fn __action55< 'input, >( input: &'input str, @@ -3501,7 +3555,7 @@ fn __action54< } #[allow(unused_variables)] -fn __action55< +fn __action56< 'input, >( input: &'input str, @@ -3512,7 +3566,7 @@ fn __action55< } #[allow(unused_variables)] -fn __action56< +fn __action57< 'input, >( input: &'input str, @@ -3523,7 +3577,7 @@ fn __action56< } #[allow(unused_variables)] -fn __action57< +fn __action58< 'input, >( input: &'input str, @@ -3536,7 +3590,7 @@ fn __action57< } #[allow(unused_variables)] -fn __action58< +fn __action59< 'input, >( input: &'input str, @@ -3549,7 +3603,7 @@ fn __action58< } #[allow(unused_variables)] -fn __action59< +fn __action60< 'input, >( input: &'input str, @@ -3560,7 +3614,7 @@ fn __action59< } #[allow(unused_variables)] -fn __action60< +fn __action61< 'input, >( input: &'input str, @@ -3571,7 +3625,7 @@ fn __action60< } #[allow(unused_variables)] -fn __action61< +fn __action62< 'input, >( input: &'input str, @@ -3582,7 +3636,7 @@ fn __action61< } #[allow(unused_variables)] -fn __action62< +fn __action63< 'input, >( input: &'input str, @@ -3601,7 +3655,7 @@ fn __action62< } #[allow(unused_variables)] -fn __action63< +fn __action64< 'input, >( input: &'input str, @@ -3614,7 +3668,7 @@ fn __action63< } #[allow(unused_variables)] -fn __action64< +fn __action65< 'input, >( input: &'input str, @@ -3633,7 +3687,7 @@ fn __action64< } #[allow(unused_variables)] -fn __action65< +fn __action66< 'input, >( input: &'input str, @@ -3644,7 +3698,7 @@ fn __action65< } #[allow(unused_variables)] -fn __action66< +fn __action67< 'input, >( input: &'input str, @@ -3656,7 +3710,7 @@ fn __action66< } #[allow(unused_variables)] -fn __action67< +fn __action68< 'input, >( input: &'input str, @@ -3667,7 +3721,7 @@ fn __action67< } #[allow(unused_variables)] -fn __action68< +fn __action69< 'input, >( input: &'input str, @@ -3679,7 +3733,7 @@ fn __action68< } #[allow(unused_variables)] -fn __action69< +fn __action70< 'input, >( input: &'input str, @@ -3691,7 +3745,7 @@ fn __action69< } #[allow(unused_variables)] -fn __action70< +fn __action71< 'input, >( input: &'input str, @@ -3702,7 +3756,7 @@ fn __action70< } #[allow(unused_variables)] -fn __action71< +fn __action72< 'input, >( input: &'input str, @@ -3714,7 +3768,7 @@ fn __action71< } #[allow(unused_variables)] -fn __action72< +fn __action73< 'input, >( input: &'input str, @@ -3725,7 +3779,7 @@ fn __action72< } #[allow(unused_variables)] -fn __action73< +fn __action74< 'input, >( input: &'input str, @@ -3737,7 +3791,7 @@ fn __action73< } #[allow(unused_variables)] -fn __action74< +fn __action75< 'input, >( input: &'input str, @@ -3749,7 +3803,7 @@ fn __action74< } #[allow(unused_variables)] -fn __action75< +fn __action76< 'input, >( input: &'input str, @@ -3760,7 +3814,7 @@ fn __action75< } #[allow(unused_variables)] -fn __action76< +fn __action77< 'input, >( input: &'input str, @@ -3772,7 +3826,7 @@ fn __action76< } #[allow(unused_variables)] -fn __action77< +fn __action78< 'input, >( input: &'input str, @@ -3783,7 +3837,7 @@ fn __action77< } #[allow(unused_variables)] -fn __action78< +fn __action79< 'input, >( input: &'input str, @@ -3795,7 +3849,7 @@ fn __action78< } #[allow(unused_variables)] -fn __action79< +fn __action80< 'input, >( input: &'input str, @@ -3806,7 +3860,7 @@ fn __action79< } #[allow(unused_variables)] -fn __action80< +fn __action81< 'input, >( input: &'input str, @@ -3818,7 +3872,7 @@ fn __action80< } #[allow(unused_variables)] -fn __action81< +fn __action82< 'input, >( input: &'input str, @@ -3830,14 +3884,14 @@ fn __action81< { let __start0 = __0.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action63( + let __temp0 = __action64( input, __0, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action76( + __action77( input, __temp0, __3, @@ -3845,7 +3899,7 @@ fn __action81< } #[allow(unused_variables)] -fn __action82< +fn __action83< 'input, >( input: &'input str, @@ -3856,21 +3910,21 @@ fn __action82< { let __start0 = __0.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action63( + let __temp0 = __action64( input, __0, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action72( + __action73( input, __temp0, ) } #[allow(unused_variables)] -fn __action83< +fn __action84< 'input, >( input: &'input str, @@ -3882,7 +3936,7 @@ fn __action83< { let __start0 = __0.0.clone(); let __end0 = __3.2.clone(); - let __temp0 = __action81( + let __temp0 = __action82( input, __0, __1, @@ -3890,14 +3944,14 @@ fn __action83< __3, ); let __temp0 = (__start0, __temp0, __end0); - __action77( + __action78( input, __temp0, ) } #[allow(unused_variables)] -fn __action84< +fn __action85< 'input, >( input: &'input str, @@ -3910,7 +3964,7 @@ fn __action84< { let __start0 = __1.0.clone(); let __end0 = __4.2.clone(); - let __temp0 = __action81( + let __temp0 = __action82( input, __1, __2, @@ -3918,7 +3972,7 @@ fn __action84< __4, ); let __temp0 = (__start0, __temp0, __end0); - __action78( + __action79( input, __0, __temp0, @@ -3926,7 +3980,7 @@ fn __action84< } #[allow(unused_variables)] -fn __action85< +fn __action86< 'input, >( input: &'input str, @@ -3935,13 +3989,13 @@ fn __action85< { let __start0 = __0.0.clone(); let __end0 = __0.0.clone(); - let __temp0 = __action74( + let __temp0 = __action75( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action62( + __action63( input, __temp0, __0, @@ -3949,7 +4003,7 @@ fn __action85< } #[allow(unused_variables)] -fn __action86< +fn __action87< 'input, >( input: &'input str, @@ -3959,12 +4013,12 @@ fn __action86< { let __start0 = __0.0.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action75( + let __temp0 = __action76( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action62( + __action63( input, __temp0, __1, @@ -3972,7 +4026,7 @@ fn __action86< } #[allow(unused_variables)] -fn __action87< +fn __action88< 'input, >( input: &'input str, @@ -3982,20 +4036,20 @@ fn __action87< { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action71( + let __temp0 = __action72( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action79( + __action80( input, __temp0, ) } #[allow(unused_variables)] -fn __action88< +fn __action89< 'input, >( input: &'input str, @@ -4006,13 +4060,13 @@ fn __action88< { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action71( + let __temp0 = __action72( input, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action80( + __action81( input, __0, __temp0, @@ -4020,7 +4074,7 @@ fn __action88< } #[allow(unused_variables)] -fn __action89< +fn __action90< 'input, >( input: &'input str, @@ -4029,13 +4083,13 @@ fn __action89< { let __start0 = __0.0.clone(); let __end0 = __0.0.clone(); - let __temp0 = __action69( + let __temp0 = __action70( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action64( + __action65( input, __temp0, __0, @@ -4043,7 +4097,7 @@ fn __action89< } #[allow(unused_variables)] -fn __action90< +fn __action91< 'input, >( input: &'input str, @@ -4053,12 +4107,12 @@ fn __action90< { let __start0 = __0.0.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action70( + let __temp0 = __action71( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action64( + __action65( input, __temp0, __1, @@ -4066,7 +4120,7 @@ fn __action90< } #[allow(unused_variables)] -fn __action91< +fn __action92< 'input, >( input: &'input str, @@ -4077,21 +4131,21 @@ fn __action91< { let __start0 = __0.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action82( + let __temp0 = __action83( input, __0, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action85( + __action86( input, __temp0, ) } #[allow(unused_variables)] -fn __action92< +fn __action93< 'input, >( input: &'input str, @@ -4101,20 +4155,20 @@ fn __action92< { let __start0 = __lookbehind.clone(); let __end0 = __lookahead.clone(); - let __temp0 = __action73( + let __temp0 = __action74( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action85( + __action86( input, __temp0, ) } #[allow(unused_variables)] -fn __action93< +fn __action94< 'input, >( input: &'input str, @@ -4126,14 +4180,14 @@ fn __action93< { let __start0 = __1.0.clone(); let __end0 = __3.2.clone(); - let __temp0 = __action82( + let __temp0 = __action83( input, __1, __2, __3, ); let __temp0 = (__start0, __temp0, __end0); - __action86( + __action87( input, __0, __temp0, @@ -4141,7 +4195,7 @@ fn __action93< } #[allow(unused_variables)] -fn __action94< +fn __action95< 'input, >( input: &'input str, @@ -4150,13 +4204,13 @@ fn __action94< { let __start0 = __0.2.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action73( + let __temp0 = __action74( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action86( + __action87( input, __0, __temp0, @@ -4164,7 +4218,7 @@ fn __action94< } #[allow(unused_variables)] -fn __action95< +fn __action96< 'input, >( input: &'input str, @@ -4176,7 +4230,7 @@ fn __action95< { let __start0 = __3.0.clone(); let __end0 = __3.2.clone(); - let __temp0 = __action65( + let __temp0 = __action66( input, __3, ); @@ -4191,7 +4245,7 @@ fn __action95< } #[allow(unused_variables)] -fn __action96< +fn __action97< 'input, >( input: &'input str, @@ -4202,7 +4256,7 @@ fn __action96< { let __start0 = __2.2.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action66( + let __temp0 = __action67( input, &__start0, &__end0, @@ -4218,7 +4272,7 @@ fn __action96< } #[allow(unused_variables)] -fn __action97< +fn __action98< 'input, >( input: &'input str, @@ -4227,19 +4281,19 @@ fn __action97< { let __start0 = __0.0.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action67( + let __temp0 = __action68( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action89( + __action90( input, __temp0, ) } #[allow(unused_variables)] -fn __action98< +fn __action99< 'input, >( input: &'input str, @@ -4249,20 +4303,20 @@ fn __action98< { let __start0 = __lookbehind.clone(); let __end0 = __lookahead.clone(); - let __temp0 = __action68( + let __temp0 = __action69( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action89( + __action90( input, __temp0, ) } #[allow(unused_variables)] -fn __action99< +fn __action100< 'input, >( input: &'input str, @@ -4272,12 +4326,12 @@ fn __action99< { let __start0 = __1.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action67( + let __temp0 = __action68( input, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action90( + __action91( input, __0, __temp0, @@ -4285,7 +4339,7 @@ fn __action99< } #[allow(unused_variables)] -fn __action100< +fn __action101< 'input, >( input: &'input str, @@ -4294,13 +4348,13 @@ fn __action100< { let __start0 = __0.2.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action68( + let __temp0 = __action69( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action90( + __action91( input, __0, __temp0,