aboutsummaryrefslogtreecommitdiffstats
path: root/modelica-parser-lalrpop
diff options
context:
space:
mode:
Diffstat (limited to 'modelica-parser-lalrpop')
-rw-r--r--modelica-parser-lalrpop/.gitignore1
-rw-r--r--modelica-parser-lalrpop/Cargo.toml25
-rw-r--r--modelica-parser-lalrpop/examples/minimal.modelica6
-rw-r--r--modelica-parser-lalrpop/examples/minimal2.modelica8
-rw-r--r--modelica-parser-lalrpop/examples/minimal3.modelica8
-rw-r--r--modelica-parser-lalrpop/src/ast.rs241
-rw-r--r--modelica-parser-lalrpop/src/build.rs5
-rw-r--r--modelica-parser-lalrpop/src/lib.rs65
-rw-r--r--modelica-parser-lalrpop/src/parser.lalrpop97
-rw-r--r--modelica-parser-lalrpop/src/parser.rs15955
-rw-r--r--modelica-parser-lalrpop/tests/ast.rs56
-rw-r--r--modelica-parser-lalrpop/tests/parser.rs40
12 files changed, 16507 insertions, 0 deletions
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 <bnewbold@robocracy.org>"]
+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<Component>,
+ pub equations: Vec<SimpleEquation>,
+ pub connections: Vec<Connection>,
+ pub extends: Vec<String>,
+}
+
+#[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<ComponentPrefix>,
+ pub specifier: String,
+ pub name: String,
+ pub value: Option<Expr>,
+ pub units: Option<String>,
+ pub description: Option<String>,
+}
+
+#[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<Expr>),
+ Abs(Box<Expr>),
+ BinExpr(BinOperator, Box<Expr>, Box<Expr>),
+}
+
+#[derive(Copy, Clone, PartialEq)]
+pub enum BinOperator {
+ Multiply,
+ Divide,
+ Add,
+ Subtract,
+}
+
+//// Helpers
+
+impl ModelicaModel {
+
+ pub fn get_constant_vars(&self) -> HashMap<String,Option<Expr>> {
+ 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<String> {
+ // 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<String>, b: &Vec<String>) -> Vec<String> {
+ 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<String> {
+ 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<String> {
+ 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::<String>(),
+ std::iter::repeat("^").take(end - start).collect::<String>().red().bold());
+ }
+ line_start += line.len() + 1;
+ if line_start > end { break };
+ }
+ ret
+}
+
+pub fn pp_parseerror(raw: &str, pe: ParseError<usize, (usize, &str), ()>) -> 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:r#""[^"\\]*""#> => &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" <n:identifier> <cd:component_declaration*> "equation" <cc:connect_clause*> <se:simple_equation*> "end" identifier ";" =>
+ ModelicaModel { name:n, components: cd, connections: cc, equations: se, extends: vec![] },
+};
+
+value_declaration: Expr = {
+ "=" <value:expr> => value
+};
+
+units_declaration: String = {
+ "(" "unit" "=" <units:string_literal> ")" => units
+};
+
+component_declaration: Component = {
+ <prefix:component_prefix?> <specifier:identifier> <name:identifier> <units:units_declaration?> <value:value_declaration?> <desc:string_literal?> ";" =>
+ 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 = {
+ <lhs:expr> "=" <rhs:expr> ";" => SimpleEquation {lhs:lhs, rhs:rhs},
+};
+
+connect_clause: Connection = {
+ "connect" "(" <a:identifier> "," <b:identifier> ")" ";" =>
+ Connection { a: a.to_string(), b: b.to_string()},
+};
+
+// This weird expr/factor/term hierarchy is for binary operator precedence
+expr: Expr = {
+ <lhs:expr> "+" <rhs:factor> =>
+ Expr::BinExpr(BinOperator::Add, Box::new(lhs), Box::new(rhs)),
+ <lhs:expr> "-" <rhs:factor> =>
+ Expr::BinExpr(BinOperator::Subtract, Box::new(lhs), Box::new(rhs)),
+ factor,
+};
+
+factor: Expr = {
+ <lhs:factor> "*" <rhs:term> =>
+ Expr::BinExpr(BinOperator::Multiply, Box::new(lhs), Box::new(rhs)),
+ <lhs:factor> "/" <rhs:term> =>
+ Expr::BinExpr(BinOperator::Divide, Box::new(lhs), Box::new(rhs)),
+ <lhs:factor> "^" <rhs:term> =>
+ Expr::BinExpr(BinOperator::Divide, Box::new(lhs), Box::new(rhs)),
+ "-" <t:term> =>
+ 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" "(" <e:expr> ")" => Expr::Der(Box::new(e)),
+ "abs" "(" <e:expr> ")" => Expr::Abs(Box::new(e)),
+ "(" <e:expr> ")" => 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<usize, (usize, &'input str), ()>),
+ Nt____float(f64),
+ Nt____identifier(String),
+ Nt____integer(i64),
+ Nt____model(ModelicaModel),
+ Ntcomponent__declaration(Component),
+ Ntcomponent__declaration_2a(::std::vec::Vec<Component>),
+ Ntcomponent__declaration_2b(::std::vec::Vec<Component>),
+ Ntcomponent__prefix(ComponentPrefix),
+ Ntcomponent__prefix_3f(::std::option::Option<ComponentPrefix>),
+ Ntconnect__clause(Connection),
+ Ntconnect__clause_2a(::std::vec::Vec<Connection>),
+ Ntconnect__clause_2b(::std::vec::Vec<Connection>),
+ Ntexpr(Expr),
+ Ntfactor(Expr),
+ Ntfloat(f64),
+ Ntidentifier(String),
+ Ntinteger(i64),
+ Ntmodel(ModelicaModel),
+ Ntsimple__equation(SimpleEquation),
+ Ntsimple__equation_2a(::std::vec::Vec<SimpleEquation>),
+ Ntsimple__equation_2b(::std::vec::Vec<SimpleEquation>),
+ Ntstring__literal(String),
+ Ntstring__literal_3f(::std::option::Option<String>),
+ Ntterm(Expr),
+ Ntunits__declaration(String),
+ Ntunits__declaration_3f(::std::option::Option<String>),
+ Ntvalue__declaration(Expr),
+ Ntvalue__declaration_3f(::std::option::Option<Expr>),
+ }
+ 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<f64, __lalrpop_util::ParseError<usize, (usize, &'input str), ()>>
+ {
+ 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<i32>,
+ __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
+ _: ::std::marker::PhantomData<()>,
+ ) -> Option<Result<f64,__lalrpop_util::ParseError<usize, (usize, &'input str), ()>>>
+ {
+ 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, (usize, &'input str), ()>, 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<Component>, 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<Component>, 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<ComponentPrefix>, 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<Connection>, 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<Connection>, 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<SimpleEquation>, 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<SimpleEquation>, 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<String>, 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<String>, 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<Expr>, 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<usize, (usize, &'input str), ()>),
+ Nt____float(f64),
+ Nt____identifier(String),
+ Nt____integer(i64),
+ Nt____model(ModelicaModel),
+ Ntcomponent__declaration(Component),
+ Ntcomponent__declaration_2a(::std::vec::Vec<Component>),
+ Ntcomponent__declaration_2b(::std::vec::Vec<Component>),
+ Ntcomponent__prefix(ComponentPrefix),
+ Ntcomponent__prefix_3f(::std::option::Option<ComponentPrefix>),
+ Ntconnect__clause(Connection),
+ Ntconnect__clause_2a(::std::vec::Vec<Connection>),
+ Ntconnect__clause_2b(::std::vec::Vec<Connection>),
+ Ntexpr(Expr),
+ Ntfactor(Expr),
+ Ntfloat(f64),
+ Ntidentifier(String),
+ Ntinteger(i64),
+ Ntmodel(ModelicaModel),
+ Ntsimple__equation(SimpleEquation),
+ Ntsimple__equation_2a(::std::vec::Vec<SimpleEquation>),
+ Ntsimple__equation_2b(::std::vec::Vec<SimpleEquation>),
+ Ntstring__literal(String),
+ Ntstring__literal_3f(::std::option::Option<String>),
+ Ntterm(Expr),
+ Ntunits__declaration(String),
+ Ntunits__declaration_3f(::std::option::Option<String>),
+ Ntvalue__declaration(Expr),
+ Ntvalue__declaration_3f(::std::option::Option<Expr>),
+ }
+ 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<String, __lalrpop_util::ParseError<usize, (usize, &'input str), ()>>
+ {
+ 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<i32>,
+ __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
+ _: ::std::marker::PhantomData<()>,
+ ) -> Option<Result<String,__lalrpop_util::ParseError<usize, (usize, &'input str), ()>>>
+ {
+ 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, (usize, &'input str), ()>, 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<Component>, 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<Component>, 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<ComponentPrefix>, 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<Connection>, 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<Connection>, 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<SimpleEquation>, 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<SimpleEquation>, 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<String>, 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<String>, 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<Expr>, 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<usize, (usize, &'input str), ()>),
+ Nt____float(f64),
+ Nt____identifier(String),
+ Nt____integer(i64),
+ Nt____model(ModelicaModel),
+ Ntcomponent__declaration(Component),
+ Ntcomponent__declaration_2a(::std::vec::Vec<Component>),
+ Ntcomponent__declaration_2b(::std::vec::Vec<Component>),
+ Ntcomponent__prefix(ComponentPrefix),
+ Ntcomponent__prefix_3f(::std::option::Option<ComponentPrefix>),
+ Ntconnect__clause(Connection),
+ Ntconnect__clause_2a(::std::vec::Vec<Connection>),
+ Ntconnect__clause_2b(::std::vec::Vec<Connection>),
+ Ntexpr(Expr),
+ Ntfactor(Expr),
+ Ntfloat(f64),
+ Ntidentifier(String),
+ Ntinteger(i64),
+ Ntmodel(ModelicaModel),
+ Ntsimple__equation(SimpleEquation),
+ Ntsimple__equation_2a(::std::vec::Vec<SimpleEquation>),
+ Ntsimple__equation_2b(::std::vec::Vec<SimpleEquation>),
+ Ntstring__literal(String),
+ Ntstring__literal_3f(::std::option::Option<String>),
+ Ntterm(Expr),
+ Ntunits__declaration(String),
+ Ntunits__declaration_3f(::std::option::Option<String>),
+ Ntvalue__declaration(Expr),
+ Ntvalue__declaration_3f(::std::option::Option<Expr>),
+ }
+ 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<i64, __lalrpop_util::ParseError<usize, (usize, &'input str), ()>>
+ {
+ 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<i32>,
+ __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
+ _: ::std::marker::PhantomData<()>,
+ ) -> Option<Result<i64,__lalrpop_util::ParseError<usize, (usize, &'input str), ()>>>
+ {
+ 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, (usize, &'input str), ()>, 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<Component>, 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<Component>, 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<ComponentPrefix>, 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<Connection>, 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<Connection>, 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<SimpleEquation>, 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<SimpleEquation>, 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<String>, 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<String>, 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<Expr>, 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<usize, (usize, &'input str), ()>),
+ Nt____float(f64),
+ Nt____identifier(String),
+ Nt____integer(i64),
+ Nt____model(ModelicaModel),
+ Ntcomponent__declaration(Component),
+ Ntcomponent__declaration_2a(::std::vec::Vec<Component>),
+ Ntcomponent__declaration_2b(::std::vec::Vec<Component>),
+ Ntcomponent__prefix(ComponentPrefix),
+ Ntcomponent__prefix_3f(::std::option::Option<ComponentPrefix>),
+ Ntconnect__clause(Connection),
+ Ntconnect__clause_2a(::std::vec::Vec<Connection>),
+ Ntconnect__clause_2b(::std::vec::Vec<Connection>),
+ Ntexpr(Expr),
+ Ntfactor(Expr),
+ Ntfloat(f64),
+ Ntidentifier(String),
+ Ntinteger(i64),
+ Ntmodel(ModelicaModel),
+ Ntsimple__equation(SimpleEquation),
+ Ntsimple__equation_2a(::std::vec::Vec<SimpleEquation>),
+ Ntsimple__equation_2b(::std::vec::Vec<SimpleEquation>),
+ Ntstring__literal(String),
+ Ntstring__literal_3f(::std::option::Option<String>),
+ Ntterm(Expr),
+ Ntunits__declaration(String),
+ Ntunits__declaration_3f(::std::option::Option<String>),
+ Ntvalue__declaration(Expr),
+ Ntvalue__declaration_3f(::std::option::Option<Expr>),
+ }
+ 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<ModelicaModel, __lalrpop_util::ParseError<usize, (usize, &'input str), ()>>
+ {
+ 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<i32>,
+ __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>,
+ _: ::std::marker::PhantomData<()>,
+ ) -> Option<Result<ModelicaModel,__lalrpop_util::ParseError<usize, (usize, &'input str), ()>>>
+ {
+ 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, (usize, &'input str), ()>, 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<Component>, 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<Component>, 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<ComponentPrefix>, 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<Connection>, 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<Connection>, 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<SimpleEquation>, 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<SimpleEquation>, 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<String>, 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<String>, 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<Expr>, 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<usize,(usize, &'input str),()>>;
+
+ fn next(&mut self) -> Option<Self::Item> {
+ 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<Component>, usize),
+ (_, _, _): (usize, &'input str, usize),
+ (_, cc, _): (usize, ::std::vec::Vec<Connection>, usize),
+ (_, se, _): (usize, ::std::vec::Vec<SimpleEquation>, 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<ComponentPrefix>, usize),
+ (_, specifier, _): (usize, String, usize),
+ (_, name, _): (usize, String, usize),
+ (_, units, _): (usize, ::std::option::Option<String>, usize),
+ (_, value, _): (usize, ::std::option::Option<Expr>, usize),
+ (_, desc, _): (usize, ::std::option::Option<String>, 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<String>
+{
+ Some(__0)
+}
+
+#[allow(unused_variables)]
+pub fn __action36<
+ 'input,
+>(
+ input: &'input str,
+ __lookbehind: &usize,
+ __lookahead: &usize,
+) -> ::std::option::Option<String>
+{
+ None
+}
+
+#[allow(unused_variables)]
+pub fn __action37<
+ 'input,
+>(
+ input: &'input str,
+ (_, __0, _): (usize, Expr, usize),
+) -> ::std::option::Option<Expr>
+{
+ Some(__0)
+}
+
+#[allow(unused_variables)]
+pub fn __action38<
+ 'input,
+>(
+ input: &'input str,
+ __lookbehind: &usize,
+ __lookahead: &usize,
+) -> ::std::option::Option<Expr>
+{
+ None
+}
+
+#[allow(unused_variables)]
+pub fn __action39<
+ 'input,
+>(
+ input: &'input str,
+ (_, __0, _): (usize, String, usize),
+) -> ::std::option::Option<String>
+{
+ Some(__0)
+}
+
+#[allow(unused_variables)]
+pub fn __action40<
+ 'input,
+>(
+ input: &'input str,
+ __lookbehind: &usize,
+ __lookahead: &usize,
+) -> ::std::option::Option<String>
+{
+ None
+}
+
+#[allow(unused_variables)]
+pub fn __action41<
+ 'input,
+>(
+ input: &'input str,
+ (_, __0, _): (usize, ComponentPrefix, usize),
+) -> ::std::option::Option<ComponentPrefix>
+{
+ Some(__0)
+}
+
+#[allow(unused_variables)]
+pub fn __action42<
+ 'input,
+>(
+ input: &'input str,
+ __lookbehind: &usize,
+ __lookahead: &usize,
+) -> ::std::option::Option<ComponentPrefix>
+{
+ None
+}
+
+#[allow(unused_variables)]
+pub fn __action43<
+ 'input,
+>(
+ input: &'input str,
+ __lookbehind: &usize,
+ __lookahead: &usize,
+) -> ::std::vec::Vec<SimpleEquation>
+{
+ vec![]
+}
+
+#[allow(unused_variables)]
+pub fn __action44<
+ 'input,
+>(
+ input: &'input str,
+ (_, v, _): (usize, ::std::vec::Vec<SimpleEquation>, usize),
+) -> ::std::vec::Vec<SimpleEquation>
+{
+ v
+}
+
+#[allow(unused_variables)]
+pub fn __action45<
+ 'input,
+>(
+ input: &'input str,
+ __lookbehind: &usize,
+ __lookahead: &usize,
+) -> ::std::vec::Vec<Connection>
+{
+ vec![]
+}
+
+#[allow(unused_variables)]
+pub fn __action46<
+ 'input,
+>(
+ input: &'input str,
+ (_, v, _): (usize, ::std::vec::Vec<Connection>, usize),
+) -> ::std::vec::Vec<Connection>
+{
+ v
+}
+
+#[allow(unused_variables)]
+pub fn __action47<
+ 'input,
+>(
+ input: &'input str,
+ __lookbehind: &usize,
+ __lookahead: &usize,
+) -> ::std::vec::Vec<Component>
+{
+ vec![]
+}
+
+#[allow(unused_variables)]
+pub fn __action48<
+ 'input,
+>(
+ input: &'input str,
+ (_, v, _): (usize, ::std::vec::Vec<Component>, usize),
+) -> ::std::vec::Vec<Component>
+{
+ v
+}
+
+#[allow(unused_variables)]
+pub fn __action49<
+ 'input,
+>(
+ input: &'input str,
+ (_, __0, _): (usize, Component, usize),
+) -> ::std::vec::Vec<Component>
+{
+ vec![__0]
+}
+
+#[allow(unused_variables)]
+pub fn __action50<
+ 'input,
+>(
+ input: &'input str,
+ (_, v, _): (usize, ::std::vec::Vec<Component>, usize),
+ (_, e, _): (usize, Component, usize),
+) -> ::std::vec::Vec<Component>
+{
+ { 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<Connection>
+{
+ vec![__0]
+}
+
+#[allow(unused_variables)]
+pub fn __action52<
+ 'input,
+>(
+ input: &'input str,
+ (_, v, _): (usize, ::std::vec::Vec<Connection>, usize),
+ (_, e, _): (usize, Connection, usize),
+) -> ::std::vec::Vec<Connection>
+{
+ { 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<SimpleEquation>
+{
+ vec![__0]
+}
+
+#[allow(unused_variables)]
+pub fn __action54<
+ 'input,
+>(
+ input: &'input str,
+ (_, v, _): (usize, ::std::vec::Vec<SimpleEquation>, usize),
+ (_, e, _): (usize, SimpleEquation, usize),
+) -> ::std::vec::Vec<SimpleEquation>
+{
+ { 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<Connection>, usize),
+ __4: (usize, ::std::vec::Vec<SimpleEquation>, 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<Component>, usize),
+ __3: (usize, &'input str, usize),
+ __4: (usize, ::std::vec::Vec<Connection>, usize),
+ __5: (usize, ::std::vec::Vec<SimpleEquation>, 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<String>, usize),
+ __4: (usize, ::std::option::Option<Expr>, usize),
+ __5: (usize, ::std::option::Option<String>, 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<String>, usize),
+ __3: (usize, ::std::option::Option<Expr>, usize),
+ __4: (usize, ::std::option::Option<String>, 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<SimpleEquation>, 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<Connection>, usize),
+ __4: (usize, ::std::vec::Vec<SimpleEquation>, 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<Component>, usize),
+ __3: (usize, &'input str, usize),
+ __4: (usize, ::std::vec::Vec<SimpleEquation>, 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<Component>, usize),
+ __3: (usize, &'input str, usize),
+ __4: (usize, ::std::vec::Vec<Connection>, usize),
+ __5: (usize, ::std::vec::Vec<SimpleEquation>, 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<SimpleEquation>, 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<Connection>, 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<Connection>, usize),
+ __4: (usize, ::std::vec::Vec<SimpleEquation>, 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<Component>, 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<Component>, usize),
+ __3: (usize, &'input str, usize),
+ __4: (usize, ::std::vec::Vec<SimpleEquation>, 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<Component>, usize),
+ __3: (usize, &'input str, usize),
+ __4: (usize, ::std::vec::Vec<Connection>, 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<Component>, usize),
+ __3: (usize, &'input str, usize),
+ __4: (usize, ::std::vec::Vec<Connection>, usize),
+ __5: (usize, ::std::vec::Vec<SimpleEquation>, 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<String>, usize),
+ __4: (usize, ::std::option::Option<Expr>, 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<String>, usize),
+ __4: (usize, ::std::option::Option<Expr>, 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<String>, usize),
+ __3: (usize, ::std::option::Option<Expr>, 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<String>, usize),
+ __3: (usize, ::std::option::Option<Expr>, 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<Expr>, 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<Expr>, 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<Expr>, 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<Expr>, 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<Expr>, 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<Expr>, 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<Expr>, 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<Expr>, 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<String>, b: Vec<String>) -> bool {
+ let set_a: HashSet<String> = HashSet::from_iter(a);
+ let set_b: HashSet<String> = 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);
+}