From 9f82aceb9fbdb42f332d68f4a423123bd0788b2c Mon Sep 17 00:00:00 2001 From: bnewbold Date: Sat, 17 Dec 2016 18:34:47 -0800 Subject: refactor modelica parser into separate crate --- modelica-parser-lalrpop/.gitignore | 1 + modelica-parser-lalrpop/Cargo.toml | 25 + modelica-parser-lalrpop/examples/minimal.modelica | 6 + modelica-parser-lalrpop/examples/minimal2.modelica | 8 + modelica-parser-lalrpop/examples/minimal3.modelica | 8 + modelica-parser-lalrpop/src/ast.rs | 241 + modelica-parser-lalrpop/src/build.rs | 5 + modelica-parser-lalrpop/src/lib.rs | 65 + modelica-parser-lalrpop/src/parser.lalrpop | 97 + modelica-parser-lalrpop/src/parser.rs | 15955 +++++++++++++++++++ modelica-parser-lalrpop/tests/ast.rs | 56 + modelica-parser-lalrpop/tests/parser.rs | 40 + 12 files changed, 16507 insertions(+) create mode 100644 modelica-parser-lalrpop/.gitignore create mode 100644 modelica-parser-lalrpop/Cargo.toml create mode 100644 modelica-parser-lalrpop/examples/minimal.modelica create mode 100644 modelica-parser-lalrpop/examples/minimal2.modelica create mode 100644 modelica-parser-lalrpop/examples/minimal3.modelica create mode 100644 modelica-parser-lalrpop/src/ast.rs create mode 100644 modelica-parser-lalrpop/src/build.rs create mode 100644 modelica-parser-lalrpop/src/lib.rs create mode 100644 modelica-parser-lalrpop/src/parser.lalrpop create mode 100644 modelica-parser-lalrpop/src/parser.rs create mode 100644 modelica-parser-lalrpop/tests/ast.rs create mode 100644 modelica-parser-lalrpop/tests/parser.rs (limited to 'modelica-parser-lalrpop') diff --git a/modelica-parser-lalrpop/.gitignore b/modelica-parser-lalrpop/.gitignore new file mode 100644 index 0000000..03314f7 --- /dev/null +++ b/modelica-parser-lalrpop/.gitignore @@ -0,0 +1 @@ +Cargo.lock diff --git a/modelica-parser-lalrpop/Cargo.toml b/modelica-parser-lalrpop/Cargo.toml new file mode 100644 index 0000000..fabffe5 --- /dev/null +++ b/modelica-parser-lalrpop/Cargo.toml @@ -0,0 +1,25 @@ +[package] +name = "modelica-parser-lalrpop" +version = "0.1.0" +authors = ["bnewbold "] +description = """ +Partial (work in progress) parser for the modelica language using the LALRPOP +rust parser crate. +""" +keywords = ["modelica", "lalrpop", "parser"] +build = "src/build.rs" # LALRPOP preprocessing +license = "MIT" + +[lib] +name = "modelica_parser" + +[dependencies] +lalrpop-util = "^0.12.4" +colored = "1.3" + +[build-dependencies] +lalrpop = "0.12" + +[features] +# this effectively enables the feature `no-color` of colored when testing +test = ["colored/no-color"] diff --git a/modelica-parser-lalrpop/examples/minimal.modelica b/modelica-parser-lalrpop/examples/minimal.modelica new file mode 100644 index 0000000..85335a5 --- /dev/null +++ b/modelica-parser-lalrpop/examples/minimal.modelica @@ -0,0 +1,6 @@ +model FirstOrder + parameter Real c; + Real x; +equation + der(x) = -c*x; +end FirstOrder; diff --git a/modelica-parser-lalrpop/examples/minimal2.modelica b/modelica-parser-lalrpop/examples/minimal2.modelica new file mode 100644 index 0000000..69790b0 --- /dev/null +++ b/modelica-parser-lalrpop/examples/minimal2.modelica @@ -0,0 +1,8 @@ +model FirstOrder + parameter Real c; + Real x; +equation + connect(c, x); + 1 = c; + (5 + 4) = x; +end FirstOrder; diff --git a/modelica-parser-lalrpop/examples/minimal3.modelica b/modelica-parser-lalrpop/examples/minimal3.modelica new file mode 100644 index 0000000..1e9a211 --- /dev/null +++ b/modelica-parser-lalrpop/examples/minimal3.modelica @@ -0,0 +1,8 @@ +model MinimalModel + parameter Real a; + Real b; +equation + connect(a, b); + a = 1; + b = (abs(a) + 2) / 4; +end FirstOrder; diff --git a/modelica-parser-lalrpop/src/ast.rs b/modelica-parser-lalrpop/src/ast.rs new file mode 100644 index 0000000..99d443c --- /dev/null +++ b/modelica-parser-lalrpop/src/ast.rs @@ -0,0 +1,241 @@ + +use std::clone::Clone; +use std::fmt::{Debug, Formatter, Error}; +use std::collections::HashMap; + +#[derive(Clone, PartialEq)] +pub struct ModelicaModel { + pub name: String, + pub components: Vec, + pub equations: Vec, + pub connections: Vec, + pub extends: Vec, +} + +#[derive(Copy, Clone, PartialEq)] +pub enum ComponentPrefix { + // incomplete: eg, can be parameter and input + Flow, + Stream, + Input, + Output, + Discrete, + Parameter, + Constant, +} + +#[derive(Clone, PartialEq)] +pub struct Component { + pub prefix: Option, + pub specifier: String, + pub name: String, + pub value: Option, + pub units: Option, + pub description: Option, +} + +#[derive(Clone, PartialEq)] +pub struct Connection { + pub a: String, + pub b: String, +} + +#[derive(Clone, PartialEq)] +pub struct SimpleEquation { + pub lhs: Expr, + pub rhs: Expr, +} + +#[derive(Clone, PartialEq)] +pub enum Expr { + Integer(i64), + Float(f64), + Ident(String), + Der(Box), + Abs(Box), + BinExpr(BinOperator, Box, Box), +} + +#[derive(Copy, Clone, PartialEq)] +pub enum BinOperator { + Multiply, + Divide, + Add, + Subtract, +} + +//// Helpers + +impl ModelicaModel { + + pub fn get_constant_vars(&self) -> HashMap> { + let mut binds = HashMap::new(); + // XXX: actually implement this... + for c in &self.components { + match c.prefix { + Some(ComponentPrefix::Constant) => { binds.insert(c.name.clone(), Some(Expr::Integer(123))); }, + Some(ComponentPrefix::Parameter) => { binds.insert(c.name.clone(), Some(Expr::Float(4.56))); }, + _ => (), + } + } + binds + } + + // This crude function finds "unbound" variables: those which are not constants, parameters, or + // the sole element on the LHS of an equation. + // Bugs: + // if a var is on LHS and RHS of same equation + pub fn get_free_vars(&self) -> Vec { + // Start with components, and remove constants and parameters + let vars = self.components.iter().filter(|v| match v.prefix { + Some(ComponentPrefix::Constant) | Some(ComponentPrefix::Parameter) => false, + _ => true, + }); + + // Remove LHS (bound) vars + let mut outputs = vec![]; + for eq in self.equations.iter() { + // TODO: + if let Expr::Ident(ref symb) = eq.lhs { + outputs.push(symb.to_string()); + } + } + let vars = vars.filter(|v| !outputs.contains(&v.name)); + + vars.map(|c| c.name.clone()).collect() + } + +} + +fn union_strings(a: &Vec, b: &Vec) -> Vec { + let mut u = a.clone(); + for e in b { + if !(u.contains(&e)) { + u.push(e.clone()); + } + } + u +} + +impl Expr { + + // Order is undefined + // TODO: should return a HashSet, not a Vec + pub fn identifiers(&self) -> Vec { + use self::Expr::*; + match *self { + Integer(_) | Float(_) => vec![], + Ident(ref s) => vec![s.clone()], + Der(ref e) | Abs(ref e) => e.identifiers(), + BinExpr(_, ref e1, ref e2) => { + union_strings(&e1.identifiers(), &e2.identifiers()) + }, + } + } + + pub fn contains(&self, ident: &str) -> bool{ + self.identifiers().contains(&ident.to_string()) + } +} + +impl SimpleEquation { + + // Order is undefined + pub fn identifiers(&self) -> Vec { + union_strings(&self.lhs.identifiers(), &self.rhs.identifiers()) + } + + pub fn contains(&self, ident: &str) -> bool{ + let s = &ident.to_string(); + self.lhs.identifiers().contains(s) || self.rhs.identifiers().contains(s) + } +} + +//// Debug Implementations + +impl Debug for ModelicaModel { + fn fmt(&self, fmt: &mut Formatter) -> Result<(), Error> { + try!(write!(fmt, "model {}\n", self.name)); + for e in self.extends.iter() { + try!(write!(fmt, " extends {};\n", e)); + } + for v in self.components.iter() { + try!(write!(fmt, " {:?};\n", v)); + } + try!(write!(fmt, "equation\n")); + for c in self.connections.iter() { + try!(write!(fmt, " {:?};\n", c)); + } + for e in self.equations.iter() { + try!(write!(fmt, " {:?};\n", e)); + } + write!(fmt, "end {};\n", self.name) + } +} + +impl Debug for ComponentPrefix { + fn fmt(&self, fmt: &mut Formatter) -> Result<(), Error> { + use self::ComponentPrefix::*; + write!(fmt, "{}", + match *self { + Flow => "flow", + Stream => "stream", + Input => "input", + Output => "output", + Discrete => "discrete", + Parameter => "parameter", + Constant => "constant", + }) + } +} + +impl Debug for Component { + fn fmt(&self, fmt: &mut Formatter) -> Result<(), Error> { + write!(fmt, "{}{} {}", + match self.prefix { + Some(p) => format!("{:?} ", p), + None => "".to_string(), + }, + self.specifier, + self.name, + ) + } +} + +impl Debug for Connection { + fn fmt(&self, fmt: &mut Formatter) -> Result<(), Error> { + write!(fmt, "connect({}, {})", self.a, self.b) + } +} + +impl Debug for SimpleEquation { + fn fmt(&self, fmt: &mut Formatter) -> Result<(), Error> { + write!(fmt, "{:?} = {:?}", self.lhs, self.rhs) + } +} + +impl Debug for Expr { + fn fmt(&self, fmt: &mut Formatter) -> Result<(), Error> { + use self::Expr::*; + match *self { + Integer(e) => write!(fmt, "{}", e), + Float(e) => write!(fmt, "{}", e), + Ident(ref e) => write!(fmt, "{}", e), + Der(ref e) => write!(fmt, "der({:?})", e), + Abs(ref e) => write!(fmt, "abs({:?})", e), + BinExpr(op, ref l, ref r) => write!(fmt, "({:?} {:?} {:?})", l, op, r), + } + } +} + +impl Debug for BinOperator { + fn fmt(&self, fmt: &mut Formatter) -> Result<(), Error> { + use self::BinOperator::*; + match *self { + Multiply => write!(fmt, "*"), + Divide => write!(fmt, "/"), + Add => write!(fmt, "+"), + Subtract => write!(fmt, "-"), + } + } +} diff --git a/modelica-parser-lalrpop/src/build.rs b/modelica-parser-lalrpop/src/build.rs new file mode 100644 index 0000000..23c7d3f --- /dev/null +++ b/modelica-parser-lalrpop/src/build.rs @@ -0,0 +1,5 @@ +extern crate lalrpop; + +fn main() { + lalrpop::process_root().unwrap(); +} diff --git a/modelica-parser-lalrpop/src/lib.rs b/modelica-parser-lalrpop/src/lib.rs new file mode 100644 index 0000000..f6f1e8b --- /dev/null +++ b/modelica-parser-lalrpop/src/lib.rs @@ -0,0 +1,65 @@ + +extern crate lalrpop_util; +extern crate colored; + +pub mod parser; +pub mod ast; + +use colored::*; +use lalrpop_util::ParseError; + + +fn pp_segment(raw: &str, start: usize, end: usize) -> String { + let mut line_start = 0; + let mut num = 0; + let mut ret = String::new(); + for line in raw.lines() { + num += 1; + let line_end = line_start + line.len(); + if (line_start <= start) && (start < line_end) { + ret += &format!(" {}\n{:>3} {} {}{}{}\n {} {}{}\n", + "|".blue().bold(), + num.to_string().blue().bold(), + "|".blue().bold(), + raw[line_start..start].normal(), + raw[start..end].red().bold(), + if end < line_end { + raw[end..line_end].normal() + } else { + "".normal() + }, + "|".blue().bold(), + std::iter::repeat(" ").take(start - line_start).collect::(), + std::iter::repeat("^").take(end - start).collect::().red().bold()); + } + line_start += line.len() + 1; + if line_start > end { break }; + } + ret +} + +pub fn pp_parseerror(raw: &str, pe: ParseError) -> String { + match pe { + ParseError::InvalidToken{location} => { + format!("{} invalid token starting at:\n{}", + "parse error:".red().bold(), + pp_segment(raw, location, location+1)) }, + ParseError::UnrecognizedToken{token: Some((start, (_, tok), end)), expected} => { + format!("{} unrecognized token '{}' (expected one of {:?}):\n{}", + "parse error:".red().bold(), + tok, + expected, + pp_segment(raw, start, end)) }, + ParseError::UnrecognizedToken{token: None, expected} => { + format!("{} premature end-of-file (expected one of {:?})", + "parse error:".red().bold(), + expected) }, + ParseError::ExtraToken{token: (start, (_, tok), end)} => { + format!("{} unexpected extra token '{}':\n{}", + "parse error:".red().bold(), + tok, + pp_segment(raw, start, end)) }, + _ => { + format!("{} {:?}", "parse error:".red().bold(), pe) }, + } +} diff --git a/modelica-parser-lalrpop/src/parser.lalrpop b/modelica-parser-lalrpop/src/parser.lalrpop new file mode 100644 index 0000000..cdd15b4 --- /dev/null +++ b/modelica-parser-lalrpop/src/parser.lalrpop @@ -0,0 +1,97 @@ +use std::str::FromStr; +use ast::{ModelicaModel,Component, ComponentPrefix, Connection, + SimpleEquation, Expr, BinOperator}; + +// This is an incomplete, non-standards-compliant, minimum-viable parser + +grammar; + +// Lexical Tokens + +pub identifier: String = { + r"[a-zA-Z_][a-zA-Z_0-9]*" => <>.to_string(), +}; + +string_literal: String = { + r#""[^"\\]*""# => <>.to_string(), + // => &s[1..s.len()-1], +}; + +pub integer: i64 = { + r"[+-]?\d+" => i64::from_str(<>).unwrap(), +}; + +pub float: f64 = { + r"[+-]?\d+\.\d*([eE][-+]?\d+)?" => f64::from_str(<>).unwrap(), +}; + + +// Grammar + +pub model: ModelicaModel = { + "model" "equation" "end" identifier ";" => + ModelicaModel { name:n, components: cd, connections: cc, equations: se, extends: vec![] }, +}; + +value_declaration: Expr = { + "=" => value +}; + +units_declaration: String = { + "(" "unit" "=" ")" => units +}; + +component_declaration: Component = { + ";" => + Component { prefix:prefix, specifier:specifier, name:name, description:desc, value:value, units:units }, +}; + +component_prefix: ComponentPrefix = { + "flow" => ComponentPrefix::Flow, + "stream" => ComponentPrefix::Stream, + "input" => ComponentPrefix::Input, + "output" => ComponentPrefix::Output, + "discrete" => ComponentPrefix::Discrete, + "parameter" => ComponentPrefix::Parameter, + "constant" => ComponentPrefix::Constant, +}; + +simple_equation: SimpleEquation = { + "=" ";" => SimpleEquation {lhs:lhs, rhs:rhs}, +}; + +connect_clause: Connection = { + "connect" "(" "," ")" ";" => + Connection { a: a.to_string(), b: b.to_string()}, +}; + +// This weird expr/factor/term hierarchy is for binary operator precedence +expr: Expr = { + "+" => + Expr::BinExpr(BinOperator::Add, Box::new(lhs), Box::new(rhs)), + "-" => + Expr::BinExpr(BinOperator::Subtract, Box::new(lhs), Box::new(rhs)), + factor, +}; + +factor: Expr = { + "*" => + Expr::BinExpr(BinOperator::Multiply, Box::new(lhs), Box::new(rhs)), + "/" => + Expr::BinExpr(BinOperator::Divide, Box::new(lhs), Box::new(rhs)), + "^" => + Expr::BinExpr(BinOperator::Divide, Box::new(lhs), Box::new(rhs)), + "-" => + Expr::BinExpr(BinOperator::Multiply, Box::new(Expr::Integer(-1)), Box::new(t)), + term, +}; + +term: Expr = { + integer => Expr::Integer(<>), + float => Expr::Float(<>), + identifier => Expr::Ident(<>), + "der" "(" ")" => Expr::Der(Box::new(e)), + "abs" "(" ")" => Expr::Abs(Box::new(e)), + "(" ")" => e, +}; + diff --git a/modelica-parser-lalrpop/src/parser.rs b/modelica-parser-lalrpop/src/parser.rs new file mode 100644 index 0000000..f364e84 --- /dev/null +++ b/modelica-parser-lalrpop/src/parser.rs @@ -0,0 +1,15955 @@ +use std::str::FromStr; +use ast::{ModelicaModel,Component, ComponentPrefix, Connection, + SimpleEquation, Expr, BinOperator}; +extern crate lalrpop_util as __lalrpop_util; + +mod __parse__float { + #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports)] + + use std::str::FromStr; + use ast::{ModelicaModel,Component, ComponentPrefix, Connection, + SimpleEquation, Expr, BinOperator}; + extern crate lalrpop_util as __lalrpop_util; + #[allow(dead_code)] + pub enum __Symbol<'input> { + Term_22_28_22(&'input str), + Term_22_29_22(&'input str), + Term_22_2a_22(&'input str), + Term_22_2b_22(&'input str), + Term_22_2c_22(&'input str), + Term_22_2d_22(&'input str), + Term_22_2f_22(&'input str), + Term_22_3b_22(&'input str), + Term_22_3d_22(&'input str), + Term_22_5e_22(&'input str), + Term_22abs_22(&'input str), + Term_22connect_22(&'input str), + Term_22constant_22(&'input str), + Term_22der_22(&'input str), + Term_22discrete_22(&'input str), + Term_22end_22(&'input str), + Term_22equation_22(&'input str), + Term_22flow_22(&'input str), + Term_22input_22(&'input str), + Term_22model_22(&'input str), + Term_22output_22(&'input str), + Term_22parameter_22(&'input str), + Term_22stream_22(&'input str), + Term_22unit_22(&'input str), + Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(&'input str), + Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(&'input str), + Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(&'input str), + Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(&'input str), + Termerror(__lalrpop_util::ErrorRecovery), + Nt____float(f64), + Nt____identifier(String), + Nt____integer(i64), + Nt____model(ModelicaModel), + Ntcomponent__declaration(Component), + Ntcomponent__declaration_2a(::std::vec::Vec), + Ntcomponent__declaration_2b(::std::vec::Vec), + Ntcomponent__prefix(ComponentPrefix), + Ntcomponent__prefix_3f(::std::option::Option), + Ntconnect__clause(Connection), + Ntconnect__clause_2a(::std::vec::Vec), + Ntconnect__clause_2b(::std::vec::Vec), + Ntexpr(Expr), + Ntfactor(Expr), + Ntfloat(f64), + Ntidentifier(String), + Ntinteger(i64), + Ntmodel(ModelicaModel), + Ntsimple__equation(SimpleEquation), + Ntsimple__equation_2a(::std::vec::Vec), + Ntsimple__equation_2b(::std::vec::Vec), + Ntstring__literal(String), + Ntstring__literal_3f(::std::option::Option), + Ntterm(Expr), + Ntunits__declaration(String), + Ntunits__declaration_3f(::std::option::Option), + Ntvalue__declaration(Expr), + Ntvalue__declaration_3f(::std::option::Option), + } + const __ACTION: &'static [i32] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, + // State 1 + 0, 0, 0, 0, 0, 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 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + const __EOF_ACTION: &'static [i32] = &[ + 0, + -1, + -47, + ]; + const __GOTO: &'static [i32] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1 + 0, 0, 0, 0, 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 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + pub fn parse_float< + 'input, + >( + input: &'input str, + ) -> Result> + { + let mut __tokens = super::__intern_token::__Matcher::new(input); + let mut __states = vec![0_i32]; + let mut __symbols = vec![]; + let mut __integer; + let mut __lookahead; + let mut __last_location = Default::default(); + '__shift: loop { + __lookahead = match __tokens.next() { + Some(Ok(v)) => v, + None => break '__shift, + Some(Err(e)) => return Err(e), + }; + __last_location = __lookahead.2.clone(); + __integer = match __lookahead.1 { + (0, _) if true => 0, + (1, _) if true => 1, + (2, _) if true => 2, + (3, _) if true => 3, + (4, _) if true => 4, + (5, _) if true => 5, + (6, _) if true => 6, + (7, _) if true => 7, + (8, _) if true => 8, + (9, _) if true => 9, + (10, _) if true => 10, + (11, _) if true => 11, + (12, _) if true => 12, + (13, _) if true => 13, + (14, _) if true => 14, + (15, _) if true => 15, + (16, _) if true => 16, + (17, _) if true => 17, + (18, _) if true => 18, + (19, _) if true => 19, + (20, _) if true => 20, + (21, _) if true => 21, + (22, _) if true => 22, + (23, _) if true => 23, + (24, _) if true => 24, + (25, _) if true => 25, + (26, _) if true => 26, + (27, _) if true => 27, + _ => { + return Err(__lalrpop_util::ParseError::UnrecognizedToken { + token: Some(__lookahead), + expected: vec![], + }); + } + }; + '__inner: loop { + let __state = *__states.last().unwrap() as usize; + let __action = __ACTION[__state * 29 + __integer]; + if __action > 0 { + let __symbol = match __integer { + 0 => match __lookahead.1 { + (0, __tok0) => __Symbol::Term_22_28_22(__tok0), + _ => unreachable!(), + }, + 1 => match __lookahead.1 { + (1, __tok0) => __Symbol::Term_22_29_22(__tok0), + _ => unreachable!(), + }, + 2 => match __lookahead.1 { + (2, __tok0) => __Symbol::Term_22_2a_22(__tok0), + _ => unreachable!(), + }, + 3 => match __lookahead.1 { + (3, __tok0) => __Symbol::Term_22_2b_22(__tok0), + _ => unreachable!(), + }, + 4 => match __lookahead.1 { + (4, __tok0) => __Symbol::Term_22_2c_22(__tok0), + _ => unreachable!(), + }, + 5 => match __lookahead.1 { + (5, __tok0) => __Symbol::Term_22_2d_22(__tok0), + _ => unreachable!(), + }, + 6 => match __lookahead.1 { + (6, __tok0) => __Symbol::Term_22_2f_22(__tok0), + _ => unreachable!(), + }, + 7 => match __lookahead.1 { + (7, __tok0) => __Symbol::Term_22_3b_22(__tok0), + _ => unreachable!(), + }, + 8 => match __lookahead.1 { + (8, __tok0) => __Symbol::Term_22_3d_22(__tok0), + _ => unreachable!(), + }, + 9 => match __lookahead.1 { + (9, __tok0) => __Symbol::Term_22_5e_22(__tok0), + _ => unreachable!(), + }, + 10 => match __lookahead.1 { + (10, __tok0) => __Symbol::Term_22abs_22(__tok0), + _ => unreachable!(), + }, + 11 => match __lookahead.1 { + (11, __tok0) => __Symbol::Term_22connect_22(__tok0), + _ => unreachable!(), + }, + 12 => match __lookahead.1 { + (12, __tok0) => __Symbol::Term_22constant_22(__tok0), + _ => unreachable!(), + }, + 13 => match __lookahead.1 { + (13, __tok0) => __Symbol::Term_22der_22(__tok0), + _ => unreachable!(), + }, + 14 => match __lookahead.1 { + (14, __tok0) => __Symbol::Term_22discrete_22(__tok0), + _ => unreachable!(), + }, + 15 => match __lookahead.1 { + (15, __tok0) => __Symbol::Term_22end_22(__tok0), + _ => unreachable!(), + }, + 16 => match __lookahead.1 { + (16, __tok0) => __Symbol::Term_22equation_22(__tok0), + _ => unreachable!(), + }, + 17 => match __lookahead.1 { + (17, __tok0) => __Symbol::Term_22flow_22(__tok0), + _ => unreachable!(), + }, + 18 => match __lookahead.1 { + (18, __tok0) => __Symbol::Term_22input_22(__tok0), + _ => unreachable!(), + }, + 19 => match __lookahead.1 { + (19, __tok0) => __Symbol::Term_22model_22(__tok0), + _ => unreachable!(), + }, + 20 => match __lookahead.1 { + (20, __tok0) => __Symbol::Term_22output_22(__tok0), + _ => unreachable!(), + }, + 21 => match __lookahead.1 { + (21, __tok0) => __Symbol::Term_22parameter_22(__tok0), + _ => unreachable!(), + }, + 22 => match __lookahead.1 { + (22, __tok0) => __Symbol::Term_22stream_22(__tok0), + _ => unreachable!(), + }, + 23 => match __lookahead.1 { + (23, __tok0) => __Symbol::Term_22unit_22(__tok0), + _ => unreachable!(), + }, + 24 => match __lookahead.1 { + (24, __tok0) => __Symbol::Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__tok0), + _ => unreachable!(), + }, + 25 => match __lookahead.1 { + (25, __tok0) => __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__tok0), + _ => unreachable!(), + }, + 26 => match __lookahead.1 { + (26, __tok0) => __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__tok0), + _ => unreachable!(), + }, + 27 => match __lookahead.1 { + (27, __tok0) => __Symbol::Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + }; + __states.push(__action - 1); + __symbols.push((__lookahead.0, __symbol, __lookahead.2)); + continue '__shift; + } else if __action < 0 { + if let Some(r) = __reduce(input, __action, Some(&__lookahead.0), &mut __states, &mut __symbols, ::std::marker::PhantomData::<()>) { + return r; + } + } else { + return Err(__lalrpop_util::ParseError::UnrecognizedToken { + token: Some(__lookahead), + expected: vec![], + }); + } + } + } + loop { + let __state = *__states.last().unwrap() as usize; + let __action = __EOF_ACTION[__state]; + if __action < 0 { + if let Some(r) = __reduce(input, __action, None, &mut __states, &mut __symbols, ::std::marker::PhantomData::<()>) { + return r; + } + } else { + let __error = __lalrpop_util::ParseError::UnrecognizedToken { + token: None, + expected: vec![], + }; + return Err(__error); + } + } + } + pub fn __reduce< + 'input, + >( + input: &'input str, + __action: i32, + __lookahead_start: Option<&usize>, + __states: &mut ::std::vec::Vec, + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: ::std::marker::PhantomData<()>, + ) -> Option>> + { + let __nonterminal = match -__action { + 1 => { + // __float = float => ActionFn(2); + let __sym0 = __pop_Ntfloat(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + return Some(Ok(__nt)); + } + 2 => { + // __identifier = identifier => ActionFn(0); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____identifier(__nt), __end)); + 1 + } + 3 => { + // __integer = integer => ActionFn(1); + let __sym0 = __pop_Ntinteger(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____integer(__nt), __end)); + 2 + } + 4 => { + // __model = model => ActionFn(3); + let __sym0 = __pop_Ntmodel(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action3::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____model(__nt), __end)); + 3 + } + 5 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, value_declaration, string_literal, ";" => ActionFn(83); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntstring__literal(__symbols); + let __sym4 = __pop_Ntvalue__declaration(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action83::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 6 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, string_literal, ";" => ActionFn(84); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 7 => { + // component_declaration = component_prefix, identifier, identifier, value_declaration, string_literal, ";" => ActionFn(85); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 8 => { + // component_declaration = component_prefix, identifier, identifier, string_literal, ";" => ActionFn(86); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 9 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, value_declaration, ";" => ActionFn(87); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntvalue__declaration(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 10 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, ";" => ActionFn(88); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 11 => { + // component_declaration = component_prefix, identifier, identifier, value_declaration, ";" => ActionFn(89); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 12 => { + // component_declaration = component_prefix, identifier, identifier, ";" => ActionFn(90); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 13 => { + // component_declaration = identifier, identifier, units_declaration, value_declaration, string_literal, ";" => ActionFn(91); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 14 => { + // component_declaration = identifier, identifier, units_declaration, string_literal, ";" => ActionFn(92); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action92::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 15 => { + // component_declaration = identifier, identifier, value_declaration, string_literal, ";" => ActionFn(93); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntvalue__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action93::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 16 => { + // component_declaration = identifier, identifier, string_literal, ";" => ActionFn(94); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntstring__literal(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 17 => { + // component_declaration = identifier, identifier, units_declaration, value_declaration, ";" => ActionFn(95); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 18 => { + // component_declaration = identifier, identifier, units_declaration, ";" => ActionFn(96); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action96::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 19 => { + // component_declaration = identifier, identifier, value_declaration, ";" => ActionFn(97); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntvalue__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action97::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 20 => { + // component_declaration = identifier, identifier, ";" => ActionFn(98); + let __sym2 = __pop_Term_22_3b_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 21 => { + // component_declaration* = => ActionFn(47); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action47::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2a(__nt), __end)); + 5 + } + 22 => { + // component_declaration* = component_declaration+ => ActionFn(48); + let __sym0 = __pop_Ntcomponent__declaration_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action48::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2a(__nt), __end)); + 5 + } + 23 => { + // component_declaration+ = component_declaration => ActionFn(49); + let __sym0 = __pop_Ntcomponent__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action49::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2b(__nt), __end)); + 6 + } + 24 => { + // component_declaration+ = component_declaration+, component_declaration => ActionFn(50); + let __sym1 = __pop_Ntcomponent__declaration(__symbols); + let __sym0 = __pop_Ntcomponent__declaration_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action50::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2b(__nt), __end)); + 6 + } + 25 => { + // component_prefix = "flow" => ActionFn(12); + let __sym0 = __pop_Term_22flow_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 26 => { + // component_prefix = "stream" => ActionFn(13); + let __sym0 = __pop_Term_22stream_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action13::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 27 => { + // component_prefix = "input" => ActionFn(14); + let __sym0 = __pop_Term_22input_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 28 => { + // component_prefix = "output" => ActionFn(15); + let __sym0 = __pop_Term_22output_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 29 => { + // component_prefix = "discrete" => ActionFn(16); + let __sym0 = __pop_Term_22discrete_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action16::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 30 => { + // component_prefix = "parameter" => ActionFn(17); + let __sym0 = __pop_Term_22parameter_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 31 => { + // component_prefix = "constant" => ActionFn(18); + let __sym0 = __pop_Term_22constant_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 32 => { + // component_prefix? = component_prefix => ActionFn(41); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action41::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix_3f(__nt), __end)); + 8 + } + 33 => { + // component_prefix? = => ActionFn(42); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action42::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntcomponent__prefix_3f(__nt), __end)); + 8 + } + 34 => { + // connect_clause = "connect", "(", identifier, ",", identifier, ")", ";" => ActionFn(20); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Term_22_29_22(__symbols); + let __sym4 = __pop_Ntidentifier(__symbols); + let __sym3 = __pop_Term_22_2c_22(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22connect_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action20::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntconnect__clause(__nt), __end)); + 9 + } + 35 => { + // connect_clause* = => ActionFn(45); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action45::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntconnect__clause_2a(__nt), __end)); + 10 + } + 36 => { + // connect_clause* = connect_clause+ => ActionFn(46); + let __sym0 = __pop_Ntconnect__clause_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action46::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntconnect__clause_2a(__nt), __end)); + 10 + } + 37 => { + // connect_clause+ = connect_clause => ActionFn(51); + let __sym0 = __pop_Ntconnect__clause(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action51::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntconnect__clause_2b(__nt), __end)); + 11 + } + 38 => { + // connect_clause+ = connect_clause+, connect_clause => ActionFn(52); + let __sym1 = __pop_Ntconnect__clause(__symbols); + let __sym0 = __pop_Ntconnect__clause_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action52::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntconnect__clause_2b(__nt), __end)); + 11 + } + 39 => { + // expr = expr, "+", factor => ActionFn(21); + let __sym2 = __pop_Ntfactor(__symbols); + let __sym1 = __pop_Term_22_2b_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action21::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 40 => { + // expr = expr, "-", factor => ActionFn(22); + let __sym2 = __pop_Ntfactor(__symbols); + let __sym1 = __pop_Term_22_2d_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action22::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 41 => { + // expr = factor => ActionFn(23); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action23::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 42 => { + // factor = factor, "*", term => ActionFn(24); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_2a_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 43 => { + // factor = factor, "/", term => ActionFn(25); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_2f_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action25::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 44 => { + // factor = factor, "^", term => ActionFn(26); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_5e_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action26::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 45 => { + // factor = "-", term => ActionFn(27); + let __sym1 = __pop_Ntterm(__symbols); + let __sym0 = __pop_Term_22_2d_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 46 => { + // factor = term => ActionFn(28); + let __sym0 = __pop_Ntterm(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 47 => { + // float = r#"[+-]?\\d+\\.\\d*([eE][-+]?\\d+)?"# => ActionFn(7); + let __sym0 = __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntfloat(__nt), __end)); + 14 + } + 48 => { + // identifier = r#"[a-zA-Z_][a-zA-Z_0-9]*"# => ActionFn(4); + let __sym0 = __pop_Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntidentifier(__nt), __end)); + 15 + } + 49 => { + // integer = r#"[+-]?\\d+"# => ActionFn(6); + let __sym0 = __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntinteger(__nt), __end)); + 16 + } + 50 => { + // model = "model", identifier, "equation", "end", identifier, ";" => ActionFn(63); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntidentifier(__symbols); + let __sym3 = __pop_Term_22end_22(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 51 => { + // model = "model", identifier, "equation", simple_equation+, "end", identifier, ";" => ActionFn(64); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Ntsimple__equation_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 52 => { + // model = "model", identifier, "equation", connect_clause+, "end", identifier, ";" => ActionFn(65); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Ntconnect__clause_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 53 => { + // model = "model", identifier, "equation", connect_clause+, simple_equation+, "end", identifier, ";" => ActionFn(66); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntsimple__equation_2b(__symbols); + let __sym3 = __pop_Ntconnect__clause_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 54 => { + // model = "model", identifier, component_declaration+, "equation", "end", identifier, ";" => ActionFn(67); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action67::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 55 => { + // model = "model", identifier, component_declaration+, "equation", simple_equation+, "end", identifier, ";" => ActionFn(68); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntsimple__equation_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action68::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 56 => { + // model = "model", identifier, component_declaration+, "equation", connect_clause+, "end", identifier, ";" => ActionFn(69); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntconnect__clause_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 57 => { + // model = "model", identifier, component_declaration+, "equation", connect_clause+, simple_equation+, "end", identifier, ";" => ActionFn(70); + let __sym8 = __pop_Term_22_3b_22(__symbols); + let __sym7 = __pop_Ntidentifier(__symbols); + let __sym6 = __pop_Term_22end_22(__symbols); + let __sym5 = __pop_Ntsimple__equation_2b(__symbols); + let __sym4 = __pop_Ntconnect__clause_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym8.2.clone(); + let __nt = super::__action70::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __states_len = __states.len(); + __states.truncate(__states_len - 9); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 58 => { + // simple_equation = expr, "=", expr, ";" => ActionFn(19); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_3d_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntsimple__equation(__nt), __end)); + 18 + } + 59 => { + // simple_equation* = => ActionFn(43); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action43::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntsimple__equation_2a(__nt), __end)); + 19 + } + 60 => { + // simple_equation* = simple_equation+ => ActionFn(44); + let __sym0 = __pop_Ntsimple__equation_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action44::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntsimple__equation_2a(__nt), __end)); + 19 + } + 61 => { + // simple_equation+ = simple_equation => ActionFn(53); + let __sym0 = __pop_Ntsimple__equation(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action53::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntsimple__equation_2b(__nt), __end)); + 20 + } + 62 => { + // simple_equation+ = simple_equation+, simple_equation => ActionFn(54); + let __sym1 = __pop_Ntsimple__equation(__symbols); + let __sym0 = __pop_Ntsimple__equation_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action54::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntsimple__equation_2b(__nt), __end)); + 20 + } + 63 => { + // string_literal = r#"\"[^\"\\\\]*\""# => ActionFn(5); + let __sym0 = __pop_Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntstring__literal(__nt), __end)); + 21 + } + 64 => { + // string_literal? = string_literal => ActionFn(35); + let __sym0 = __pop_Ntstring__literal(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntstring__literal_3f(__nt), __end)); + 22 + } + 65 => { + // string_literal? = => ActionFn(36); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action36::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntstring__literal_3f(__nt), __end)); + 22 + } + 66 => { + // term = integer => ActionFn(29); + let __sym0 = __pop_Ntinteger(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 67 => { + // term = float => ActionFn(30); + let __sym0 = __pop_Ntfloat(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action30::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 68 => { + // term = identifier => ActionFn(31); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 69 => { + // term = "der", "(", expr, ")" => ActionFn(32); + let __sym3 = __pop_Term_22_29_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22der_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action32::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 70 => { + // term = "abs", "(", expr, ")" => ActionFn(33); + let __sym3 = __pop_Term_22_29_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22abs_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action33::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 71 => { + // term = "(", expr, ")" => ActionFn(34); + let __sym2 = __pop_Term_22_29_22(__symbols); + let __sym1 = __pop_Ntexpr(__symbols); + let __sym0 = __pop_Term_22_28_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action34::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 72 => { + // units_declaration = "(", "unit", "=", string_literal, ")" => ActionFn(10); + let __sym4 = __pop_Term_22_29_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Term_22_3d_22(__symbols); + let __sym1 = __pop_Term_22unit_22(__symbols); + let __sym0 = __pop_Term_22_28_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action10::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntunits__declaration(__nt), __end)); + 24 + } + 73 => { + // units_declaration? = units_declaration => ActionFn(39); + let __sym0 = __pop_Ntunits__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action39::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntunits__declaration_3f(__nt), __end)); + 25 + } + 74 => { + // units_declaration? = => ActionFn(40); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action40::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntunits__declaration_3f(__nt), __end)); + 25 + } + 75 => { + // value_declaration = "=", expr => ActionFn(9); + let __sym1 = __pop_Ntexpr(__symbols); + let __sym0 = __pop_Term_22_3d_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action9::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntvalue__declaration(__nt), __end)); + 26 + } + 76 => { + // value_declaration? = value_declaration => ActionFn(37); + let __sym0 = __pop_Ntvalue__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action37::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntvalue__declaration_3f(__nt), __end)); + 27 + } + 77 => { + // value_declaration? = => ActionFn(38); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action38::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntvalue__declaration_3f(__nt), __end)); + 27 + } + _ => panic!("invalid action code {}", __action) + }; + let __state = *__states.last().unwrap() as usize; + let __next_state = __GOTO[__state * 28 + __nonterminal] - 1; + __states.push(__next_state); + None + } + fn __pop_Term_22_28_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_28_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_29_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_29_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2a_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2a_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2b_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2b_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2c_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2c_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2d_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2d_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2f_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2f_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_3b_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_3b_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_3d_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_3d_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_5e_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_5e_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22abs_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22abs_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22connect_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22connect_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22constant_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22constant_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22der_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22der_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22discrete_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22discrete_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22end_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22end_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22equation_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22equation_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22flow_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22flow_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22input_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22input_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22model_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22model_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22output_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22output_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22parameter_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22parameter_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22stream_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22stream_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22unit_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22unit_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termerror< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, __lalrpop_util::ErrorRecovery, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termerror(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____float< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, f64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____float(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____identifier< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____identifier(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____integer< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____integer(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____model< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ModelicaModel, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____model(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Component, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__prefix< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ComponentPrefix, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__prefix(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__prefix_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__prefix_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Connection, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntexpr< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntexpr(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntfactor< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntfactor(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntfloat< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, f64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntfloat(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntidentifier< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntidentifier(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntinteger< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntinteger(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntmodel< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ModelicaModel, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntmodel(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, SimpleEquation, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntstring__literal< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntstring__literal(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntstring__literal_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntstring__literal_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntterm< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntterm(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntunits__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntunits__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntunits__declaration_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntunits__declaration_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntvalue__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntvalue__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntvalue__declaration_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntvalue__declaration_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } +} +pub use self::__parse__float::parse_float; + +mod __parse__identifier { + #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports)] + + use std::str::FromStr; + use ast::{ModelicaModel,Component, ComponentPrefix, Connection, + SimpleEquation, Expr, BinOperator}; + extern crate lalrpop_util as __lalrpop_util; + #[allow(dead_code)] + pub enum __Symbol<'input> { + Term_22_28_22(&'input str), + Term_22_29_22(&'input str), + Term_22_2a_22(&'input str), + Term_22_2b_22(&'input str), + Term_22_2c_22(&'input str), + Term_22_2d_22(&'input str), + Term_22_2f_22(&'input str), + Term_22_3b_22(&'input str), + Term_22_3d_22(&'input str), + Term_22_5e_22(&'input str), + Term_22abs_22(&'input str), + Term_22connect_22(&'input str), + Term_22constant_22(&'input str), + Term_22der_22(&'input str), + Term_22discrete_22(&'input str), + Term_22end_22(&'input str), + Term_22equation_22(&'input str), + Term_22flow_22(&'input str), + Term_22input_22(&'input str), + Term_22model_22(&'input str), + Term_22output_22(&'input str), + Term_22parameter_22(&'input str), + Term_22stream_22(&'input str), + Term_22unit_22(&'input str), + Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(&'input str), + Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(&'input str), + Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(&'input str), + Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(&'input str), + Termerror(__lalrpop_util::ErrorRecovery), + Nt____float(f64), + Nt____identifier(String), + Nt____integer(i64), + Nt____model(ModelicaModel), + Ntcomponent__declaration(Component), + Ntcomponent__declaration_2a(::std::vec::Vec), + Ntcomponent__declaration_2b(::std::vec::Vec), + Ntcomponent__prefix(ComponentPrefix), + Ntcomponent__prefix_3f(::std::option::Option), + Ntconnect__clause(Connection), + Ntconnect__clause_2a(::std::vec::Vec), + Ntconnect__clause_2b(::std::vec::Vec), + Ntexpr(Expr), + Ntfactor(Expr), + Ntfloat(f64), + Ntidentifier(String), + Ntinteger(i64), + Ntmodel(ModelicaModel), + Ntsimple__equation(SimpleEquation), + Ntsimple__equation_2a(::std::vec::Vec), + Ntsimple__equation_2b(::std::vec::Vec), + Ntstring__literal(String), + Ntstring__literal_3f(::std::option::Option), + Ntterm(Expr), + Ntunits__declaration(String), + Ntunits__declaration_3f(::std::option::Option), + Ntvalue__declaration(Expr), + Ntvalue__declaration_3f(::std::option::Option), + } + const __ACTION: &'static [i32] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, + // State 1 + 0, 0, 0, 0, 0, 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 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + const __EOF_ACTION: &'static [i32] = &[ + 0, + -2, + -48, + ]; + const __GOTO: &'static [i32] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1 + 0, 0, 0, 0, 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 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + pub fn parse_identifier< + 'input, + >( + input: &'input str, + ) -> Result> + { + let mut __tokens = super::__intern_token::__Matcher::new(input); + let mut __states = vec![0_i32]; + let mut __symbols = vec![]; + let mut __integer; + let mut __lookahead; + let mut __last_location = Default::default(); + '__shift: loop { + __lookahead = match __tokens.next() { + Some(Ok(v)) => v, + None => break '__shift, + Some(Err(e)) => return Err(e), + }; + __last_location = __lookahead.2.clone(); + __integer = match __lookahead.1 { + (0, _) if true => 0, + (1, _) if true => 1, + (2, _) if true => 2, + (3, _) if true => 3, + (4, _) if true => 4, + (5, _) if true => 5, + (6, _) if true => 6, + (7, _) if true => 7, + (8, _) if true => 8, + (9, _) if true => 9, + (10, _) if true => 10, + (11, _) if true => 11, + (12, _) if true => 12, + (13, _) if true => 13, + (14, _) if true => 14, + (15, _) if true => 15, + (16, _) if true => 16, + (17, _) if true => 17, + (18, _) if true => 18, + (19, _) if true => 19, + (20, _) if true => 20, + (21, _) if true => 21, + (22, _) if true => 22, + (23, _) if true => 23, + (24, _) if true => 24, + (25, _) if true => 25, + (26, _) if true => 26, + (27, _) if true => 27, + _ => { + return Err(__lalrpop_util::ParseError::UnrecognizedToken { + token: Some(__lookahead), + expected: vec![], + }); + } + }; + '__inner: loop { + let __state = *__states.last().unwrap() as usize; + let __action = __ACTION[__state * 29 + __integer]; + if __action > 0 { + let __symbol = match __integer { + 0 => match __lookahead.1 { + (0, __tok0) => __Symbol::Term_22_28_22(__tok0), + _ => unreachable!(), + }, + 1 => match __lookahead.1 { + (1, __tok0) => __Symbol::Term_22_29_22(__tok0), + _ => unreachable!(), + }, + 2 => match __lookahead.1 { + (2, __tok0) => __Symbol::Term_22_2a_22(__tok0), + _ => unreachable!(), + }, + 3 => match __lookahead.1 { + (3, __tok0) => __Symbol::Term_22_2b_22(__tok0), + _ => unreachable!(), + }, + 4 => match __lookahead.1 { + (4, __tok0) => __Symbol::Term_22_2c_22(__tok0), + _ => unreachable!(), + }, + 5 => match __lookahead.1 { + (5, __tok0) => __Symbol::Term_22_2d_22(__tok0), + _ => unreachable!(), + }, + 6 => match __lookahead.1 { + (6, __tok0) => __Symbol::Term_22_2f_22(__tok0), + _ => unreachable!(), + }, + 7 => match __lookahead.1 { + (7, __tok0) => __Symbol::Term_22_3b_22(__tok0), + _ => unreachable!(), + }, + 8 => match __lookahead.1 { + (8, __tok0) => __Symbol::Term_22_3d_22(__tok0), + _ => unreachable!(), + }, + 9 => match __lookahead.1 { + (9, __tok0) => __Symbol::Term_22_5e_22(__tok0), + _ => unreachable!(), + }, + 10 => match __lookahead.1 { + (10, __tok0) => __Symbol::Term_22abs_22(__tok0), + _ => unreachable!(), + }, + 11 => match __lookahead.1 { + (11, __tok0) => __Symbol::Term_22connect_22(__tok0), + _ => unreachable!(), + }, + 12 => match __lookahead.1 { + (12, __tok0) => __Symbol::Term_22constant_22(__tok0), + _ => unreachable!(), + }, + 13 => match __lookahead.1 { + (13, __tok0) => __Symbol::Term_22der_22(__tok0), + _ => unreachable!(), + }, + 14 => match __lookahead.1 { + (14, __tok0) => __Symbol::Term_22discrete_22(__tok0), + _ => unreachable!(), + }, + 15 => match __lookahead.1 { + (15, __tok0) => __Symbol::Term_22end_22(__tok0), + _ => unreachable!(), + }, + 16 => match __lookahead.1 { + (16, __tok0) => __Symbol::Term_22equation_22(__tok0), + _ => unreachable!(), + }, + 17 => match __lookahead.1 { + (17, __tok0) => __Symbol::Term_22flow_22(__tok0), + _ => unreachable!(), + }, + 18 => match __lookahead.1 { + (18, __tok0) => __Symbol::Term_22input_22(__tok0), + _ => unreachable!(), + }, + 19 => match __lookahead.1 { + (19, __tok0) => __Symbol::Term_22model_22(__tok0), + _ => unreachable!(), + }, + 20 => match __lookahead.1 { + (20, __tok0) => __Symbol::Term_22output_22(__tok0), + _ => unreachable!(), + }, + 21 => match __lookahead.1 { + (21, __tok0) => __Symbol::Term_22parameter_22(__tok0), + _ => unreachable!(), + }, + 22 => match __lookahead.1 { + (22, __tok0) => __Symbol::Term_22stream_22(__tok0), + _ => unreachable!(), + }, + 23 => match __lookahead.1 { + (23, __tok0) => __Symbol::Term_22unit_22(__tok0), + _ => unreachable!(), + }, + 24 => match __lookahead.1 { + (24, __tok0) => __Symbol::Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__tok0), + _ => unreachable!(), + }, + 25 => match __lookahead.1 { + (25, __tok0) => __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__tok0), + _ => unreachable!(), + }, + 26 => match __lookahead.1 { + (26, __tok0) => __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__tok0), + _ => unreachable!(), + }, + 27 => match __lookahead.1 { + (27, __tok0) => __Symbol::Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + }; + __states.push(__action - 1); + __symbols.push((__lookahead.0, __symbol, __lookahead.2)); + continue '__shift; + } else if __action < 0 { + if let Some(r) = __reduce(input, __action, Some(&__lookahead.0), &mut __states, &mut __symbols, ::std::marker::PhantomData::<()>) { + return r; + } + } else { + return Err(__lalrpop_util::ParseError::UnrecognizedToken { + token: Some(__lookahead), + expected: vec![], + }); + } + } + } + loop { + let __state = *__states.last().unwrap() as usize; + let __action = __EOF_ACTION[__state]; + if __action < 0 { + if let Some(r) = __reduce(input, __action, None, &mut __states, &mut __symbols, ::std::marker::PhantomData::<()>) { + return r; + } + } else { + let __error = __lalrpop_util::ParseError::UnrecognizedToken { + token: None, + expected: vec![], + }; + return Err(__error); + } + } + } + pub fn __reduce< + 'input, + >( + input: &'input str, + __action: i32, + __lookahead_start: Option<&usize>, + __states: &mut ::std::vec::Vec, + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: ::std::marker::PhantomData<()>, + ) -> Option>> + { + let __nonterminal = match -__action { + 1 => { + // __float = float => ActionFn(2); + let __sym0 = __pop_Ntfloat(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____float(__nt), __end)); + 0 + } + 2 => { + // __identifier = identifier => ActionFn(0); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + return Some(Ok(__nt)); + } + 3 => { + // __integer = integer => ActionFn(1); + let __sym0 = __pop_Ntinteger(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____integer(__nt), __end)); + 2 + } + 4 => { + // __model = model => ActionFn(3); + let __sym0 = __pop_Ntmodel(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action3::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____model(__nt), __end)); + 3 + } + 5 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, value_declaration, string_literal, ";" => ActionFn(83); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntstring__literal(__symbols); + let __sym4 = __pop_Ntvalue__declaration(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action83::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 6 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, string_literal, ";" => ActionFn(84); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 7 => { + // component_declaration = component_prefix, identifier, identifier, value_declaration, string_literal, ";" => ActionFn(85); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 8 => { + // component_declaration = component_prefix, identifier, identifier, string_literal, ";" => ActionFn(86); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 9 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, value_declaration, ";" => ActionFn(87); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntvalue__declaration(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 10 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, ";" => ActionFn(88); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 11 => { + // component_declaration = component_prefix, identifier, identifier, value_declaration, ";" => ActionFn(89); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 12 => { + // component_declaration = component_prefix, identifier, identifier, ";" => ActionFn(90); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 13 => { + // component_declaration = identifier, identifier, units_declaration, value_declaration, string_literal, ";" => ActionFn(91); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 14 => { + // component_declaration = identifier, identifier, units_declaration, string_literal, ";" => ActionFn(92); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action92::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 15 => { + // component_declaration = identifier, identifier, value_declaration, string_literal, ";" => ActionFn(93); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntvalue__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action93::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 16 => { + // component_declaration = identifier, identifier, string_literal, ";" => ActionFn(94); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntstring__literal(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 17 => { + // component_declaration = identifier, identifier, units_declaration, value_declaration, ";" => ActionFn(95); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 18 => { + // component_declaration = identifier, identifier, units_declaration, ";" => ActionFn(96); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action96::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 19 => { + // component_declaration = identifier, identifier, value_declaration, ";" => ActionFn(97); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntvalue__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action97::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 20 => { + // component_declaration = identifier, identifier, ";" => ActionFn(98); + let __sym2 = __pop_Term_22_3b_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 21 => { + // component_declaration* = => ActionFn(47); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action47::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2a(__nt), __end)); + 5 + } + 22 => { + // component_declaration* = component_declaration+ => ActionFn(48); + let __sym0 = __pop_Ntcomponent__declaration_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action48::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2a(__nt), __end)); + 5 + } + 23 => { + // component_declaration+ = component_declaration => ActionFn(49); + let __sym0 = __pop_Ntcomponent__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action49::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2b(__nt), __end)); + 6 + } + 24 => { + // component_declaration+ = component_declaration+, component_declaration => ActionFn(50); + let __sym1 = __pop_Ntcomponent__declaration(__symbols); + let __sym0 = __pop_Ntcomponent__declaration_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action50::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2b(__nt), __end)); + 6 + } + 25 => { + // component_prefix = "flow" => ActionFn(12); + let __sym0 = __pop_Term_22flow_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 26 => { + // component_prefix = "stream" => ActionFn(13); + let __sym0 = __pop_Term_22stream_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action13::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 27 => { + // component_prefix = "input" => ActionFn(14); + let __sym0 = __pop_Term_22input_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 28 => { + // component_prefix = "output" => ActionFn(15); + let __sym0 = __pop_Term_22output_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 29 => { + // component_prefix = "discrete" => ActionFn(16); + let __sym0 = __pop_Term_22discrete_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action16::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 30 => { + // component_prefix = "parameter" => ActionFn(17); + let __sym0 = __pop_Term_22parameter_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 31 => { + // component_prefix = "constant" => ActionFn(18); + let __sym0 = __pop_Term_22constant_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 32 => { + // component_prefix? = component_prefix => ActionFn(41); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action41::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix_3f(__nt), __end)); + 8 + } + 33 => { + // component_prefix? = => ActionFn(42); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action42::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntcomponent__prefix_3f(__nt), __end)); + 8 + } + 34 => { + // connect_clause = "connect", "(", identifier, ",", identifier, ")", ";" => ActionFn(20); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Term_22_29_22(__symbols); + let __sym4 = __pop_Ntidentifier(__symbols); + let __sym3 = __pop_Term_22_2c_22(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22connect_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action20::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntconnect__clause(__nt), __end)); + 9 + } + 35 => { + // connect_clause* = => ActionFn(45); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action45::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntconnect__clause_2a(__nt), __end)); + 10 + } + 36 => { + // connect_clause* = connect_clause+ => ActionFn(46); + let __sym0 = __pop_Ntconnect__clause_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action46::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntconnect__clause_2a(__nt), __end)); + 10 + } + 37 => { + // connect_clause+ = connect_clause => ActionFn(51); + let __sym0 = __pop_Ntconnect__clause(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action51::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntconnect__clause_2b(__nt), __end)); + 11 + } + 38 => { + // connect_clause+ = connect_clause+, connect_clause => ActionFn(52); + let __sym1 = __pop_Ntconnect__clause(__symbols); + let __sym0 = __pop_Ntconnect__clause_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action52::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntconnect__clause_2b(__nt), __end)); + 11 + } + 39 => { + // expr = expr, "+", factor => ActionFn(21); + let __sym2 = __pop_Ntfactor(__symbols); + let __sym1 = __pop_Term_22_2b_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action21::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 40 => { + // expr = expr, "-", factor => ActionFn(22); + let __sym2 = __pop_Ntfactor(__symbols); + let __sym1 = __pop_Term_22_2d_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action22::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 41 => { + // expr = factor => ActionFn(23); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action23::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 42 => { + // factor = factor, "*", term => ActionFn(24); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_2a_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 43 => { + // factor = factor, "/", term => ActionFn(25); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_2f_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action25::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 44 => { + // factor = factor, "^", term => ActionFn(26); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_5e_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action26::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 45 => { + // factor = "-", term => ActionFn(27); + let __sym1 = __pop_Ntterm(__symbols); + let __sym0 = __pop_Term_22_2d_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 46 => { + // factor = term => ActionFn(28); + let __sym0 = __pop_Ntterm(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 47 => { + // float = r#"[+-]?\\d+\\.\\d*([eE][-+]?\\d+)?"# => ActionFn(7); + let __sym0 = __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntfloat(__nt), __end)); + 14 + } + 48 => { + // identifier = r#"[a-zA-Z_][a-zA-Z_0-9]*"# => ActionFn(4); + let __sym0 = __pop_Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntidentifier(__nt), __end)); + 15 + } + 49 => { + // integer = r#"[+-]?\\d+"# => ActionFn(6); + let __sym0 = __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntinteger(__nt), __end)); + 16 + } + 50 => { + // model = "model", identifier, "equation", "end", identifier, ";" => ActionFn(63); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntidentifier(__symbols); + let __sym3 = __pop_Term_22end_22(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 51 => { + // model = "model", identifier, "equation", simple_equation+, "end", identifier, ";" => ActionFn(64); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Ntsimple__equation_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 52 => { + // model = "model", identifier, "equation", connect_clause+, "end", identifier, ";" => ActionFn(65); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Ntconnect__clause_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 53 => { + // model = "model", identifier, "equation", connect_clause+, simple_equation+, "end", identifier, ";" => ActionFn(66); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntsimple__equation_2b(__symbols); + let __sym3 = __pop_Ntconnect__clause_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 54 => { + // model = "model", identifier, component_declaration+, "equation", "end", identifier, ";" => ActionFn(67); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action67::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 55 => { + // model = "model", identifier, component_declaration+, "equation", simple_equation+, "end", identifier, ";" => ActionFn(68); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntsimple__equation_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action68::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 56 => { + // model = "model", identifier, component_declaration+, "equation", connect_clause+, "end", identifier, ";" => ActionFn(69); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntconnect__clause_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 57 => { + // model = "model", identifier, component_declaration+, "equation", connect_clause+, simple_equation+, "end", identifier, ";" => ActionFn(70); + let __sym8 = __pop_Term_22_3b_22(__symbols); + let __sym7 = __pop_Ntidentifier(__symbols); + let __sym6 = __pop_Term_22end_22(__symbols); + let __sym5 = __pop_Ntsimple__equation_2b(__symbols); + let __sym4 = __pop_Ntconnect__clause_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym8.2.clone(); + let __nt = super::__action70::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __states_len = __states.len(); + __states.truncate(__states_len - 9); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 58 => { + // simple_equation = expr, "=", expr, ";" => ActionFn(19); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_3d_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntsimple__equation(__nt), __end)); + 18 + } + 59 => { + // simple_equation* = => ActionFn(43); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action43::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntsimple__equation_2a(__nt), __end)); + 19 + } + 60 => { + // simple_equation* = simple_equation+ => ActionFn(44); + let __sym0 = __pop_Ntsimple__equation_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action44::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntsimple__equation_2a(__nt), __end)); + 19 + } + 61 => { + // simple_equation+ = simple_equation => ActionFn(53); + let __sym0 = __pop_Ntsimple__equation(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action53::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntsimple__equation_2b(__nt), __end)); + 20 + } + 62 => { + // simple_equation+ = simple_equation+, simple_equation => ActionFn(54); + let __sym1 = __pop_Ntsimple__equation(__symbols); + let __sym0 = __pop_Ntsimple__equation_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action54::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntsimple__equation_2b(__nt), __end)); + 20 + } + 63 => { + // string_literal = r#"\"[^\"\\\\]*\""# => ActionFn(5); + let __sym0 = __pop_Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntstring__literal(__nt), __end)); + 21 + } + 64 => { + // string_literal? = string_literal => ActionFn(35); + let __sym0 = __pop_Ntstring__literal(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntstring__literal_3f(__nt), __end)); + 22 + } + 65 => { + // string_literal? = => ActionFn(36); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action36::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntstring__literal_3f(__nt), __end)); + 22 + } + 66 => { + // term = integer => ActionFn(29); + let __sym0 = __pop_Ntinteger(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 67 => { + // term = float => ActionFn(30); + let __sym0 = __pop_Ntfloat(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action30::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 68 => { + // term = identifier => ActionFn(31); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 69 => { + // term = "der", "(", expr, ")" => ActionFn(32); + let __sym3 = __pop_Term_22_29_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22der_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action32::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 70 => { + // term = "abs", "(", expr, ")" => ActionFn(33); + let __sym3 = __pop_Term_22_29_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22abs_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action33::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 71 => { + // term = "(", expr, ")" => ActionFn(34); + let __sym2 = __pop_Term_22_29_22(__symbols); + let __sym1 = __pop_Ntexpr(__symbols); + let __sym0 = __pop_Term_22_28_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action34::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 72 => { + // units_declaration = "(", "unit", "=", string_literal, ")" => ActionFn(10); + let __sym4 = __pop_Term_22_29_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Term_22_3d_22(__symbols); + let __sym1 = __pop_Term_22unit_22(__symbols); + let __sym0 = __pop_Term_22_28_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action10::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntunits__declaration(__nt), __end)); + 24 + } + 73 => { + // units_declaration? = units_declaration => ActionFn(39); + let __sym0 = __pop_Ntunits__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action39::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntunits__declaration_3f(__nt), __end)); + 25 + } + 74 => { + // units_declaration? = => ActionFn(40); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action40::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntunits__declaration_3f(__nt), __end)); + 25 + } + 75 => { + // value_declaration = "=", expr => ActionFn(9); + let __sym1 = __pop_Ntexpr(__symbols); + let __sym0 = __pop_Term_22_3d_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action9::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntvalue__declaration(__nt), __end)); + 26 + } + 76 => { + // value_declaration? = value_declaration => ActionFn(37); + let __sym0 = __pop_Ntvalue__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action37::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntvalue__declaration_3f(__nt), __end)); + 27 + } + 77 => { + // value_declaration? = => ActionFn(38); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action38::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntvalue__declaration_3f(__nt), __end)); + 27 + } + _ => panic!("invalid action code {}", __action) + }; + let __state = *__states.last().unwrap() as usize; + let __next_state = __GOTO[__state * 28 + __nonterminal] - 1; + __states.push(__next_state); + None + } + fn __pop_Term_22_28_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_28_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_29_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_29_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2a_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2a_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2b_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2b_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2c_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2c_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2d_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2d_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2f_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2f_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_3b_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_3b_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_3d_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_3d_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_5e_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_5e_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22abs_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22abs_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22connect_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22connect_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22constant_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22constant_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22der_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22der_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22discrete_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22discrete_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22end_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22end_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22equation_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22equation_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22flow_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22flow_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22input_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22input_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22model_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22model_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22output_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22output_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22parameter_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22parameter_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22stream_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22stream_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22unit_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22unit_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termerror< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, __lalrpop_util::ErrorRecovery, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termerror(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____float< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, f64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____float(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____identifier< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____identifier(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____integer< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____integer(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____model< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ModelicaModel, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____model(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Component, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__prefix< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ComponentPrefix, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__prefix(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__prefix_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__prefix_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Connection, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntexpr< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntexpr(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntfactor< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntfactor(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntfloat< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, f64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntfloat(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntidentifier< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntidentifier(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntinteger< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntinteger(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntmodel< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ModelicaModel, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntmodel(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, SimpleEquation, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntstring__literal< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntstring__literal(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntstring__literal_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntstring__literal_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntterm< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntterm(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntunits__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntunits__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntunits__declaration_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntunits__declaration_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntvalue__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntvalue__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntvalue__declaration_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntvalue__declaration_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } +} +pub use self::__parse__identifier::parse_identifier; + +mod __parse__integer { + #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports)] + + use std::str::FromStr; + use ast::{ModelicaModel,Component, ComponentPrefix, Connection, + SimpleEquation, Expr, BinOperator}; + extern crate lalrpop_util as __lalrpop_util; + #[allow(dead_code)] + pub enum __Symbol<'input> { + Term_22_28_22(&'input str), + Term_22_29_22(&'input str), + Term_22_2a_22(&'input str), + Term_22_2b_22(&'input str), + Term_22_2c_22(&'input str), + Term_22_2d_22(&'input str), + Term_22_2f_22(&'input str), + Term_22_3b_22(&'input str), + Term_22_3d_22(&'input str), + Term_22_5e_22(&'input str), + Term_22abs_22(&'input str), + Term_22connect_22(&'input str), + Term_22constant_22(&'input str), + Term_22der_22(&'input str), + Term_22discrete_22(&'input str), + Term_22end_22(&'input str), + Term_22equation_22(&'input str), + Term_22flow_22(&'input str), + Term_22input_22(&'input str), + Term_22model_22(&'input str), + Term_22output_22(&'input str), + Term_22parameter_22(&'input str), + Term_22stream_22(&'input str), + Term_22unit_22(&'input str), + Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(&'input str), + Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(&'input str), + Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(&'input str), + Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(&'input str), + Termerror(__lalrpop_util::ErrorRecovery), + Nt____float(f64), + Nt____identifier(String), + Nt____integer(i64), + Nt____model(ModelicaModel), + Ntcomponent__declaration(Component), + Ntcomponent__declaration_2a(::std::vec::Vec), + Ntcomponent__declaration_2b(::std::vec::Vec), + Ntcomponent__prefix(ComponentPrefix), + Ntcomponent__prefix_3f(::std::option::Option), + Ntconnect__clause(Connection), + Ntconnect__clause_2a(::std::vec::Vec), + Ntconnect__clause_2b(::std::vec::Vec), + Ntexpr(Expr), + Ntfactor(Expr), + Ntfloat(f64), + Ntidentifier(String), + Ntinteger(i64), + Ntmodel(ModelicaModel), + Ntsimple__equation(SimpleEquation), + Ntsimple__equation_2a(::std::vec::Vec), + Ntsimple__equation_2b(::std::vec::Vec), + Ntstring__literal(String), + Ntstring__literal_3f(::std::option::Option), + Ntterm(Expr), + Ntunits__declaration(String), + Ntunits__declaration_3f(::std::option::Option), + Ntvalue__declaration(Expr), + Ntvalue__declaration_3f(::std::option::Option), + } + const __ACTION: &'static [i32] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, + // State 1 + 0, 0, 0, 0, 0, 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 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + const __EOF_ACTION: &'static [i32] = &[ + 0, + -3, + -49, + ]; + const __GOTO: &'static [i32] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1 + 0, 0, 0, 0, 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 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + pub fn parse_integer< + 'input, + >( + input: &'input str, + ) -> Result> + { + let mut __tokens = super::__intern_token::__Matcher::new(input); + let mut __states = vec![0_i32]; + let mut __symbols = vec![]; + let mut __integer; + let mut __lookahead; + let mut __last_location = Default::default(); + '__shift: loop { + __lookahead = match __tokens.next() { + Some(Ok(v)) => v, + None => break '__shift, + Some(Err(e)) => return Err(e), + }; + __last_location = __lookahead.2.clone(); + __integer = match __lookahead.1 { + (0, _) if true => 0, + (1, _) if true => 1, + (2, _) if true => 2, + (3, _) if true => 3, + (4, _) if true => 4, + (5, _) if true => 5, + (6, _) if true => 6, + (7, _) if true => 7, + (8, _) if true => 8, + (9, _) if true => 9, + (10, _) if true => 10, + (11, _) if true => 11, + (12, _) if true => 12, + (13, _) if true => 13, + (14, _) if true => 14, + (15, _) if true => 15, + (16, _) if true => 16, + (17, _) if true => 17, + (18, _) if true => 18, + (19, _) if true => 19, + (20, _) if true => 20, + (21, _) if true => 21, + (22, _) if true => 22, + (23, _) if true => 23, + (24, _) if true => 24, + (25, _) if true => 25, + (26, _) if true => 26, + (27, _) if true => 27, + _ => { + return Err(__lalrpop_util::ParseError::UnrecognizedToken { + token: Some(__lookahead), + expected: vec![], + }); + } + }; + '__inner: loop { + let __state = *__states.last().unwrap() as usize; + let __action = __ACTION[__state * 29 + __integer]; + if __action > 0 { + let __symbol = match __integer { + 0 => match __lookahead.1 { + (0, __tok0) => __Symbol::Term_22_28_22(__tok0), + _ => unreachable!(), + }, + 1 => match __lookahead.1 { + (1, __tok0) => __Symbol::Term_22_29_22(__tok0), + _ => unreachable!(), + }, + 2 => match __lookahead.1 { + (2, __tok0) => __Symbol::Term_22_2a_22(__tok0), + _ => unreachable!(), + }, + 3 => match __lookahead.1 { + (3, __tok0) => __Symbol::Term_22_2b_22(__tok0), + _ => unreachable!(), + }, + 4 => match __lookahead.1 { + (4, __tok0) => __Symbol::Term_22_2c_22(__tok0), + _ => unreachable!(), + }, + 5 => match __lookahead.1 { + (5, __tok0) => __Symbol::Term_22_2d_22(__tok0), + _ => unreachable!(), + }, + 6 => match __lookahead.1 { + (6, __tok0) => __Symbol::Term_22_2f_22(__tok0), + _ => unreachable!(), + }, + 7 => match __lookahead.1 { + (7, __tok0) => __Symbol::Term_22_3b_22(__tok0), + _ => unreachable!(), + }, + 8 => match __lookahead.1 { + (8, __tok0) => __Symbol::Term_22_3d_22(__tok0), + _ => unreachable!(), + }, + 9 => match __lookahead.1 { + (9, __tok0) => __Symbol::Term_22_5e_22(__tok0), + _ => unreachable!(), + }, + 10 => match __lookahead.1 { + (10, __tok0) => __Symbol::Term_22abs_22(__tok0), + _ => unreachable!(), + }, + 11 => match __lookahead.1 { + (11, __tok0) => __Symbol::Term_22connect_22(__tok0), + _ => unreachable!(), + }, + 12 => match __lookahead.1 { + (12, __tok0) => __Symbol::Term_22constant_22(__tok0), + _ => unreachable!(), + }, + 13 => match __lookahead.1 { + (13, __tok0) => __Symbol::Term_22der_22(__tok0), + _ => unreachable!(), + }, + 14 => match __lookahead.1 { + (14, __tok0) => __Symbol::Term_22discrete_22(__tok0), + _ => unreachable!(), + }, + 15 => match __lookahead.1 { + (15, __tok0) => __Symbol::Term_22end_22(__tok0), + _ => unreachable!(), + }, + 16 => match __lookahead.1 { + (16, __tok0) => __Symbol::Term_22equation_22(__tok0), + _ => unreachable!(), + }, + 17 => match __lookahead.1 { + (17, __tok0) => __Symbol::Term_22flow_22(__tok0), + _ => unreachable!(), + }, + 18 => match __lookahead.1 { + (18, __tok0) => __Symbol::Term_22input_22(__tok0), + _ => unreachable!(), + }, + 19 => match __lookahead.1 { + (19, __tok0) => __Symbol::Term_22model_22(__tok0), + _ => unreachable!(), + }, + 20 => match __lookahead.1 { + (20, __tok0) => __Symbol::Term_22output_22(__tok0), + _ => unreachable!(), + }, + 21 => match __lookahead.1 { + (21, __tok0) => __Symbol::Term_22parameter_22(__tok0), + _ => unreachable!(), + }, + 22 => match __lookahead.1 { + (22, __tok0) => __Symbol::Term_22stream_22(__tok0), + _ => unreachable!(), + }, + 23 => match __lookahead.1 { + (23, __tok0) => __Symbol::Term_22unit_22(__tok0), + _ => unreachable!(), + }, + 24 => match __lookahead.1 { + (24, __tok0) => __Symbol::Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__tok0), + _ => unreachable!(), + }, + 25 => match __lookahead.1 { + (25, __tok0) => __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__tok0), + _ => unreachable!(), + }, + 26 => match __lookahead.1 { + (26, __tok0) => __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__tok0), + _ => unreachable!(), + }, + 27 => match __lookahead.1 { + (27, __tok0) => __Symbol::Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + }; + __states.push(__action - 1); + __symbols.push((__lookahead.0, __symbol, __lookahead.2)); + continue '__shift; + } else if __action < 0 { + if let Some(r) = __reduce(input, __action, Some(&__lookahead.0), &mut __states, &mut __symbols, ::std::marker::PhantomData::<()>) { + return r; + } + } else { + return Err(__lalrpop_util::ParseError::UnrecognizedToken { + token: Some(__lookahead), + expected: vec![], + }); + } + } + } + loop { + let __state = *__states.last().unwrap() as usize; + let __action = __EOF_ACTION[__state]; + if __action < 0 { + if let Some(r) = __reduce(input, __action, None, &mut __states, &mut __symbols, ::std::marker::PhantomData::<()>) { + return r; + } + } else { + let __error = __lalrpop_util::ParseError::UnrecognizedToken { + token: None, + expected: vec![], + }; + return Err(__error); + } + } + } + pub fn __reduce< + 'input, + >( + input: &'input str, + __action: i32, + __lookahead_start: Option<&usize>, + __states: &mut ::std::vec::Vec, + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: ::std::marker::PhantomData<()>, + ) -> Option>> + { + let __nonterminal = match -__action { + 1 => { + // __float = float => ActionFn(2); + let __sym0 = __pop_Ntfloat(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____float(__nt), __end)); + 0 + } + 2 => { + // __identifier = identifier => ActionFn(0); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____identifier(__nt), __end)); + 1 + } + 3 => { + // __integer = integer => ActionFn(1); + let __sym0 = __pop_Ntinteger(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + return Some(Ok(__nt)); + } + 4 => { + // __model = model => ActionFn(3); + let __sym0 = __pop_Ntmodel(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action3::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____model(__nt), __end)); + 3 + } + 5 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, value_declaration, string_literal, ";" => ActionFn(83); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntstring__literal(__symbols); + let __sym4 = __pop_Ntvalue__declaration(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action83::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 6 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, string_literal, ";" => ActionFn(84); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 7 => { + // component_declaration = component_prefix, identifier, identifier, value_declaration, string_literal, ";" => ActionFn(85); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 8 => { + // component_declaration = component_prefix, identifier, identifier, string_literal, ";" => ActionFn(86); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 9 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, value_declaration, ";" => ActionFn(87); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntvalue__declaration(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 10 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, ";" => ActionFn(88); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 11 => { + // component_declaration = component_prefix, identifier, identifier, value_declaration, ";" => ActionFn(89); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 12 => { + // component_declaration = component_prefix, identifier, identifier, ";" => ActionFn(90); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 13 => { + // component_declaration = identifier, identifier, units_declaration, value_declaration, string_literal, ";" => ActionFn(91); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 14 => { + // component_declaration = identifier, identifier, units_declaration, string_literal, ";" => ActionFn(92); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action92::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 15 => { + // component_declaration = identifier, identifier, value_declaration, string_literal, ";" => ActionFn(93); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntvalue__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action93::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 16 => { + // component_declaration = identifier, identifier, string_literal, ";" => ActionFn(94); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntstring__literal(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 17 => { + // component_declaration = identifier, identifier, units_declaration, value_declaration, ";" => ActionFn(95); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 18 => { + // component_declaration = identifier, identifier, units_declaration, ";" => ActionFn(96); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action96::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 19 => { + // component_declaration = identifier, identifier, value_declaration, ";" => ActionFn(97); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntvalue__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action97::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 20 => { + // component_declaration = identifier, identifier, ";" => ActionFn(98); + let __sym2 = __pop_Term_22_3b_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 21 => { + // component_declaration* = => ActionFn(47); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action47::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2a(__nt), __end)); + 5 + } + 22 => { + // component_declaration* = component_declaration+ => ActionFn(48); + let __sym0 = __pop_Ntcomponent__declaration_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action48::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2a(__nt), __end)); + 5 + } + 23 => { + // component_declaration+ = component_declaration => ActionFn(49); + let __sym0 = __pop_Ntcomponent__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action49::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2b(__nt), __end)); + 6 + } + 24 => { + // component_declaration+ = component_declaration+, component_declaration => ActionFn(50); + let __sym1 = __pop_Ntcomponent__declaration(__symbols); + let __sym0 = __pop_Ntcomponent__declaration_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action50::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2b(__nt), __end)); + 6 + } + 25 => { + // component_prefix = "flow" => ActionFn(12); + let __sym0 = __pop_Term_22flow_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 26 => { + // component_prefix = "stream" => ActionFn(13); + let __sym0 = __pop_Term_22stream_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action13::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 27 => { + // component_prefix = "input" => ActionFn(14); + let __sym0 = __pop_Term_22input_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 28 => { + // component_prefix = "output" => ActionFn(15); + let __sym0 = __pop_Term_22output_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 29 => { + // component_prefix = "discrete" => ActionFn(16); + let __sym0 = __pop_Term_22discrete_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action16::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 30 => { + // component_prefix = "parameter" => ActionFn(17); + let __sym0 = __pop_Term_22parameter_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 31 => { + // component_prefix = "constant" => ActionFn(18); + let __sym0 = __pop_Term_22constant_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 32 => { + // component_prefix? = component_prefix => ActionFn(41); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action41::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix_3f(__nt), __end)); + 8 + } + 33 => { + // component_prefix? = => ActionFn(42); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action42::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntcomponent__prefix_3f(__nt), __end)); + 8 + } + 34 => { + // connect_clause = "connect", "(", identifier, ",", identifier, ")", ";" => ActionFn(20); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Term_22_29_22(__symbols); + let __sym4 = __pop_Ntidentifier(__symbols); + let __sym3 = __pop_Term_22_2c_22(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22connect_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action20::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntconnect__clause(__nt), __end)); + 9 + } + 35 => { + // connect_clause* = => ActionFn(45); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action45::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntconnect__clause_2a(__nt), __end)); + 10 + } + 36 => { + // connect_clause* = connect_clause+ => ActionFn(46); + let __sym0 = __pop_Ntconnect__clause_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action46::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntconnect__clause_2a(__nt), __end)); + 10 + } + 37 => { + // connect_clause+ = connect_clause => ActionFn(51); + let __sym0 = __pop_Ntconnect__clause(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action51::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntconnect__clause_2b(__nt), __end)); + 11 + } + 38 => { + // connect_clause+ = connect_clause+, connect_clause => ActionFn(52); + let __sym1 = __pop_Ntconnect__clause(__symbols); + let __sym0 = __pop_Ntconnect__clause_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action52::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntconnect__clause_2b(__nt), __end)); + 11 + } + 39 => { + // expr = expr, "+", factor => ActionFn(21); + let __sym2 = __pop_Ntfactor(__symbols); + let __sym1 = __pop_Term_22_2b_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action21::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 40 => { + // expr = expr, "-", factor => ActionFn(22); + let __sym2 = __pop_Ntfactor(__symbols); + let __sym1 = __pop_Term_22_2d_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action22::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 41 => { + // expr = factor => ActionFn(23); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action23::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 42 => { + // factor = factor, "*", term => ActionFn(24); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_2a_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 43 => { + // factor = factor, "/", term => ActionFn(25); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_2f_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action25::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 44 => { + // factor = factor, "^", term => ActionFn(26); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_5e_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action26::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 45 => { + // factor = "-", term => ActionFn(27); + let __sym1 = __pop_Ntterm(__symbols); + let __sym0 = __pop_Term_22_2d_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 46 => { + // factor = term => ActionFn(28); + let __sym0 = __pop_Ntterm(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 47 => { + // float = r#"[+-]?\\d+\\.\\d*([eE][-+]?\\d+)?"# => ActionFn(7); + let __sym0 = __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntfloat(__nt), __end)); + 14 + } + 48 => { + // identifier = r#"[a-zA-Z_][a-zA-Z_0-9]*"# => ActionFn(4); + let __sym0 = __pop_Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntidentifier(__nt), __end)); + 15 + } + 49 => { + // integer = r#"[+-]?\\d+"# => ActionFn(6); + let __sym0 = __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntinteger(__nt), __end)); + 16 + } + 50 => { + // model = "model", identifier, "equation", "end", identifier, ";" => ActionFn(63); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntidentifier(__symbols); + let __sym3 = __pop_Term_22end_22(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 51 => { + // model = "model", identifier, "equation", simple_equation+, "end", identifier, ";" => ActionFn(64); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Ntsimple__equation_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 52 => { + // model = "model", identifier, "equation", connect_clause+, "end", identifier, ";" => ActionFn(65); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Ntconnect__clause_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 53 => { + // model = "model", identifier, "equation", connect_clause+, simple_equation+, "end", identifier, ";" => ActionFn(66); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntsimple__equation_2b(__symbols); + let __sym3 = __pop_Ntconnect__clause_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 54 => { + // model = "model", identifier, component_declaration+, "equation", "end", identifier, ";" => ActionFn(67); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action67::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 55 => { + // model = "model", identifier, component_declaration+, "equation", simple_equation+, "end", identifier, ";" => ActionFn(68); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntsimple__equation_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action68::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 56 => { + // model = "model", identifier, component_declaration+, "equation", connect_clause+, "end", identifier, ";" => ActionFn(69); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntconnect__clause_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 57 => { + // model = "model", identifier, component_declaration+, "equation", connect_clause+, simple_equation+, "end", identifier, ";" => ActionFn(70); + let __sym8 = __pop_Term_22_3b_22(__symbols); + let __sym7 = __pop_Ntidentifier(__symbols); + let __sym6 = __pop_Term_22end_22(__symbols); + let __sym5 = __pop_Ntsimple__equation_2b(__symbols); + let __sym4 = __pop_Ntconnect__clause_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym8.2.clone(); + let __nt = super::__action70::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __states_len = __states.len(); + __states.truncate(__states_len - 9); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 58 => { + // simple_equation = expr, "=", expr, ";" => ActionFn(19); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_3d_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntsimple__equation(__nt), __end)); + 18 + } + 59 => { + // simple_equation* = => ActionFn(43); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action43::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntsimple__equation_2a(__nt), __end)); + 19 + } + 60 => { + // simple_equation* = simple_equation+ => ActionFn(44); + let __sym0 = __pop_Ntsimple__equation_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action44::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntsimple__equation_2a(__nt), __end)); + 19 + } + 61 => { + // simple_equation+ = simple_equation => ActionFn(53); + let __sym0 = __pop_Ntsimple__equation(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action53::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntsimple__equation_2b(__nt), __end)); + 20 + } + 62 => { + // simple_equation+ = simple_equation+, simple_equation => ActionFn(54); + let __sym1 = __pop_Ntsimple__equation(__symbols); + let __sym0 = __pop_Ntsimple__equation_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action54::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntsimple__equation_2b(__nt), __end)); + 20 + } + 63 => { + // string_literal = r#"\"[^\"\\\\]*\""# => ActionFn(5); + let __sym0 = __pop_Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntstring__literal(__nt), __end)); + 21 + } + 64 => { + // string_literal? = string_literal => ActionFn(35); + let __sym0 = __pop_Ntstring__literal(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntstring__literal_3f(__nt), __end)); + 22 + } + 65 => { + // string_literal? = => ActionFn(36); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action36::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntstring__literal_3f(__nt), __end)); + 22 + } + 66 => { + // term = integer => ActionFn(29); + let __sym0 = __pop_Ntinteger(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 67 => { + // term = float => ActionFn(30); + let __sym0 = __pop_Ntfloat(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action30::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 68 => { + // term = identifier => ActionFn(31); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 69 => { + // term = "der", "(", expr, ")" => ActionFn(32); + let __sym3 = __pop_Term_22_29_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22der_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action32::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 70 => { + // term = "abs", "(", expr, ")" => ActionFn(33); + let __sym3 = __pop_Term_22_29_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22abs_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action33::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 71 => { + // term = "(", expr, ")" => ActionFn(34); + let __sym2 = __pop_Term_22_29_22(__symbols); + let __sym1 = __pop_Ntexpr(__symbols); + let __sym0 = __pop_Term_22_28_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action34::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 72 => { + // units_declaration = "(", "unit", "=", string_literal, ")" => ActionFn(10); + let __sym4 = __pop_Term_22_29_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Term_22_3d_22(__symbols); + let __sym1 = __pop_Term_22unit_22(__symbols); + let __sym0 = __pop_Term_22_28_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action10::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntunits__declaration(__nt), __end)); + 24 + } + 73 => { + // units_declaration? = units_declaration => ActionFn(39); + let __sym0 = __pop_Ntunits__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action39::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntunits__declaration_3f(__nt), __end)); + 25 + } + 74 => { + // units_declaration? = => ActionFn(40); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action40::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntunits__declaration_3f(__nt), __end)); + 25 + } + 75 => { + // value_declaration = "=", expr => ActionFn(9); + let __sym1 = __pop_Ntexpr(__symbols); + let __sym0 = __pop_Term_22_3d_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action9::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntvalue__declaration(__nt), __end)); + 26 + } + 76 => { + // value_declaration? = value_declaration => ActionFn(37); + let __sym0 = __pop_Ntvalue__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action37::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntvalue__declaration_3f(__nt), __end)); + 27 + } + 77 => { + // value_declaration? = => ActionFn(38); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action38::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntvalue__declaration_3f(__nt), __end)); + 27 + } + _ => panic!("invalid action code {}", __action) + }; + let __state = *__states.last().unwrap() as usize; + let __next_state = __GOTO[__state * 28 + __nonterminal] - 1; + __states.push(__next_state); + None + } + fn __pop_Term_22_28_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_28_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_29_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_29_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2a_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2a_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2b_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2b_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2c_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2c_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2d_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2d_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2f_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2f_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_3b_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_3b_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_3d_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_3d_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_5e_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_5e_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22abs_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22abs_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22connect_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22connect_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22constant_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22constant_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22der_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22der_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22discrete_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22discrete_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22end_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22end_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22equation_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22equation_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22flow_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22flow_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22input_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22input_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22model_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22model_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22output_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22output_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22parameter_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22parameter_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22stream_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22stream_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22unit_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22unit_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termerror< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, __lalrpop_util::ErrorRecovery, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termerror(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____float< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, f64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____float(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____identifier< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____identifier(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____integer< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____integer(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____model< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ModelicaModel, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____model(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Component, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__prefix< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ComponentPrefix, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__prefix(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__prefix_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__prefix_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Connection, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntexpr< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntexpr(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntfactor< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntfactor(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntfloat< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, f64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntfloat(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntidentifier< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntidentifier(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntinteger< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntinteger(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntmodel< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ModelicaModel, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntmodel(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, SimpleEquation, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntstring__literal< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntstring__literal(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntstring__literal_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntstring__literal_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntterm< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntterm(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntunits__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntunits__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntunits__declaration_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntunits__declaration_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntvalue__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntvalue__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntvalue__declaration_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntvalue__declaration_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } +} +pub use self::__parse__integer::parse_integer; + +mod __parse__model { + #![allow(non_snake_case, non_camel_case_types, unused_mut, unused_variables, unused_imports)] + + use std::str::FromStr; + use ast::{ModelicaModel,Component, ComponentPrefix, Connection, + SimpleEquation, Expr, BinOperator}; + extern crate lalrpop_util as __lalrpop_util; + #[allow(dead_code)] + pub enum __Symbol<'input> { + Term_22_28_22(&'input str), + Term_22_29_22(&'input str), + Term_22_2a_22(&'input str), + Term_22_2b_22(&'input str), + Term_22_2c_22(&'input str), + Term_22_2d_22(&'input str), + Term_22_2f_22(&'input str), + Term_22_3b_22(&'input str), + Term_22_3d_22(&'input str), + Term_22_5e_22(&'input str), + Term_22abs_22(&'input str), + Term_22connect_22(&'input str), + Term_22constant_22(&'input str), + Term_22der_22(&'input str), + Term_22discrete_22(&'input str), + Term_22end_22(&'input str), + Term_22equation_22(&'input str), + Term_22flow_22(&'input str), + Term_22input_22(&'input str), + Term_22model_22(&'input str), + Term_22output_22(&'input str), + Term_22parameter_22(&'input str), + Term_22stream_22(&'input str), + Term_22unit_22(&'input str), + Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(&'input str), + Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(&'input str), + Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(&'input str), + Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(&'input str), + Termerror(__lalrpop_util::ErrorRecovery), + Nt____float(f64), + Nt____identifier(String), + Nt____integer(i64), + Nt____model(ModelicaModel), + Ntcomponent__declaration(Component), + Ntcomponent__declaration_2a(::std::vec::Vec), + Ntcomponent__declaration_2b(::std::vec::Vec), + Ntcomponent__prefix(ComponentPrefix), + Ntcomponent__prefix_3f(::std::option::Option), + Ntconnect__clause(Connection), + Ntconnect__clause_2a(::std::vec::Vec), + Ntconnect__clause_2b(::std::vec::Vec), + Ntexpr(Expr), + Ntfactor(Expr), + Ntfloat(f64), + Ntidentifier(String), + Ntinteger(i64), + Ntmodel(ModelicaModel), + Ntsimple__equation(SimpleEquation), + Ntsimple__equation_2a(::std::vec::Vec), + Ntsimple__equation_2b(::std::vec::Vec), + Ntstring__literal(String), + Ntstring__literal_3f(::std::option::Option), + Ntterm(Expr), + Ntunits__declaration(String), + Ntunits__declaration_3f(::std::option::Option), + Ntvalue__declaration(Expr), + Ntvalue__declaration_3f(::std::option::Option), + } + const __ACTION: &'static [i32] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1 + 0, 0, 0, 0, 0, 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 2 + 0, 0, 0, 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, 0, + // State 3 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 0, 12, 13, 14, 0, 15, 16, 17, 0, 0, 0, 0, 18, 0, + // State 4 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, -48, 0, -48, -48, -48, 0, -48, -48, -48, 0, 0, 0, 0, -48, 0, + // State 5 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, -23, 0, -23, -23, -23, 0, -23, -23, -23, 0, 0, 0, 0, -23, 0, + // State 6 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 11, 0, 20, 13, 14, 0, 15, 16, 17, 0, 0, 0, 0, 18, 0, + // State 7 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 18, 0, + // State 8 + 0, 0, 0, 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, 0, + // 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, -31, 0, + // State 10 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -29, 0, + // State 11 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 37, 0, 38, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 12 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, + // State 13 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -27, 0, + // State 14 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -28, 0, + // 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, -30, 0, + // 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, -26, 0, + // State 17 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, + // State 18 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -24, 0, -24, 0, -24, -24, -24, 0, -24, -24, -24, 0, 0, 0, 0, -24, 0, + // State 19 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 37, 0, 38, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 20 + 0, 0, 0, 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, 0, + // State 21 + 50, 0, 0, 0, 0, 0, 0, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + // State 22 + -48, 0, 0, 0, 0, 0, 0, -48, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, + // State 23 + -37, 0, 0, 0, 0, -37, 0, 0, 0, 0, -37, -37, 0, -37, 0, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, -37, -37, 0, + // State 24 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 37, 0, 38, 0, 56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 25 + 0, 0, 0, 57, 0, 58, 0, 0, 59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 26 + 0, 0, 60, -41, 0, -41, 61, 0, -41, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 27 + 0, 0, -67, -67, 0, -67, -67, 0, -67, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 28 + 0, 0, -68, -68, 0, -68, -68, 0, -68, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 29 + 0, 0, -66, -66, 0, -66, -66, 0, -66, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 30 + -61, 0, 0, 0, 0, -61, 0, 0, 0, 0, -61, 0, 0, -61, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, -61, -61, 0, + // State 31 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 0, 38, 0, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 32 + 0, 0, -46, -46, 0, -46, -46, 0, -46, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 33 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 34 + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 35 + 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, + // State 36 + 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, + // State 37 + 81, 0, 0, 0, 0, 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 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, 0, 0, 0, 83, 0, + // State 39 + 0, 0, -49, -49, 0, -49, -49, 0, -49, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 40 + 0, 0, -47, -47, 0, -47, -47, 0, -47, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 41 + 0, 0, -48, -48, 0, -48, -48, 0, -48, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 42 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 37, 0, 38, 0, 85, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 43 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 0, 38, 0, 86, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 44 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + // State 45 + 50, 0, 0, 0, 0, 0, 0, 91, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + // State 46 + 0, 0, 0, 0, 0, 0, 0, 92, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 47 + 0, 0, 0, 0, 0, 0, 0, 95, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + // State 48 + 0, 0, 0, 0, 0, 0, 0, 97, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + // State 49 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 98, 0, 0, 0, 0, 0, + // State 50 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -20, 0, -20, 0, -20, -20, -20, 0, -20, -20, -20, 0, 0, 0, 0, -20, 0, + // State 51 + 105, 0, 0, 0, 0, 106, 0, 0, 0, 0, 107, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, 0, + // State 52 + 0, 0, 0, 0, 0, 0, 0, -63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 53 + -38, 0, 0, 0, 0, -38, 0, 0, 0, 0, -38, -38, 0, -38, 0, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, -38, -38, 0, + // State 54 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 0, 38, 0, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 55 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + // State 56 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 57 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 58 + 122, 0, 0, 0, 0, 123, 0, 0, 0, 0, 124, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 0, + // State 59 + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 60 + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 61 + 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 62 + -62, 0, 0, 0, 0, -62, 0, 0, 0, 0, -62, 0, 0, -62, 0, -62, 0, 0, 0, 0, 0, 0, 0, 0, 0, -62, -62, -62, 0, + // State 63 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + // State 64 + 0, 133, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 65 + 0, -41, 136, -41, 0, -41, 137, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 66 + 0, -67, -67, -67, 0, -67, -67, 0, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 67 + 0, -68, -68, -68, 0, -68, -68, 0, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 68 + 0, -66, -66, -66, 0, -66, -66, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 69 + 0, -46, -46, -46, 0, -46, -46, 0, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 70 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 71 + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 72 + 141, 0, 0, 0, 0, 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 73 + 142, 0, 0, 0, 0, 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 74 + 0, -49, -49, -49, 0, -49, -49, 0, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 75 + 0, -47, -47, -47, 0, -47, -47, 0, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 76 + 0, -48, -48, -48, 0, -48, -48, 0, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 77 + 0, 0, -45, -45, 0, -45, -45, 0, -45, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 78 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 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, 0, 0, 0, 0, 0, 145, 0, + // State 80 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 81 + 0, 0, 0, 0, 0, 0, 0, 147, 0, 0, 0, 0, 0, 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, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 83 + 34, 0, 0, 0, 0, 35, 0, 0, 0, 0, 36, 0, 0, 38, 0, 148, 0, 0, 0, 0, 0, 0, 0, 0, 0, 40, 41, 42, 0, + // State 84 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + // State 85 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + // State 86 + 0, 0, 0, 0, 0, 0, 0, 151, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 87 + 0, 0, 0, 0, 0, 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 88 + 0, 0, 0, 0, 0, 0, 0, 155, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + // State 89 + 0, 0, 0, 0, 0, 0, 0, 157, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + // State 90 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -12, 0, -12, 0, -12, -12, -12, 0, -12, -12, -12, 0, 0, 0, 0, -12, 0, + // State 91 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, -16, 0, -16, -16, -16, 0, -16, -16, -16, 0, 0, 0, 0, -16, 0, + // State 92 + 0, 0, 0, 0, 0, 0, 0, 158, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 93 + 0, 0, 0, 0, 0, 0, 0, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + // State 94 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -18, 0, -18, 0, -18, -18, -18, 0, -18, -18, -18, 0, 0, 0, 0, -18, 0, + // State 95 + 0, 0, 0, 0, 0, 0, 0, 161, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 96 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -19, 0, -19, 0, -19, -19, -19, 0, -19, -19, -19, 0, 0, 0, 0, -19, 0, + // State 97 + 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 98 + 0, 0, 0, 163, 0, 164, 0, -75, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -75, 0, 0, 0, 0, + // State 99 + 0, 0, 165, -41, 0, -41, 166, -41, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, + // State 100 + 0, 0, -67, -67, 0, -67, -67, -67, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -67, 0, 0, 0, 0, + // State 101 + 0, 0, -68, -68, 0, -68, -68, -68, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -68, 0, 0, 0, 0, + // State 102 + 0, 0, -66, -66, 0, -66, -66, -66, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, + // State 103 + 0, 0, -46, -46, 0, -46, -46, -46, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -46, 0, 0, 0, 0, + // State 104 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 105 + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, 0, + // State 106 + 170, 0, 0, 0, 0, 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 107 + 171, 0, 0, 0, 0, 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 108 + 0, 0, -49, -49, 0, -49, -49, -49, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -49, 0, 0, 0, 0, + // State 109 + 0, 0, -47, -47, 0, -47, -47, -47, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -47, 0, 0, 0, 0, + // State 110 + 0, 0, -48, -48, 0, -48, -48, -48, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -48, 0, 0, 0, 0, + // State 111 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + // State 112 + 0, 0, 0, 0, 0, 0, 0, 173, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 113 + 0, 0, 60, -39, 0, -39, 61, 0, -39, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 114 + 0, 0, 60, -40, 0, -40, 61, 0, -40, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 115 + 0, 0, 0, 174, 0, 175, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 116 + 0, 0, 177, -41, 0, -41, 178, -41, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 117 + 0, 0, -67, -67, 0, -67, -67, -67, 0, -67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 118 + 0, 0, -68, -68, 0, -68, -68, -68, 0, -68, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 119 + 0, 0, -66, -66, 0, -66, -66, -66, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 120 + 0, 0, -46, -46, 0, -46, -46, -46, 0, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 121 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 122 + 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 0, + // State 123 + 182, 0, 0, 0, 0, 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 124 + 183, 0, 0, 0, 0, 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 125 + 0, 0, -49, -49, 0, -49, -49, -49, 0, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 126 + 0, 0, -47, -47, 0, -47, -47, -47, 0, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 127 + 0, 0, -48, -48, 0, -48, -48, -48, 0, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 128 + 0, 0, -42, -42, 0, -42, -42, 0, -42, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 129 + 0, 0, -43, -43, 0, -43, -43, 0, -43, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 130 + 0, 0, -44, -44, 0, -44, -44, 0, -44, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 131 + 0, 0, 0, 0, 0, 0, 0, 184, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 132 + 0, 0, -71, -71, 0, -71, -71, 0, -71, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 133 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 134 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 135 + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 136 + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 137 + 71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 138 + 0, 190, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 139 + 0, -45, -45, -45, 0, -45, -45, 0, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 140 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 141 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 142 + 0, 193, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 143 + 0, 0, 0, 0, 194, 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 144 + 0, 0, 0, 0, -48, 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 145 + 0, 195, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 146 + 0, 0, 0, 0, 0, 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 147 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 0, + // State 148 + 0, 0, 0, 0, 0, 0, 0, 197, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 149 + 0, 0, 0, 0, 0, 0, 0, 198, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 150 + 0, 0, 0, 0, 0, 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 151 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, -8, 0, -8, -8, -8, 0, -8, -8, -8, 0, 0, 0, 0, -8, 0, + // State 152 + 0, 0, 0, 0, 0, 0, 0, 199, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 153 + 0, 0, 0, 0, 0, 0, 0, 201, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 53, 0, 0, 0, 0, + // State 154 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, 0, -10, 0, -10, -10, -10, 0, -10, -10, -10, 0, 0, 0, 0, -10, 0, + // State 155 + 0, 0, 0, 0, 0, 0, 0, 202, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 156 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, 0, -11, 0, -11, -11, -11, 0, -11, -11, -11, 0, 0, 0, 0, -11, 0, + // State 157 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -14, 0, -14, 0, -14, -14, -14, 0, -14, -14, -14, 0, 0, 0, 0, -14, 0, + // State 158 + 0, 0, 0, 0, 0, 0, 0, 203, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 159 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -17, 0, -17, 0, -17, -17, -17, 0, -17, -17, -17, 0, 0, 0, 0, -17, 0, + // State 160 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, -15, 0, -15, -15, -15, 0, -15, -15, -15, 0, 0, 0, 0, -15, 0, + // State 161 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 205, 0, 0, 0, 0, + // State 162 + 105, 0, 0, 0, 0, 106, 0, 0, 0, 0, 107, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, 0, + // State 163 + 105, 0, 0, 0, 0, 106, 0, 0, 0, 0, 107, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, 0, + // State 164 + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, 0, + // State 165 + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, 0, + // State 166 + 105, 0, 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 108, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 110, 111, 0, + // State 167 + 0, 211, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 168 + 0, 0, -45, -45, 0, -45, -45, -45, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -45, 0, 0, 0, 0, + // State 169 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 170 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 171 + 0, 0, 0, 0, 0, 0, 0, 214, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 172 + 0, 0, 0, 0, 0, 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 173 + 122, 0, 0, 0, 0, 123, 0, 0, 0, 0, 124, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 0, + // State 174 + 122, 0, 0, 0, 0, 123, 0, 0, 0, 0, 124, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 0, + // State 175 + -58, 0, 0, 0, 0, -58, 0, 0, 0, 0, -58, 0, 0, -58, 0, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, -58, -58, 0, + // State 176 + 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 0, + // State 177 + 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 0, + // State 178 + 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 124, 0, 0, 125, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 126, 127, 128, 0, + // State 179 + 0, 220, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 180 + 0, 0, -45, -45, 0, -45, -45, -45, 0, -45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 181 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 182 + 71, 0, 0, 0, 0, 72, 0, 0, 0, 0, 73, 0, 0, 74, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 75, 76, 77, 0, + // State 183 + 0, 0, 0, 0, 0, 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 184 + 0, -39, 136, -39, 0, -39, 137, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 185 + 0, -40, 136, -40, 0, -40, 137, 0, 0, 138, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 186 + 0, -42, -42, -42, 0, -42, -42, 0, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 187 + 0, -43, -43, -43, 0, -43, -43, 0, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 188 + 0, -44, -44, -44, 0, -44, -44, 0, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 189 + 0, -71, -71, -71, 0, -71, -71, 0, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 190 + 0, 223, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 191 + 0, 224, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 192 + 0, 0, -70, -70, 0, -70, -70, 0, -70, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 193 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 226, 0, + // State 194 + 0, 0, -69, -69, 0, -69, -69, 0, -69, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 195 + 0, 0, 0, 0, 0, 0, 0, 227, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 196 + 0, 0, 0, 0, 0, 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 197 + 0, 0, 0, 0, 0, 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 198 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, -6, 0, -6, -6, -6, 0, -6, -6, -6, 0, 0, 0, 0, -6, 0, + // State 199 + 0, 0, 0, 0, 0, 0, 0, 228, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 200 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -9, 0, -9, 0, -9, -9, -9, 0, -9, -9, -9, 0, 0, 0, 0, -9, 0, + // State 201 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -7, 0, -7, 0, -7, -7, -7, 0, -7, -7, -7, 0, 0, 0, 0, -7, 0, + // State 202 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -13, 0, -13, 0, -13, -13, -13, 0, -13, -13, -13, 0, 0, 0, 0, -13, 0, + // State 203 + 0, 229, 0, 0, 0, 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 204 + 0, -63, 0, 0, 0, 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 205 + 0, 0, 165, -39, 0, -39, 166, -39, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, + // State 206 + 0, 0, 165, -40, 0, -40, 166, -40, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -40, 0, 0, 0, 0, + // State 207 + 0, 0, -42, -42, 0, -42, -42, -42, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, + // State 208 + 0, 0, -43, -43, 0, -43, -43, -43, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -43, 0, 0, 0, 0, + // State 209 + 0, 0, -44, -44, 0, -44, -44, -44, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -44, 0, 0, 0, 0, + // State 210 + 0, 0, -71, -71, 0, -71, -71, -71, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -71, 0, 0, 0, 0, + // State 211 + 0, 230, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 212 + 0, 231, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 213 + 0, 0, 0, 0, 0, 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 214 + 0, 0, 177, -39, 0, -39, 178, -39, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 215 + 0, 0, 177, -40, 0, -40, 178, -40, 0, 179, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 216 + 0, 0, -42, -42, 0, -42, -42, -42, 0, -42, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 217 + 0, 0, -43, -43, 0, -43, -43, -43, 0, -43, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 218 + 0, 0, -44, -44, 0, -44, -44, -44, 0, -44, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 219 + 0, 0, -71, -71, 0, -71, -71, -71, 0, -71, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 220 + 0, 232, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 221 + 0, 233, 0, 134, 0, 135, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 222 + 0, -70, -70, -70, 0, -70, -70, 0, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 223 + 0, -69, -69, -69, 0, -69, -69, 0, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 224 + 0, 234, 0, 0, 0, 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 225 + 0, -48, 0, 0, 0, 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 226 + 0, 0, 0, 0, 0, 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 227 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, -5, 0, -5, -5, -5, 0, -5, -5, -5, 0, 0, 0, 0, -5, 0, + // State 228 + 0, 0, 0, 0, 0, 0, 0, -72, -72, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -72, 0, 0, 0, 0, + // State 229 + 0, 0, -70, -70, 0, -70, -70, -70, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -70, 0, 0, 0, 0, + // State 230 + 0, 0, -69, -69, 0, -69, -69, -69, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -69, 0, 0, 0, 0, + // State 231 + 0, 0, -70, -70, 0, -70, -70, -70, 0, -70, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 232 + 0, 0, -69, -69, 0, -69, -69, -69, 0, -69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 233 + 0, 0, 0, 0, 0, 0, 0, 235, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 234 + -34, 0, 0, 0, 0, -34, 0, 0, 0, 0, -34, -34, 0, -34, 0, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, -34, -34, 0, + ]; + const __EOF_ACTION: &'static [i32] = &[ + 0, + -4, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -50, + 0, + 0, + 0, + -54, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -52, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -51, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -56, + -55, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -53, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + -57, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + 0, + ]; + const __GOTO: &'static [i32] = &[ + // State 0 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 1 + 0, 0, 0, 0, 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 2 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 3 + 0, 0, 0, 0, 6, 0, 7, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 4 + 0, 0, 0, 0, 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 5 + 0, 0, 0, 0, 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 6 + 0, 0, 0, 0, 19, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 7 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 21, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 8 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // 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, + // State 10 + 0, 0, 0, 0, 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 11 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 25, 26, 27, 28, 29, 30, 0, 31, 0, 32, 0, 0, 33, 0, 0, 0, 0, + // State 12 + 0, 0, 0, 0, 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 13 + 0, 0, 0, 0, 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 14 + 0, 0, 0, 0, 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 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, + // 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, + // State 17 + 0, 0, 0, 0, 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 18 + 0, 0, 0, 0, 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 19 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 24, 0, 43, 26, 27, 28, 29, 30, 0, 31, 0, 44, 0, 0, 33, 0, 0, 0, 0, + // State 20 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 21 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 0, 0, 48, 0, 49, 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, + // State 23 + 0, 0, 0, 0, 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 24 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 26, 27, 28, 29, 30, 0, 31, 0, 55, 0, 0, 33, 0, 0, 0, 0, + // State 25 + 0, 0, 0, 0, 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 26 + 0, 0, 0, 0, 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 27 + 0, 0, 0, 0, 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 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, + // State 29 + 0, 0, 0, 0, 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 30 + 0, 0, 0, 0, 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 31 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 30, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, + // State 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, + // State 33 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 65, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 34 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, 78, 0, 0, 0, 0, + // State 35 + 0, 0, 0, 0, 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 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, 0, + // State 37 + 0, 0, 0, 0, 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 38 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 39 + 0, 0, 0, 0, 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 40 + 0, 0, 0, 0, 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 41 + 0, 0, 0, 0, 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 42 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 54, 0, 0, 26, 27, 28, 29, 30, 0, 31, 0, 84, 0, 0, 33, 0, 0, 0, 0, + // State 43 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 30, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, + // State 44 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 45 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, 0, 89, 0, 90, 0, + // State 46 + 0, 0, 0, 0, 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 47 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 0, 0, 0, 0, 94, 0, + // State 48 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 96, 0, 0, 0, 0, 0, 0, + // State 49 + 0, 0, 0, 0, 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 50 + 0, 0, 0, 0, 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 51 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 99, 100, 101, 102, 103, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, + // State 52 + 0, 0, 0, 0, 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 53 + 0, 0, 0, 0, 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 54 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 30, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, + // State 55 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 113, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 56 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 114, 28, 29, 30, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, + // State 57 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 115, 28, 29, 30, 0, 0, 0, 0, 0, 0, 33, 0, 0, 0, 0, + // State 58 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 116, 117, 118, 119, 120, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, + // State 59 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, 129, 0, 0, 0, 0, + // State 60 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, 130, 0, 0, 0, 0, + // State 61 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 29, 30, 0, 0, 0, 0, 0, 0, 131, 0, 0, 0, 0, + // State 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, + // State 63 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 64 + 0, 0, 0, 0, 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 65 + 0, 0, 0, 0, 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 66 + 0, 0, 0, 0, 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 67 + 0, 0, 0, 0, 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 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, + // State 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, + // State 70 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 139, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 71 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 69, 0, 0, 0, 0, 0, 0, 140, 0, 0, 0, 0, + // State 72 + 0, 0, 0, 0, 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 73 + 0, 0, 0, 0, 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 74 + 0, 0, 0, 0, 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 75 + 0, 0, 0, 0, 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 76 + 0, 0, 0, 0, 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 77 + 0, 0, 0, 0, 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 78 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 143, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 79 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 80 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 146, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 81 + 0, 0, 0, 0, 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 82 + 0, 0, 0, 0, 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 83 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 28, 29, 30, 0, 63, 0, 0, 0, 0, 33, 0, 0, 0, 0, + // State 84 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 149, 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, 0, 0, 0, 150, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 86 + 0, 0, 0, 0, 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 87 + 0, 0, 0, 0, 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 88 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 153, 0, 0, 0, 0, 154, 0, + // State 89 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 156, 0, 0, 0, 0, 0, 0, + // State 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, 0, 0, 0, 0, + // State 91 + 0, 0, 0, 0, 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 92 + 0, 0, 0, 0, 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 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 159, 0, 0, 0, 0, 0, 0, + // State 94 + 0, 0, 0, 0, 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 95 + 0, 0, 0, 0, 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 96 + 0, 0, 0, 0, 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 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, + // State 98 + 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 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, + // State 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, + // 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, + // State 103 + 0, 0, 0, 0, 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 104 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 168, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 105 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 103, 0, 0, 0, 0, 0, 0, 169, 0, 0, 0, 0, + // State 106 + 0, 0, 0, 0, 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 107 + 0, 0, 0, 0, 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 108 + 0, 0, 0, 0, 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 109 + 0, 0, 0, 0, 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 110 + 0, 0, 0, 0, 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 111 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 112 + 0, 0, 0, 0, 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 113 + 0, 0, 0, 0, 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 114 + 0, 0, 0, 0, 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 115 + 0, 0, 0, 0, 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 116 + 0, 0, 0, 0, 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 117 + 0, 0, 0, 0, 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 118 + 0, 0, 0, 0, 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 119 + 0, 0, 0, 0, 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 120 + 0, 0, 0, 0, 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 121 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 180, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 122 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 119, 120, 0, 0, 0, 0, 0, 0, 181, 0, 0, 0, 0, + // State 123 + 0, 0, 0, 0, 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 124 + 0, 0, 0, 0, 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 125 + 0, 0, 0, 0, 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 126 + 0, 0, 0, 0, 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 127 + 0, 0, 0, 0, 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 128 + 0, 0, 0, 0, 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 129 + 0, 0, 0, 0, 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 130 + 0, 0, 0, 0, 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 131 + 0, 0, 0, 0, 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 132 + 0, 0, 0, 0, 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 133 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 185, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 134 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 186, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 135 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 69, 0, 0, 0, 0, 0, 0, 187, 0, 0, 0, 0, + // State 136 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 69, 0, 0, 0, 0, 0, 0, 188, 0, 0, 0, 0, + // State 137 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 67, 68, 69, 0, 0, 0, 0, 0, 0, 189, 0, 0, 0, 0, + // State 138 + 0, 0, 0, 0, 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 139 + 0, 0, 0, 0, 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 140 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 191, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 141 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 192, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 142 + 0, 0, 0, 0, 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 143 + 0, 0, 0, 0, 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 144 + 0, 0, 0, 0, 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 145 + 0, 0, 0, 0, 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 146 + 0, 0, 0, 0, 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 147 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 196, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 148 + 0, 0, 0, 0, 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 149 + 0, 0, 0, 0, 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 150 + 0, 0, 0, 0, 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 151 + 0, 0, 0, 0, 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 152 + 0, 0, 0, 0, 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 153 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 200, 0, 0, 0, 0, 0, 0, + // State 154 + 0, 0, 0, 0, 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 155 + 0, 0, 0, 0, 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 156 + 0, 0, 0, 0, 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 157 + 0, 0, 0, 0, 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 158 + 0, 0, 0, 0, 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 159 + 0, 0, 0, 0, 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 160 + 0, 0, 0, 0, 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 161 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 0, 0, 0, 0, 0, 0, + // State 162 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 206, 101, 102, 103, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, + // State 163 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 207, 101, 102, 103, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, + // State 164 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 103, 0, 0, 0, 0, 0, 0, 208, 0, 0, 0, 0, + // State 165 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 103, 0, 0, 0, 0, 0, 0, 209, 0, 0, 0, 0, + // State 166 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 101, 102, 103, 0, 0, 0, 0, 0, 0, 210, 0, 0, 0, 0, + // State 167 + 0, 0, 0, 0, 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 168 + 0, 0, 0, 0, 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 169 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 212, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 170 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 213, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 171 + 0, 0, 0, 0, 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 172 + 0, 0, 0, 0, 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 173 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 215, 118, 119, 120, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, + // State 174 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 216, 118, 119, 120, 0, 0, 0, 0, 0, 0, 121, 0, 0, 0, 0, + // State 175 + 0, 0, 0, 0, 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 176 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 119, 120, 0, 0, 0, 0, 0, 0, 217, 0, 0, 0, 0, + // State 177 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 119, 120, 0, 0, 0, 0, 0, 0, 218, 0, 0, 0, 0, + // State 178 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 118, 119, 120, 0, 0, 0, 0, 0, 0, 219, 0, 0, 0, 0, + // State 179 + 0, 0, 0, 0, 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 180 + 0, 0, 0, 0, 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 181 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 221, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 182 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 222, 66, 67, 68, 69, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, + // State 183 + 0, 0, 0, 0, 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 184 + 0, 0, 0, 0, 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 185 + 0, 0, 0, 0, 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 186 + 0, 0, 0, 0, 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 187 + 0, 0, 0, 0, 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 188 + 0, 0, 0, 0, 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 189 + 0, 0, 0, 0, 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 190 + 0, 0, 0, 0, 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 191 + 0, 0, 0, 0, 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 192 + 0, 0, 0, 0, 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 193 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 225, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + // State 194 + 0, 0, 0, 0, 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 195 + 0, 0, 0, 0, 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 196 + 0, 0, 0, 0, 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 197 + 0, 0, 0, 0, 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 198 + 0, 0, 0, 0, 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 199 + 0, 0, 0, 0, 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 200 + 0, 0, 0, 0, 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 201 + 0, 0, 0, 0, 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 202 + 0, 0, 0, 0, 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 203 + 0, 0, 0, 0, 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 204 + 0, 0, 0, 0, 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 205 + 0, 0, 0, 0, 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 206 + 0, 0, 0, 0, 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 207 + 0, 0, 0, 0, 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 208 + 0, 0, 0, 0, 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 209 + 0, 0, 0, 0, 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 210 + 0, 0, 0, 0, 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 211 + 0, 0, 0, 0, 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 212 + 0, 0, 0, 0, 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 213 + 0, 0, 0, 0, 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 214 + 0, 0, 0, 0, 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 215 + 0, 0, 0, 0, 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 216 + 0, 0, 0, 0, 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 217 + 0, 0, 0, 0, 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 218 + 0, 0, 0, 0, 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 219 + 0, 0, 0, 0, 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 220 + 0, 0, 0, 0, 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 221 + 0, 0, 0, 0, 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 222 + 0, 0, 0, 0, 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 223 + 0, 0, 0, 0, 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 224 + 0, 0, 0, 0, 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 225 + 0, 0, 0, 0, 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 226 + 0, 0, 0, 0, 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 227 + 0, 0, 0, 0, 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 228 + 0, 0, 0, 0, 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 229 + 0, 0, 0, 0, 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 230 + 0, 0, 0, 0, 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 231 + 0, 0, 0, 0, 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 232 + 0, 0, 0, 0, 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 233 + 0, 0, 0, 0, 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 234 + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + ]; + pub fn parse_model< + 'input, + >( + input: &'input str, + ) -> Result> + { + let mut __tokens = super::__intern_token::__Matcher::new(input); + let mut __states = vec![0_i32]; + let mut __symbols = vec![]; + let mut __integer; + let mut __lookahead; + let mut __last_location = Default::default(); + '__shift: loop { + __lookahead = match __tokens.next() { + Some(Ok(v)) => v, + None => break '__shift, + Some(Err(e)) => return Err(e), + }; + __last_location = __lookahead.2.clone(); + __integer = match __lookahead.1 { + (0, _) if true => 0, + (1, _) if true => 1, + (2, _) if true => 2, + (3, _) if true => 3, + (4, _) if true => 4, + (5, _) if true => 5, + (6, _) if true => 6, + (7, _) if true => 7, + (8, _) if true => 8, + (9, _) if true => 9, + (10, _) if true => 10, + (11, _) if true => 11, + (12, _) if true => 12, + (13, _) if true => 13, + (14, _) if true => 14, + (15, _) if true => 15, + (16, _) if true => 16, + (17, _) if true => 17, + (18, _) if true => 18, + (19, _) if true => 19, + (20, _) if true => 20, + (21, _) if true => 21, + (22, _) if true => 22, + (23, _) if true => 23, + (24, _) if true => 24, + (25, _) if true => 25, + (26, _) if true => 26, + (27, _) if true => 27, + _ => { + return Err(__lalrpop_util::ParseError::UnrecognizedToken { + token: Some(__lookahead), + expected: vec![], + }); + } + }; + '__inner: loop { + let __state = *__states.last().unwrap() as usize; + let __action = __ACTION[__state * 29 + __integer]; + if __action > 0 { + let __symbol = match __integer { + 0 => match __lookahead.1 { + (0, __tok0) => __Symbol::Term_22_28_22(__tok0), + _ => unreachable!(), + }, + 1 => match __lookahead.1 { + (1, __tok0) => __Symbol::Term_22_29_22(__tok0), + _ => unreachable!(), + }, + 2 => match __lookahead.1 { + (2, __tok0) => __Symbol::Term_22_2a_22(__tok0), + _ => unreachable!(), + }, + 3 => match __lookahead.1 { + (3, __tok0) => __Symbol::Term_22_2b_22(__tok0), + _ => unreachable!(), + }, + 4 => match __lookahead.1 { + (4, __tok0) => __Symbol::Term_22_2c_22(__tok0), + _ => unreachable!(), + }, + 5 => match __lookahead.1 { + (5, __tok0) => __Symbol::Term_22_2d_22(__tok0), + _ => unreachable!(), + }, + 6 => match __lookahead.1 { + (6, __tok0) => __Symbol::Term_22_2f_22(__tok0), + _ => unreachable!(), + }, + 7 => match __lookahead.1 { + (7, __tok0) => __Symbol::Term_22_3b_22(__tok0), + _ => unreachable!(), + }, + 8 => match __lookahead.1 { + (8, __tok0) => __Symbol::Term_22_3d_22(__tok0), + _ => unreachable!(), + }, + 9 => match __lookahead.1 { + (9, __tok0) => __Symbol::Term_22_5e_22(__tok0), + _ => unreachable!(), + }, + 10 => match __lookahead.1 { + (10, __tok0) => __Symbol::Term_22abs_22(__tok0), + _ => unreachable!(), + }, + 11 => match __lookahead.1 { + (11, __tok0) => __Symbol::Term_22connect_22(__tok0), + _ => unreachable!(), + }, + 12 => match __lookahead.1 { + (12, __tok0) => __Symbol::Term_22constant_22(__tok0), + _ => unreachable!(), + }, + 13 => match __lookahead.1 { + (13, __tok0) => __Symbol::Term_22der_22(__tok0), + _ => unreachable!(), + }, + 14 => match __lookahead.1 { + (14, __tok0) => __Symbol::Term_22discrete_22(__tok0), + _ => unreachable!(), + }, + 15 => match __lookahead.1 { + (15, __tok0) => __Symbol::Term_22end_22(__tok0), + _ => unreachable!(), + }, + 16 => match __lookahead.1 { + (16, __tok0) => __Symbol::Term_22equation_22(__tok0), + _ => unreachable!(), + }, + 17 => match __lookahead.1 { + (17, __tok0) => __Symbol::Term_22flow_22(__tok0), + _ => unreachable!(), + }, + 18 => match __lookahead.1 { + (18, __tok0) => __Symbol::Term_22input_22(__tok0), + _ => unreachable!(), + }, + 19 => match __lookahead.1 { + (19, __tok0) => __Symbol::Term_22model_22(__tok0), + _ => unreachable!(), + }, + 20 => match __lookahead.1 { + (20, __tok0) => __Symbol::Term_22output_22(__tok0), + _ => unreachable!(), + }, + 21 => match __lookahead.1 { + (21, __tok0) => __Symbol::Term_22parameter_22(__tok0), + _ => unreachable!(), + }, + 22 => match __lookahead.1 { + (22, __tok0) => __Symbol::Term_22stream_22(__tok0), + _ => unreachable!(), + }, + 23 => match __lookahead.1 { + (23, __tok0) => __Symbol::Term_22unit_22(__tok0), + _ => unreachable!(), + }, + 24 => match __lookahead.1 { + (24, __tok0) => __Symbol::Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__tok0), + _ => unreachable!(), + }, + 25 => match __lookahead.1 { + (25, __tok0) => __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__tok0), + _ => unreachable!(), + }, + 26 => match __lookahead.1 { + (26, __tok0) => __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__tok0), + _ => unreachable!(), + }, + 27 => match __lookahead.1 { + (27, __tok0) => __Symbol::Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__tok0), + _ => unreachable!(), + }, + _ => unreachable!(), + }; + __states.push(__action - 1); + __symbols.push((__lookahead.0, __symbol, __lookahead.2)); + continue '__shift; + } else if __action < 0 { + if let Some(r) = __reduce(input, __action, Some(&__lookahead.0), &mut __states, &mut __symbols, ::std::marker::PhantomData::<()>) { + return r; + } + } else { + return Err(__lalrpop_util::ParseError::UnrecognizedToken { + token: Some(__lookahead), + expected: vec![], + }); + } + } + } + loop { + let __state = *__states.last().unwrap() as usize; + let __action = __EOF_ACTION[__state]; + if __action < 0 { + if let Some(r) = __reduce(input, __action, None, &mut __states, &mut __symbols, ::std::marker::PhantomData::<()>) { + return r; + } + } else { + let __error = __lalrpop_util::ParseError::UnrecognizedToken { + token: None, + expected: vec![], + }; + return Err(__error); + } + } + } + pub fn __reduce< + 'input, + >( + input: &'input str, + __action: i32, + __lookahead_start: Option<&usize>, + __states: &mut ::std::vec::Vec, + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: ::std::marker::PhantomData<()>, + ) -> Option>> + { + let __nonterminal = match -__action { + 1 => { + // __float = float => ActionFn(2); + let __sym0 = __pop_Ntfloat(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action2::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____float(__nt), __end)); + 0 + } + 2 => { + // __identifier = identifier => ActionFn(0); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action0::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____identifier(__nt), __end)); + 1 + } + 3 => { + // __integer = integer => ActionFn(1); + let __sym0 = __pop_Ntinteger(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action1::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Nt____integer(__nt), __end)); + 2 + } + 4 => { + // __model = model => ActionFn(3); + let __sym0 = __pop_Ntmodel(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action3::<>(input, __sym0); + return Some(Ok(__nt)); + } + 5 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, value_declaration, string_literal, ";" => ActionFn(83); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntstring__literal(__symbols); + let __sym4 = __pop_Ntvalue__declaration(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action83::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 6 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, string_literal, ";" => ActionFn(84); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 7 => { + // component_declaration = component_prefix, identifier, identifier, value_declaration, string_literal, ";" => ActionFn(85); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action85::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 8 => { + // component_declaration = component_prefix, identifier, identifier, string_literal, ";" => ActionFn(86); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action86::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 9 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, value_declaration, ";" => ActionFn(87); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntvalue__declaration(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action87::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 10 => { + // component_declaration = component_prefix, identifier, identifier, units_declaration, ";" => ActionFn(88); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntunits__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action88::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 11 => { + // component_declaration = component_prefix, identifier, identifier, value_declaration, ";" => ActionFn(89); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action89::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 12 => { + // component_declaration = component_prefix, identifier, identifier, ";" => ActionFn(90); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action90::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 13 => { + // component_declaration = identifier, identifier, units_declaration, value_declaration, string_literal, ";" => ActionFn(91); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntstring__literal(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action91::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 14 => { + // component_declaration = identifier, identifier, units_declaration, string_literal, ";" => ActionFn(92); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action92::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 15 => { + // component_declaration = identifier, identifier, value_declaration, string_literal, ";" => ActionFn(93); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Ntvalue__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action93::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 16 => { + // component_declaration = identifier, identifier, string_literal, ";" => ActionFn(94); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntstring__literal(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action94::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 17 => { + // component_declaration = identifier, identifier, units_declaration, value_declaration, ";" => ActionFn(95); + let __sym4 = __pop_Term_22_3b_22(__symbols); + let __sym3 = __pop_Ntvalue__declaration(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action95::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 18 => { + // component_declaration = identifier, identifier, units_declaration, ";" => ActionFn(96); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntunits__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action96::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 19 => { + // component_declaration = identifier, identifier, value_declaration, ";" => ActionFn(97); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntvalue__declaration(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action97::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 20 => { + // component_declaration = identifier, identifier, ";" => ActionFn(98); + let __sym2 = __pop_Term_22_3b_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action98::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntcomponent__declaration(__nt), __end)); + 4 + } + 21 => { + // component_declaration* = => ActionFn(47); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action47::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2a(__nt), __end)); + 5 + } + 22 => { + // component_declaration* = component_declaration+ => ActionFn(48); + let __sym0 = __pop_Ntcomponent__declaration_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action48::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2a(__nt), __end)); + 5 + } + 23 => { + // component_declaration+ = component_declaration => ActionFn(49); + let __sym0 = __pop_Ntcomponent__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action49::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2b(__nt), __end)); + 6 + } + 24 => { + // component_declaration+ = component_declaration+, component_declaration => ActionFn(50); + let __sym1 = __pop_Ntcomponent__declaration(__symbols); + let __sym0 = __pop_Ntcomponent__declaration_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action50::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntcomponent__declaration_2b(__nt), __end)); + 6 + } + 25 => { + // component_prefix = "flow" => ActionFn(12); + let __sym0 = __pop_Term_22flow_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action12::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 26 => { + // component_prefix = "stream" => ActionFn(13); + let __sym0 = __pop_Term_22stream_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action13::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 27 => { + // component_prefix = "input" => ActionFn(14); + let __sym0 = __pop_Term_22input_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action14::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 28 => { + // component_prefix = "output" => ActionFn(15); + let __sym0 = __pop_Term_22output_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action15::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 29 => { + // component_prefix = "discrete" => ActionFn(16); + let __sym0 = __pop_Term_22discrete_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action16::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 30 => { + // component_prefix = "parameter" => ActionFn(17); + let __sym0 = __pop_Term_22parameter_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action17::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 31 => { + // component_prefix = "constant" => ActionFn(18); + let __sym0 = __pop_Term_22constant_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action18::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix(__nt), __end)); + 7 + } + 32 => { + // component_prefix? = component_prefix => ActionFn(41); + let __sym0 = __pop_Ntcomponent__prefix(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action41::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntcomponent__prefix_3f(__nt), __end)); + 8 + } + 33 => { + // component_prefix? = => ActionFn(42); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action42::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntcomponent__prefix_3f(__nt), __end)); + 8 + } + 34 => { + // connect_clause = "connect", "(", identifier, ",", identifier, ")", ";" => ActionFn(20); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Term_22_29_22(__symbols); + let __sym4 = __pop_Ntidentifier(__symbols); + let __sym3 = __pop_Term_22_2c_22(__symbols); + let __sym2 = __pop_Ntidentifier(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22connect_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action20::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntconnect__clause(__nt), __end)); + 9 + } + 35 => { + // connect_clause* = => ActionFn(45); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action45::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntconnect__clause_2a(__nt), __end)); + 10 + } + 36 => { + // connect_clause* = connect_clause+ => ActionFn(46); + let __sym0 = __pop_Ntconnect__clause_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action46::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntconnect__clause_2a(__nt), __end)); + 10 + } + 37 => { + // connect_clause+ = connect_clause => ActionFn(51); + let __sym0 = __pop_Ntconnect__clause(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action51::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntconnect__clause_2b(__nt), __end)); + 11 + } + 38 => { + // connect_clause+ = connect_clause+, connect_clause => ActionFn(52); + let __sym1 = __pop_Ntconnect__clause(__symbols); + let __sym0 = __pop_Ntconnect__clause_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action52::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntconnect__clause_2b(__nt), __end)); + 11 + } + 39 => { + // expr = expr, "+", factor => ActionFn(21); + let __sym2 = __pop_Ntfactor(__symbols); + let __sym1 = __pop_Term_22_2b_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action21::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 40 => { + // expr = expr, "-", factor => ActionFn(22); + let __sym2 = __pop_Ntfactor(__symbols); + let __sym1 = __pop_Term_22_2d_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action22::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 41 => { + // expr = factor => ActionFn(23); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action23::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntexpr(__nt), __end)); + 12 + } + 42 => { + // factor = factor, "*", term => ActionFn(24); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_2a_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action24::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 43 => { + // factor = factor, "/", term => ActionFn(25); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_2f_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action25::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 44 => { + // factor = factor, "^", term => ActionFn(26); + let __sym2 = __pop_Ntterm(__symbols); + let __sym1 = __pop_Term_22_5e_22(__symbols); + let __sym0 = __pop_Ntfactor(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action26::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 45 => { + // factor = "-", term => ActionFn(27); + let __sym1 = __pop_Ntterm(__symbols); + let __sym0 = __pop_Term_22_2d_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action27::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 46 => { + // factor = term => ActionFn(28); + let __sym0 = __pop_Ntterm(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action28::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntfactor(__nt), __end)); + 13 + } + 47 => { + // float = r#"[+-]?\\d+\\.\\d*([eE][-+]?\\d+)?"# => ActionFn(7); + let __sym0 = __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action7::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntfloat(__nt), __end)); + 14 + } + 48 => { + // identifier = r#"[a-zA-Z_][a-zA-Z_0-9]*"# => ActionFn(4); + let __sym0 = __pop_Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action4::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntidentifier(__nt), __end)); + 15 + } + 49 => { + // integer = r#"[+-]?\\d+"# => ActionFn(6); + let __sym0 = __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action6::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntinteger(__nt), __end)); + 16 + } + 50 => { + // model = "model", identifier, "equation", "end", identifier, ";" => ActionFn(63); + let __sym5 = __pop_Term_22_3b_22(__symbols); + let __sym4 = __pop_Ntidentifier(__symbols); + let __sym3 = __pop_Term_22end_22(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym5.2.clone(); + let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5); + let __states_len = __states.len(); + __states.truncate(__states_len - 6); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 51 => { + // model = "model", identifier, "equation", simple_equation+, "end", identifier, ";" => ActionFn(64); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Ntsimple__equation_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 52 => { + // model = "model", identifier, "equation", connect_clause+, "end", identifier, ";" => ActionFn(65); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Ntconnect__clause_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 53 => { + // model = "model", identifier, "equation", connect_clause+, simple_equation+, "end", identifier, ";" => ActionFn(66); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntsimple__equation_2b(__symbols); + let __sym3 = __pop_Ntconnect__clause_2b(__symbols); + let __sym2 = __pop_Term_22equation_22(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 54 => { + // model = "model", identifier, component_declaration+, "equation", "end", identifier, ";" => ActionFn(67); + let __sym6 = __pop_Term_22_3b_22(__symbols); + let __sym5 = __pop_Ntidentifier(__symbols); + let __sym4 = __pop_Term_22end_22(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym6.2.clone(); + let __nt = super::__action67::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); + let __states_len = __states.len(); + __states.truncate(__states_len - 7); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 55 => { + // model = "model", identifier, component_declaration+, "equation", simple_equation+, "end", identifier, ";" => ActionFn(68); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntsimple__equation_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action68::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 56 => { + // model = "model", identifier, component_declaration+, "equation", connect_clause+, "end", identifier, ";" => ActionFn(69); + let __sym7 = __pop_Term_22_3b_22(__symbols); + let __sym6 = __pop_Ntidentifier(__symbols); + let __sym5 = __pop_Term_22end_22(__symbols); + let __sym4 = __pop_Ntconnect__clause_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym7.2.clone(); + let __nt = super::__action69::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); + let __states_len = __states.len(); + __states.truncate(__states_len - 8); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 57 => { + // model = "model", identifier, component_declaration+, "equation", connect_clause+, simple_equation+, "end", identifier, ";" => ActionFn(70); + let __sym8 = __pop_Term_22_3b_22(__symbols); + let __sym7 = __pop_Ntidentifier(__symbols); + let __sym6 = __pop_Term_22end_22(__symbols); + let __sym5 = __pop_Ntsimple__equation_2b(__symbols); + let __sym4 = __pop_Ntconnect__clause_2b(__symbols); + let __sym3 = __pop_Term_22equation_22(__symbols); + let __sym2 = __pop_Ntcomponent__declaration_2b(__symbols); + let __sym1 = __pop_Ntidentifier(__symbols); + let __sym0 = __pop_Term_22model_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym8.2.clone(); + let __nt = super::__action70::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); + let __states_len = __states.len(); + __states.truncate(__states_len - 9); + __symbols.push((__start, __Symbol::Ntmodel(__nt), __end)); + 17 + } + 58 => { + // simple_equation = expr, "=", expr, ";" => ActionFn(19); + let __sym3 = __pop_Term_22_3b_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_3d_22(__symbols); + let __sym0 = __pop_Ntexpr(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action19::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntsimple__equation(__nt), __end)); + 18 + } + 59 => { + // simple_equation* = => ActionFn(43); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action43::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntsimple__equation_2a(__nt), __end)); + 19 + } + 60 => { + // simple_equation* = simple_equation+ => ActionFn(44); + let __sym0 = __pop_Ntsimple__equation_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action44::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntsimple__equation_2a(__nt), __end)); + 19 + } + 61 => { + // simple_equation+ = simple_equation => ActionFn(53); + let __sym0 = __pop_Ntsimple__equation(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action53::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntsimple__equation_2b(__nt), __end)); + 20 + } + 62 => { + // simple_equation+ = simple_equation+, simple_equation => ActionFn(54); + let __sym1 = __pop_Ntsimple__equation(__symbols); + let __sym0 = __pop_Ntsimple__equation_2b(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action54::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntsimple__equation_2b(__nt), __end)); + 20 + } + 63 => { + // string_literal = r#"\"[^\"\\\\]*\""# => ActionFn(5); + let __sym0 = __pop_Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action5::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntstring__literal(__nt), __end)); + 21 + } + 64 => { + // string_literal? = string_literal => ActionFn(35); + let __sym0 = __pop_Ntstring__literal(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action35::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntstring__literal_3f(__nt), __end)); + 22 + } + 65 => { + // string_literal? = => ActionFn(36); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action36::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntstring__literal_3f(__nt), __end)); + 22 + } + 66 => { + // term = integer => ActionFn(29); + let __sym0 = __pop_Ntinteger(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action29::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 67 => { + // term = float => ActionFn(30); + let __sym0 = __pop_Ntfloat(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action30::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 68 => { + // term = identifier => ActionFn(31); + let __sym0 = __pop_Ntidentifier(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action31::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 69 => { + // term = "der", "(", expr, ")" => ActionFn(32); + let __sym3 = __pop_Term_22_29_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22der_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action32::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 70 => { + // term = "abs", "(", expr, ")" => ActionFn(33); + let __sym3 = __pop_Term_22_29_22(__symbols); + let __sym2 = __pop_Ntexpr(__symbols); + let __sym1 = __pop_Term_22_28_22(__symbols); + let __sym0 = __pop_Term_22abs_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym3.2.clone(); + let __nt = super::__action33::<>(input, __sym0, __sym1, __sym2, __sym3); + let __states_len = __states.len(); + __states.truncate(__states_len - 4); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 71 => { + // term = "(", expr, ")" => ActionFn(34); + let __sym2 = __pop_Term_22_29_22(__symbols); + let __sym1 = __pop_Ntexpr(__symbols); + let __sym0 = __pop_Term_22_28_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym2.2.clone(); + let __nt = super::__action34::<>(input, __sym0, __sym1, __sym2); + let __states_len = __states.len(); + __states.truncate(__states_len - 3); + __symbols.push((__start, __Symbol::Ntterm(__nt), __end)); + 23 + } + 72 => { + // units_declaration = "(", "unit", "=", string_literal, ")" => ActionFn(10); + let __sym4 = __pop_Term_22_29_22(__symbols); + let __sym3 = __pop_Ntstring__literal(__symbols); + let __sym2 = __pop_Term_22_3d_22(__symbols); + let __sym1 = __pop_Term_22unit_22(__symbols); + let __sym0 = __pop_Term_22_28_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym4.2.clone(); + let __nt = super::__action10::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __states_len = __states.len(); + __states.truncate(__states_len - 5); + __symbols.push((__start, __Symbol::Ntunits__declaration(__nt), __end)); + 24 + } + 73 => { + // units_declaration? = units_declaration => ActionFn(39); + let __sym0 = __pop_Ntunits__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action39::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntunits__declaration_3f(__nt), __end)); + 25 + } + 74 => { + // units_declaration? = => ActionFn(40); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action40::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntunits__declaration_3f(__nt), __end)); + 25 + } + 75 => { + // value_declaration = "=", expr => ActionFn(9); + let __sym1 = __pop_Ntexpr(__symbols); + let __sym0 = __pop_Term_22_3d_22(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action9::<>(input, __sym0, __sym1); + let __states_len = __states.len(); + __states.truncate(__states_len - 2); + __symbols.push((__start, __Symbol::Ntvalue__declaration(__nt), __end)); + 26 + } + 76 => { + // value_declaration? = value_declaration => ActionFn(37); + let __sym0 = __pop_Ntvalue__declaration(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action37::<>(input, __sym0); + let __states_len = __states.len(); + __states.truncate(__states_len - 1); + __symbols.push((__start, __Symbol::Ntvalue__declaration_3f(__nt), __end)); + 27 + } + 77 => { + // value_declaration? = => ActionFn(38); + let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); + let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); + let __nt = super::__action38::<>(input, &__start, &__end); + let __states_len = __states.len(); + __states.truncate(__states_len - 0); + __symbols.push((__start, __Symbol::Ntvalue__declaration_3f(__nt), __end)); + 27 + } + _ => panic!("invalid action code {}", __action) + }; + let __state = *__states.last().unwrap() as usize; + let __next_state = __GOTO[__state * 28 + __nonterminal] - 1; + __states.push(__next_state); + None + } + fn __pop_Term_22_28_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_28_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_29_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_29_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2a_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2a_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2b_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2b_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2c_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2c_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2d_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2d_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_2f_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_2f_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_3b_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_3b_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_3d_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_3d_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22_5e_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22_5e_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22abs_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22abs_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22connect_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22connect_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22constant_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22constant_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22der_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22der_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22discrete_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22discrete_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22end_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22end_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22equation_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22equation_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22flow_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22flow_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22input_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22input_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22model_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22model_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22output_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22output_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22parameter_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22parameter_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22stream_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22stream_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Term_22unit_22< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Term_22unit_22(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5c_22_5b_5e_5c_22_5c_5c_5c_5c_5d_2a_5c_22_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5b_2b_2d_5d_3f_5c_5cd_2b_5c_5c_2e_5c_5cd_2a_28_5beE_5d_5b_2d_2b_5d_3f_5c_5cd_2b_29_3f_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, &'input str, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termr_23_22_5ba_2dzA_2dZ___5d_5ba_2dzA_2dZ__0_2d9_5d_2a_22_23(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Termerror< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, __lalrpop_util::ErrorRecovery, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Termerror(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____float< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, f64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____float(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____identifier< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____identifier(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____integer< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____integer(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Nt____model< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ModelicaModel, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Nt____model(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Component, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__declaration_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__declaration_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__prefix< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ComponentPrefix, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__prefix(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntcomponent__prefix_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntcomponent__prefix_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Connection, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntconnect__clause_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntconnect__clause_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntexpr< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntexpr(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntfactor< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntfactor(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntfloat< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, f64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntfloat(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntidentifier< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntidentifier(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntinteger< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, i64, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntinteger(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntmodel< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ModelicaModel, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntmodel(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, SimpleEquation, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation_2a< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation_2a(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntsimple__equation_2b< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::vec::Vec, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntsimple__equation_2b(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntstring__literal< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntstring__literal(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntstring__literal_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntstring__literal_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntterm< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntterm(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntunits__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, String, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntunits__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntunits__declaration_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntunits__declaration_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntvalue__declaration< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, Expr, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntvalue__declaration(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } + fn __pop_Ntvalue__declaration_3f< + 'input, + >( + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> + ) -> (usize, ::std::option::Option, usize) { + match __symbols.pop().unwrap() { + (__l, __Symbol::Ntvalue__declaration_3f(__v), __r) => (__l, __v, __r), + _ => panic!("symbol type mismatch") + } + } +} +pub use self::__parse__model::parse_model; +mod __intern_token { + extern crate lalrpop_util as __lalrpop_util; + pub struct __Matcher<'input> { + text: &'input str, + consumed: usize, + } + + fn __tokenize(text: &str) -> Option<(usize, usize)> { + let mut __chars = text.char_indices(); + let mut __current_match: Option<(usize, usize)> = None; + let mut __current_state: usize = 0; + loop { + match __current_state { + 0 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 34 => /* '\"' */ { + __current_state = 1; + continue; + } + 40 => /* '(' */ { + __current_match = Some((0, __index + 1)); + __current_state = 2; + continue; + } + 41 => /* ')' */ { + __current_match = Some((1, __index + 1)); + __current_state = 3; + continue; + } + 42 => /* '*' */ { + __current_match = Some((2, __index + 1)); + __current_state = 4; + continue; + } + 43 => /* '+' */ { + __current_match = Some((3, __index + 1)); + __current_state = 5; + continue; + } + 44 => /* ',' */ { + __current_match = Some((4, __index + 1)); + __current_state = 6; + continue; + } + 45 => /* '-' */ { + __current_match = Some((5, __index + 1)); + __current_state = 7; + continue; + } + 47 => /* '/' */ { + __current_match = Some((6, __index + 1)); + __current_state = 8; + continue; + } + 48 ... 57 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 59 => /* ';' */ { + __current_match = Some((7, __index + 1)); + __current_state = 10; + continue; + } + 61 => /* '=' */ { + __current_match = Some((8, __index + 1)); + __current_state = 11; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 12; + continue; + } + 94 => /* '^' */ { + __current_match = Some((9, __index + 1)); + __current_state = 13; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 12; + continue; + } + 97 => /* 'a' */ { + __current_match = Some((27, __index + 1)); + __current_state = 14; + continue; + } + 98 => /* 'b' */ { + __current_match = Some((27, __index + 1)); + __current_state = 12; + continue; + } + 99 => /* 'c' */ { + __current_match = Some((27, __index + 1)); + __current_state = 15; + continue; + } + 100 => /* 'd' */ { + __current_match = Some((27, __index + 1)); + __current_state = 16; + continue; + } + 101 => /* 'e' */ { + __current_match = Some((27, __index + 1)); + __current_state = 17; + continue; + } + 102 => /* 'f' */ { + __current_match = Some((27, __index + 1)); + __current_state = 18; + continue; + } + 103 ... 104 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 12; + continue; + } + 105 => /* 'i' */ { + __current_match = Some((27, __index + 1)); + __current_state = 19; + continue; + } + 106 ... 108 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 12; + continue; + } + 109 => /* 'm' */ { + __current_match = Some((27, __index + 1)); + __current_state = 20; + continue; + } + 110 => /* 'n' */ { + __current_match = Some((27, __index + 1)); + __current_state = 12; + continue; + } + 111 => /* 'o' */ { + __current_match = Some((27, __index + 1)); + __current_state = 21; + continue; + } + 112 => /* 'p' */ { + __current_match = Some((27, __index + 1)); + __current_state = 22; + continue; + } + 113 ... 114 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 12; + continue; + } + 115 => /* 's' */ { + __current_match = Some((27, __index + 1)); + __current_state = 23; + continue; + } + 116 => /* 't' */ { + __current_match = Some((27, __index + 1)); + __current_state = 12; + continue; + } + 117 => /* 'u' */ { + __current_match = Some((27, __index + 1)); + __current_state = 24; + continue; + } + 118 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 12; + continue; + } + 1632 ... 1641 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1776 ... 1785 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1984 ... 1993 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2406 ... 2415 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2534 ... 2543 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2662 ... 2671 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2790 ... 2799 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2918 ... 2927 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3046 ... 3055 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3174 ... 3183 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3302 ... 3311 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3430 ... 3439 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3558 ... 3567 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3664 ... 3673 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3792 ... 3801 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3872 ... 3881 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 4160 ... 4169 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 4240 ... 4249 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6112 ... 6121 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6160 ... 6169 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6470 ... 6479 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6608 ... 6617 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6784 ... 6793 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6800 ... 6809 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6992 ... 7001 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7088 ... 7097 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7232 ... 7241 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7248 ... 7257 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 42528 ... 42537 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43216 ... 43225 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43264 ... 43273 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43472 ... 43481 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43504 ... 43513 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43600 ... 43609 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 44016 ... 44025 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 65296 ... 65305 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 66720 ... 66729 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69734 ... 69743 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69872 ... 69881 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69942 ... 69951 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70096 ... 70105 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70384 ... 70393 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70864 ... 70873 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71248 ... 71257 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71360 ... 71369 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71472 ... 71481 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71904 ... 71913 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 92768 ... 92777 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 93008 ... 93017 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 120782 ... 120831 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + _ => { + return __current_match; + } + } + } + 1 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 0 ... 33 => { + __current_state = 26; + continue; + } + 34 => /* '\"' */ { + __current_match = Some((24, __index + 1)); + __current_state = 27; + continue; + } + 35 ... 91 => { + __current_state = 26; + continue; + } + 93 ... 1114111 => { + __current_state = 26; + continue; + } + _ => { + return __current_match; + } + } + } + 2 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 3 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 4 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 5 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1632 ... 1641 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1776 ... 1785 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1984 ... 1993 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2406 ... 2415 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2534 ... 2543 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2662 ... 2671 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2790 ... 2799 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2918 ... 2927 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3046 ... 3055 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3174 ... 3183 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3302 ... 3311 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3430 ... 3439 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3558 ... 3567 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3664 ... 3673 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3792 ... 3801 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3872 ... 3881 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 4160 ... 4169 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 4240 ... 4249 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6112 ... 6121 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6160 ... 6169 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6470 ... 6479 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6608 ... 6617 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6784 ... 6793 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6800 ... 6809 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6992 ... 7001 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7088 ... 7097 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7232 ... 7241 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7248 ... 7257 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 42528 ... 42537 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43216 ... 43225 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43264 ... 43273 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43472 ... 43481 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43504 ... 43513 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43600 ... 43609 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 44016 ... 44025 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 65296 ... 65305 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 66720 ... 66729 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69734 ... 69743 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69872 ... 69881 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69942 ... 69951 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70096 ... 70105 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70384 ... 70393 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70864 ... 70873 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71248 ... 71257 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71360 ... 71369 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71472 ... 71481 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71904 ... 71913 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 92768 ... 92777 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 93008 ... 93017 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 120782 ... 120831 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + _ => { + return __current_match; + } + } + } + 6 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 7 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1632 ... 1641 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1776 ... 1785 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1984 ... 1993 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2406 ... 2415 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2534 ... 2543 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2662 ... 2671 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2790 ... 2799 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2918 ... 2927 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3046 ... 3055 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3174 ... 3183 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3302 ... 3311 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3430 ... 3439 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3558 ... 3567 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3664 ... 3673 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3792 ... 3801 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3872 ... 3881 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 4160 ... 4169 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 4240 ... 4249 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6112 ... 6121 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6160 ... 6169 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6470 ... 6479 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6608 ... 6617 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6784 ... 6793 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6800 ... 6809 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6992 ... 7001 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7088 ... 7097 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7232 ... 7241 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7248 ... 7257 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 42528 ... 42537 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43216 ... 43225 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43264 ... 43273 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43472 ... 43481 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43504 ... 43513 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43600 ... 43609 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 44016 ... 44025 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 65296 ... 65305 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 66720 ... 66729 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69734 ... 69743 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69872 ... 69881 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69942 ... 69951 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70096 ... 70105 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70384 ... 70393 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70864 ... 70873 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71248 ... 71257 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71360 ... 71369 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71472 ... 71481 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71904 ... 71913 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 92768 ... 92777 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 93008 ... 93017 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 120782 ... 120831 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + _ => { + return __current_match; + } + } + } + 8 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 9 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 46 => /* '.' */ { + __current_match = Some((26, __index + 1)); + __current_state = 28; + continue; + } + 48 ... 57 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1632 ... 1641 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1776 ... 1785 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 1984 ... 1993 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2406 ... 2415 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2534 ... 2543 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2662 ... 2671 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2790 ... 2799 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 2918 ... 2927 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3046 ... 3055 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3174 ... 3183 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3302 ... 3311 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3430 ... 3439 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3558 ... 3567 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3664 ... 3673 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3792 ... 3801 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 3872 ... 3881 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 4160 ... 4169 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 4240 ... 4249 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6112 ... 6121 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6160 ... 6169 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6470 ... 6479 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6608 ... 6617 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6784 ... 6793 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6800 ... 6809 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 6992 ... 7001 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7088 ... 7097 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7232 ... 7241 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 7248 ... 7257 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 42528 ... 42537 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43216 ... 43225 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43264 ... 43273 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43472 ... 43481 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43504 ... 43513 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 43600 ... 43609 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 44016 ... 44025 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 65296 ... 65305 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 66720 ... 66729 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69734 ... 69743 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69872 ... 69881 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 69942 ... 69951 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70096 ... 70105 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70384 ... 70393 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 70864 ... 70873 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71248 ... 71257 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71360 ... 71369 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71472 ... 71481 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 71904 ... 71913 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 92768 ... 92777 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 93008 ... 93017 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + 120782 ... 120831 => { + __current_match = Some((25, __index + __ch.len_utf8())); + __current_state = 9; + continue; + } + _ => { + return __current_match; + } + } + } + 10 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 11 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 12 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 13 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 14 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 => /* 'a' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 98 => /* 'b' */ { + __current_match = Some((27, __index + 1)); + __current_state = 30; + continue; + } + 99 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 15 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 110 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 111 => /* 'o' */ { + __current_match = Some((27, __index + 1)); + __current_state = 31; + continue; + } + 112 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 16 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 100 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 101 => /* 'e' */ { + __current_match = Some((27, __index + 1)); + __current_state = 32; + continue; + } + 102 ... 104 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 105 => /* 'i' */ { + __current_match = Some((27, __index + 1)); + __current_state = 33; + continue; + } + 106 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 17 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 109 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 110 => /* 'n' */ { + __current_match = Some((27, __index + 1)); + __current_state = 34; + continue; + } + 111 ... 112 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 113 => /* 'q' */ { + __current_match = Some((27, __index + 1)); + __current_state = 35; + continue; + } + 114 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 18 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 107 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 108 => /* 'l' */ { + __current_match = Some((27, __index + 1)); + __current_state = 36; + continue; + } + 109 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 19 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 109 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 110 => /* 'n' */ { + __current_match = Some((27, __index + 1)); + __current_state = 37; + continue; + } + 111 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 20 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 110 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 111 => /* 'o' */ { + __current_match = Some((27, __index + 1)); + __current_state = 38; + continue; + } + 112 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 21 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 116 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 117 => /* 'u' */ { + __current_match = Some((27, __index + 1)); + __current_state = 39; + continue; + } + 118 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 22 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 => /* 'a' */ { + __current_match = Some((27, __index + 1)); + __current_state = 40; + continue; + } + 98 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 23 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((27, __index + 1)); + __current_state = 41; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 24 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 109 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 110 => /* 'n' */ { + __current_match = Some((27, __index + 1)); + __current_state = 42; + continue; + } + 111 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 25 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 26 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 0 ... 33 => { + __current_state = 26; + continue; + } + 34 => /* '\"' */ { + __current_match = Some((24, __index + 1)); + __current_state = 27; + continue; + } + 35 ... 91 => { + __current_state = 26; + continue; + } + 93 ... 1114111 => { + __current_state = 26; + continue; + } + _ => { + return __current_match; + } + } + } + 27 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + _ => { + return __current_match; + } + } + } + 28 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 69 => /* 'E' */ { + __current_state = 43; + continue; + } + 101 => /* 'e' */ { + __current_state = 43; + continue; + } + 1632 ... 1641 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 1776 ... 1785 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 1984 ... 1993 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 2406 ... 2415 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 2534 ... 2543 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 2662 ... 2671 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 2790 ... 2799 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 2918 ... 2927 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 3046 ... 3055 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 3174 ... 3183 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 3302 ... 3311 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 3430 ... 3439 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 3558 ... 3567 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 3664 ... 3673 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 3792 ... 3801 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 3872 ... 3881 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 4160 ... 4169 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 4240 ... 4249 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 6112 ... 6121 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 6160 ... 6169 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 6470 ... 6479 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 6608 ... 6617 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 6784 ... 6793 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 6800 ... 6809 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 6992 ... 7001 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 7088 ... 7097 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 7232 ... 7241 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 7248 ... 7257 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 42528 ... 42537 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 43216 ... 43225 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 43264 ... 43273 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 43472 ... 43481 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 43504 ... 43513 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 43600 ... 43609 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 44016 ... 44025 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 65296 ... 65305 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 66720 ... 66729 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 69734 ... 69743 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 69872 ... 69881 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 69942 ... 69951 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 70096 ... 70105 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 70384 ... 70393 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 70864 ... 70873 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 71248 ... 71257 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 71360 ... 71369 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 71472 ... 71481 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 71904 ... 71913 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 92768 ... 92777 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 93008 ... 93017 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + 120782 ... 120831 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 28; + continue; + } + _ => { + return __current_match; + } + } + } + 29 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 30 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 114 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 115 => /* 's' */ { + __current_match = Some((10, __index + 1)); + __current_state = 44; + continue; + } + 116 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 31 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 109 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 110 => /* 'n' */ { + __current_match = Some((27, __index + 1)); + __current_state = 45; + continue; + } + 111 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 32 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 113 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 114 => /* 'r' */ { + __current_match = Some((13, __index + 1)); + __current_state = 46; + continue; + } + 115 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 33 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 114 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 115 => /* 's' */ { + __current_match = Some((27, __index + 1)); + __current_state = 47; + continue; + } + 116 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 34 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 99 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 100 => /* 'd' */ { + __current_match = Some((15, __index + 1)); + __current_state = 48; + continue; + } + 101 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 35 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 116 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 117 => /* 'u' */ { + __current_match = Some((27, __index + 1)); + __current_state = 49; + continue; + } + 118 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 36 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 110 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 111 => /* 'o' */ { + __current_match = Some((27, __index + 1)); + __current_state = 50; + continue; + } + 112 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 37 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 111 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 112 => /* 'p' */ { + __current_match = Some((27, __index + 1)); + __current_state = 51; + continue; + } + 113 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 38 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 99 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 100 => /* 'd' */ { + __current_match = Some((27, __index + 1)); + __current_state = 52; + continue; + } + 101 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 39 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((27, __index + 1)); + __current_state = 53; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 40 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 113 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 114 => /* 'r' */ { + __current_match = Some((27, __index + 1)); + __current_state = 54; + continue; + } + 115 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 41 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 113 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 114 => /* 'r' */ { + __current_match = Some((27, __index + 1)); + __current_state = 55; + continue; + } + 115 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 42 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 104 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 105 => /* 'i' */ { + __current_match = Some((27, __index + 1)); + __current_state = 56; + continue; + } + 106 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 43 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 43 => /* '+' */ { + __current_state = 57; + continue; + } + 45 => /* '-' */ { + __current_state = 57; + continue; + } + 48 ... 57 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 1632 ... 1641 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 1776 ... 1785 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 1984 ... 1993 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2406 ... 2415 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2534 ... 2543 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2662 ... 2671 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2790 ... 2799 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2918 ... 2927 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3046 ... 3055 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3174 ... 3183 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3302 ... 3311 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3430 ... 3439 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3558 ... 3567 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3664 ... 3673 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3792 ... 3801 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3872 ... 3881 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 4160 ... 4169 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 4240 ... 4249 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6112 ... 6121 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6160 ... 6169 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6470 ... 6479 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6608 ... 6617 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6784 ... 6793 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6800 ... 6809 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6992 ... 7001 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 7088 ... 7097 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 7232 ... 7241 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 7248 ... 7257 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 42528 ... 42537 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43216 ... 43225 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43264 ... 43273 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43472 ... 43481 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43504 ... 43513 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43600 ... 43609 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 44016 ... 44025 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 65296 ... 65305 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 66720 ... 66729 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 69734 ... 69743 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 69872 ... 69881 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 69942 ... 69951 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 70096 ... 70105 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 70384 ... 70393 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 70864 ... 70873 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71248 ... 71257 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71360 ... 71369 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71472 ... 71481 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71904 ... 71913 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 92768 ... 92777 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 93008 ... 93017 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 120782 ... 120831 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + _ => { + return __current_match; + } + } + } + 44 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 45 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 109 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 110 => /* 'n' */ { + __current_match = Some((27, __index + 1)); + __current_state = 59; + continue; + } + 111 ... 114 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 115 => /* 's' */ { + __current_match = Some((27, __index + 1)); + __current_state = 60; + continue; + } + 116 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 46 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 47 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 98 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 99 => /* 'c' */ { + __current_match = Some((27, __index + 1)); + __current_state = 61; + continue; + } + 100 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 48 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 49 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 => /* 'a' */ { + __current_match = Some((27, __index + 1)); + __current_state = 62; + continue; + } + 98 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 50 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 118 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 119 => /* 'w' */ { + __current_match = Some((17, __index + 1)); + __current_state = 63; + continue; + } + 120 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 51 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 116 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 117 => /* 'u' */ { + __current_match = Some((27, __index + 1)); + __current_state = 64; + continue; + } + 118 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 52 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 100 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 101 => /* 'e' */ { + __current_match = Some((27, __index + 1)); + __current_state = 65; + continue; + } + 102 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 53 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 111 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 112 => /* 'p' */ { + __current_match = Some((27, __index + 1)); + __current_state = 66; + continue; + } + 113 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 54 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 => /* 'a' */ { + __current_match = Some((27, __index + 1)); + __current_state = 67; + continue; + } + 98 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 55 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 100 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 101 => /* 'e' */ { + __current_match = Some((27, __index + 1)); + __current_state = 68; + continue; + } + 102 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 56 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((23, __index + 1)); + __current_state = 69; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 57 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 1632 ... 1641 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 1776 ... 1785 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 1984 ... 1993 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2406 ... 2415 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2534 ... 2543 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2662 ... 2671 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2790 ... 2799 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2918 ... 2927 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3046 ... 3055 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3174 ... 3183 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3302 ... 3311 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3430 ... 3439 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3558 ... 3567 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3664 ... 3673 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3792 ... 3801 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3872 ... 3881 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 4160 ... 4169 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 4240 ... 4249 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6112 ... 6121 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6160 ... 6169 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6470 ... 6479 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6608 ... 6617 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6784 ... 6793 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6800 ... 6809 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6992 ... 7001 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 7088 ... 7097 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 7232 ... 7241 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 7248 ... 7257 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 42528 ... 42537 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43216 ... 43225 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43264 ... 43273 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43472 ... 43481 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43504 ... 43513 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43600 ... 43609 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 44016 ... 44025 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 65296 ... 65305 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 66720 ... 66729 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 69734 ... 69743 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 69872 ... 69881 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 69942 ... 69951 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 70096 ... 70105 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 70384 ... 70393 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 70864 ... 70873 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71248 ... 71257 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71360 ... 71369 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71472 ... 71481 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71904 ... 71913 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 92768 ... 92777 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 93008 ... 93017 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 120782 ... 120831 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + _ => { + return __current_match; + } + } + } + 58 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 1632 ... 1641 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 1776 ... 1785 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 1984 ... 1993 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2406 ... 2415 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2534 ... 2543 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2662 ... 2671 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2790 ... 2799 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 2918 ... 2927 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3046 ... 3055 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3174 ... 3183 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3302 ... 3311 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3430 ... 3439 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3558 ... 3567 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3664 ... 3673 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3792 ... 3801 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 3872 ... 3881 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 4160 ... 4169 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 4240 ... 4249 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6112 ... 6121 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6160 ... 6169 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6470 ... 6479 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6608 ... 6617 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6784 ... 6793 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6800 ... 6809 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 6992 ... 7001 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 7088 ... 7097 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 7232 ... 7241 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 7248 ... 7257 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 42528 ... 42537 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43216 ... 43225 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43264 ... 43273 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43472 ... 43481 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43504 ... 43513 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 43600 ... 43609 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 44016 ... 44025 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 65296 ... 65305 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 66720 ... 66729 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 69734 ... 69743 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 69872 ... 69881 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 69942 ... 69951 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 70096 ... 70105 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 70384 ... 70393 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 70864 ... 70873 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71248 ... 71257 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71360 ... 71369 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71472 ... 71481 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 71904 ... 71913 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 92768 ... 92777 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 93008 ... 93017 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + 120782 ... 120831 => { + __current_match = Some((26, __index + __ch.len_utf8())); + __current_state = 58; + continue; + } + _ => { + return __current_match; + } + } + } + 59 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 100 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 101 => /* 'e' */ { + __current_match = Some((27, __index + 1)); + __current_state = 70; + continue; + } + 102 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 60 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((27, __index + 1)); + __current_state = 71; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 61 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 113 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 114 => /* 'r' */ { + __current_match = Some((27, __index + 1)); + __current_state = 72; + continue; + } + 115 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 62 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((27, __index + 1)); + __current_state = 73; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 63 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 64 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((18, __index + 1)); + __current_state = 74; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 65 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 107 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 108 => /* 'l' */ { + __current_match = Some((19, __index + 1)); + __current_state = 75; + continue; + } + 109 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 66 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 116 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 117 => /* 'u' */ { + __current_match = Some((27, __index + 1)); + __current_state = 76; + continue; + } + 118 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 67 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 108 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 109 => /* 'm' */ { + __current_match = Some((27, __index + 1)); + __current_state = 77; + continue; + } + 110 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 68 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 => /* 'a' */ { + __current_match = Some((27, __index + 1)); + __current_state = 78; + continue; + } + 98 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 69 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 70 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 98 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 99 => /* 'c' */ { + __current_match = Some((27, __index + 1)); + __current_state = 79; + continue; + } + 100 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 71 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 => /* 'a' */ { + __current_match = Some((27, __index + 1)); + __current_state = 80; + continue; + } + 98 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 72 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 100 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 101 => /* 'e' */ { + __current_match = Some((27, __index + 1)); + __current_state = 81; + continue; + } + 102 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 73 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 104 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 105 => /* 'i' */ { + __current_match = Some((27, __index + 1)); + __current_state = 82; + continue; + } + 106 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 74 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 75 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 76 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((20, __index + 1)); + __current_state = 83; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 77 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 100 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 101 => /* 'e' */ { + __current_match = Some((27, __index + 1)); + __current_state = 84; + continue; + } + 102 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 78 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 108 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 109 => /* 'm' */ { + __current_match = Some((22, __index + 1)); + __current_state = 85; + continue; + } + 110 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 79 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((11, __index + 1)); + __current_state = 86; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 80 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 109 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 110 => /* 'n' */ { + __current_match = Some((27, __index + 1)); + __current_state = 87; + continue; + } + 111 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 81 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((27, __index + 1)); + __current_state = 88; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 82 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 110 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 111 => /* 'o' */ { + __current_match = Some((27, __index + 1)); + __current_state = 89; + continue; + } + 112 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 83 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 84 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((27, __index + 1)); + __current_state = 90; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 85 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 86 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 87 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 115 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 116 => /* 't' */ { + __current_match = Some((12, __index + 1)); + __current_state = 91; + continue; + } + 117 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 88 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 100 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 101 => /* 'e' */ { + __current_match = Some((14, __index + 1)); + __current_state = 92; + continue; + } + 102 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 89 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 109 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 110 => /* 'n' */ { + __current_match = Some((16, __index + 1)); + __current_state = 93; + continue; + } + 111 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 90 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 100 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 101 => /* 'e' */ { + __current_match = Some((27, __index + 1)); + __current_state = 94; + continue; + } + 102 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 91 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 92 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 93 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 94 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 113 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 114 => /* 'r' */ { + __current_match = Some((21, __index + 1)); + __current_state = 95; + continue; + } + 115 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + 95 => { + let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; + match __ch as u32 { + 48 ... 57 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 65 ... 90 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + 95 => /* '_' */ { + __current_match = Some((27, __index + 1)); + __current_state = 29; + continue; + } + 97 ... 122 => { + __current_match = Some((27, __index + __ch.len_utf8())); + __current_state = 29; + continue; + } + _ => { + return __current_match; + } + } + } + _ => { panic!("invalid state {}", __current_state); } + } + } + } + + impl<'input> __Matcher<'input> { + pub fn new(s: &'input str) -> __Matcher<'input> { + __Matcher { text: s, consumed: 0 } + } + } + + impl<'input> Iterator for __Matcher<'input> { + type Item = Result<(usize, (usize, &'input str), usize), __lalrpop_util::ParseError>; + + fn next(&mut self) -> Option { + let __text = self.text.trim_left(); + let __whitespace = self.text.len() - __text.len(); + let __start_offset = self.consumed + __whitespace; + if __text.is_empty() { + self.text = __text; + self.consumed = __start_offset; + None + } else { + match __tokenize(__text) { + Some((__index, __length)) => { + let __result = &__text[..__length]; + let __remaining = &__text[__length..]; + let __end_offset = __start_offset + __length; + self.text = __remaining; + self.consumed = __end_offset; + Some(Ok((__start_offset, (__index, __result), __end_offset))) + } + None => { + Some(Err(__lalrpop_util::ParseError::InvalidToken { location: __start_offset })) + } + } + } + } + } +} + +#[allow(unused_variables)] +pub fn __action0< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, String, usize), +) -> String +{ + (__0) +} + +#[allow(unused_variables)] +pub fn __action1< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, i64, usize), +) -> i64 +{ + (__0) +} + +#[allow(unused_variables)] +pub fn __action2< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, f64, usize), +) -> f64 +{ + (__0) +} + +#[allow(unused_variables)] +pub fn __action3< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, ModelicaModel, usize), +) -> ModelicaModel +{ + (__0) +} + +#[allow(unused_variables)] +pub fn __action4< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> String +{ + __0.to_string() +} + +#[allow(unused_variables)] +pub fn __action5< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> String +{ + __0.to_string() +} + +#[allow(unused_variables)] +pub fn __action6< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> i64 +{ + i64::from_str(__0).unwrap() +} + +#[allow(unused_variables)] +pub fn __action7< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> f64 +{ + f64::from_str(__0).unwrap() +} + +#[allow(unused_variables)] +pub fn __action8< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, n, _): (usize, String, usize), + (_, cd, _): (usize, ::std::vec::Vec, usize), + (_, _, _): (usize, &'input str, usize), + (_, cc, _): (usize, ::std::vec::Vec, usize), + (_, se, _): (usize, ::std::vec::Vec, usize), + (_, _, _): (usize, &'input str, usize), + (_, _, _): (usize, String, usize), + (_, _, _): (usize, &'input str, usize), +) -> ModelicaModel +{ + ModelicaModel { name:n, components: cd, connections: cc, equations: se, extends: vec![] } +} + +#[allow(unused_variables)] +pub fn __action9< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, value, _): (usize, Expr, usize), +) -> Expr +{ + value +} + +#[allow(unused_variables)] +pub fn __action10< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, _, _): (usize, &'input str, usize), + (_, _, _): (usize, &'input str, usize), + (_, units, _): (usize, String, usize), + (_, _, _): (usize, &'input str, usize), +) -> String +{ + units +} + +#[allow(unused_variables)] +pub fn __action11< + 'input, +>( + input: &'input str, + (_, prefix, _): (usize, ::std::option::Option, usize), + (_, specifier, _): (usize, String, usize), + (_, name, _): (usize, String, usize), + (_, units, _): (usize, ::std::option::Option, usize), + (_, value, _): (usize, ::std::option::Option, usize), + (_, desc, _): (usize, ::std::option::Option, usize), + (_, _, _): (usize, &'input str, usize), +) -> Component +{ + Component { prefix:prefix, specifier:specifier, name:name, description:desc, value:value, units:units } +} + +#[allow(unused_variables)] +pub fn __action12< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> ComponentPrefix +{ + ComponentPrefix::Flow +} + +#[allow(unused_variables)] +pub fn __action13< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> ComponentPrefix +{ + ComponentPrefix::Stream +} + +#[allow(unused_variables)] +pub fn __action14< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> ComponentPrefix +{ + ComponentPrefix::Input +} + +#[allow(unused_variables)] +pub fn __action15< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> ComponentPrefix +{ + ComponentPrefix::Output +} + +#[allow(unused_variables)] +pub fn __action16< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> ComponentPrefix +{ + ComponentPrefix::Discrete +} + +#[allow(unused_variables)] +pub fn __action17< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> ComponentPrefix +{ + ComponentPrefix::Parameter +} + +#[allow(unused_variables)] +pub fn __action18< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, &'input str, usize), +) -> ComponentPrefix +{ + ComponentPrefix::Constant +} + +#[allow(unused_variables)] +pub fn __action19< + 'input, +>( + input: &'input str, + (_, lhs, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), + (_, rhs, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), +) -> SimpleEquation +{ + SimpleEquation {lhs:lhs, rhs:rhs} +} + +#[allow(unused_variables)] +pub fn __action20< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, _, _): (usize, &'input str, usize), + (_, a, _): (usize, String, usize), + (_, _, _): (usize, &'input str, usize), + (_, b, _): (usize, String, usize), + (_, _, _): (usize, &'input str, usize), + (_, _, _): (usize, &'input str, usize), +) -> Connection +{ + Connection { a: a.to_string(), b: b.to_string()} +} + +#[allow(unused_variables)] +pub fn __action21< + 'input, +>( + input: &'input str, + (_, lhs, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), + (_, rhs, _): (usize, Expr, usize), +) -> Expr +{ + Expr::BinExpr(BinOperator::Add, Box::new(lhs), Box::new(rhs)) +} + +#[allow(unused_variables)] +pub fn __action22< + 'input, +>( + input: &'input str, + (_, lhs, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), + (_, rhs, _): (usize, Expr, usize), +) -> Expr +{ + Expr::BinExpr(BinOperator::Subtract, Box::new(lhs), Box::new(rhs)) +} + +#[allow(unused_variables)] +pub fn __action23< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, Expr, usize), +) -> Expr +{ + (__0) +} + +#[allow(unused_variables)] +pub fn __action24< + 'input, +>( + input: &'input str, + (_, lhs, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), + (_, rhs, _): (usize, Expr, usize), +) -> Expr +{ + Expr::BinExpr(BinOperator::Multiply, Box::new(lhs), Box::new(rhs)) +} + +#[allow(unused_variables)] +pub fn __action25< + 'input, +>( + input: &'input str, + (_, lhs, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), + (_, rhs, _): (usize, Expr, usize), +) -> Expr +{ + Expr::BinExpr(BinOperator::Divide, Box::new(lhs), Box::new(rhs)) +} + +#[allow(unused_variables)] +pub fn __action26< + 'input, +>( + input: &'input str, + (_, lhs, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), + (_, rhs, _): (usize, Expr, usize), +) -> Expr +{ + Expr::BinExpr(BinOperator::Divide, Box::new(lhs), Box::new(rhs)) +} + +#[allow(unused_variables)] +pub fn __action27< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, t, _): (usize, Expr, usize), +) -> Expr +{ + Expr::BinExpr(BinOperator::Multiply, Box::new(Expr::Integer(-1)), Box::new(t)) +} + +#[allow(unused_variables)] +pub fn __action28< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, Expr, usize), +) -> Expr +{ + (__0) +} + +#[allow(unused_variables)] +pub fn __action29< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, i64, usize), +) -> Expr +{ + Expr::Integer(__0) +} + +#[allow(unused_variables)] +pub fn __action30< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, f64, usize), +) -> Expr +{ + Expr::Float(__0) +} + +#[allow(unused_variables)] +pub fn __action31< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, String, usize), +) -> Expr +{ + Expr::Ident(__0) +} + +#[allow(unused_variables)] +pub fn __action32< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, _, _): (usize, &'input str, usize), + (_, e, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), +) -> Expr +{ + Expr::Der(Box::new(e)) +} + +#[allow(unused_variables)] +pub fn __action33< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, _, _): (usize, &'input str, usize), + (_, e, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), +) -> Expr +{ + Expr::Abs(Box::new(e)) +} + +#[allow(unused_variables)] +pub fn __action34< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, e, _): (usize, Expr, usize), + (_, _, _): (usize, &'input str, usize), +) -> Expr +{ + e +} + +#[allow(unused_variables)] +pub fn __action35< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, String, usize), +) -> ::std::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +pub fn __action36< + 'input, +>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> ::std::option::Option +{ + None +} + +#[allow(unused_variables)] +pub fn __action37< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, Expr, usize), +) -> ::std::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +pub fn __action38< + 'input, +>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> ::std::option::Option +{ + None +} + +#[allow(unused_variables)] +pub fn __action39< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, String, usize), +) -> ::std::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +pub fn __action40< + 'input, +>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> ::std::option::Option +{ + None +} + +#[allow(unused_variables)] +pub fn __action41< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, ComponentPrefix, usize), +) -> ::std::option::Option +{ + Some(__0) +} + +#[allow(unused_variables)] +pub fn __action42< + 'input, +>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> ::std::option::Option +{ + None +} + +#[allow(unused_variables)] +pub fn __action43< + 'input, +>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> ::std::vec::Vec +{ + vec![] +} + +#[allow(unused_variables)] +pub fn __action44< + 'input, +>( + input: &'input str, + (_, v, _): (usize, ::std::vec::Vec, usize), +) -> ::std::vec::Vec +{ + v +} + +#[allow(unused_variables)] +pub fn __action45< + 'input, +>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> ::std::vec::Vec +{ + vec![] +} + +#[allow(unused_variables)] +pub fn __action46< + 'input, +>( + input: &'input str, + (_, v, _): (usize, ::std::vec::Vec, usize), +) -> ::std::vec::Vec +{ + v +} + +#[allow(unused_variables)] +pub fn __action47< + 'input, +>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> ::std::vec::Vec +{ + vec![] +} + +#[allow(unused_variables)] +pub fn __action48< + 'input, +>( + input: &'input str, + (_, v, _): (usize, ::std::vec::Vec, usize), +) -> ::std::vec::Vec +{ + v +} + +#[allow(unused_variables)] +pub fn __action49< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, Component, usize), +) -> ::std::vec::Vec +{ + vec![__0] +} + +#[allow(unused_variables)] +pub fn __action50< + 'input, +>( + input: &'input str, + (_, v, _): (usize, ::std::vec::Vec, usize), + (_, e, _): (usize, Component, usize), +) -> ::std::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +pub fn __action51< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, Connection, usize), +) -> ::std::vec::Vec +{ + vec![__0] +} + +#[allow(unused_variables)] +pub fn __action52< + 'input, +>( + input: &'input str, + (_, v, _): (usize, ::std::vec::Vec, usize), + (_, e, _): (usize, Connection, usize), +) -> ::std::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +pub fn __action53< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, SimpleEquation, usize), +) -> ::std::vec::Vec +{ + vec![__0] +} + +#[allow(unused_variables)] +pub fn __action54< + 'input, +>( + input: &'input str, + (_, v, _): (usize, ::std::vec::Vec, usize), + (_, e, _): (usize, SimpleEquation, usize), +) -> ::std::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +pub fn __action55< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, &'input str, usize), + __3: (usize, ::std::vec::Vec, usize), + __4: (usize, ::std::vec::Vec, usize), + __5: (usize, &'input str, usize), + __6: (usize, String, usize), + __7: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __1.2.clone(); + let __end0 = __2.0.clone(); + let __temp0 = __action47( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action8( + input, + __0, + __1, + __temp0, + __2, + __3, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +pub fn __action56< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, ::std::vec::Vec, usize), + __3: (usize, &'input str, usize), + __4: (usize, ::std::vec::Vec, usize), + __5: (usize, ::std::vec::Vec, usize), + __6: (usize, &'input str, usize), + __7: (usize, String, usize), + __8: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __2.0.clone(); + let __end0 = __2.2.clone(); + let __temp0 = __action48( + input, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action8( + input, + __0, + __1, + __temp0, + __3, + __4, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +pub fn __action57< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, ::std::option::Option, usize), + __5: (usize, ::std::option::Option, usize), + __6: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __0.0.clone(); + let __end0 = __0.2.clone(); + let __temp0 = __action41( + input, + __0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action11( + input, + __temp0, + __1, + __2, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +pub fn __action58< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, ::std::option::Option, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, ::std::option::Option, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __0.0.clone(); + let __end0 = __0.0.clone(); + let __temp0 = __action42( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action11( + input, + __temp0, + __0, + __1, + __2, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action59< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, &'input str, usize), + __3: (usize, ::std::vec::Vec, usize), + __4: (usize, &'input str, usize), + __5: (usize, String, usize), + __6: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __2.2.clone(); + let __end0 = __3.0.clone(); + let __temp0 = __action45( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action55( + input, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +pub fn __action60< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, &'input str, usize), + __3: (usize, ::std::vec::Vec, usize), + __4: (usize, ::std::vec::Vec, usize), + __5: (usize, &'input str, usize), + __6: (usize, String, usize), + __7: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action46( + input, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action55( + input, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +pub fn __action61< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, ::std::vec::Vec, usize), + __3: (usize, &'input str, usize), + __4: (usize, ::std::vec::Vec, usize), + __5: (usize, &'input str, usize), + __6: (usize, String, usize), + __7: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __3.2.clone(); + let __end0 = __4.0.clone(); + let __temp0 = __action45( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action56( + input, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +pub fn __action62< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, ::std::vec::Vec, usize), + __3: (usize, &'input str, usize), + __4: (usize, ::std::vec::Vec, usize), + __5: (usize, ::std::vec::Vec, usize), + __6: (usize, &'input str, usize), + __7: (usize, String, usize), + __8: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __4.0.clone(); + let __end0 = __4.2.clone(); + let __temp0 = __action46( + input, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action56( + input, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +pub fn __action63< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, &'input str, usize), + __3: (usize, &'input str, usize), + __4: (usize, String, usize), + __5: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __2.2.clone(); + let __end0 = __3.0.clone(); + let __temp0 = __action43( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action59( + input, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action64< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, &'input str, usize), + __3: (usize, ::std::vec::Vec, usize), + __4: (usize, &'input str, usize), + __5: (usize, String, usize), + __6: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action44( + input, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action59( + input, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +pub fn __action65< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, &'input str, usize), + __3: (usize, ::std::vec::Vec, usize), + __4: (usize, &'input str, usize), + __5: (usize, String, usize), + __6: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __3.2.clone(); + let __end0 = __4.0.clone(); + let __temp0 = __action43( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action60( + input, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +pub fn __action66< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, &'input str, usize), + __3: (usize, ::std::vec::Vec, usize), + __4: (usize, ::std::vec::Vec, usize), + __5: (usize, &'input str, usize), + __6: (usize, String, usize), + __7: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __4.0.clone(); + let __end0 = __4.2.clone(); + let __temp0 = __action44( + input, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action60( + input, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +pub fn __action67< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, ::std::vec::Vec, usize), + __3: (usize, &'input str, usize), + __4: (usize, &'input str, usize), + __5: (usize, String, usize), + __6: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __3.2.clone(); + let __end0 = __4.0.clone(); + let __temp0 = __action43( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action61( + input, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +pub fn __action68< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, ::std::vec::Vec, usize), + __3: (usize, &'input str, usize), + __4: (usize, ::std::vec::Vec, usize), + __5: (usize, &'input str, usize), + __6: (usize, String, usize), + __7: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __4.0.clone(); + let __end0 = __4.2.clone(); + let __temp0 = __action44( + input, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action61( + input, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +pub fn __action69< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, ::std::vec::Vec, usize), + __3: (usize, &'input str, usize), + __4: (usize, ::std::vec::Vec, usize), + __5: (usize, &'input str, usize), + __6: (usize, String, usize), + __7: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __4.2.clone(); + let __end0 = __5.0.clone(); + let __temp0 = __action43( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action62( + input, + __0, + __1, + __2, + __3, + __4, + __temp0, + __5, + __6, + __7, + ) +} + +#[allow(unused_variables)] +pub fn __action70< + 'input, +>( + input: &'input str, + __0: (usize, &'input str, usize), + __1: (usize, String, usize), + __2: (usize, ::std::vec::Vec, usize), + __3: (usize, &'input str, usize), + __4: (usize, ::std::vec::Vec, usize), + __5: (usize, ::std::vec::Vec, usize), + __6: (usize, &'input str, usize), + __7: (usize, String, usize), + __8: (usize, &'input str, usize), +) -> ModelicaModel +{ + let __start0 = __5.0.clone(); + let __end0 = __5.2.clone(); + let __temp0 = __action44( + input, + __5, + ); + let __temp0 = (__start0, __temp0, __end0); + __action62( + input, + __0, + __1, + __2, + __3, + __4, + __temp0, + __6, + __7, + __8, + ) +} + +#[allow(unused_variables)] +pub fn __action71< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, ::std::option::Option, usize), + __5: (usize, String, usize), + __6: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __5.0.clone(); + let __end0 = __5.2.clone(); + let __temp0 = __action35( + input, + __5, + ); + let __temp0 = (__start0, __temp0, __end0); + __action57( + input, + __0, + __1, + __2, + __3, + __4, + __temp0, + __6, + ) +} + +#[allow(unused_variables)] +pub fn __action72< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, ::std::option::Option, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __4.2.clone(); + let __end0 = __5.0.clone(); + let __temp0 = __action36( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action57( + input, + __0, + __1, + __2, + __3, + __4, + __temp0, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action73< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, ::std::option::Option, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, String, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __4.0.clone(); + let __end0 = __4.2.clone(); + let __temp0 = __action35( + input, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action58( + input, + __0, + __1, + __2, + __3, + __temp0, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action74< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, ::std::option::Option, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __3.2.clone(); + let __end0 = __4.0.clone(); + let __temp0 = __action36( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action58( + input, + __0, + __1, + __2, + __3, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action75< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, String, usize), + __4: (usize, ::std::option::Option, usize), + __5: (usize, String, usize), + __6: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action39( + input, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action71( + input, + __0, + __1, + __2, + __temp0, + __4, + __5, + __6, + ) +} + +#[allow(unused_variables)] +pub fn __action76< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, String, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.2.clone(); + let __end0 = __3.0.clone(); + let __temp0 = __action40( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action71( + input, + __0, + __1, + __2, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action77< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, String, usize), + __4: (usize, ::std::option::Option, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action39( + input, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action72( + input, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action78< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.2.clone(); + let __end0 = __3.0.clone(); + let __temp0 = __action40( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action72( + input, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action79< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, String, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.0.clone(); + let __end0 = __2.2.clone(); + let __temp0 = __action39( + input, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action73( + input, + __0, + __1, + __temp0, + __3, + __4, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action80< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, ::std::option::Option, usize), + __3: (usize, String, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __1.2.clone(); + let __end0 = __2.0.clone(); + let __temp0 = __action40( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action73( + input, + __0, + __1, + __temp0, + __2, + __3, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action81< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, ::std::option::Option, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.0.clone(); + let __end0 = __2.2.clone(); + let __temp0 = __action39( + input, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action74( + input, + __0, + __1, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action82< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, ::std::option::Option, usize), + __3: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __1.2.clone(); + let __end0 = __2.0.clone(); + let __temp0 = __action40( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action74( + input, + __0, + __1, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +pub fn __action83< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, String, usize), + __4: (usize, Expr, usize), + __5: (usize, String, usize), + __6: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __4.0.clone(); + let __end0 = __4.2.clone(); + let __temp0 = __action37( + input, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action75( + input, + __0, + __1, + __2, + __3, + __temp0, + __5, + __6, + ) +} + +#[allow(unused_variables)] +pub fn __action84< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, String, usize), + __4: (usize, String, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __3.2.clone(); + let __end0 = __4.0.clone(); + let __temp0 = __action38( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action75( + input, + __0, + __1, + __2, + __3, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action85< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, Expr, usize), + __4: (usize, String, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action37( + input, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action76( + input, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action86< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, String, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.2.clone(); + let __end0 = __3.0.clone(); + let __temp0 = __action38( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action76( + input, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action87< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, String, usize), + __4: (usize, Expr, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __4.0.clone(); + let __end0 = __4.2.clone(); + let __temp0 = __action37( + input, + __4, + ); + let __temp0 = (__start0, __temp0, __end0); + __action77( + input, + __0, + __1, + __2, + __3, + __temp0, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action88< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, String, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __3.2.clone(); + let __end0 = __4.0.clone(); + let __temp0 = __action38( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action77( + input, + __0, + __1, + __2, + __3, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action89< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, Expr, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action37( + input, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action78( + input, + __0, + __1, + __2, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action90< + 'input, +>( + input: &'input str, + __0: (usize, ComponentPrefix, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.2.clone(); + let __end0 = __3.0.clone(); + let __temp0 = __action38( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action78( + input, + __0, + __1, + __2, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +pub fn __action91< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, Expr, usize), + __4: (usize, String, usize), + __5: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action37( + input, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action79( + input, + __0, + __1, + __2, + __temp0, + __4, + __5, + ) +} + +#[allow(unused_variables)] +pub fn __action92< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, String, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.2.clone(); + let __end0 = __3.0.clone(); + let __temp0 = __action38( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action79( + input, + __0, + __1, + __2, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action93< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, Expr, usize), + __3: (usize, String, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.0.clone(); + let __end0 = __2.2.clone(); + let __temp0 = __action37( + input, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action80( + input, + __0, + __1, + __temp0, + __3, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action94< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __1.2.clone(); + let __end0 = __2.0.clone(); + let __temp0 = __action38( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action80( + input, + __0, + __1, + __temp0, + __2, + __3, + ) +} + +#[allow(unused_variables)] +pub fn __action95< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, Expr, usize), + __4: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __3.0.clone(); + let __end0 = __3.2.clone(); + let __temp0 = __action37( + input, + __3, + ); + let __temp0 = (__start0, __temp0, __end0); + __action81( + input, + __0, + __1, + __2, + __temp0, + __4, + ) +} + +#[allow(unused_variables)] +pub fn __action96< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, String, usize), + __3: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.2.clone(); + let __end0 = __3.0.clone(); + let __temp0 = __action38( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action81( + input, + __0, + __1, + __2, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +pub fn __action97< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, Expr, usize), + __3: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __2.0.clone(); + let __end0 = __2.2.clone(); + let __temp0 = __action37( + input, + __2, + ); + let __temp0 = (__start0, __temp0, __end0); + __action82( + input, + __0, + __1, + __temp0, + __3, + ) +} + +#[allow(unused_variables)] +pub fn __action98< + 'input, +>( + input: &'input str, + __0: (usize, String, usize), + __1: (usize, String, usize), + __2: (usize, &'input str, usize), +) -> Component +{ + let __start0 = __1.2.clone(); + let __end0 = __2.0.clone(); + let __temp0 = __action38( + input, + &__start0, + &__end0, + ); + let __temp0 = (__start0, __temp0, __end0); + __action82( + input, + __0, + __1, + __temp0, + __2, + ) +} + +pub trait __ToTriple<'input, > { + type Error; + fn to_triple(value: Self) -> Result<(usize,(usize, &'input str),usize),Self::Error>; +} + +impl<'input, > __ToTriple<'input, > for (usize, (usize, &'input str), usize) { + type Error = (); + fn to_triple(value: Self) -> Result<(usize,(usize, &'input str),usize),()> { + Ok(value) + } +} +impl<'input, > __ToTriple<'input, > for Result<(usize, (usize, &'input str), usize),()> { + type Error = (); + fn to_triple(value: Self) -> Result<(usize,(usize, &'input str),usize),()> { + value + } +} diff --git a/modelica-parser-lalrpop/tests/ast.rs b/modelica-parser-lalrpop/tests/ast.rs new file mode 100644 index 0000000..f9047cb --- /dev/null +++ b/modelica-parser-lalrpop/tests/ast.rs @@ -0,0 +1,56 @@ + +extern crate modelica_parser; + +use std::collections::HashSet; +use std::iter::FromIterator; +use modelica_parser::ast::*; + +fn set_eq(a: Vec, b: Vec) -> bool { + let set_a: HashSet = HashSet::from_iter(a); + let set_b: HashSet = HashSet::from_iter(b); + return set_a == set_b; +} + +#[test] +fn test_expr_identifiers() { + use modelica_parser::ast::Expr::*; + + assert!(set_eq( + vec![], + Integer(0).identifiers())); + assert!(set_eq( + vec!["x".to_string()], + Ident("x".to_string()).identifiers())); + assert!(set_eq( + vec!["x".to_string(), "y".to_string(), "z".to_string()], + BinExpr(BinOperator::Add, + Box::new(Abs(Box::new(Ident("z".to_string())))), + Box::new(BinExpr(BinOperator::Add, + Box::new(Abs(Box::new(Ident("x".to_string())))), + Box::new(Abs(Box::new(Ident("y".to_string()))))))).identifiers())); + assert!(set_eq( + vec!["z".to_string()], + BinExpr(BinOperator::Add, + Box::new(Ident("z".to_string())), + Box::new(Ident("z".to_string()))).identifiers())); +} + +#[test] +fn test_eqn_identifiers() { + use modelica_parser::ast::Expr::*; + + assert!(set_eq( + vec![], + SimpleEquation{ + lhs: Integer(0), + rhs: Integer(0), + }.identifiers())); + assert!(set_eq( + vec!["z".to_string()], + SimpleEquation{ + lhs: Ident("z".to_string()), + rhs: BinExpr(BinOperator::Add, + Box::new(Ident("z".to_string())), + Box::new(Ident("z".to_string()))), + }.identifiers())); +} diff --git a/modelica-parser-lalrpop/tests/parser.rs b/modelica-parser-lalrpop/tests/parser.rs new file mode 100644 index 0000000..f5f493a --- /dev/null +++ b/modelica-parser-lalrpop/tests/parser.rs @@ -0,0 +1,40 @@ + +extern crate modelica_parser; + +use modelica_parser::parser::{parse_integer, parse_float, parse_model}; + +#[test] +fn test_lexical() { + assert_eq!(&format!("{:?}", parse_integer("+123").unwrap()), + "123"); + assert_eq!(&format!("{:?}", parse_integer("-9").unwrap()), + "-9"); + assert_eq!(&format!("{:?}", parse_float("-1.0e0").unwrap()), + "-1"); + assert_eq!(&format!("{:?}", parse_float("123.456").unwrap()), + "123.456"); +} + +#[test] +fn test_parse() { + let example1 = +r#"model MinimalModel + Real x; +equation + x = 1; +end MinimalModel; +"#; + assert_eq!(&format!("{:?}", parse_model(example1).unwrap()), example1); + + let example2 = +r#"model MinimalModel + parameter Real a; + Real b; +equation + connect(a, b); + a = 1; + b = ((abs(a) + 2) / 4); +end MinimalModel; +"#; + assert_eq!(&format!("{:?}", parse_model(example2).unwrap()), example2); +} -- cgit v1.2.3