From e4013a008cdc10eba385b2aab16396d6bb2033dd Mon Sep 17 00:00:00 2001 From: Yehuda Katz Date: Wed, 29 May 2019 08:26:45 -0700 Subject: [PATCH] Custom lexer --- Cargo.lock | 72 +++ Cargo.toml | 5 + src/parser.rs | 1 + src/parser/lexer.rs | 585 +++++++++++++++++ src/parser/parser.lalrpop | 24 +- src/parser/parser.rs | 1247 ++++++++++++++++++------------------- 6 files changed, 1286 insertions(+), 648 deletions(-) create mode 100644 src/parser/lexer.rs diff --git a/Cargo.lock b/Cargo.lock index 67b09034d1..6c454a71c6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -379,6 +379,15 @@ dependencies = [ "memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ctor" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "cursive" version = "0.12.0" @@ -501,6 +510,11 @@ dependencies = [ "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "difference" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "directories" version = "1.0.2" @@ -910,6 +924,27 @@ dependencies = [ "cfg-if 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "logos" +version = "0.10.0-rc2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "logos-derive 0.10.0-rc2 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "logos-derive" +version = "0.10.0-rc2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "proc-macro2 0.4.30 (registry+https://github.com/rust-lang/crates.io-index)", + "quote 0.6.12 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "syn 0.15.34 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "maplit" version = "1.0.1" @@ -1015,9 +1050,12 @@ dependencies = [ "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", "lalrpop-util 0.17.0 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "logos 0.10.0-rc2 (registry+https://github.com/rust-lang/crates.io-index)", + "logos-derive 0.10.0-rc2 (registry+https://github.com/rust-lang/crates.io-index)", "nom 5.0.0-beta1 (registry+https://github.com/rust-lang/crates.io-index)", "ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "pancurses 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)", + "pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)", "pretty_env_logger 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "prettyprint 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "prettytable-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1129,6 +1167,14 @@ dependencies = [ "num-traits 0.2.7 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "output_vt100" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "winapi 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "owning_ref" version = "0.4.0" @@ -1214,6 +1260,17 @@ dependencies = [ "xml-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "pretty_assertions" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ctor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", + "difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "pretty_env_logger" version = "0.3.0" @@ -1452,6 +1509,14 @@ name = "rustc-demangle" version = "0.1.14" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "rustc-hash" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "rustc_version" version = "0.2.3" @@ -1988,6 +2053,7 @@ dependencies = [ "checksum crossbeam-utils 0.6.5 (registry+https://github.com/rust-lang/crates.io-index)" = "f8306fcef4a7b563b76b7dd949ca48f52bc1141aa067d2ea09565f3e2652aa5c" "checksum csv 1.0.7 (registry+https://github.com/rust-lang/crates.io-index)" = "9044e25afb0924b5a5fc5511689b0918629e85d68ea591e5e87fbf1e85ea1b3b" "checksum csv-core 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)" = "fa5cdef62f37e6ffe7d1f07a381bc0db32b7a3ff1cac0de56cb0d81e71f53d65" +"checksum ctor 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "3b4c17619643c1252b5f690084b82639dd7fac141c57c8e77a00e0148132092c" "checksum cursive 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b7ecc7282b5361471b607c26f44148205607e26d48a2fc65bd16e7619b1ebb78" "checksum darling 0.8.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9158d690bc62a3a57c3e45b85e4d50de2008b39345592c64efd79345c7e24be0" "checksum darling 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fcfbcb0c5961907597a7d1148e3af036268f2b773886b8bb3eeb1e1281d3d3d6" @@ -1998,6 +2064,7 @@ dependencies = [ "checksum derive-new 0.5.6 (registry+https://github.com/rust-lang/crates.io-index)" = "6ca414e896ae072546f4d789f452daaecf60ddee4c9df5dc6d5936d769e3d87c" "checksum derive_builder 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "a0ca533e6abb78f9108585535ce2ae0b14c8b4504e138a9a28eaf8ba2b270c1d" "checksum derive_builder_core 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "fb484fe06ba1dc5b82f88aff700191dfc127e02b06b35e302c169706168e2528" +"checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" "checksum directories 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "72d337a64190607d4fcca2cb78982c5dd57f4916e19696b48a575fa746b6cb0f" "checksum dirs 1.0.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3fd78930633bd1c6e35c4b42b1df7b0cbc6bc191146e512bb3bedf243fcc3901" "checksum dunce 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d0ad6bf6a88548d1126045c413548df1453d9be094a8ab9fd59bf1fdd338da4f" @@ -2049,6 +2116,8 @@ dependencies = [ "checksum linked-hash-map 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "ae91b68aebc4ddb91978b11a1b02ddd8602a05ec19002801c5666000e05e0f83" "checksum lock_api 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ed946d4529956a20f2d63ebe1b69996d5a2137c91913fe3ebbeff957f5bca7ff" "checksum log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "c84ec4b527950aa83a329754b01dbe3f58361d1c5efacd1f6d68c494d08a17c6" +"checksum logos 0.10.0-rc2 (registry+https://github.com/rust-lang/crates.io-index)" = "e136962e0902a48fd1d8da8706fac078fdba547bf82f9d9d728cf551d367b41e" +"checksum logos-derive 0.10.0-rc2 (registry+https://github.com/rust-lang/crates.io-index)" = "5f03ecd1d993aacc6c4f3a9540e60a4f3811ddac2276dbb66dad4d42671bd5bf" "checksum maplit 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "08cbb6b4fef96b6d77bfc40ec491b1690c779e77b05cd9f07f787ed376fd4c43" "checksum memchr 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2efc7bc57c883d4a4d6e3246905283d8dae951bb3bd32f49d6ef297f546e1c39" "checksum memoffset 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0f9dc261e2b62d7a622bf416ea3c5245cdd5d9a7fcc428c0d06804dfce1775b3" @@ -2070,6 +2139,7 @@ dependencies = [ "checksum onig 4.3.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a646989adad8a19f49be2090374712931c3a59835cb5277b4530f48b417f26e7" "checksum onig_sys 69.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "388410bf5fa341f10e58e6db3975f4bea1ac30247dd79d37a9e5ced3cb4cc3b0" "checksum ordered-float 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "18869315e81473c951eb56ad5558bbc56978562d3ecfb87abb7a1e944cea4518" +"checksum output_vt100 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "53cdc5b785b7a58c5aad8216b3dfa114df64b0b06ae6e1501cef91df2fbdf8f9" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" "checksum pancurses 0.16.1 (registry+https://github.com/rust-lang/crates.io-index)" = "d3058bc37c433096b2ac7afef1c5cdfae49ede0a4ffec3dfc1df1df0959d0ff0" "checksum parking_lot 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "fa7767817701cce701d5585b9c4db3cdd02086398322c1d7e8bf5094a96a2ce7" @@ -2079,6 +2149,7 @@ dependencies = [ "checksum pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)" = "5894c618ce612a3fa23881b152b608bafb8c56cfc22f434a3ba3120b40f7b587" "checksum pkg-config 0.3.14 (registry+https://github.com/rust-lang/crates.io-index)" = "676e8eb2b1b4c9043511a9b7bea0915320d7e502b0a079fb03f9635a5252b18c" "checksum plist 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "f4739851c08dd9a62a78beff2edf1a438517268b2c563c42fc6d9d3139e42d2a" +"checksum pretty_assertions 0.6.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f81e1644e1b54f5a68959a29aa86cde704219254669da328ecfdf6a1f09d427" "checksum pretty_env_logger 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df8b3f4e0475def7d9c2e5de8e5a1306949849761e107b360d03e98eafaffd61" "checksum prettyprint 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2705417f8aa07cb6308db42e55623479c1c9667942a4d5e4174c684e5da5590d" "checksum prettytable-rs 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0fd04b170004fa2daccf418a7f8253aaf033c27760b5f225889024cf66d7ac2e" @@ -2104,6 +2175,7 @@ dependencies = [ "checksum regex 1.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "8f0a0bcab2fd7d1d7c54fa9eae6f43eddeb9ce2e7352f8518a814a4f65d60c58" "checksum regex-syntax 0.6.6 (registry+https://github.com/rust-lang/crates.io-index)" = "dcfd8681eebe297b81d98498869d4aae052137651ad7b96822f09ceb690d0a96" "checksum rustc-demangle 0.1.14 (registry+https://github.com/rust-lang/crates.io-index)" = "ccc78bfd5acd7bf3e89cffcf899e5cb1a52d6fafa8dec2739ad70c9577a57288" +"checksum rustc-hash 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7540fc8b0c49f096ee9c961cda096467dce8084bec6bdca2fc83895fd9b28cb8" "checksum rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)" = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" "checksum rustyline 4.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "0f47ea1ceb347d2deae482d655dc8eef4bd82363d3329baffa3818bd76fea48b" "checksum ryu 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "b96a9549dc8d48f2c283938303c4b5a77aa29bfbc5b54b084fb1630408899a8f" diff --git a/Cargo.toml b/Cargo.toml index 403cc6abc8..119ef2a97c 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,7 +41,12 @@ serde = "1.0.91" serde_json = "1.0.39" serde_derive = "1.0.91" getset = "0.0.7" +logos = "0.10.0-rc2" +logos-derive = "0.10.0-rc2" [dependencies.pancurses] version = "0.16" features = ["win32a"] + +[dev-dependencies] +pretty_assertions = "0.6.1" diff --git a/src/parser.rs b/src/parser.rs index 735a9be807..0db1752686 100644 --- a/src/parser.rs +++ b/src/parser.rs @@ -1,5 +1,6 @@ crate mod ast; crate mod completer; +crate mod lexer; crate mod parser; crate mod registry; diff --git a/src/parser/lexer.rs b/src/parser/lexer.rs new file mode 100644 index 0000000000..6c1b688ff5 --- /dev/null +++ b/src/parser/lexer.rs @@ -0,0 +1,585 @@ +use crate::errors::ShellError; +use derive_new::new; +use logos_derive::Logos; +use std::ops::Range; + +#[derive(Debug, Clone, Copy, Eq, PartialEq, Logos)] +#[extras = "LexerState"] +crate enum TopToken { + #[error] + Error, + + #[end] + END, + + #[regex = "-?[0-9]+"] + Num, + + #[regex = r#"'([^']|\\')*'"#] + SQString, + + #[regex = r#""([^"]|\\")*""#] + DQString, + + #[regex = "-?[0-9]+[A-Za-z]+"] + Size, + + #[regex = r"\$"] + #[callback = "start_variable"] + Dollar, + + #[regex = r#"[^\s0-9"'$\-][^\s"'\.]*"#] + #[callback = "end_bare_variable"] + Bare, + + #[token = "|"] + Pipe, + + #[token = "."] + Dot, + + #[token = "{"] + OpenBrace, + + #[token = "}"] + CloseBrace, + + #[token = "("] + OpenParen, + + #[token = ")"] + CloseParen, + + #[token = ">"] + OpGt, + + #[token = "<"] + OpLt, + + #[token = ">="] + OpGte, + + #[token = "<="] + OpLte, + + #[token = "=="] + OpEq, + + #[token = "!="] + OpNeq, + + #[regex = r"\s+"] + Whitespace, +} + +fn start_variable(lex: &mut logos::Lexer) { + println!("start_variable EXTRAS={:?}", lex.extras); + lex.extras.current = LexerStateName::Var; +} + +fn end_bare_variable(lex: &mut logos::Lexer) { + println!("end_variable EXTRAS={:?}", lex.extras); + lex.extras.current = LexerStateName::AfterVariableToken; +} + +#[derive(Logos, Debug, Clone, Copy, Eq, PartialEq)] +#[extras = "LexerState"] +crate enum VariableToken { + #[error] + Error, + + #[end] + END, + + #[regex = r"[A-Za-z][A-Za-z0-9\-?!]*"] + #[callback = "end_variable"] + Variable, +} + +fn end_variable(lex: &mut logos::Lexer) { + println!("end_variable EXTRAS={:?}", lex.extras); + lex.extras.current = LexerStateName::AfterVariableToken; +} + +#[derive(Logos, Debug, Clone, Copy, Eq, PartialEq)] +#[extras = "LexerState"] +crate enum AfterVariableToken { + #[error] + Error, + + #[end] + END, + + #[token = "."] + #[callback = "start_member"] + Dot, + + #[regex = r"\s"] + #[callback = "terminate_variable"] + Whitespace, +} + +fn start_member(lex: &mut logos::Lexer) { + println!("start_variable EXTRAS={:?}", lex.extras); + lex.extras.current = LexerStateName::AfterMemberDot; +} + +fn terminate_variable(lex: &mut logos::Lexer) { + println!("terminate_variable EXTRAS={:?}", lex.extras); + lex.extras.current = LexerStateName::Top; +} + +#[derive(Logos, Debug, Clone, Copy, Eq, PartialEq)] +#[extras = "LexerState"] +crate enum AfterMemberDot { + #[error] + Error, + + #[end] + END, + + #[regex = r"[A-Za-z][A-Za-z0-9\-?!]*"] + #[callback = "finish_member"] + Member, + + #[regex = r"\s"] + Whitespace, +} + +fn finish_member(lex: &mut logos::Lexer) { + println!("finish_member EXTRAS={:?}", lex.extras); + lex.extras.current = LexerStateName::AfterVariableToken; +} + +#[derive(Debug, Clone, Copy)] +crate enum LexerStateName { + Top, + Var, + AfterMemberDot, + AfterVariableToken, +} + +impl Default for LexerStateName { + fn default() -> LexerStateName { + LexerStateName::Top + } +} + +#[derive(Debug, Clone, Default)] +crate struct LexerState { + current: LexerStateName, +} + +impl logos::Extras for LexerState { + fn on_advance(&mut self) {} + fn on_whitespace(&mut self, _byte: u8) {} +} + +#[derive(new, Debug, Clone, Eq, PartialEq)] +crate struct SpannedToken<'source, T> { + span: std::ops::Range, + slice: &'source str, + token: T, +} + +#[derive(Debug, Clone, Eq, PartialEq)] +crate enum Token<'source> { + Top(SpannedToken<'source, TopToken>), + Var(SpannedToken<'source, VariableToken>), + Dot(SpannedToken<'source, &'source str>), + Member(SpannedToken<'source, &'source str>), + Whitespace(SpannedToken<'source, &'source str>), +} + +impl Token<'source> { + crate fn range(&self) -> &Range { + match self { + Token::Top(spanned) => &spanned.span, + Token::Var(spanned) => &spanned.span, + Token::Dot(spanned) => &spanned.span, + Token::Member(spanned) => &spanned.span, + Token::Whitespace(spanned) => &spanned.span, + } + } + + crate fn slice(&self) -> &str { + match self { + Token::Top(spanned) => spanned.slice, + Token::Var(spanned) => spanned.slice, + Token::Dot(spanned) => spanned.slice, + Token::Member(spanned) => spanned.slice, + Token::Whitespace(spanned) => spanned.slice, + } + } +} + +crate struct Lexer<'source> { + lexer: logos::Lexer, + first: bool, + // state: LexerState, +} + +impl Lexer<'source> { + crate fn new(source: &str) -> Lexer<'_> { + Lexer { + first: true, + lexer: logos::Logos::lexer(source), + // state: LexerState::default(), + } + } +} + +impl Iterator for Lexer<'source> { + type Item = Result, ShellError>; + + fn next(&mut self) -> Option { + if self.first { + self.first = false; + + match self.lexer.token { + TopToken::END => None, + TopToken::Whitespace => Some(Ok(Token::Whitespace(SpannedToken::new( + self.lexer.range(), + self.lexer.slice(), + self.lexer.slice(), + )))), + _ => { + let token = Token::Top(SpannedToken::new( + self.lexer.range(), + self.lexer.slice(), + self.lexer.token, + )); + Some(Ok(token)) + } + } + } else { + println!("STATE={:?}", self.lexer.extras); + + match self.lexer.extras.current { + LexerStateName::Top => { + let (lexer, range, slice, token) = advance::(self.lexer.clone()); + self.lexer = lexer; + + match token { + TopToken::END => None, + TopToken::Whitespace => Some(Ok(Token::Whitespace(SpannedToken::new( + range, slice, slice, + )))), + other => { + let token = Token::Top(SpannedToken::new(range, slice, other)); + Some(Ok(token)) + } + } + } + + LexerStateName::AfterMemberDot => { + let (lexer, range, slice, token) = + advance::(self.lexer.clone()); + self.lexer = lexer; + + match token { + AfterMemberDot::END => None, + AfterMemberDot::Error => { + Some(Err(ShellError::string(&format!("Lex error at {}", slice)))) + } + AfterMemberDot::Whitespace => Some(Ok(Token::Whitespace( + SpannedToken::new(range, slice, slice), + ))), + AfterMemberDot::Member => { + Some(Ok(Token::Member(SpannedToken::new(range, slice, slice)))) + } + } + } + + LexerStateName::AfterVariableToken => { + let (lexer, range, slice, token) = + advance::(self.lexer.clone()); + self.lexer = lexer; + + match token { + AfterVariableToken::END => None, + AfterVariableToken::Error => { + Some(Err(ShellError::string(&format!("Lex error at {}", slice)))) + } + AfterVariableToken::Whitespace => Some(Ok(Token::Whitespace( + SpannedToken::new(range, slice, slice), + ))), + AfterVariableToken::Dot => { + Some(Ok(Token::Dot(SpannedToken::new(range, slice, slice)))) + } + } + } + + LexerStateName::Var => { + let (lexer, range, slice, token) = advance::(self.lexer.clone()); + self.lexer = lexer; + + match token { + VariableToken::END => None, + other => { + let token = Token::Var(SpannedToken::new(range, slice, other)); + Some(Ok(token)) + } + } + } + } + } + } +} + +fn advance( + lexer: logos::Lexer, +) -> ( + logos::Lexer, + Range, + &'source str, + T, +) +where + T: logos::Logos + logos::source::WithSource<&'source str> + Copy, +{ + let lexer = lexer.advance_as::(); + let token = &lexer.token; + let range = lexer.range(); + let slice = lexer.slice(); + (lexer.clone().morph::(), range, slice, *token) +} + +#[cfg(test)] +mod tests { + use super::*; + use logos::Logos; + use pretty_assertions::assert_eq; + + fn assert_lex(source: &str, tokens: &[TestToken<'_>]) { + let lex = Lexer::new(source); + let mut current = 0; + + let expected_tokens: Vec = tokens + .iter() + .map(|token_desc| { + println!("{:?}", token_desc); + + let len = token_desc.source.len(); + let range = current..(current + len); + let token = token_desc.to_token(range); + + current = current + len; + + token + }) + .collect(); + + let actual_tokens: Result, _> = lex + .map(|i| { + println!("{:?}", i); + i + }) + .collect(); + + let actual_tokens = actual_tokens.unwrap(); + + assert_eq!(actual_tokens, expected_tokens); + } + + #[derive(Debug)] + enum TokenDesc { + Ws, + Member, + Top(TopToken), + Var(VariableToken), + } + + #[derive(Debug, new)] + struct TestToken<'source> { + desc: TokenDesc, + source: &'source str, + } + + impl TestToken<'source> { + fn to_token(&self, span: std::ops::Range) -> Token { + match self.desc { + TokenDesc::Top(TopToken::Dot) => { + Token::Dot(SpannedToken::new(span, self.source, ".")) + } + TokenDesc::Top(tok) => Token::Top(SpannedToken::new(span, self.source, tok)), + TokenDesc::Var(tok) => Token::Var(SpannedToken::new(span, self.source, tok)), + TokenDesc::Member => { + Token::Member(SpannedToken::new(span, self.source, self.source)) + } + TokenDesc::Ws => { + Token::Whitespace(SpannedToken::new(span, self.source, self.source)) + } + } + } + } + + macro_rules! chomp_tokens { + { rest = { SP $($rest:tt)* }, accum = [ $($accum:tt)* ] } => { + chomp_tokens! { rest = { $($rest)* }, accum = [ $($accum)* { SP } ] } + }; + + { rest = { ws($expr:expr) $($rest:tt)* }, accum = [ $($accum:tt)* ] } => { + chomp_tokens! { rest = { $($rest)* }, accum = [ $($accum)* { ws($expr) } ] } + }; + + { rest = { $id:ident ( $expr:expr ) $($rest:tt)* }, accum = [ $($accum:tt)* ] } => { + chomp_tokens! { rest = { $($rest)* }, accum = [ $($accum)* { tok(stringify!($id), $expr) } ] } + }; + + { rest = { $token:tt $($rest:tt)* }, accum = [ $($accum:tt)* ] } => { + chomp_tokens! { rest = { $($rest)* }, accum = [ $($accum)* { tk($token) } ] } + }; + + { rest = { }, accum = [ $({ $($tokens:tt)* })* ] } => { + &[ $($($tokens)*),* ] + } + } + + macro_rules! tokens { + ($($tokens:tt)*) => { + chomp_tokens! { rest = { $($tokens)* }, accum = [] } + }; + } + + #[test] + fn test_tokenize_number() { + assert_lex("123", tokens![Num("123")]); + // assert_lex("123", &[tok("Num", "123")]); + assert_lex( + "123 456 789", + tokens![Num("123") SP Num("456") SP Num("789")], + ); + + assert_lex("-123", tokens![Num("-123")]); + + assert_lex( + "123 -456 789", + tokens![ + Num("123") + ws(" ") + Num("-456") + ws(" ") + Num("789") + ], + ) + } + + #[test] + fn test_tokenize_variable() { + assert_lex("$var", tokens![ "$" Var("var")]); + } + + #[test] + fn test_tokenize_string() { + assert_lex( + r#" "hello world" "#, + tokens![ SP DQString(r#""hello world""#) SP ], + ); + + assert_lex( + r#" 'hello world' "#, + tokens![ SP SQString(r#"'hello world'"#) SP ], + ); + } + + #[test] + fn test_tokenize_path() { + assert_lex("$var.bar", tokens![ "$" Var("var") "." Member("bar") ]); + assert_lex("$it.bar", tokens![ "$" Var("it") "." Member("bar") ]); + assert_lex("$var. bar", tokens![ "$" Var("var") "." SP Member("bar") ]); + assert_lex("$it. bar", tokens![ "$" Var("it") "." SP Member("bar") ]); + } + + #[test] + fn test_tokenize_operator() { + assert_lex( + "$it.cpu > 10", + tokens![ "$" Var("it") "." Member("cpu") SP ">" SP Num("10") ], + ); + + assert_lex( + "$it.cpu < 10", + tokens![ "$" Var("it") "." Member("cpu") SP "<" SP Num("10") ], + ); + + assert_lex( + "$it.cpu >= 10", + tokens![ "$" Var("it") "." Member("cpu") SP ">=" SP Num("10") ], + ); + + assert_lex( + "$it.cpu <= 10", + tokens![ "$" Var("it") "." Member("cpu") SP "<=" SP Num("10") ], + ); + + assert_lex( + "$it.cpu == 10", + tokens![ "$" Var("it") "." Member("cpu") SP "==" SP Num("10") ], + ); + + assert_lex( + "$it.cpu != 10", + tokens![ "$" Var("it") "." Member("cpu") SP "!=" SP Num("10") ], + ); + } + + #[test] + fn test_tokenize_smoke() { + assert_lex( + "ls | where cpu > 10", + tokens![ Bare("ls") SP "|" SP Bare("where") SP Bare("cpu") SP ">" SP Num("10") ], + ); + + assert_lex( + "ls | where { $it.cpu > 10 }", + tokens![ Bare("ls") SP "|" SP Bare("where") SP "{" SP "$" Var("it") "." Member("cpu") SP ">" SP Num("10") SP "}" ], + ); + + assert_lex( + "open input2.json | from-json | select glossary", + tokens![ Bare("open") SP Bare("input2") "." Member("json") SP "|" SP Bare("from-json") SP "|" SP Bare("select") SP Bare("glossary") ], + ); + } + + fn tok(name: &str, value: &'source str) -> TestToken<'source> { + match name { + "Num" => TestToken::new(TokenDesc::Top(TopToken::Num), value), + "Var" => TestToken::new(TokenDesc::Var(VariableToken::Variable), value), + "Member" => TestToken::new(TokenDesc::Member, value), + "Bare" => TestToken::new(TokenDesc::Top(TopToken::Bare), value), + "DQString" => TestToken::new(TokenDesc::Top(TopToken::DQString), value), + "SQString" => TestToken::new(TokenDesc::Top(TopToken::SQString), value), + other => panic!("Unexpected token name in test: {}", other), + } + } + + fn tk(name: &'source str) -> TestToken<'source> { + let token = match name { + "." => TopToken::Dot, + "$" => TopToken::Dollar, + "|" => TopToken::Pipe, + "{" => TopToken::OpenBrace, + "}" => TopToken::CloseBrace, + ">" => TopToken::OpGt, + "<" => TopToken::OpLt, + ">=" => TopToken::OpGte, + "<=" => TopToken::OpLte, + "==" => TopToken::OpEq, + "!=" => TopToken::OpNeq, + other => panic!("Unexpected token name in test: {}", other), + }; + + TestToken::new(TokenDesc::Top(token), name) + } + + const SP: TestToken<'static> = TestToken { + desc: TokenDesc::Ws, + source: " ", + }; + + fn ws(string: &'static str) -> TestToken<'source> { + TestToken::new(TokenDesc::Ws, string) + } + +} diff --git a/src/parser/parser.lalrpop b/src/parser/parser.lalrpop index c66fc46c27..ec1f1ed4c3 100644 --- a/src/parser/parser.lalrpop +++ b/src/parser/parser.lalrpop @@ -10,8 +10,8 @@ pub Pipeline: Pipeline = { } Command: ParsedCommand = { - => ParsedCommand::new(command, expr), - => ParsedCommand::new(command, vec![expr]), + => ParsedCommand::new(command, expr), + => ParsedCommand::new(command, vec![expr]), } Leaf: Expression = { @@ -46,11 +46,12 @@ WholeExpression: Expression = { } PathExpression: Expression = { - )*> => Expression::Path(Box::new(Path::new(head, tail))) + )+> => Expression::Path(Box::new(Path::new(head, tail))) } Expr: Expression = { - => Expression::Leaf(Leaf::Bare(<>)), + => Expression::Leaf(Leaf::Bare(<>)), + => <>, } @@ -58,11 +59,11 @@ Variable: Variable = { "$true" => Variable::True, "$false" => Variable::False, "$it" => Variable::It, - "$" => Variable::Other(<>.to_string()), + => Variable::Other(<>[1..].to_string()), } Member: String = { - , + , } @@ -76,8 +77,8 @@ Operator: Operator = { } Flag: Flag = { - "-" => Flag::Shorthand(<>.to_string()), - "--" => Flag::Longhand(<>.to_string()), + "-" => Flag::Shorthand(<>.to_string()), + "--" => Flag::Longhand(<>.to_string()), } String: String = { @@ -85,7 +86,12 @@ String: String = { DQString, } -RawBareWord: String = => <>.to_string(); +BareWord = { + , +} + +VariableBody: &'input str = => <>; +RawBareWord: String = => <>.to_string(); DQString: String = => s[1..s.len() - 1].to_string(); SQString: String = => s[1..s.len() - 1].to_string(); Num: i64 = => i64::from_str(s).unwrap(); diff --git a/src/parser/parser.rs b/src/parser/parser.rs index 8f3bdd4140..9233ad6909 100644 --- a/src/parser/parser.rs +++ b/src/parser/parser.rs @@ -1,5 +1,5 @@ // auto-generated: "lalrpop 0.17.0" -// sha256: a068d921aac2bbdc85ed4e2267e06ad46a9677e9e961bca0ac7adacd6628df5 +// sha256: b14d4daa8f97f546c3e6e2cb4a931d9bb69a859a6548dc32fc3a984d93cbc use std::str::FromStr; use byte_unit::Byte; use crate::parser::ast::*; @@ -38,201 +38,203 @@ mod __parse__Pipeline { } const __ACTION: &'static [i8] = &[ // State 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, // State 1 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, + 0, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, -13, 0, 29, 30, 31, 32, 6, 33, // 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 35, 0, 0, 0, 0, 0, 0, 0, // State 3 - 0, 24, 25, 26, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, -14, 0, 30, 31, 32, 33, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 4 - -45, -45, -45, -45, -45, -45, -45, 0, 0, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, + -9, -9, -9, -9, -9, 0, 0, 0, -9, -9, -9, -9, -9, -9, -9, -9, 0, -9, -9, -9, -9, -9, -9, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 0, 0, 0, 0, 0, + -44, -44, -44, -44, -44, 0, 0, 0, -44, -44, -44, -44, -44, -44, -44, -44, 0, -44, -44, -44, -44, -44, -44, // State 6 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + -54, -54, -54, -54, -54, 0, 0, 0, -54, -54, -54, -54, -54, -54, -54, -54, 0, -54, -54, -54, -54, -54, -54, // State 7 - -54, -54, -54, -54, -54, -54, 0, 0, 0, -54, -54, -54, -54, -54, -54, -54, -54, 0, -54, -54, -54, -54, -54, + -17, -17, -17, -17, -17, 0, 0, 0, 0, -17, -17, -17, -17, -17, -17, -17, 0, -17, -17, -17, -17, -17, -17, // State 8 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -16, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, 0, 0, 0, 0, 0, 0, 0, // State 9 - -55, -55, -55, -55, -55, -55, 0, 0, 0, -55, -55, -55, -55, -55, -55, -55, -55, 0, -55, -55, -55, -55, -55, + -55, -55, -55, -55, -55, 0, 0, 0, -55, -55, -55, -55, -55, -55, -55, -55, 0, -55, -55, -55, -55, -55, -55, // State 10 - -49, -49, -49, -49, -49, -49, -49, 0, 0, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, + -48, -48, -48, -48, -48, -48, 0, 0, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, // State 11 - 37, -22, -22, -22, -22, -22, 0, 0, 0, 0, 38, 39, 40, 41, 42, -22, -22, 0, -22, -22, -22, -22, -22, + 37, -22, -22, -22, -22, 0, 0, 0, 0, 38, 39, 40, 41, 42, -22, -22, 0, -22, -22, -22, -22, -22, -22, // State 12 - 0, 24, 25, 26, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, -15, 0, 30, 31, 32, 33, 5, + 0, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, -14, 0, 29, 30, 31, 32, 6, 33, // State 13 - -10, -10, -10, -10, -10, -10, 0, 0, 0, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, + -8, -8, -8, -8, -8, 0, 0, 0, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, // State 14 - -27, -27, -27, -27, -27, -27, -27, 0, 0, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, + -27, -27, -27, -27, -27, -27, 0, 0, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, // State 15 - -9, -9, -9, -9, -9, -9, 0, 0, 0, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, + -7, -7, -7, -7, -7, 0, 0, 0, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, // State 16 - -19, -19, -19, -19, -19, -19, 0, 0, 0, 0, -19, -19, -19, -19, -19, -19, -19, 0, -19, -19, -19, -19, -19, + -19, -19, -19, -19, -19, 0, 0, 0, 0, -19, -19, -19, -19, -19, -19, -19, 0, -19, -19, -19, -19, -19, -19, // State 17 - -18, -18, -18, -18, -18, -18, 0, 0, 0, 0, -18, -18, -18, -18, -18, -18, -18, 0, -18, -18, -18, -18, -18, + -47, -47, -47, -47, -47, -47, 0, 0, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, // State 18 - -48, -48, -48, -48, -48, -48, -48, 0, 0, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, -48, + -28, -28, -28, -28, -28, -28, 0, 0, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, // State 19 - -28, -28, -28, -28, -28, -28, -28, 0, 0, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, -28, + -26, -26, -26, -26, -26, -26, 0, 0, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, // State 20 - -26, -26, -26, -26, -26, -26, -26, 0, 0, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, + -29, -29, -29, -29, -29, -29, 0, 0, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, // State 21 - -29, -29, -29, -29, -29, -29, -29, 0, 0, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, + -52, -52, -52, -52, -52, -52, 0, 0, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, // State 22 - -41, -41, -41, -41, -41, -41, 0, 0, 0, 45, -41, -41, -41, -41, -41, -41, -41, 0, -41, -41, -41, -41, -41, + -18, -18, -18, -18, -18, 0, 0, 0, 45, -18, -18, -18, -18, -18, -18, -18, 0, -18, -18, -18, -18, -18, -18, // State 23 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + -50, -50, -50, -50, -50, -50, 0, 0, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, // State 24 - -51, -51, -51, -51, -51, -51, -51, 0, 0, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, + -51, -51, -51, -51, -51, -51, 0, 0, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, // State 25 - -52, -52, -52, -52, -52, -52, -52, 0, 0, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, -52, + -49, -49, -49, -49, -49, -49, 0, 0, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, -49, // State 26 - -50, -50, -50, -50, -50, -50, -50, 0, 0, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, + 0, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 29, 30, 31, 32, 6, 33, // State 27 - 0, 24, 25, 26, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 30, 31, 32, 33, 5, + 0, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 28, 0, 0, 29, 30, 31, 32, 6, 33, // State 28 - 0, 24, 25, 26, 27, 28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 0, 0, 30, 31, 32, 33, 5, + -16, -16, -16, -16, -16, -16, 0, 0, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, // State 29 - -17, -17, -17, -17, -17, -17, -17, 0, 0, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, + -45, -45, -45, -45, -45, -45, 0, 0, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, // State 30 - -46, -46, -46, -46, -46, -46, -46, 0, 0, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, + -32, -32, -32, -32, -32, -32, 0, 0, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, // State 31 - -32, -32, -32, -32, -32, -32, -32, 0, 0, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, + -46, -46, -46, -46, -46, -46, 0, 0, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, // State 32 - -47, -47, -47, -47, -47, -47, -47, 0, 0, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, + -53, -53, -53, -53, -53, -53, 0, 0, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, // State 33 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 0, 0, // State 34 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -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, 6, 0, // State 35 - 0, 24, 25, 26, 27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 32, 33, 0, + 0, 24, 25, 26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 31, 32, 0, 33, // State 36 - 0, -34, -34, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, -34, -34, -34, 0, + 0, -34, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -34, -34, -34, -34, 0, -34, // State 37 - 0, -35, -35, -35, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, -35, -35, -35, 0, + 0, -35, -35, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -35, -35, -35, -35, 0, -35, // State 38 - 0, -37, -37, -37, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, -37, -37, -37, 0, + 0, -37, -37, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, -37, -37, -37, 0, -37, // State 39 - 0, -33, -33, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, -33, -33, -33, 0, + 0, -33, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -33, -33, -33, -33, 0, -33, // State 40 - 0, -36, -36, -36, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, -36, -36, -36, 0, + 0, -36, -36, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, -36, -36, -36, 0, -36, // State 41 - 0, -38, -38, -38, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, -38, -38, -38, 0, + 0, -38, -38, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, -38, -38, -38, 0, -38, // State 42 - 0, -23, -23, -23, -23, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, -23, 0, -23, -23, -23, -23, -23, + 0, -23, -23, -23, -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, -23, 0, -23, -23, -23, -23, -23, -23, // State 43 - -42, -42, -42, -42, -42, -42, 0, 0, 0, 54, -42, -42, -42, -42, -42, -42, -42, 0, -42, -42, -42, -42, -42, + -41, -41, -41, -41, -41, 0, 0, 0, 54, -41, -41, -41, -41, -41, -41, -41, 0, -41, -41, -41, -41, -41, -41, // State 44 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 30, 31, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 0, 0, 6, 0, // State 45 - -53, -53, -53, -53, -53, -53, -53, 0, 0, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, -53, + 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 46 - 0, 0, 0, 0, 0, 0, 58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 37, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 47 - 37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 38, 39, 40, 41, 42, 0, 0, 0, 0, 0, 0, 0, 0, + -8, 0, 0, 0, 0, 59, 0, 0, -8, -8, -8, -8, -8, -8, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 48 - -10, 0, 0, 0, 0, 0, 59, 0, 0, -10, -10, -10, -10, -10, -10, 0, 0, 0, 0, 0, 0, 0, 0, + -54, 0, 0, 0, 0, 0, 0, 0, -54, -54, -54, -54, -54, -54, 0, 0, 60, 0, 0, 0, 0, 0, 0, // State 49 - -54, 0, 0, 0, 0, 0, 0, 0, 0, -54, -54, -54, -54, -54, -54, 0, 0, 60, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, 0, // State 50 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 61, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 6, 0, // State 51 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -8, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -5, 0, 0, 0, 0, 0, 0, 0, // State 52 - 0, 0, 0, 0, 0, 0, -11, 0, 0, 0, 0, 0, 0, 0, 0, 0, -11, -11, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, -10, -10, 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, 30, 31, 0, 0, 5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 29, 30, 0, 0, 6, 0, // State 54 - -4, -4, -4, -4, -4, -4, 0, 0, 0, -4, -4, -4, -4, -4, -4, -4, -4, 0, -4, -4, -4, -4, -4, + -30, -30, -30, -30, -30, 0, 0, 0, -30, -30, -30, -30, -30, -30, -30, -30, 0, -30, -30, -30, -30, -30, -30, // State 55 - -30, -30, -30, -30, -30, -30, 0, 0, 0, -30, -30, -30, -30, -30, -30, -30, -30, 0, -30, -30, -30, -30, -30, + -2, -2, -2, -2, -2, 0, 0, 0, -2, -2, -2, -2, -2, -2, -2, -2, 0, -2, -2, -2, -2, -2, -2, // State 56 - -31, -31, -31, -31, -31, -31, 0, 0, 0, -31, -31, -31, -31, -31, -31, -31, -31, 0, -31, -31, -31, -31, -31, + -31, -31, -31, -31, -31, 0, 0, 0, -31, -31, -31, -31, -31, -31, -31, -31, 0, -31, -31, -31, -31, -31, -31, // State 57 - -40, -40, -40, -40, -40, -40, 0, 0, 0, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, + -40, -40, -40, -40, -40, 0, 0, 0, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, -40, // State 58 - -39, -39, -39, -39, -39, -39, 0, 0, 0, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, + -39, -39, -39, -39, -39, 0, 0, 0, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, -39, // State 59 - -12, -12, -12, -12, -12, -12, 0, 0, 0, -12, -12, -12, -12, -12, -12, -12, -12, 0, -12, -12, -12, -12, -12, + -11, -11, -11, -11, -11, 0, 0, 0, -11, -11, -11, -11, -11, -11, -11, -11, 0, -11, -11, -11, -11, -11, -11, // State 60 - -13, -13, -13, -13, -13, -13, 0, 0, 0, -13, -13, -13, -13, -13, -13, -13, -13, 0, -13, -13, -13, -13, -13, + -12, -12, -12, -12, -12, 0, 0, 0, -12, -12, -12, -12, -12, -12, -12, -12, 0, -12, -12, -12, -12, -12, -12, // State 61 - -5, -5, -5, -5, -5, -5, 0, 0, 0, -5, -5, -5, -5, -5, -5, -5, -5, 0, -5, -5, -5, -5, -5, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -6, 0, 0, 0, 0, 0, 0, 0, + // State 62 + -3, -3, -3, -3, -3, 0, 0, 0, -3, -3, -3, -3, -3, -3, -3, -3, 0, -3, -3, -3, -3, -3, -3, ]; const __EOF_ACTION: &'static [i8] = &[ // State 0 0, // State 1 - -43, + -13, // State 2 - -56, + -42, // State 3 - -14, + -56, // State 4 - -45, + -9, // State 5 -44, // State 6 - 0, - // State 7 -54, + // State 7 + -17, // State 8 - -16, + -15, // State 9 -55, // State 10 - -49, + -48, // State 11 -22, // State 12 - -15, + -14, // State 13 - -10, + -8, // State 14 -27, // State 15 - -9, + -7, // State 16 -19, // State 17 - -18, + -47, // State 18 - -48, - // State 19 -28, - // State 20 + // State 19 -26, - // State 21 + // State 20 -29, + // State 21 + -52, // State 22 - -41, + -18, // State 23 - 0, + -50, // State 24 -51, // State 25 - -52, + -49, // State 26 - -50, + 0, // State 27 0, // State 28 - 0, + -16, // State 29 - -17, + -45, // State 30 - -46, - // State 31 -32, + // State 31 + -46, // State 32 - -47, + -53, // State 33 - 0, + -43, // State 34 - -7, + 0, // State 35 0, // State 36 @@ -250,11 +252,11 @@ mod __parse__Pipeline { // State 42 -23, // State 43 - -42, + -41, // State 44 0, // State 45 - -53, + 0, // State 46 0, // State 47 @@ -266,15 +268,15 @@ mod __parse__Pipeline { // State 50 0, // State 51 - -8, + -5, // State 52 - -11, + -10, // State 53 0, // State 54 - -4, - // State 55 -30, + // State 55 + -2, // State 56 -31, // State 57 @@ -282,142 +284,145 @@ mod __parse__Pipeline { // State 58 -39, // State 59 - -12, + -11, // State 60 - -13, + -12, // State 61 - -5, + -6, + // State 62 + -3, ]; const __GOTO: &'static [i8] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 4, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 5, 0, 0, 0, 0, 0, 0, 0, // State 1 - 0, 0, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 7, 8, 9, 10, 0, 11, 12, 0, 13, 0, 14, 0, 15, 0, 16, 17, 0, 5, 18, 19, 20, 21, 22, 23, 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, 0, 0, 34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 3 - 0, 0, 0, 0, 0, 8, 9, 10, 0, 11, 12, 0, 13, 0, 14, 0, 15, 0, 16, 17, 0, 18, 19, 20, 21, 22, 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, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 35, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 12 - 0, 0, 0, 0, 0, 8, 0, 10, 0, 11, 43, 0, 0, 0, 14, 0, 15, 0, 16, 17, 0, 18, 19, 20, 21, 22, 23, 0, + 0, 0, 0, 0, 7, 8, 0, 10, 0, 11, 43, 0, 0, 0, 14, 0, 15, 0, 16, 17, 0, 5, 18, 19, 20, 21, 22, 23, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 22 - 0, 0, 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, 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, // State 23 - 0, 0, 0, 0, 0, 0, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 7, 8, 46, 10, 0, 11, 47, 0, 0, 0, 48, 0, 15, 0, 16, 17, 0, 5, 18, 19, 20, 21, 22, 23, 0, // State 27 - 0, 0, 0, 0, 0, 8, 47, 10, 0, 11, 48, 0, 0, 0, 49, 0, 15, 0, 16, 17, 0, 18, 19, 20, 21, 22, 23, 0, + 0, 0, 0, 0, 49, 8, 50, 10, 0, 11, 47, 0, 0, 0, 14, 0, 15, 0, 16, 17, 0, 5, 18, 19, 20, 21, 22, 23, 0, // State 28 - 0, 0, 0, 0, 0, 50, 51, 10, 0, 11, 48, 0, 0, 0, 14, 0, 15, 0, 16, 17, 0, 18, 19, 20, 21, 22, 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, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, 52, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 34 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 2, 0, 0, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, // State 35 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 53, 0, 15, 0, 0, 0, 0, 0, 19, 20, 21, 22, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 53, 0, 15, 0, 0, 0, 0, 0, 18, 19, 20, 21, 22, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 43 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 44 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 11, 0, 0, 0, 0, 0, 55, 0, 0, 0, 0, 0, 56, 19, 0, 57, 0, 0, 0, + 0, 0, 0, 0, 0, 55, 0, 0, 0, 11, 0, 0, 0, 0, 0, 56, 0, 0, 0, 0, 0, 5, 18, 0, 57, 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, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 36, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 2, 0, 0, 62, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, // State 51 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, + 0, 0, 0, 0, 0, 0, 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, 11, 0, 0, 0, 0, 0, 62, 0, 0, 0, 0, 0, 56, 19, 0, 57, 0, 0, 0, + 0, 0, 0, 0, 0, 55, 0, 0, 0, 11, 0, 0, 0, 0, 0, 63, 0, 0, 0, 0, 0, 5, 18, 0, 57, 0, 0, 0, 0, // State 54 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 57 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 58 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 59 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 60 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 61 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 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, 0, ]; fn __expected_tokens(__state: usize) -> Vec<::std::string::String> { const __TERMINAL: &'static [&'static str] = &[ r###""!=""###, - r###""$""###, r###""$false""###, r###""$it""###, r###""$true""###, @@ -438,7 +443,8 @@ mod __parse__Pipeline { r###"r#"\'([^\']|\\\\\')*\'"#"###, r###"r#"-?[0-9]+"#"###, r###"r#"-?[0-9]+[A-Za-z]+"#"###, - r###"r#"[^0-9\"\'\\-][^\\s\"\']*"#"###, + r###"r#"[^0-9\"\'$\\-\\.][^\\s\"\']*"#"###, + r###"r#"\\$\\p{XID_Start}(\\p{XID_Continue}|[\\-?!])*"#"###, ]; __ACTION[(__state * 23)..].iter().zip(__TERMINAL).filter_map(|(&state, terminal)| { if state == 0 { @@ -500,7 +506,7 @@ mod __parse__Pipeline { #[inline] fn goto(&self, state: i8, nt: usize) -> i8 { - __GOTO[(state as usize) * 28 + nt] - 1 + __GOTO[(state as usize) * 29 + nt] - 1 } fn token_to_symbol(&self, token_index: usize, token: Self::Token) -> Self::Symbol { @@ -553,29 +559,29 @@ mod __parse__Pipeline { ) -> Option { match *__token { - Token(5, _) if true => Some(0), - Token(6, _) if true => Some(1), - Token(7, _) if true => Some(2), - Token(8, _) if true => Some(3), - Token(9, _) if true => Some(4), - Token(10, _) if true => Some(5), - Token(11, _) if true => Some(6), - Token(12, _) if true => Some(7), - Token(13, _) if true => Some(8), - Token(14, _) if true => Some(9), - Token(15, _) if true => Some(10), - Token(16, _) if true => Some(11), - Token(17, _) if true => Some(12), - Token(18, _) if true => Some(13), - Token(19, _) if true => Some(14), - Token(20, _) if true => Some(15), - Token(21, _) if true => Some(16), - Token(22, _) if true => Some(17), - Token(0, _) if true => Some(18), - Token(1, _) if true => Some(19), - Token(2, _) if true => Some(20), - Token(3, _) if true => Some(21), - Token(4, _) if true => Some(22), + Token(6, _) if true => Some(0), + Token(7, _) if true => Some(1), + Token(8, _) if true => Some(2), + Token(9, _) if true => Some(3), + Token(10, _) if true => Some(4), + Token(11, _) if true => Some(5), + Token(12, _) if true => Some(6), + Token(13, _) if true => Some(7), + Token(14, _) if true => Some(8), + Token(15, _) if true => Some(9), + Token(16, _) if true => Some(10), + Token(17, _) if true => Some(11), + Token(18, _) if true => Some(12), + Token(19, _) if true => Some(13), + Token(20, _) if true => Some(14), + Token(21, _) if true => Some(15), + Token(22, _) if true => Some(16), + Token(0, _) if true => Some(17), + Token(1, _) if true => Some(18), + Token(2, _) if true => Some(19), + Token(3, _) if true => Some(20), + Token(4, _) if true => Some(21), + Token(5, _) if true => Some(22), _ => None, } } @@ -589,97 +595,97 @@ mod __parse__Pipeline { { match __token_index { 0 => match __token { - Token(5, __tok0) => __Symbol::Variant0((__tok0)), - _ => unreachable!(), - }, - 1 => match __token { Token(6, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 2 => match __token { + 1 => match __token { Token(7, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 3 => match __token { + 2 => match __token { Token(8, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 4 => match __token { + 3 => match __token { Token(9, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 5 => match __token { + 4 => match __token { Token(10, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 6 => match __token { + 5 => match __token { Token(11, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 7 => match __token { + 6 => match __token { Token(12, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 8 => match __token { + 7 => match __token { Token(13, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 9 => match __token { + 8 => match __token { Token(14, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 10 => match __token { + 9 => match __token { Token(15, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 11 => match __token { + 10 => match __token { Token(16, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 12 => match __token { + 11 => match __token { Token(17, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 13 => match __token { + 12 => match __token { Token(18, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 14 => match __token { + 13 => match __token { Token(19, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 15 => match __token { + 14 => match __token { Token(20, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 16 => match __token { + 15 => match __token { Token(21, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 17 => match __token { + 16 => match __token { Token(22, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 18 => match __token { + 17 => match __token { Token(0, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 19 => match __token { + 18 => match __token { Token(1, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 20 => match __token { + 19 => match __token { Token(2, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 21 => match __token { + 20 => match __token { Token(3, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, - 22 => match __token { + 21 => match __token { Token(4, __tok0) => __Symbol::Variant0((__tok0)), _ => unreachable!(), }, + 22 => match __token { + Token(5, __tok0) => __Symbol::Variant0((__tok0)), + _ => unreachable!(), + }, _ => unreachable!(), } } @@ -699,13 +705,13 @@ mod __parse__Pipeline { } 1 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 0, + states_to_pop: 2, nonterminal_produced: 1, } } 2 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 3, nonterminal_produced: 1, } } @@ -717,25 +723,25 @@ mod __parse__Pipeline { } 4 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 2, + states_to_pop: 2, + nonterminal_produced: 3, } } 5 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 3, nonterminal_produced: 3, } } 6 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, + states_to_pop: 1, nonterminal_produced: 4, } } 7 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, + states_to_pop: 1, nonterminal_produced: 4, } } @@ -747,14 +753,14 @@ mod __parse__Pipeline { } 9 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, - nonterminal_produced: 5, + states_to_pop: 3, + nonterminal_produced: 6, } } 10 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 3, - nonterminal_produced: 6, + nonterminal_produced: 7, } } 11 => { @@ -765,13 +771,13 @@ mod __parse__Pipeline { } 12 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 3, - nonterminal_produced: 7, + states_to_pop: 1, + nonterminal_produced: 8, } } 13 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 2, nonterminal_produced: 8, } } @@ -783,14 +789,14 @@ mod __parse__Pipeline { } 15 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 8, + states_to_pop: 1, + nonterminal_produced: 9, } } 16 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 9, + nonterminal_produced: 10, } } 17 => { @@ -933,44 +939,44 @@ mod __parse__Pipeline { } 40 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 2, nonterminal_produced: 19, } } 41 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 19, + states_to_pop: 1, + nonterminal_produced: 20, } } 42 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 1, + states_to_pop: 2, nonterminal_produced: 20, } } 43 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 20, + states_to_pop: 1, + nonterminal_produced: 21, } } 44 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 21, + nonterminal_produced: 22, } } 45 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 22, + nonterminal_produced: 23, } } 46 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 23, + nonterminal_produced: 24, } } 47 => { @@ -982,7 +988,7 @@ mod __parse__Pipeline { 48 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 24, + nonterminal_produced: 25, } } 49 => { @@ -1005,20 +1011,20 @@ mod __parse__Pipeline { } 52 => { __state_machine::SimulatedReduce::Reduce { - states_to_pop: 2, - nonterminal_produced: 25, + states_to_pop: 1, + nonterminal_produced: 26, } } 53 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 26, + nonterminal_produced: 27, } } 54 => { __state_machine::SimulatedReduce::Reduce { states_to_pop: 1, - nonterminal_produced: 26, + nonterminal_produced: 27, } } 55 => __state_machine::SimulatedReduce::Accept, @@ -1248,7 +1254,7 @@ mod __parse__Pipeline { let __states_len = __states.len(); __states.truncate(__states_len - __pop_states); let __state = *__states.last().unwrap() as usize; - let __next_state = __GOTO[__state * 28 + __nonterminal] - 1; + let __next_state = __GOTO[__state * 29 + __nonterminal] - 1; __states.push(__next_state); None } @@ -1395,12 +1401,12 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ("." ) = ".", Member => ActionFn(44); + // ("." ) = ".", Member => ActionFn(47); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action44::<>(input, __sym0, __sym1); + let __nt = super::__action47::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (2, 0) } @@ -1415,12 +1421,14 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ("." )* = => 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); + // ("." )+ = ".", Member => ActionFn(55); + let __sym1 = __pop_Variant1(__symbols); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym1.2.clone(); + let __nt = super::__action55::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (0, 1) + (2, 1) } pub(crate) fn __reduce2< 'input, @@ -1433,13 +1441,15 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ("." )* = ("." )+ => ActionFn(43); + // ("." )+ = ("." )+, ".", Member => ActionFn(56); + let __sym2 = __pop_Variant1(__symbols); + let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant2(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action43::<>(input, __sym0); + let __end = __sym2.2.clone(); + let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (1, 1) + (3, 1) } pub(crate) fn __reduce3< 'input, @@ -1452,13 +1462,13 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ("." )+ = ".", Member => ActionFn(54); - let __sym1 = __pop_Variant1(__symbols); + // ("|" ) = "|", Command => ActionFn(52); + let __sym1 = __pop_Variant3(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action54::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant2(__nt), __end)); + let __nt = super::__action52::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 2) } pub(crate) fn __reduce4< @@ -1472,15 +1482,14 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ("." )+ = ("." )+, ".", Member => ActionFn(55); - let __sym2 = __pop_Variant1(__symbols); - let __sym1 = __pop_Variant0(__symbols); - let __sym0 = __pop_Variant2(__symbols); + // ("|" )+ = "|", Command => ActionFn(57); + let __sym1 = __pop_Variant3(__symbols); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2); - __symbols.push((__start, __Symbol::Variant2(__nt), __end)); - (3, 2) + let __end = __sym1.2.clone(); + let __nt = super::__action57::<>(input, __sym0, __sym1); + __symbols.push((__start, __Symbol::Variant4(__nt), __end)); + (2, 3) } pub(crate) fn __reduce5< 'input, @@ -1493,57 +1502,17 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // ("|" ) = "|", Command => ActionFn(49); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action49::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (2, 3) - } - pub(crate) fn __reduce6< - 'input, - >( - input: &'input str, - __action: i8, - __lookahead_start: Option<&usize>, - __states: &mut ::std::vec::Vec, - __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: ::std::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // ("|" )+ = "|", Command => ActionFn(58); - let __sym1 = __pop_Variant3(__symbols); - let __sym0 = __pop_Variant0(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (2, 4) - } - pub(crate) fn __reduce7< - 'input, - >( - input: &'input str, - __action: i8, - __lookahead_start: Option<&usize>, - __states: &mut ::std::vec::Vec, - __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: ::std::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // ("|" )+ = ("|" )+, "|", Command => ActionFn(59); + // ("|" )+ = ("|" )+, "|", Command => ActionFn(58); let __sym2 = __pop_Variant3(__symbols); let __sym1 = __pop_Variant0(__symbols); let __sym0 = __pop_Variant4(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action59::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2); __symbols.push((__start, __Symbol::Variant4(__nt), __end)); - (3, 4) + (3, 3) } - pub(crate) fn __reduce8< + pub(crate) fn __reduce6< 'input, >( input: &'input str, @@ -1560,9 +1529,9 @@ mod __parse__Pipeline { let __end = __sym0.2.clone(); let __nt = super::__action12::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); - (1, 5) + (1, 4) } - pub(crate) fn __reduce9< + pub(crate) fn __reduce7< 'input, >( input: &'input str, @@ -1579,9 +1548,28 @@ mod __parse__Pipeline { let __end = __sym0.2.clone(); let __nt = super::__action13::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 4) + } + pub(crate) fn __reduce8< + 'input, + >( + input: &'input str, + __action: i8, + __lookahead_start: Option<&usize>, + __states: &mut ::std::vec::Vec, + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: ::std::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // BareWord = RawBareWord => ActionFn(38); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action38::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 5) } - pub(crate) fn __reduce10< + pub(crate) fn __reduce9< 'input, >( input: &'input str, @@ -1602,7 +1590,7 @@ mod __parse__Pipeline { __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 6) } - pub(crate) fn __reduce11< + pub(crate) fn __reduce10< 'input, >( input: &'input str, @@ -1623,7 +1611,7 @@ mod __parse__Pipeline { __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 7) } - pub(crate) fn __reduce12< + pub(crate) fn __reduce11< 'input, >( input: &'input str, @@ -1644,6 +1632,25 @@ mod __parse__Pipeline { __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (3, 7) } + pub(crate) fn __reduce12< + 'input, + >( + input: &'input str, + __action: i8, + __lookahead_start: Option<&usize>, + __states: &mut ::std::vec::Vec, + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: ::std::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // Command = BareWord => ActionFn(59); + let __sym0 = __pop_Variant1(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action59::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant3(__nt), __end)); + (1, 8) + } pub(crate) fn __reduce13< 'input, >( @@ -1655,13 +1662,14 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Command = RawBareWord => ActionFn(60); + // Command = BareWord, Expr+ => ActionFn(60); + let __sym1 = __pop_Variant6(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action60::<>(input, __sym0); + let __end = __sym1.2.clone(); + let __nt = super::__action60::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (1, 8) + (2, 8) } pub(crate) fn __reduce14< 'input, @@ -1674,12 +1682,12 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Command = RawBareWord, Expr+ => ActionFn(61); - let __sym1 = __pop_Variant6(__symbols); + // Command = BareWord, BinaryExpression => ActionFn(4); + let __sym1 = __pop_Variant5(__symbols); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action61::<>(input, __sym0, __sym1); + let __nt = super::__action4::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant3(__nt), __end)); (2, 8) } @@ -1694,14 +1702,13 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Command = RawBareWord, BinaryExpression => ActionFn(4); - let __sym1 = __pop_Variant5(__symbols); - let __sym0 = __pop_Variant1(__symbols); + // DQString = r#"\"([^\"]|\\\\\")*\""# => ActionFn(41); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action4::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant3(__nt), __end)); - (2, 8) + let __end = __sym0.2.clone(); + let __nt = super::__action41::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 9) } pub(crate) fn __reduce16< 'input, @@ -1714,13 +1721,13 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // DQString = r#"\"([^\"]|\\\\\")*\""# => ActionFn(38); - let __sym0 = __pop_Variant0(__symbols); + // Expr = BareWord => ActionFn(19); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action38::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 9) + let __nt = super::__action19::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant5(__nt), __end)); + (1, 10) } pub(crate) fn __reduce17< 'input, @@ -1733,11 +1740,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = RawBareWord => ActionFn(19); - let __sym0 = __pop_Variant1(__symbols); + // Expr = WholeExpression => ActionFn(20); + let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action19::<>(input, __sym0); + let __nt = super::__action20::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 10) } @@ -1752,11 +1759,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr = PathExpression => ActionFn(20); + // Expr = PathExpression => ActionFn(21); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action20::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (1, 10) } @@ -1771,10 +1778,10 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr* = => ActionFn(45); + // Expr* = => ActionFn(48); 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 __nt = super::__action48::<>(input, &__start, &__end); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (0, 11) } @@ -1789,11 +1796,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr* = Expr+ => ActionFn(46); + // Expr* = Expr+ => ActionFn(49); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action46::<>(input, __sym0); + let __nt = super::__action49::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 11) } @@ -1808,11 +1815,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr+ = Expr => ActionFn(50); + // Expr+ = Expr => ActionFn(53); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action50::<>(input, __sym0); + let __nt = super::__action53::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (1, 12) } @@ -1827,12 +1834,12 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Expr+ = Expr+, Expr => ActionFn(51); + // Expr+ = Expr+, Expr => ActionFn(54); let __sym1 = __pop_Variant5(__symbols); let __sym0 = __pop_Variant6(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action51::<>(input, __sym0, __sym1); + let __nt = super::__action54::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant6(__nt), __end)); (2, 12) } @@ -1847,12 +1854,12 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Flag = "-", RawBareWord => ActionFn(33); + // Flag = "-", BareWord => ActionFn(34); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action33::<>(input, __sym0, __sym1); + let __nt = super::__action34::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 13) } @@ -1867,12 +1874,12 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Flag = "--", RawBareWord => ActionFn(34); + // Flag = "--", BareWord => ActionFn(35); let __sym1 = __pop_Variant1(__symbols); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action34::<>(input, __sym0, __sym1); + let __nt = super::__action35::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant7(__nt), __end)); (2, 13) } @@ -1963,11 +1970,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Member = RawBareWord => ActionFn(25); + // Member = BareWord => ActionFn(26); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action25::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 15) } @@ -1982,11 +1989,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Member = String => ActionFn(26); + // Member = String => ActionFn(27); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action27::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 15) } @@ -2001,11 +2008,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Num = r#"-?[0-9]+"# => ActionFn(40); + // Num = r#"-?[0-9]+"# => ActionFn(43); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action40::<>(input, __sym0); + let __nt = super::__action43::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant8(__nt), __end)); (1, 16) } @@ -2020,11 +2027,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operator = "==" => ActionFn(27); + // Operator = "==" => ActionFn(28); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action27::<>(input, __sym0); + let __nt = super::__action28::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 17) } @@ -2039,11 +2046,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operator = "!=" => ActionFn(28); + // Operator = "!=" => ActionFn(29); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action28::<>(input, __sym0); + let __nt = super::__action29::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 17) } @@ -2058,11 +2065,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operator = "<" => ActionFn(29); + // Operator = "<" => ActionFn(30); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action29::<>(input, __sym0); + let __nt = super::__action30::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 17) } @@ -2077,11 +2084,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operator = ">" => ActionFn(30); + // Operator = ">" => ActionFn(31); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); + let __nt = super::__action31::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 17) } @@ -2096,11 +2103,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operator = "<=" => ActionFn(31); + // Operator = "<=" => ActionFn(32); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action31::<>(input, __sym0); + let __nt = super::__action32::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 17) } @@ -2115,11 +2122,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Operator = ">=" => ActionFn(32); + // Operator = ">=" => ActionFn(33); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action32::<>(input, __sym0); + let __nt = super::__action33::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant9(__nt), __end)); (1, 17) } @@ -2176,35 +2183,16 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // PathExpression = WholeExpression => ActionFn(56); - let __sym0 = __pop_Variant5(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action56::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant5(__nt), __end)); - (1, 19) - } - pub(crate) fn __reduce41< - 'input, - >( - input: &'input str, - __action: i8, - __lookahead_start: Option<&usize>, - __states: &mut ::std::vec::Vec, - __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, - _: ::std::marker::PhantomData<(&'input ())>, - ) -> (usize, usize) - { - // PathExpression = WholeExpression, ("." )+ => ActionFn(57); + // PathExpression = WholeExpression, ("." )+ => ActionFn(18); let __sym1 = __pop_Variant2(__symbols); let __sym0 = __pop_Variant5(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1); + let __nt = super::__action18::<>(input, __sym0, __sym1); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); (2, 19) } - pub(crate) fn __reduce42< + pub(crate) fn __reduce41< 'input, >( input: &'input str, @@ -2223,7 +2211,7 @@ mod __parse__Pipeline { __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (1, 20) } - pub(crate) fn __reduce43< + pub(crate) fn __reduce42< 'input, >( input: &'input str, @@ -2243,6 +2231,25 @@ mod __parse__Pipeline { __symbols.push((__start, __Symbol::Variant10(__nt), __end)); (2, 20) } + pub(crate) fn __reduce43< + 'input, + >( + input: &'input str, + __action: i8, + __lookahead_start: Option<&usize>, + __states: &mut ::std::vec::Vec, + __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)>, + _: ::std::marker::PhantomData<(&'input ())>, + ) -> (usize, usize) + { + // RawBareWord = r#"[^0-9\"\'$\\-\\.][^\\s\"\']*"# => ActionFn(40); + let __sym0 = __pop_Variant0(__symbols); + let __start = __sym0.0.clone(); + let __end = __sym0.2.clone(); + let __nt = super::__action40::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 21) + } pub(crate) fn __reduce44< 'input, >( @@ -2254,13 +2261,13 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // RawBareWord = r#"[^0-9\"\'\\-][^\\s\"\']*"# => ActionFn(37); + // SQString = r#"\'([^\']|\\\\\')*\'"# => ActionFn(42); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action37::<>(input, __sym0); + let __nt = super::__action42::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 21) + (1, 22) } pub(crate) fn __reduce45< 'input, @@ -2273,13 +2280,13 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // SQString = r#"\'([^\']|\\\\\')*\'"# => ActionFn(39); + // Size = r#"-?[0-9]+[A-Za-z]+"# => ActionFn(44); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action39::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 22) + let __nt = super::__action44::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant8(__nt), __end)); + (1, 23) } pub(crate) fn __reduce46< 'input, @@ -2292,13 +2299,13 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Size = r#"-?[0-9]+[A-Za-z]+"# => ActionFn(41); - let __sym0 = __pop_Variant0(__symbols); + // String = SQString => ActionFn(36); + let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action41::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant8(__nt), __end)); - (1, 23) + let __nt = super::__action36::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant1(__nt), __end)); + (1, 24) } pub(crate) fn __reduce47< 'input, @@ -2311,11 +2318,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // String = SQString => ActionFn(35); + // String = DQString => ActionFn(37); let __sym0 = __pop_Variant1(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action35::<>(input, __sym0); + let __nt = super::__action37::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant1(__nt), __end)); (1, 24) } @@ -2330,13 +2337,13 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // String = DQString => ActionFn(36); - let __sym0 = __pop_Variant1(__symbols); + // Variable = "$true" => ActionFn(22); + let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action36::<>(input, __sym0); - __symbols.push((__start, __Symbol::Variant1(__nt), __end)); - (1, 24) + let __nt = super::__action22::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant11(__nt), __end)); + (1, 25) } pub(crate) fn __reduce49< 'input, @@ -2349,11 +2356,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Variable = "$true" => ActionFn(21); + // Variable = "$false" => ActionFn(23); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action21::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 25) } @@ -2368,11 +2375,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Variable = "$false" => ActionFn(22); + // Variable = "$it" => ActionFn(24); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action22::<>(input, __sym0); + let __nt = super::__action24::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 25) } @@ -2387,11 +2394,11 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Variable = "$it" => ActionFn(23); + // Variable = VariableBody => ActionFn(25); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action23::<>(input, __sym0); + let __nt = super::__action25::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant11(__nt), __end)); (1, 25) } @@ -2406,14 +2413,13 @@ mod __parse__Pipeline { _: ::std::marker::PhantomData<(&'input ())>, ) -> (usize, usize) { - // Variable = "$", RawBareWord => ActionFn(24); - let __sym1 = __pop_Variant1(__symbols); + // VariableBody = r#"\\$\\p{XID_Start}(\\p{XID_Continue}|[\\-?!])*"# => ActionFn(39); let __sym0 = __pop_Variant0(__symbols); let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action24::<>(input, __sym0, __sym1); - __symbols.push((__start, __Symbol::Variant11(__nt), __end)); - (2, 25) + let __end = __sym0.2.clone(); + let __nt = super::__action39::<>(input, __sym0); + __symbols.push((__start, __Symbol::Variant0(__nt), __end)); + (1, 26) } pub(crate) fn __reduce53< 'input, @@ -2432,7 +2438,7 @@ mod __parse__Pipeline { let __end = __sym0.2.clone(); let __nt = super::__action16::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); - (1, 26) + (1, 27) } pub(crate) fn __reduce54< 'input, @@ -2451,7 +2457,7 @@ mod __parse__Pipeline { let __end = __sym0.2.clone(); let __nt = super::__action17::<>(input, __sym0); __symbols.push((__start, __Symbol::Variant5(__nt), __end)); - (1, 26) + (1, 27) } } pub use self::__parse__Pipeline::PipelineParser; @@ -2488,9 +2494,9 @@ mod __intern_token { "^(\'([\u{0}-\\&\\(-\u{10ffff}]|\\\\\')*\')", "^(\\-?[0-9]+)", "^(\\-?[0-9]+[A-Za-z]+)", - "^([\u{0}-!\\#-\\&\\(-,\\.-/:-\u{10ffff}][\u{0}-\u{8}\u{e}-\u{1f}!\\#-\\&\\(-\u{84}\u{86}-\u{9f}¡-ᙿᚁ-\u{1fff}\u{200b}-‧\u{202a}-\u{202e}‰-⁞\u{2060}-\u{2fff}、-\u{10ffff}]*)", + "^([\u{0}-!\\#%-\\&\\(-,/:-\u{10ffff}][\u{0}-\u{8}\u{e}-\u{1f}!\\#-\\&\\(-\u{84}\u{86}-\u{9f}¡-ᙿᚁ-\u{1fff}\u{200b}-‧\u{202a}-\u{202e}‰-⁞\u{2060}-\u{2fff}、-\u{10ffff}]*)", + "^(\\$[A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶ-ͷͻ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮ-ٯٱ-ۓەۥ-ۦۮ-ۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴ-ߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএ-ঐও-নপ-রলশ-হঽৎড়-ঢ়য়-ৡৰ-ৱৼਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽૐૠ-ૡૹଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହଽଡ଼-ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கங-சஜஞ-டண-தந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠ-ౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠ-ೡೱ-ೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาเ-ๆກ-ຂຄງ-ຈຊຍດ-ທນ-ຟມ-ຣລວສ-ຫອ-ະາຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥ-ၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮ-ᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳱᳵ-ᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪ-ꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞹꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽ-ꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵ-ꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﱝﱤ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷹﹱﹳﹷﹹﹻﹽﹿ-ﻼA-Za-zヲ-ンᅠ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ𐀀-𐀋𐀍-𐀦𐀨-𐀺𐀼-𐀽𐀿-𐁍𐁐-𐁝𐂀-𐃺𐅀-𐅴𐊀-𐊜𐊠-𐋐𐌀-𐌟𐌭-𐍊𐍐-𐍵𐎀-𐎝𐎠-𐏃𐏈-𐏏𐏑-𐏕𐐀-𐒝𐒰-𐓓𐓘-𐓻𐔀-𐔧𐔰-𐕣𐘀-𐜶𐝀-𐝕𐝠-𐝧𐠀-𐠅𐠈𐠊-𐠵𐠷-𐠸𐠼𐠿-𐡕𐡠-𐡶𐢀-𐢞𐣠-𐣲𐣴-𐣵𐤀-𐤕𐤠-𐤹𐦀-𐦷𐦾-𐦿𐨀𐨐-𐨓𐨕-𐨗𐨙-𐨵𐩠-𐩼𐪀-𐪜𐫀-𐫇𐫉-𐫤𐬀-𐬵𐭀-𐭕𐭠-𐭲𐮀-𐮑𐰀-𐱈𐲀-𐲲𐳀-𐳲𐴀-𐴣𐼀-𐼜𐼧𐼰-𐽅𑀃-𑀷𑂃-𑂯𑃐-𑃨𑄃-𑄦𑅄𑅐-𑅲𑅶𑆃-𑆲𑇁-𑇄𑇚𑇜𑈀-𑈑𑈓-𑈫𑊀-𑊆𑊈𑊊-𑊍𑊏-𑊝𑊟-𑊨𑊰-𑋞𑌅-𑌌𑌏-𑌐𑌓-𑌨𑌪-𑌰𑌲-𑌳𑌵-𑌹𑌽𑍐𑍝-𑍡𑐀-𑐴𑑇-𑑊𑒀-𑒯𑓄-𑓅𑓇𑖀-𑖮𑗘-𑗛𑘀-𑘯𑙄𑚀-𑚪𑜀-𑜚𑠀-𑠫𑢠-𑣟𑣿𑨀𑨋-𑨲𑨺𑩐𑩜-𑪃𑪆-𑪉𑪝𑫀-𑫸𑰀-𑰈𑰊-𑰮𑱀𑱲-𑲏𑴀-𑴆𑴈-𑴉𑴋-𑴰𑵆𑵠-𑵥𑵧-𑵨𑵪-𑶉𑶘𑻠-𑻲𒀀-𒎙𒐀-𒑮𒒀-𒕃𓀀-𓐮𔐀-𔙆𖠀-𖨸𖩀-𖩞𖫐-𖫭𖬀-𖬯𖭀-𖭃𖭣-𖭷𖭽-𖮏𖹀-𖹿𖼀-𖽄𖽐𖾓-𖾟𖿠-𖿡𗀀-𘟱𘠀-𘫲𛀀-𛄞𛅰-𛋻𛰀-𛱪𛱰-𛱼𛲀-𛲈𛲐-𛲙𝐀-𝑔𝑖-𝒜𝒞-𝒟𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒹𝒻𝒽-𝓃𝓅-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔞-𝔹𝔻-𝔾𝕀-𝕄𝕆𝕊-𝕐𝕒-𝚥𝚨-𝛀𝛂-𝛚𝛜-𝛺𝛼-𝜔𝜖-𝜴𝜶-𝝎𝝐-𝝮𝝰-𝞈𝞊-𝞨𝞪-𝟂𝟄-𝟋𞠀-𞣄𞤀-𞥃𞸀-𞸃𞸅-𞸟𞸡-𞸢𞸤𞸧𞸩-𞸲𞸴-𞸷𞸹𞸻𞹂𞹇𞹉𞹋𞹍-𞹏𞹑-𞹒𞹔𞹗𞹙𞹛𞹝𞹟𞹡-𞹢𞹤𞹧-𞹪𞹬-𞹲𞹴-𞹷𞹹-𞹼𞹾𞺀-𞺉𞺋-𞺛𞺡-𞺣𞺥-𞺩𞺫-𞺻𠀀-𪛖𪜀-𫜴𫝀-𫠝𫠠-𬺡𬺰-𮯠丽-𪘀]([0-9A-Z_a-zªµ·ºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ\u{300}-ʹͶ-ͷͻ-ͽͿΆ-ΊΌΎ-ΡΣ-ϵϷ-ҁ\u{483}-\u{487}Ҋ-ԯԱ-Ֆՙՠ-ֈ\u{591}-\u{5bd}\u{5bf}\u{5c1}-\u{5c2}\u{5c4}-\u{5c5}\u{5c7}א-תׯ-ײ\u{610}-\u{61a}ؠ-٩ٮ-ۓە-\u{6dc}\u{6df}-\u{6e8}\u{6ea}-ۼۿܐ-\u{74a}ݍ-ޱ߀-ߵߺ\u{7fd}ࠀ-\u{82d}ࡀ-\u{85b}ࡠ-ࡪࢠ-ࢴࢶ-ࢽ\u{8d3}-\u{8e1}\u{8e3}-\u{963}०-९ॱ-ঃঅ-ঌএ-ঐও-নপ-রলশ-হ\u{9bc}-\u{9c4}ে-ৈো-ৎ\u{9d7}ড়-ঢ়য়-\u{9e3}০-ৱৼ\u{9fe}\u{a01}-ਃਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹ\u{a3c}ਾ-\u{a42}\u{a47}-\u{a48}\u{a4b}-\u{a4d}\u{a51}ਖ਼-ੜਫ਼੦-\u{a75}\u{a81}-ઃઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હ\u{abc}-\u{ac5}\u{ac7}-ૉો-\u{acd}ૐૠ-\u{ae3}૦-૯ૹ-\u{aff}\u{b01}-ଃଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହ\u{b3c}-\u{b44}େ-ୈୋ-\u{b4d}\u{b56}-\u{b57}ଡ଼-ଢ଼ୟ-\u{b63}୦-୯ୱ\u{b82}-ஃஅ-ஊஎ-ஐஒ-கங-சஜஞ-டண-தந-பம-ஹ\u{bbe}-ூெ-ைொ-\u{bcd}ௐ\u{bd7}௦-௯\u{c00}-ఌఎ-ఐఒ-నప-హఽ-ౄ\u{c46}-\u{c48}\u{c4a}-\u{c4d}\u{c55}-\u{c56}ౘ-ౚౠ-\u{c63}౦-౯ಀ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ\u{cbc}-ೄ\u{cc6}-ೈೊ-\u{ccd}\u{cd5}-\u{cd6}ೞೠ-\u{ce3}೦-೯ೱ-ೲ\u{d00}-ഃഅ-ഌഎ-ഐഒ-\u{d44}െ-ൈൊ-ൎൔ-\u{d57}ൟ-\u{d63}൦-൯ൺ-ൿං-ඃඅ-ඖක-නඳ-රලව-ෆ\u{dca}\u{dcf}-\u{dd4}\u{dd6}ෘ-\u{ddf}෦-෯ෲ-ෳก-\u{e3a}เ-\u{e4e}๐-๙ກ-ຂຄງ-ຈຊຍດ-ທນ-ຟມ-ຣລວສ-ຫອ-\u{eb9}\u{ebb}-ຽເ-ໄໆ\u{ec8}-\u{ecd}໐-໙ໜ-ໟༀ\u{f18}-\u{f19}༠-༩\u{f35}\u{f37}\u{f39}༾-ཇཉ-ཬ\u{f71}-\u{f84}\u{f86}-\u{f97}\u{f99}-\u{fbc}\u{fc6}က-၉ၐ-\u{109d}Ⴀ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ\u{135d}-\u{135f}፩-፱ᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-\u{1714}ᜠ-\u{1734}ᝀ-\u{1753}ᝠ-ᝬᝮ-ᝰ\u{1772}-\u{1773}ក-\u{17d3}ៗៜ-\u{17dd}០-៩\u{180b}-\u{180d}᠐-᠙ᠠ-ᡸᢀ-ᢪᢰ-ᣵᤀ-ᤞ\u{1920}-ᤫᤰ-\u{193b}᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧚ᨀ-\u{1a1b}ᨠ-\u{1a5e}\u{1a60}-\u{1a7c}\u{1a7f}-᪉᪐-᪙ᪧ\u{1ab0}-\u{1abd}\u{1b00}-ᭋ᭐-᭙\u{1b6b}-\u{1b73}\u{1b80}-᯳ᰀ-\u{1c37}᱀-᱉ᱍ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿ\u{1cd0}-\u{1cd2}\u{1cd4}-\u{1cf9}ᴀ-\u{1df9}\u{1dfb}-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‿-⁀⁔ⁱⁿₐ-ₜ\u{20d0}-\u{20dc}\u{20e1}\u{20e5}-\u{20f0}ℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ\u{2d7f}-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ\u{2de0}-\u{2dff}々-〇〡-\u{302f}〱-〵〸-〼ぁ-ゖ\u{3099}-\u{309a}ゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-\u{a66f}\u{a674}-\u{a67d}ꙿ-\u{a6f1}ꜗ-ꜟꜢ-ꞈꞋ-ꞹꟷ-ꠧꡀ-ꡳꢀ-\u{a8c5}꣐-꣙\u{a8e0}-ꣷꣻꣽ-\u{a92d}ꤰ-꥓ꥠ-ꥼ\u{a980}-꧀ꧏ-꧙ꧠ-ꧾꨀ-\u{aa36}ꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺ-ꫂꫛ-ꫝꫠ-ꫯꫲ-\u{aaf6}ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯪ꯬-\u{abed}꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﱝﱤ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷹ\u{fe00}-\u{fe0f}\u{fe20}-\u{fe2f}︳-︴﹍-﹏ﹱﹳﹷﹹﹻﹽﹿ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ𐀀-𐀋𐀍-𐀦𐀨-𐀺𐀼-𐀽𐀿-𐁍𐁐-𐁝𐂀-𐃺𐅀-𐅴\u{101fd}𐊀-𐊜𐊠-𐋐\u{102e0}𐌀-𐌟𐌭-𐍊𐍐-\u{1037a}𐎀-𐎝𐎠-𐏃𐏈-𐏏𐏑-𐏕𐐀-𐒝𐒠-𐒩𐒰-𐓓𐓘-𐓻𐔀-𐔧𐔰-𐕣𐘀-𐜶𐝀-𐝕𐝠-𐝧𐠀-𐠅𐠈𐠊-𐠵𐠷-𐠸𐠼𐠿-𐡕𐡠-𐡶𐢀-𐢞𐣠-𐣲𐣴-𐣵𐤀-𐤕𐤠-𐤹𐦀-𐦷𐦾-𐦿𐨀-\u{10a03}\u{10a05}-\u{10a06}\u{10a0c}-𐨓𐨕-𐨗𐨙-𐨵\u{10a38}-\u{10a3a}\u{10a3f}𐩠-𐩼𐪀-𐪜𐫀-𐫇𐫉-\u{10ae6}𐬀-𐬵𐭀-𐭕𐭠-𐭲𐮀-𐮑𐰀-𐱈𐲀-𐲲𐳀-𐳲𐴀-\u{10d27}𐴰-𐴹𐼀-𐼜𐼧𐼰-\u{10f50}𑀀-\u{11046}𑁦-𑁯\u{1107f}-\u{110ba}𑃐-𑃨𑃰-𑃹\u{11100}-\u{11134}𑄶-𑄿𑅄-𑅆𑅐-\u{11173}𑅶\u{11180}-𑇄\u{111c9}-\u{111cc}𑇐-𑇚𑇜𑈀-𑈑𑈓-\u{11237}\u{1123e}𑊀-𑊆𑊈𑊊-𑊍𑊏-𑊝𑊟-𑊨𑊰-\u{112ea}𑋰-𑋹\u{11300}-𑌃𑌅-𑌌𑌏-𑌐𑌓-𑌨𑌪-𑌰𑌲-𑌳𑌵-𑌹\u{1133b}-𑍄𑍇-𑍈𑍋-𑍍𑍐\u{11357}𑍝-𑍣\u{11366}-\u{1136c}\u{11370}-\u{11374}𑐀-𑑊𑑐-𑑙\u{1145e}𑒀-𑓅𑓇𑓐-𑓙𑖀-\u{115b5}𑖸-\u{115c0}𑗘-\u{115dd}𑘀-\u{11640}𑙄𑙐-𑙙𑚀-\u{116b7}𑛀-𑛉𑜀-𑜚\u{1171d}-\u{1172b}𑜰-𑜹𑠀-\u{1183a}𑢠-𑣩𑣿𑨀-\u{11a3e}\u{11a47}𑩐-𑪃𑪆-\u{11a99}𑪝𑫀-𑫸𑰀-𑰈𑰊-\u{11c36}\u{11c38}-𑱀𑱐-𑱙𑱲-𑲏\u{11c92}-\u{11ca7}𑲩-\u{11cb6}𑴀-𑴆𑴈-𑴉𑴋-\u{11d36}\u{11d3a}\u{11d3c}-\u{11d3d}\u{11d3f}-\u{11d47}𑵐-𑵙𑵠-𑵥𑵧-𑵨𑵪-𑶎\u{11d90}-\u{11d91}𑶓-𑶘𑶠-𑶩𑻠-𑻶𒀀-𒎙𒐀-𒑮𒒀-𒕃𓀀-𓐮𔐀-𔙆𖠀-𖨸𖩀-𖩞𖩠-𖩩𖫐-𖫭\u{16af0}-\u{16af4}𖬀-\u{16b36}𖭀-𖭃𖭐-𖭙𖭣-𖭷𖭽-𖮏𖹀-𖹿𖼀-𖽄𖽐-𖽾\u{16f8f}-𖾟𖿠-𖿡𗀀-𘟱𘠀-𘫲𛀀-𛄞𛅰-𛋻𛰀-𛱪𛱰-𛱼𛲀-𛲈𛲐-𛲙\u{1bc9d}-\u{1bc9e}\u{1d165}-\u{1d169}𝅭-\u{1d172}\u{1d17b}-\u{1d182}\u{1d185}-\u{1d18b}\u{1d1aa}-\u{1d1ad}\u{1d242}-\u{1d244}𝐀-𝑔𝑖-𝒜𝒞-𝒟𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒹𝒻𝒽-𝓃𝓅-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔞-𝔹𝔻-𝔾𝕀-𝕄𝕆𝕊-𝕐𝕒-𝚥𝚨-𝛀𝛂-𝛚𝛜-𝛺𝛼-𝜔𝜖-𝜴𝜶-𝝎𝝐-𝝮𝝰-𝞈𝞊-𝞨𝞪-𝟂𝟄-𝟋𝟎-𝟿\u{1da00}-\u{1da36}\u{1da3b}-\u{1da6c}\u{1da75}\u{1da84}\u{1da9b}-\u{1da9f}\u{1daa1}-\u{1daaf}\u{1e000}-\u{1e006}\u{1e008}-\u{1e018}\u{1e01b}-\u{1e021}\u{1e023}-\u{1e024}\u{1e026}-\u{1e02a}𞠀-𞣄\u{1e8d0}-\u{1e8d6}𞤀-\u{1e94a}𞥐-𞥙𞸀-𞸃𞸅-𞸟𞸡-𞸢𞸤𞸧𞸩-𞸲𞸴-𞸷𞸹𞸻𞹂𞹇𞹉𞹋𞹍-𞹏𞹑-𞹒𞹔𞹗𞹙𞹛𞹝𞹟𞹡-𞹢𞹤𞹧-𞹪𞹬-𞹲𞹴-𞹷𞹹-𞹼𞹾𞺀-𞺉𞺋-𞺛𞺡-𞺣𞺥-𞺩𞺫-𞺻𠀀-𪛖𪜀-𫜴𫝀-𫠝𫠠-𬺡𬺰-𮯠丽-𪘀\u{e0100}-\u{e01ef}]|[!\\-\\?])*)", "^(!=)", - "^(\\$)", "^(\\$false)", "^(\\$it)", "^(\\$true)", @@ -2514,9 +2520,9 @@ mod __intern_token { __regex::Regex::new("^(\'([\u{0}-\\&\\(-\u{10ffff}]|\\\\\')*\')").unwrap(), __regex::Regex::new("^(\\-?[0-9]+)").unwrap(), __regex::Regex::new("^(\\-?[0-9]+[A-Za-z]+)").unwrap(), - __regex::Regex::new("^([\u{0}-!\\#-\\&\\(-,\\.-/:-\u{10ffff}][\u{0}-\u{8}\u{e}-\u{1f}!\\#-\\&\\(-\u{84}\u{86}-\u{9f}¡-ᙿᚁ-\u{1fff}\u{200b}-‧\u{202a}-\u{202e}‰-⁞\u{2060}-\u{2fff}、-\u{10ffff}]*)").unwrap(), + __regex::Regex::new("^([\u{0}-!\\#%-\\&\\(-,/:-\u{10ffff}][\u{0}-\u{8}\u{e}-\u{1f}!\\#-\\&\\(-\u{84}\u{86}-\u{9f}¡-ᙿᚁ-\u{1fff}\u{200b}-‧\u{202a}-\u{202e}‰-⁞\u{2060}-\u{2fff}、-\u{10ffff}]*)").unwrap(), + __regex::Regex::new("^(\\$[A-Za-zªµºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮͰ-ʹͶ-ͷͻ-ͽͿΆΈ-ΊΌΎ-ΡΣ-ϵϷ-ҁҊ-ԯԱ-Ֆՙՠ-ֈא-תׯ-ײؠ-يٮ-ٯٱ-ۓەۥ-ۦۮ-ۯۺ-ۼۿܐܒ-ܯݍ-ޥޱߊ-ߪߴ-ߵߺࠀ-ࠕࠚࠤࠨࡀ-ࡘࡠ-ࡪࢠ-ࢴࢶ-ࢽऄ-हऽॐक़-ॡॱ-ঀঅ-ঌএ-ঐও-নপ-রলশ-হঽৎড়-ঢ়য়-ৡৰ-ৱৼਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹਖ਼-ੜਫ਼ੲ-ੴઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હઽૐૠ-ૡૹଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହଽଡ଼-ଢ଼ୟ-ୡୱஃஅ-ஊஎ-ஐஒ-கங-சஜஞ-டண-தந-பம-ஹௐఅ-ఌఎ-ఐఒ-నప-హఽౘ-ౚౠ-ౡಀಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹಽೞೠ-ೡೱ-ೲഅ-ഌഎ-ഐഒ-ഺഽൎൔ-ൖൟ-ൡൺ-ൿඅ-ඖක-නඳ-රලව-ෆก-ะาเ-ๆກ-ຂຄງ-ຈຊຍດ-ທນ-ຟມ-ຣລວສ-ຫອ-ະາຽເ-ໄໆໜ-ໟༀཀ-ཇཉ-ཬྈ-ྌက-ဪဿၐ-ၕၚ-ၝၡၥ-ၦၮ-ၰၵ-ႁႎႠ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-ᜑᜠ-ᜱᝀ-ᝑᝠ-ᝬᝮ-ᝰក-ឳៗៜᠠ-ᡸᢀ-ᢨᢪᢰ-ᣵᤀ-ᤞᥐ-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉᨀ-ᨖᨠ-ᩔᪧᬅ-ᬳᭅ-ᭋᮃ-ᮠᮮ-ᮯᮺ-ᯥᰀ-ᰣᱍ-ᱏᱚ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿᳩ-ᳬᳮ-ᳱᳵ-ᳶᴀ-ᶿḀ-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼⁱⁿₐ-ₜℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳮⳲ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯⶀ-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ々-〇〡-〩〱-〵〸-〼ぁ-ゖゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘟꘪ-ꘫꙀ-ꙮꙿ-ꚝꚠ-ꛯꜗ-ꜟꜢ-ꞈꞋ-ꞹꟷ-ꠁꠃ-ꠅꠇ-ꠊꠌ-ꠢꡀ-ꡳꢂ-ꢳꣲ-ꣷꣻꣽ-ꣾꤊ-ꤥꤰ-ꥆꥠ-ꥼꦄ-ꦲꧏꧠ-ꧤꧦ-ꧯꧺ-ꧾꨀ-ꨨꩀ-ꩂꩄ-ꩋꩠ-ꩶꩺꩾ-ꪯꪱꪵ-ꪶꪹ-ꪽꫀꫂꫛ-ꫝꫠ-ꫪꫲ-ꫴꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯢ가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִײַ-ﬨשׁ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﱝﱤ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷹﹱﹳﹷﹹﹻﹽﹿ-ﻼA-Za-zヲ-ンᅠ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ𐀀-𐀋𐀍-𐀦𐀨-𐀺𐀼-𐀽𐀿-𐁍𐁐-𐁝𐂀-𐃺𐅀-𐅴𐊀-𐊜𐊠-𐋐𐌀-𐌟𐌭-𐍊𐍐-𐍵𐎀-𐎝𐎠-𐏃𐏈-𐏏𐏑-𐏕𐐀-𐒝𐒰-𐓓𐓘-𐓻𐔀-𐔧𐔰-𐕣𐘀-𐜶𐝀-𐝕𐝠-𐝧𐠀-𐠅𐠈𐠊-𐠵𐠷-𐠸𐠼𐠿-𐡕𐡠-𐡶𐢀-𐢞𐣠-𐣲𐣴-𐣵𐤀-𐤕𐤠-𐤹𐦀-𐦷𐦾-𐦿𐨀𐨐-𐨓𐨕-𐨗𐨙-𐨵𐩠-𐩼𐪀-𐪜𐫀-𐫇𐫉-𐫤𐬀-𐬵𐭀-𐭕𐭠-𐭲𐮀-𐮑𐰀-𐱈𐲀-𐲲𐳀-𐳲𐴀-𐴣𐼀-𐼜𐼧𐼰-𐽅𑀃-𑀷𑂃-𑂯𑃐-𑃨𑄃-𑄦𑅄𑅐-𑅲𑅶𑆃-𑆲𑇁-𑇄𑇚𑇜𑈀-𑈑𑈓-𑈫𑊀-𑊆𑊈𑊊-𑊍𑊏-𑊝𑊟-𑊨𑊰-𑋞𑌅-𑌌𑌏-𑌐𑌓-𑌨𑌪-𑌰𑌲-𑌳𑌵-𑌹𑌽𑍐𑍝-𑍡𑐀-𑐴𑑇-𑑊𑒀-𑒯𑓄-𑓅𑓇𑖀-𑖮𑗘-𑗛𑘀-𑘯𑙄𑚀-𑚪𑜀-𑜚𑠀-𑠫𑢠-𑣟𑣿𑨀𑨋-𑨲𑨺𑩐𑩜-𑪃𑪆-𑪉𑪝𑫀-𑫸𑰀-𑰈𑰊-𑰮𑱀𑱲-𑲏𑴀-𑴆𑴈-𑴉𑴋-𑴰𑵆𑵠-𑵥𑵧-𑵨𑵪-𑶉𑶘𑻠-𑻲𒀀-𒎙𒐀-𒑮𒒀-𒕃𓀀-𓐮𔐀-𔙆𖠀-𖨸𖩀-𖩞𖫐-𖫭𖬀-𖬯𖭀-𖭃𖭣-𖭷𖭽-𖮏𖹀-𖹿𖼀-𖽄𖽐𖾓-𖾟𖿠-𖿡𗀀-𘟱𘠀-𘫲𛀀-𛄞𛅰-𛋻𛰀-𛱪𛱰-𛱼𛲀-𛲈𛲐-𛲙𝐀-𝑔𝑖-𝒜𝒞-𝒟𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒹𝒻𝒽-𝓃𝓅-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔞-𝔹𝔻-𝔾𝕀-𝕄𝕆𝕊-𝕐𝕒-𝚥𝚨-𝛀𝛂-𝛚𝛜-𝛺𝛼-𝜔𝜖-𝜴𝜶-𝝎𝝐-𝝮𝝰-𝞈𝞊-𝞨𝞪-𝟂𝟄-𝟋𞠀-𞣄𞤀-𞥃𞸀-𞸃𞸅-𞸟𞸡-𞸢𞸤𞸧𞸩-𞸲𞸴-𞸷𞸹𞸻𞹂𞹇𞹉𞹋𞹍-𞹏𞹑-𞹒𞹔𞹗𞹙𞹛𞹝𞹟𞹡-𞹢𞹤𞹧-𞹪𞹬-𞹲𞹴-𞹷𞹹-𞹼𞹾𞺀-𞺉𞺋-𞺛𞺡-𞺣𞺥-𞺩𞺫-𞺻𠀀-𪛖𪜀-𫜴𫝀-𫠝𫠠-𬺡𬺰-𮯠丽-𪘀]([0-9A-Z_a-zªµ·ºÀ-ÖØ-öø-ˁˆ-ˑˠ-ˤˬˮ\u{300}-ʹͶ-ͷͻ-ͽͿΆ-ΊΌΎ-ΡΣ-ϵϷ-ҁ\u{483}-\u{487}Ҋ-ԯԱ-Ֆՙՠ-ֈ\u{591}-\u{5bd}\u{5bf}\u{5c1}-\u{5c2}\u{5c4}-\u{5c5}\u{5c7}א-תׯ-ײ\u{610}-\u{61a}ؠ-٩ٮ-ۓە-\u{6dc}\u{6df}-\u{6e8}\u{6ea}-ۼۿܐ-\u{74a}ݍ-ޱ߀-ߵߺ\u{7fd}ࠀ-\u{82d}ࡀ-\u{85b}ࡠ-ࡪࢠ-ࢴࢶ-ࢽ\u{8d3}-\u{8e1}\u{8e3}-\u{963}०-९ॱ-ঃঅ-ঌএ-ঐও-নপ-রলশ-হ\u{9bc}-\u{9c4}ে-ৈো-ৎ\u{9d7}ড়-ঢ়য়-\u{9e3}০-ৱৼ\u{9fe}\u{a01}-ਃਅ-ਊਏ-ਐਓ-ਨਪ-ਰਲ-ਲ਼ਵ-ਸ਼ਸ-ਹ\u{a3c}ਾ-\u{a42}\u{a47}-\u{a48}\u{a4b}-\u{a4d}\u{a51}ਖ਼-ੜਫ਼੦-\u{a75}\u{a81}-ઃઅ-ઍએ-ઑઓ-નપ-રલ-ળવ-હ\u{abc}-\u{ac5}\u{ac7}-ૉો-\u{acd}ૐૠ-\u{ae3}૦-૯ૹ-\u{aff}\u{b01}-ଃଅ-ଌଏ-ଐଓ-ନପ-ରଲ-ଳଵ-ହ\u{b3c}-\u{b44}େ-ୈୋ-\u{b4d}\u{b56}-\u{b57}ଡ଼-ଢ଼ୟ-\u{b63}୦-୯ୱ\u{b82}-ஃஅ-ஊஎ-ஐஒ-கங-சஜஞ-டண-தந-பம-ஹ\u{bbe}-ூெ-ைொ-\u{bcd}ௐ\u{bd7}௦-௯\u{c00}-ఌఎ-ఐఒ-నప-హఽ-ౄ\u{c46}-\u{c48}\u{c4a}-\u{c4d}\u{c55}-\u{c56}ౘ-ౚౠ-\u{c63}౦-౯ಀ-ಃಅ-ಌಎ-ಐಒ-ನಪ-ಳವ-ಹ\u{cbc}-ೄ\u{cc6}-ೈೊ-\u{ccd}\u{cd5}-\u{cd6}ೞೠ-\u{ce3}೦-೯ೱ-ೲ\u{d00}-ഃഅ-ഌഎ-ഐഒ-\u{d44}െ-ൈൊ-ൎൔ-\u{d57}ൟ-\u{d63}൦-൯ൺ-ൿං-ඃඅ-ඖක-නඳ-රලව-ෆ\u{dca}\u{dcf}-\u{dd4}\u{dd6}ෘ-\u{ddf}෦-෯ෲ-ෳก-\u{e3a}เ-\u{e4e}๐-๙ກ-ຂຄງ-ຈຊຍດ-ທນ-ຟມ-ຣລວສ-ຫອ-\u{eb9}\u{ebb}-ຽເ-ໄໆ\u{ec8}-\u{ecd}໐-໙ໜ-ໟༀ\u{f18}-\u{f19}༠-༩\u{f35}\u{f37}\u{f39}༾-ཇཉ-ཬ\u{f71}-\u{f84}\u{f86}-\u{f97}\u{f99}-\u{fbc}\u{fc6}က-၉ၐ-\u{109d}Ⴀ-ჅჇჍა-ჺჼ-ቈቊ-ቍቐ-ቖቘቚ-ቝበ-ኈኊ-ኍነ-ኰኲ-ኵኸ-ኾዀዂ-ዅወ-ዖዘ-ጐጒ-ጕጘ-ፚ\u{135d}-\u{135f}፩-፱ᎀ-ᎏᎠ-Ᏽᏸ-ᏽᐁ-ᙬᙯ-ᙿᚁ-ᚚᚠ-ᛪᛮ-ᛸᜀ-ᜌᜎ-\u{1714}ᜠ-\u{1734}ᝀ-\u{1753}ᝠ-ᝬᝮ-ᝰ\u{1772}-\u{1773}ក-\u{17d3}ៗៜ-\u{17dd}០-៩\u{180b}-\u{180d}᠐-᠙ᠠ-ᡸᢀ-ᢪᢰ-ᣵᤀ-ᤞ\u{1920}-ᤫᤰ-\u{193b}᥆-ᥭᥰ-ᥴᦀ-ᦫᦰ-ᧉ᧐-᧚ᨀ-\u{1a1b}ᨠ-\u{1a5e}\u{1a60}-\u{1a7c}\u{1a7f}-᪉᪐-᪙ᪧ\u{1ab0}-\u{1abd}\u{1b00}-ᭋ᭐-᭙\u{1b6b}-\u{1b73}\u{1b80}-᯳ᰀ-\u{1c37}᱀-᱉ᱍ-ᱽᲀ-ᲈᲐ-ᲺᲽ-Ჿ\u{1cd0}-\u{1cd2}\u{1cd4}-\u{1cf9}ᴀ-\u{1df9}\u{1dfb}-ἕἘ-Ἕἠ-ὅὈ-Ὅὐ-ὗὙὛὝὟ-ώᾀ-ᾴᾶ-ᾼιῂ-ῄῆ-ῌῐ-ΐῖ-Ίῠ-Ῥῲ-ῴῶ-ῼ‿-⁀⁔ⁱⁿₐ-ₜ\u{20d0}-\u{20dc}\u{20e1}\u{20e5}-\u{20f0}ℂℇℊ-ℓℕ℘-ℝℤΩℨK-ℹℼ-ℿⅅ-ⅉⅎⅠ-ↈⰀ-Ⱞⰰ-ⱞⱠ-ⳤⳫ-ⳳⴀ-ⴥⴧⴭⴰ-ⵧⵯ\u{2d7f}-ⶖⶠ-ⶦⶨ-ⶮⶰ-ⶶⶸ-ⶾⷀ-ⷆⷈ-ⷎⷐ-ⷖⷘ-ⷞ\u{2de0}-\u{2dff}々-〇〡-\u{302f}〱-〵〸-〼ぁ-ゖ\u{3099}-\u{309a}ゝ-ゟァ-ヺー-ヿㄅ-ㄯㄱ-ㆎㆠ-ㆺㇰ-ㇿ㐀-䶵一-鿯ꀀ-ꒌꓐ-ꓽꔀ-ꘌꘐ-ꘫꙀ-\u{a66f}\u{a674}-\u{a67d}ꙿ-\u{a6f1}ꜗ-ꜟꜢ-ꞈꞋ-ꞹꟷ-ꠧꡀ-ꡳꢀ-\u{a8c5}꣐-꣙\u{a8e0}-ꣷꣻꣽ-\u{a92d}ꤰ-꥓ꥠ-ꥼ\u{a980}-꧀ꧏ-꧙ꧠ-ꧾꨀ-\u{aa36}ꩀ-ꩍ꩐-꩙ꩠ-ꩶꩺ-ꫂꫛ-ꫝꫠ-ꫯꫲ-\u{aaf6}ꬁ-ꬆꬉ-ꬎꬑ-ꬖꬠ-ꬦꬨ-ꬮꬰ-ꭚꭜ-ꭥꭰ-ꯪ꯬-\u{abed}꯰-꯹가-힣ힰ-ퟆퟋ-ퟻ豈-舘並-龎ff-stﬓ-ﬗיִ-ﬨשׁ-זּטּ-לּמּנּ-סּףּ-פּצּ-ﮱﯓ-ﱝﱤ-ﴽﵐ-ﶏﶒ-ﷇﷰ-ﷹ\u{fe00}-\u{fe0f}\u{fe20}-\u{fe2f}︳-︴﹍-﹏ﹱﹳﹷﹹﹻﹽﹿ-ﻼ0-9A-Z_a-zヲ-하-ᅦᅧ-ᅬᅭ-ᅲᅳ-ᅵ𐀀-𐀋𐀍-𐀦𐀨-𐀺𐀼-𐀽𐀿-𐁍𐁐-𐁝𐂀-𐃺𐅀-𐅴\u{101fd}𐊀-𐊜𐊠-𐋐\u{102e0}𐌀-𐌟𐌭-𐍊𐍐-\u{1037a}𐎀-𐎝𐎠-𐏃𐏈-𐏏𐏑-𐏕𐐀-𐒝𐒠-𐒩𐒰-𐓓𐓘-𐓻𐔀-𐔧𐔰-𐕣𐘀-𐜶𐝀-𐝕𐝠-𐝧𐠀-𐠅𐠈𐠊-𐠵𐠷-𐠸𐠼𐠿-𐡕𐡠-𐡶𐢀-𐢞𐣠-𐣲𐣴-𐣵𐤀-𐤕𐤠-𐤹𐦀-𐦷𐦾-𐦿𐨀-\u{10a03}\u{10a05}-\u{10a06}\u{10a0c}-𐨓𐨕-𐨗𐨙-𐨵\u{10a38}-\u{10a3a}\u{10a3f}𐩠-𐩼𐪀-𐪜𐫀-𐫇𐫉-\u{10ae6}𐬀-𐬵𐭀-𐭕𐭠-𐭲𐮀-𐮑𐰀-𐱈𐲀-𐲲𐳀-𐳲𐴀-\u{10d27}𐴰-𐴹𐼀-𐼜𐼧𐼰-\u{10f50}𑀀-\u{11046}𑁦-𑁯\u{1107f}-\u{110ba}𑃐-𑃨𑃰-𑃹\u{11100}-\u{11134}𑄶-𑄿𑅄-𑅆𑅐-\u{11173}𑅶\u{11180}-𑇄\u{111c9}-\u{111cc}𑇐-𑇚𑇜𑈀-𑈑𑈓-\u{11237}\u{1123e}𑊀-𑊆𑊈𑊊-𑊍𑊏-𑊝𑊟-𑊨𑊰-\u{112ea}𑋰-𑋹\u{11300}-𑌃𑌅-𑌌𑌏-𑌐𑌓-𑌨𑌪-𑌰𑌲-𑌳𑌵-𑌹\u{1133b}-𑍄𑍇-𑍈𑍋-𑍍𑍐\u{11357}𑍝-𑍣\u{11366}-\u{1136c}\u{11370}-\u{11374}𑐀-𑑊𑑐-𑑙\u{1145e}𑒀-𑓅𑓇𑓐-𑓙𑖀-\u{115b5}𑖸-\u{115c0}𑗘-\u{115dd}𑘀-\u{11640}𑙄𑙐-𑙙𑚀-\u{116b7}𑛀-𑛉𑜀-𑜚\u{1171d}-\u{1172b}𑜰-𑜹𑠀-\u{1183a}𑢠-𑣩𑣿𑨀-\u{11a3e}\u{11a47}𑩐-𑪃𑪆-\u{11a99}𑪝𑫀-𑫸𑰀-𑰈𑰊-\u{11c36}\u{11c38}-𑱀𑱐-𑱙𑱲-𑲏\u{11c92}-\u{11ca7}𑲩-\u{11cb6}𑴀-𑴆𑴈-𑴉𑴋-\u{11d36}\u{11d3a}\u{11d3c}-\u{11d3d}\u{11d3f}-\u{11d47}𑵐-𑵙𑵠-𑵥𑵧-𑵨𑵪-𑶎\u{11d90}-\u{11d91}𑶓-𑶘𑶠-𑶩𑻠-𑻶𒀀-𒎙𒐀-𒑮𒒀-𒕃𓀀-𓐮𔐀-𔙆𖠀-𖨸𖩀-𖩞𖩠-𖩩𖫐-𖫭\u{16af0}-\u{16af4}𖬀-\u{16b36}𖭀-𖭃𖭐-𖭙𖭣-𖭷𖭽-𖮏𖹀-𖹿𖼀-𖽄𖽐-𖽾\u{16f8f}-𖾟𖿠-𖿡𗀀-𘟱𘠀-𘫲𛀀-𛄞𛅰-𛋻𛰀-𛱪𛱰-𛱼𛲀-𛲈𛲐-𛲙\u{1bc9d}-\u{1bc9e}\u{1d165}-\u{1d169}𝅭-\u{1d172}\u{1d17b}-\u{1d182}\u{1d185}-\u{1d18b}\u{1d1aa}-\u{1d1ad}\u{1d242}-\u{1d244}𝐀-𝑔𝑖-𝒜𝒞-𝒟𝒢𝒥-𝒦𝒩-𝒬𝒮-𝒹𝒻𝒽-𝓃𝓅-𝔅𝔇-𝔊𝔍-𝔔𝔖-𝔜𝔞-𝔹𝔻-𝔾𝕀-𝕄𝕆𝕊-𝕐𝕒-𝚥𝚨-𝛀𝛂-𝛚𝛜-𝛺𝛼-𝜔𝜖-𝜴𝜶-𝝎𝝐-𝝮𝝰-𝞈𝞊-𝞨𝞪-𝟂𝟄-𝟋𝟎-𝟿\u{1da00}-\u{1da36}\u{1da3b}-\u{1da6c}\u{1da75}\u{1da84}\u{1da9b}-\u{1da9f}\u{1daa1}-\u{1daaf}\u{1e000}-\u{1e006}\u{1e008}-\u{1e018}\u{1e01b}-\u{1e021}\u{1e023}-\u{1e024}\u{1e026}-\u{1e02a}𞠀-𞣄\u{1e8d0}-\u{1e8d6}𞤀-\u{1e94a}𞥐-𞥙𞸀-𞸃𞸅-𞸟𞸡-𞸢𞸤𞸧𞸩-𞸲𞸴-𞸷𞸹𞸻𞹂𞹇𞹉𞹋𞹍-𞹏𞹑-𞹒𞹔𞹗𞹙𞹛𞹝𞹟𞹡-𞹢𞹤𞹧-𞹪𞹬-𞹲𞹴-𞹷𞹹-𞹼𞹾𞺀-𞺉𞺋-𞺛𞺡-𞺣𞺥-𞺩𞺫-𞺻𠀀-𪛖𪜀-𫜴𫝀-𫠝𫠠-𬺡𬺰-𮯠丽-𪘀\u{e0100}-\u{e01ef}]|[!\\-\\?])*)").unwrap(), __regex::Regex::new("^(!=)").unwrap(), - __regex::Regex::new("^(\\$)").unwrap(), __regex::Regex::new("^(\\$false)").unwrap(), __regex::Regex::new("^(\\$it)").unwrap(), __regex::Regex::new("^(\\$true)").unwrap(), @@ -2838,7 +2844,7 @@ fn __action20< (_, __0, _): (usize, Expression, usize), ) -> Expression { - (__0) + __0 } #[allow(unused_variables)] @@ -2846,10 +2852,10 @@ fn __action21< 'input, >( input: &'input str, - (_, __0, _): (usize, &'input str, usize), -) -> Variable + (_, __0, _): (usize, Expression, usize), +) -> Expression { - Variable::True + (__0) } #[allow(unused_variables)] @@ -2860,7 +2866,7 @@ fn __action22< (_, __0, _): (usize, &'input str, usize), ) -> Variable { - Variable::False + Variable::True } #[allow(unused_variables)] @@ -2871,7 +2877,7 @@ fn __action23< (_, __0, _): (usize, &'input str, usize), ) -> Variable { - Variable::It + Variable::False } #[allow(unused_variables)] @@ -2879,11 +2885,10 @@ fn __action24< 'input, >( input: &'input str, - (_, _, _): (usize, &'input str, usize), - (_, __0, _): (usize, String, usize), + (_, __0, _): (usize, &'input str, usize), ) -> Variable { - Variable::Other(__0.to_string()) + Variable::It } #[allow(unused_variables)] @@ -2891,10 +2896,10 @@ fn __action25< 'input, >( input: &'input str, - (_, __0, _): (usize, String, usize), -) -> String + (_, __0, _): (usize, &'input str, usize), +) -> Variable { - (__0) + Variable::Other(__0[1..].to_string()) } #[allow(unused_variables)] @@ -2913,10 +2918,10 @@ fn __action27< 'input, >( input: &'input str, - (_, __0, _): (usize, &'input str, usize), -) -> Operator + (_, __0, _): (usize, String, usize), +) -> String { - Operator::Equal + (__0) } #[allow(unused_variables)] @@ -2927,7 +2932,7 @@ fn __action28< (_, __0, _): (usize, &'input str, usize), ) -> Operator { - Operator::NotEqual + Operator::Equal } #[allow(unused_variables)] @@ -2938,7 +2943,7 @@ fn __action29< (_, __0, _): (usize, &'input str, usize), ) -> Operator { - Operator::LessThan + Operator::NotEqual } #[allow(unused_variables)] @@ -2949,7 +2954,7 @@ fn __action30< (_, __0, _): (usize, &'input str, usize), ) -> Operator { - Operator::GreaterThan + Operator::LessThan } #[allow(unused_variables)] @@ -2960,7 +2965,7 @@ fn __action31< (_, __0, _): (usize, &'input str, usize), ) -> Operator { - Operator::LessThanOrEqual + Operator::GreaterThan } #[allow(unused_variables)] @@ -2971,7 +2976,7 @@ fn __action32< (_, __0, _): (usize, &'input str, usize), ) -> Operator { - Operator::GreaterThanOrEqual + Operator::LessThanOrEqual } #[allow(unused_variables)] @@ -2979,11 +2984,10 @@ fn __action33< 'input, >( input: &'input str, - (_, _, _): (usize, &'input str, usize), - (_, __0, _): (usize, String, usize), -) -> Flag + (_, __0, _): (usize, &'input str, usize), +) -> Operator { - Flag::Shorthand(__0.to_string()) + Operator::GreaterThanOrEqual } #[allow(unused_variables)] @@ -2995,7 +2999,7 @@ fn __action34< (_, __0, _): (usize, String, usize), ) -> Flag { - Flag::Longhand(__0.to_string()) + Flag::Shorthand(__0.to_string()) } #[allow(unused_variables)] @@ -3003,10 +3007,11 @@ fn __action35< 'input, >( input: &'input str, + (_, _, _): (usize, &'input str, usize), (_, __0, _): (usize, String, usize), -) -> String +) -> Flag { - (__0) + Flag::Longhand(__0.to_string()) } #[allow(unused_variables)] @@ -3025,10 +3030,10 @@ fn __action37< 'input, >( input: &'input str, - (_, s, _): (usize, &'input str, usize), + (_, __0, _): (usize, String, usize), ) -> String { - s.to_string() + (__0) } #[allow(unused_variables)] @@ -3036,10 +3041,10 @@ fn __action38< 'input, >( input: &'input str, - (_, s, _): (usize, &'input str, usize), + (_, __0, _): (usize, String, usize), ) -> String { - s[1..s.len() - 1].to_string() + (__0) } #[allow(unused_variables)] @@ -3048,13 +3053,46 @@ fn __action39< >( input: &'input str, (_, s, _): (usize, &'input str, usize), +) -> &'input str +{ + s +} + +#[allow(unused_variables)] +fn __action40< + 'input, +>( + input: &'input str, + (_, s, _): (usize, &'input str, usize), +) -> String +{ + s.to_string() +} + +#[allow(unused_variables)] +fn __action41< + 'input, +>( + input: &'input str, + (_, s, _): (usize, &'input str, usize), ) -> String { s[1..s.len() - 1].to_string() } #[allow(unused_variables)] -fn __action40< +fn __action42< + 'input, +>( + input: &'input str, + (_, s, _): (usize, &'input str, usize), +) -> String +{ + s[1..s.len() - 1].to_string() +} + +#[allow(unused_variables)] +fn __action43< 'input, >( input: &'input str, @@ -3065,7 +3103,7 @@ fn __action40< } #[allow(unused_variables)] -fn __action41< +fn __action44< 'input, >( input: &'input str, @@ -3075,125 +3113,9 @@ fn __action41< Byte::from_string(s).unwrap().get_bytes() as i64 } -#[allow(unused_variables)] -fn __action42< - 'input, ->( - input: &'input str, - __lookbehind: &usize, - __lookahead: &usize, -) -> ::std::vec::Vec -{ - vec![] -} - -#[allow(unused_variables)] -fn __action43< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec, usize), -) -> ::std::vec::Vec -{ - v -} - -#[allow(unused_variables)] -fn __action44< - 'input, ->( - input: &'input str, - (_, _, _): (usize, &'input str, usize), - (_, __0, _): (usize, String, usize), -) -> String -{ - (__0) -} - #[allow(unused_variables)] fn __action45< 'input, ->( - input: &'input str, - __lookbehind: &usize, - __lookahead: &usize, -) -> ::std::vec::Vec -{ - vec![] -} - -#[allow(unused_variables)] -fn __action46< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec, usize), -) -> ::std::vec::Vec -{ - v -} - -#[allow(unused_variables)] -fn __action47< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, ParsedCommand, usize), -) -> ::std::vec::Vec -{ - vec![__0] -} - -#[allow(unused_variables)] -fn __action48< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec, usize), - (_, e, _): (usize, ParsedCommand, usize), -) -> ::std::vec::Vec -{ - { let mut v = v; v.push(e); v } -} - -#[allow(unused_variables)] -fn __action49< - 'input, ->( - input: &'input str, - (_, _, _): (usize, &'input str, usize), - (_, __0, _): (usize, ParsedCommand, usize), -) -> ParsedCommand -{ - (__0) -} - -#[allow(unused_variables)] -fn __action50< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Expression, usize), -) -> ::std::vec::Vec -{ - vec![__0] -} - -#[allow(unused_variables)] -fn __action51< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec, usize), - (_, e, _): (usize, Expression, usize), -) -> ::std::vec::Vec -{ - { let mut v = v; v.push(e); v } -} - -#[allow(unused_variables)] -fn __action52< - 'input, >( input: &'input str, (_, __0, _): (usize, String, usize), @@ -3203,7 +3125,7 @@ fn __action52< } #[allow(unused_variables)] -fn __action53< +fn __action46< 'input, >( input: &'input str, @@ -3214,9 +3136,102 @@ fn __action53< { let mut v = v; v.push(e); v } } +#[allow(unused_variables)] +fn __action47< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, __0, _): (usize, String, usize), +) -> String +{ + (__0) +} + +#[allow(unused_variables)] +fn __action48< + 'input, +>( + input: &'input str, + __lookbehind: &usize, + __lookahead: &usize, +) -> ::std::vec::Vec +{ + vec![] +} + +#[allow(unused_variables)] +fn __action49< + 'input, +>( + input: &'input str, + (_, v, _): (usize, ::std::vec::Vec, usize), +) -> ::std::vec::Vec +{ + v +} + +#[allow(unused_variables)] +fn __action50< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, ParsedCommand, usize), +) -> ::std::vec::Vec +{ + vec![__0] +} + +#[allow(unused_variables)] +fn __action51< + 'input, +>( + input: &'input str, + (_, v, _): (usize, ::std::vec::Vec, usize), + (_, e, _): (usize, ParsedCommand, usize), +) -> ::std::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +fn __action52< + 'input, +>( + input: &'input str, + (_, _, _): (usize, &'input str, usize), + (_, __0, _): (usize, ParsedCommand, usize), +) -> ParsedCommand +{ + (__0) +} + +#[allow(unused_variables)] +fn __action53< + 'input, +>( + input: &'input str, + (_, __0, _): (usize, Expression, usize), +) -> ::std::vec::Vec +{ + vec![__0] +} + #[allow(unused_variables)] fn __action54< 'input, +>( + input: &'input str, + (_, v, _): (usize, ::std::vec::Vec, usize), + (_, e, _): (usize, Expression, usize), +) -> ::std::vec::Vec +{ + { let mut v = v; v.push(e); v } +} + +#[allow(unused_variables)] +fn __action55< + 'input, >( input: &'input str, __0: (usize, &'input str, usize), @@ -3225,20 +3240,20 @@ fn __action54< { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action44( + let __temp0 = __action47( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action52( + __action45( input, __temp0, ) } #[allow(unused_variables)] -fn __action55< +fn __action56< 'input, >( input: &'input str, @@ -3249,36 +3264,13 @@ fn __action55< { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action44( + let __temp0 = __action47( input, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action53( - input, - __0, - __temp0, - ) -} - -#[allow(unused_variables)] -fn __action56< - 'input, ->( - input: &'input str, - __0: (usize, Expression, usize), -) -> Expression -{ - let __start0 = __0.2.clone(); - let __end0 = __0.2.clone(); - let __temp0 = __action42( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action18( + __action46( input, __0, __temp0, @@ -3288,29 +3280,6 @@ fn __action56< #[allow(unused_variables)] fn __action57< 'input, ->( - input: &'input str, - __0: (usize, Expression, usize), - __1: (usize, ::std::vec::Vec, usize), -) -> Expression -{ - let __start0 = __1.0.clone(); - let __end0 = __1.2.clone(); - let __temp0 = __action43( - input, - __1, - ); - let __temp0 = (__start0, __temp0, __end0); - __action18( - input, - __0, - __temp0, - ) -} - -#[allow(unused_variables)] -fn __action58< - 'input, >( input: &'input str, __0: (usize, &'input str, usize), @@ -3319,20 +3288,20 @@ fn __action58< { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action49( + let __temp0 = __action52( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action47( + __action50( input, __temp0, ) } #[allow(unused_variables)] -fn __action59< +fn __action58< 'input, >( input: &'input str, @@ -3343,13 +3312,13 @@ fn __action59< { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action49( + let __temp0 = __action52( input, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action48( + __action51( input, __0, __temp0, @@ -3357,7 +3326,7 @@ fn __action59< } #[allow(unused_variables)] -fn __action60< +fn __action59< 'input, >( input: &'input str, @@ -3366,7 +3335,7 @@ fn __action60< { let __start0 = __0.2.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action45( + let __temp0 = __action48( input, &__start0, &__end0, @@ -3380,7 +3349,7 @@ fn __action60< } #[allow(unused_variables)] -fn __action61< +fn __action60< 'input, >( input: &'input str, @@ -3390,7 +3359,7 @@ fn __action61< { let __start0 = __1.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action46( + let __temp0 = __action49( input, __1, );