From 3aa87800866c581e0de45dfb251fd6b910cd5b57 Mon Sep 17 00:00:00 2001 From: Mark Thom Date: Fri, 28 Jul 2017 17:02:08 -0600 Subject: [PATCH] fix recursive calls to call/N --- Cargo.lock | 258 +-- Cargo.toml | 11 +- src/main.rs | 29 +- src/prolog/ast.rs | 34 + src/prolog/codegen.rs | 1 - src/prolog/io.rs | 36 +- src/prolog/iterators.rs | 6 +- src/prolog/machine.rs | 137 +- src/prolog/prolog_parser.lalrpop | 52 +- src/prolog/prolog_parser.rs | 3072 ++++++------------------------ 10 files changed, 919 insertions(+), 2717 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 29899435..4724aa07 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1,18 +1,27 @@ [root] name = "rusty-wam" -version = "0.6.4" +version = "0.6.5" dependencies = [ - "lalrpop 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lalrpop-util 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "termion 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", + "lalrpop 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lalrpop-util 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "termion 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "aho-corasick" -version = "0.5.2" +version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", +] + +[[package]] +name = "ascii-canvas" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -21,53 +30,61 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", "winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bit-set" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "bit-vec 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)", + "bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "bit-vec" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "bitflags" -version = "0.4.0" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "diff" -version = "0.1.9" +version = "0.1.10" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "docopt" -version = "0.6.83" +version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.1.75 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "strsim 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "either" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "ena" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "fixedbitset" -version = "0.1.1" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "itertools" -version = "0.3.25" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)", +] [[package]] name = "kernel32-sys" @@ -80,118 +97,121 @@ dependencies = [ [[package]] name = "lalrpop" -version = "0.12.5" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "ascii-canvas 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bit-set 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "diff 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "docopt 0.6.83 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lalrpop-intern 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lalrpop-snap 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lalrpop-util 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "petgraph 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.1.75 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "diff 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "docopt 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ena 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "lalrpop-intern 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lalrpop-snap 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lalrpop-util 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "petgraph 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lalrpop-intern" -version = "0.12.5" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lalrpop-snap" -version = "0.12.5" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ + "ascii-canvas 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", "atty 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", - "bit-set 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", - "bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "diff 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)", - "docopt 0.6.83 (registry+https://github.com/rust-lang/crates.io-index)", - "itertools 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)", - "lalrpop-intern 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "lalrpop-util 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)", - "petgraph 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)", - "regex 0.1.75 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)", - "term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)", - "unicode-xid 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)", + "bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "diff 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)", + "docopt 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)", + "ena 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)", + "itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)", + "lalrpop-intern 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "lalrpop-util 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)", + "petgraph 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)", + "term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "lalrpop-util" -version = "0.12.5" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "lazy_static" -version = "0.2.1" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "libc" -version = "0.2.16" +version = "0.2.24" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "memchr" -version = "0.1.11" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ordermap" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" + [[package]] name = "petgraph" -version = "0.1.18" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "fixedbitset 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", + "fixedbitset 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)", + "ordermap 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex" -version = "0.1.75" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "aho-corasick 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)", - "memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)", - "regex-syntax 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)", - "thread_local 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)", - "utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)", + "aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)", + "memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)", + "thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "regex-syntax" -version = "0.2.6" -source = "registry+https://github.com/rust-lang/crates.io-index" - -[[package]] -name = "regex-syntax" -version = "0.3.5" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "rustc-serialize" -version = "0.3.19" +version = "0.3.24" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "strsim" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] name = "term" -version = "0.4.4" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", @@ -200,37 +220,51 @@ dependencies = [ [[package]] name = "termion" -version = "1.2.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "thread-id" -version = "2.0.0" +version = "3.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)", - "libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)", + "libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "thread_local" -version = "0.2.6" +version = "0.3.3" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)", + "thread-id 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)", + "unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] name = "unicode-xid" -version = "0.0.2" +version = "0.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" +[[package]] +name = "unreachable" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "utf8-ranges" -version = "0.1.3" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" + +[[package]] +name = "void" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" [[package]] @@ -244,34 +278,38 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" [metadata] -"checksum aho-corasick 0.5.2 (registry+https://github.com/rust-lang/crates.io-index)" = "2b3fb52b09c1710b961acb35390d514be82e4ac96a9969a8e38565a29b878dc9" +"checksum aho-corasick 0.6.3 (registry+https://github.com/rust-lang/crates.io-index)" = "500909c4f87a9e52355b26626d890833e9e1d53ac566db76c36faa984b889699" +"checksum ascii-canvas 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b385d69402821a1c254533a011a312531cbcc0e3e24f19bbb4747a5a2daf37e2" "checksum atty 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "d0fd4c0631f06448cc45a6bbb3b710ebb7ff8ccb96a0800c994afe23a70d5df2" -"checksum bit-set 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)" = "84527c7b0452f22545cc010e72d366a435561d2b28b978035550b3778c4d428d" -"checksum bit-vec 0.4.3 (registry+https://github.com/rust-lang/crates.io-index)" = "5b97c2c8e8bbb4251754f559df8af22fb264853c7d009084a576cdf12565089d" -"checksum bitflags 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8dead7461c1127cf637931a1e50934eb6eee8bff2f74433ac7909e9afcee04a3" -"checksum diff 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "e48977eec6d3b7707462c2dc2e1363ad91b5dd822cf942537ccdc2085dc87587" -"checksum docopt 0.6.83 (registry+https://github.com/rust-lang/crates.io-index)" = "fc42c6077823a361410c37d47c2535b73a190cbe10838dc4f400fe87c10c8c3b" -"checksum fixedbitset 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c59882225c22dfcd2db6f0fce45dabe334e64ffa5efacb785b7ffb5af690cc6f" -"checksum itertools 0.3.25 (registry+https://github.com/rust-lang/crates.io-index)" = "16b73f1c685cfd8ff8d75698ed87e6188cd09944b30c0863d45c2c3699d1da0c" +"checksum bit-set 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "d9bf6104718e80d7b26a68fdbacff3481cfc05df670821affc7e9cbc1884400c" +"checksum bit-vec 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "02b4ff8b16e6076c3e14220b39fbc1fabb6737522281a388998046859400895f" +"checksum diff 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "0a515461b6c8c08419850ced27bc29e86166dcdcde8fbe76f8b1f0589bb49472" +"checksum docopt 0.7.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ab32ea6e284d87987066f21a9e809a73c14720571ef34516f0890b3d355ccfd8" +"checksum either 1.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "18785c1ba806c258137c937e44ada9ee7e69a37e3c72077542cd2f069d78562a" +"checksum ena 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "cabe5a5078ac8c506d3e4430763b1ba9b609b1286913e7d08e581d1c2de9b7e5" +"checksum fixedbitset 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fcf4412e2d11115c5ed81c2fbdaba8028de0c92553497aa771fc5f4e0c5c8793" +"checksum itertools 0.5.10 (registry+https://github.com/rust-lang/crates.io-index)" = "4833d6978da405305126af4ac88569b5d71ff758581ce5a987dbfa3755f694fc" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" -"checksum lalrpop 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "a50b5cdf6b58f1753c86ebcc4d0852ff30478133fb370a27dbf303cbd5621fdc" -"checksum lalrpop-intern 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "39e21a3b0618b97e727f67d46bf1a21954384f6be6bf72558cc48f149881066e" -"checksum lalrpop-snap 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "e82554f7abfe767e8a22286e7ca6d1ea7d873e91f0259981e15c7c6754d7340d" -"checksum lalrpop-util 0.12.5 (registry+https://github.com/rust-lang/crates.io-index)" = "36497edf44be49f4663ebd9cfb154a81c84491986a62773c62624911efd3d84d" -"checksum lazy_static 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)" = "49247ec2a285bb3dcb23cbd9c35193c025e7251bfce77c1d5da97e6362dffe7f" -"checksum libc 0.2.16 (registry+https://github.com/rust-lang/crates.io-index)" = "408014cace30ee0f767b1c4517980646a573ec61a57957aeeabcac8ac0a02e8d" -"checksum memchr 0.1.11 (registry+https://github.com/rust-lang/crates.io-index)" = "d8b629fb514376c675b98c1421e80b151d3817ac42d7c667717d282761418d20" -"checksum petgraph 0.1.18 (registry+https://github.com/rust-lang/crates.io-index)" = "bfd1de18b0a5f1777162e5b61aaf498032467d5409ab4ca6dbd03049f5708de1" -"checksum regex 0.1.75 (registry+https://github.com/rust-lang/crates.io-index)" = "f62414f9d3b0f53e827ac46d6f8ce2ff6a91afd724225a5986e54e81e170693c" -"checksum regex-syntax 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "a21935ce5a4dfa48e3ded1aefbbe353fb9ab258b0d3fa0bd168bef00797b3dc7" -"checksum regex-syntax 0.3.5 (registry+https://github.com/rust-lang/crates.io-index)" = "279401017ae31cf4e15344aa3f085d0e2e5c1e70067289ef906906fdbe92c8fd" -"checksum rustc-serialize 0.3.19 (registry+https://github.com/rust-lang/crates.io-index)" = "6159e4e6e559c81bd706afe9c8fd68f547d3e851ce12e76b1de7914bab61691b" -"checksum strsim 0.5.1 (registry+https://github.com/rust-lang/crates.io-index)" = "50c069df92e4b01425a8bf3576d5d417943a6a7272fbabaf5bd80b1aaa76442e" -"checksum term 0.4.4 (registry+https://github.com/rust-lang/crates.io-index)" = "3deff8a2b3b6607d6d7cc32ac25c0b33709453ca9cceac006caac51e963cf94a" -"checksum termion 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6e710c59ecea168019486885ade43ea5329bb9a08a117410052fb81b250f40ae" -"checksum thread-id 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a9539db560102d1cef46b8b78ce737ff0bb64e7e18d35b2a5688f7d097d0ff03" -"checksum thread_local 0.2.6 (registry+https://github.com/rust-lang/crates.io-index)" = "55dd963dbaeadc08aa7266bf7f91c3154a7805e32bb94b820b769d2ef3b4744d" -"checksum unicode-xid 0.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "f69506a2561962651710609304bbb961fa3da598c812f877975a82e48ee144f9" -"checksum utf8-ranges 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "a1ca13c08c41c9c3e04224ed9ff80461d97e121589ff27c753a16cb10830ae0f" +"checksum lalrpop 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8ebe5a5c90d5edeecb7f62f6ebec0a3d0f6faf4759a052708348cda99fd311a0" +"checksum lalrpop-intern 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "05410c1e4aff497bdea1ccb274ac35536fda0ee858600df36966502d4f7acbe3" +"checksum lalrpop-snap 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "3f866ece35287f5223a1a022c5d86417c260cda2ca9c8a156af9959404ce5313" +"checksum lalrpop-util 0.13.1 (registry+https://github.com/rust-lang/crates.io-index)" = "7c7743f235fc17f5f50f3b1e64a8690ee154f17f86bd68cbb78787c5b37907f7" +"checksum lazy_static 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "3b37545ab726dd833ec6420aaba8231c5b320814b9029ad585555d2a03e94fbf" +"checksum libc 0.2.24 (registry+https://github.com/rust-lang/crates.io-index)" = "38f5c2b18a287cf78b4097db62e20f43cace381dc76ae5c0a3073067f78b7ddc" +"checksum memchr 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1dbccc0e46f1ea47b9f17e6d67c5a96bd27030519c519c9c91327e31275a47b4" +"checksum ordermap 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c036a53e6bb62d7eee2edf7e087df56fd84c7bbae6a0bd93c2b9f54bddf62e03" +"checksum petgraph 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)" = "14c6ae5ccb73b438781abc93d35615019b1ad6e24b44116377fb819cfd7587de" +"checksum regex 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1731164734096285ec2a5ec7fea5248ae2f5485b3feeb0115af4fda2183b2d1b" +"checksum regex-syntax 0.4.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad890a5eef7953f55427c50575c680c42841653abd2b028b68cd223d157f62db" +"checksum rustc-serialize 0.3.24 (registry+https://github.com/rust-lang/crates.io-index)" = "dcf128d1287d2ea9d80910b5f1120d0b8eede3fbf1abe91c40d39ea7d51e6fda" +"checksum strsim 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "b4d15c810519a91cf877e7e36e63fe068815c678181439f2f29e2562147c3694" +"checksum term 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)" = "fa63644f74ce96fbeb9b794f66aff2a52d601cbd5e80f4b97123e3899f4570f1" +"checksum termion 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "9105678ba52491a8e38e67be7842435ac44d7797b9b05bcdad370b0c84559615" +"checksum thread-id 3.1.0 (registry+https://github.com/rust-lang/crates.io-index)" = "8df7875b676fddfadffd96deea3b1124e5ede707d4884248931077518cf1f773" +"checksum thread_local 0.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "c85048c6260d17cf486ceae3282d9fb6b90be220bf5b28c400f5485ffc29f0c7" +"checksum unicode-xid 0.0.4 (registry+https://github.com/rust-lang/crates.io-index)" = "8c1f860d7d29cf02cb2f3f359fd35991af3d30bac52c57d265a3c461074cb4dc" +"checksum unreachable 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "1f2ae5ddb18e1c92664717616dd9549dde73f539f01bd7b77c2edb2446bdff91" +"checksum utf8-ranges 1.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "662fab6525a98beff2921d7f61a39e7d59e0b425ebc7d0d9e66d316e55124122" +"checksum void 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" "checksum winapi 0.2.8 (registry+https://github.com/rust-lang/crates.io-index)" = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" "checksum winapi-build 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" diff --git a/Cargo.toml b/Cargo.toml index 46c8ec45..f7a338a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,15 +1,18 @@ [package] name = "rusty-wam" -version = "0.6.4" +version = "0.6.5" authors = ["Mark Thom"] build = "build.rs" +[dependencies] +regex = "0.2.1" + [dependencies.termion] -version = "1.2.0" +version = "1.4.0" [dependencies.lalrpop-util] -version = "0.12.5" +version = "0.13.1" [build-dependencies.lalrpop] -version = "0.12.5" \ No newline at end of file +version = "0.13.1" \ No newline at end of file diff --git a/src/main.rs b/src/main.rs index e7364466..cdf1f639 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,7 +3,6 @@ mod prolog; use prolog::io::*; use prolog::machine::*; -use prolog::prolog_parser::*; #[cfg(test)] mod tests { @@ -13,8 +12,8 @@ mod tests { fn submit(wam: &mut Machine, buffer: &str) -> bool { wam.reset(); - match parse_TopLevel(buffer.trim()) { - Ok(tl) => + match parse_code(buffer.trim()) { + Some(tl) => match eval(wam, &tl) { EvalSession::InitialQuerySuccess(_, _) | EvalSession::EntrySuccess | @@ -22,7 +21,7 @@ mod tests { true, _ => false }, - Err(_) => panic!("Bad parse in test case!") + None => panic!("Grammatical error of some kind!") } } @@ -647,19 +646,31 @@ mod tests { assert_eq!(submit(&mut wam, "?- call_mult(p(X), one)."), true); assert_eq!(submit(&mut wam, "?- call_mult(p(two), one)."), false); assert_eq!(submit(&mut wam, "?- call_mult(p(two), two)."), true); + + submit(&mut wam, "f(call(f, undefined)). f(undefined)."); + submit(&mut wam, "call_var(P) :- P."); + + assert_eq!(submit(&mut wam, "?- f(X), call_var(X)."), true); + assert_eq!(submit(&mut wam, "?- f(call(f, Q)), call_var(call(f, Q))."), true); + assert_eq!(submit(&mut wam, "?- call_var(call(undefined, Q))."), false); + + assert_eq!(submit(&mut wam, "?- call(call)."), false); + assert_eq!(submit(&mut wam, "?- call(call(call))."), false); + assert_eq!(submit(&mut wam, "?- call(call(call(call)))."), false); + assert_eq!(submit(&mut wam, "?- call(call(call(call(call))))."), false); + assert_eq!(submit(&mut wam, "?- call(call(call(call(call(call)))))."), false); + assert_eq!(submit(&mut wam, "?- call(call(call(call(call(call(p(X)))))))."), true); } } fn process_buffer(wam: &mut Machine, buffer: &str) { - match parse_TopLevel(buffer.trim()) { - Ok(tl) => { + match parse_code(buffer.trim()) { + Some(tl) => { let result = eval(wam, &tl); print(wam, result); }, - Err(_) => { - println!("Grammatical error of some kind!"); - } + None => println!("Grammatical error!") }; } diff --git a/src/prolog/ast.rs b/src/prolog/ast.rs index 56083c2e..5a84b8c8 100644 --- a/src/prolog/ast.rs +++ b/src/prolog/ast.rs @@ -1,6 +1,7 @@ use std::cell::Cell; use std::cmp::Ordering; use std::collections::{HashMap, VecDeque}; +use std::iter::*; use std::ops::{Add, AddAssign}; use std::vec::Vec; @@ -57,6 +58,38 @@ pub enum TopLevel { Rule(Rule) } +impl TopLevel { + pub fn query_iter_mut<'a>(&'a mut self) -> Box + 'a> + { + let mut iter: Box + 'a> = Box::new(empty()); + + match self { + &mut TopLevel::Rule(Rule { head: (_, ref mut head), ref mut clauses }) => { + iter = Box::new(once(head)); + iter = Box::new(iter.chain(clauses.iter_mut())); + }, + &mut TopLevel::Query(ref mut clauses) => + iter = Box::new(iter.chain(clauses.iter_mut())), + &mut TopLevel::Predicate(ref mut pred_clauses) => + for pred_clause in pred_clauses.iter_mut() { + match pred_clause { + &mut PredicateClause::Rule(Rule { head: (_, ref mut head), + ref mut clauses }) + => + { + iter = Box::new(once(head)); + iter = Box::new(iter.chain(clauses.iter_mut())); + }, + _ => {} + } + }, + _ => {} + } + + iter + } +} + #[derive(Clone, Copy)] pub enum Level { Deep, Shallow @@ -517,3 +550,4 @@ impl Term { } } } + diff --git a/src/prolog/codegen.rs b/src/prolog/codegen.rs index 63078650..15fb9432 100644 --- a/src/prolog/codegen.rs +++ b/src/prolog/codegen.rs @@ -210,7 +210,6 @@ impl<'a, TermMarker: Allocator<'a>> CodeGenerator<'a, TermMarker> *ctrl = ControlInstruction::ExecuteN(terms.len()); }, _ => dealloc_index = body.len() - }; dealloc_index diff --git a/src/prolog/io.rs b/src/prolog/io.rs index 97f51633..4ace7e9b 100644 --- a/src/prolog/io.rs +++ b/src/prolog/io.rs @@ -2,6 +2,7 @@ use prolog::ast::*; use prolog::codegen::*; use prolog::debray_allocator::*; use prolog::machine::*; +use prolog::prolog_parser::*; use termion::raw::IntoRawMode; use termion::input::TermRead; @@ -9,6 +10,7 @@ use termion::event::Key; use std::io::{Write, stdin, stdout}; use std::fmt; +use std::mem::swap; impl fmt::Display for Constant { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { @@ -195,6 +197,35 @@ impl fmt::Display for RegType { } } +pub fn parse_code(input: &str) -> Option +{ + match parse_TopLevel(input) { + Ok(mut tl) => { + for query in tl.query_iter_mut() { + let cts = match query { + &mut QueryTerm::Term(Term::Clause(_, ref name, ref mut cts)) => { + if name == "call" { + let mut new_cts = Vec::with_capacity(0); + swap(&mut new_cts, cts); + + Some(new_cts) + } else { + None + } + }, + _ => None + }; + + if let Some(cts) = cts { + swap(&mut QueryTerm::CallN(cts), query); + } + } + + Some(tl) + }, + Err(_) => None + } +} fn is_consistent(predicate: &Vec) -> bool { let name = predicate.first().unwrap().name(); @@ -285,7 +316,7 @@ Each predicate must have the same name and arity."; let compiled_fact = cg.compile_fact(fact); wam.add_fact(fact, compiled_fact); - + EvalSession::EntrySuccess }, &TopLevel::Rule(ref rule) => { @@ -300,7 +331,8 @@ Each predicate must have the same name and arity."; let mut cg = CodeGenerator::::new(); let compiled_query = cg.compile_query(query); - wam.submit_query(compiled_query, cg.take_vars()) + print_code(&compiled_query); + wam.submit_query(compiled_query, cg.take_vars()) } } } diff --git a/src/prolog/iterators.rs b/src/prolog/iterators.rs index 2c0bf1a9..b4279a78 100644 --- a/src/prolog/iterators.rs +++ b/src/prolog/iterators.rs @@ -70,7 +70,7 @@ impl<'a> QueryIterator<'a> { fn new(term: QueryTermRef<'a>) -> Self { match term { QueryTermRef::CallN(child_terms) => { - let state = IteratorState::Clause(0, ClauseType::CallN, child_terms); + let state = IteratorState::Clause(1, ClauseType::CallN, child_terms); QueryIterator { state_stack: vec![state] } }, QueryTermRef::Term(term) => Self::from_term(term), @@ -96,7 +96,9 @@ impl<'a> Iterator for QueryIterator<'a> { IteratorState::Clause(child_num, ct, child_terms) => { if child_num == child_terms.len() { match ct { - ClauseType::CallN | ClauseType::Root => + ClauseType::CallN => + self.push_subterm(Level::Shallow, child_terms[0].as_ref()), + ClauseType::Root => return None, ClauseType::Deep(_, _, _) => return Some(TermRef::Clause(ct, child_terms)) diff --git a/src/prolog/machine.rs b/src/prolog/machine.rs index 26c27d88..bb114e00 100644 --- a/src/prolog/machine.rs +++ b/src/prolog/machine.rs @@ -15,13 +15,17 @@ enum MachineMode { Write } -struct MachineState { +//TODO: probably.. the wrong solution. should integrate deeply with the WAM. +//type SpecialHandler<'a> = fn(&'a mut MachineState, bool, usize); + +struct MachineState { //<'a> { h: usize, s: usize, p: CodePtr, b: usize, b0: usize, e: usize, + //special_handlers: HashMap<&'a Atom, SpecialHandler<'a>>, num_of_args: usize, cp: CodePtr, fail: bool, @@ -99,7 +103,7 @@ impl Machine { pub fn failed(&self) -> bool { self.ms.fail } - + pub fn add_fact(&mut self, fact: &Term, mut code: Code) { if let Some(name) = fact.name() { let p = self.code.len(); @@ -289,8 +293,8 @@ impl Machine { pub fn submit_query<'a>(&mut self, code: Code, alloc_locs: AllocVarDict<'a>) -> EvalSession<'a> { let mut heap_locs = HashMap::new(); - - self.cached_query = Some(code); + + self.cached_query = Some(code); self.run_query(&alloc_locs, &mut heap_locs); if self.failed() { @@ -977,7 +981,76 @@ impl MachineState { self.p = CodePtr::DirEntry(compiled_tl_index); }, None => self.fail = true - }; + }; + } + + fn dispatch_call_n(&mut self, + code_dir: &CodeDir, + name: Atom, + is_call: bool, + arity: &mut usize, + narity: usize) + -> bool + { + if name == "call" { + let new_pred = self.registers[1].clone(); + + for i in 2 .. *arity + narity { + self.registers[i-1] = self.registers[i].clone(); + } + + self.registers[*arity + narity - 1] = new_pred; + + if *arity + narity - 1 > 0 { + *arity = *arity + narity - 1; + return true; + } else { + self.fail = true; + return false; + } + } + + if is_call { + self.try_call_predicate(code_dir, name, *arity + narity - 1); + } else { + self.try_execute_predicate(code_dir, name, *arity + narity - 1); + } + + false + } + + fn execute_call_n(&mut self, code_dir: &CodeDir, is_call: bool, mut arity: usize) + { + loop { + let addr = self.deref(self.registers[arity].clone()); + + match self.store(addr) { + Addr::Str(a) => { + let result = self.heap[a].clone(); + + if let HeapCellValue::NamedStr(narity, name) = result { + for i in (1 .. arity).rev() { + self.registers[i + narity] = self.registers[i].clone(); + } + + for i in 1 .. narity + 1 { + self.registers[i] = self.heap[a + i].as_addr(a + i); + } + + if self.dispatch_call_n(code_dir, name, is_call, &mut arity, narity) { + continue; + } + } + }, + Addr::Con(Constant::Atom(name)) => + if self.dispatch_call_n(code_dir, name, is_call, &mut arity, 0) { + continue; + }, + _ => self.fail = true + }; + + break; + } } fn execute_ctrl_instr(&mut self, code_dir: &CodeDir, instr: &ControlInstruction) @@ -987,35 +1060,14 @@ impl MachineState { let num_frames = self.num_frames(); self.and_stack.push(num_frames + 1, self.e, self.cp, num_cells); - + self.e = self.and_stack.len() - 1; self.p += 1; }, &ControlInstruction::Call(ref name, arity, _) => self.try_call_predicate(code_dir, name.clone(), arity), - &ControlInstruction::CallN(arity) => { - let addr = self.deref(self.registers[arity].clone()); - - match self.store(addr) { - Addr::Str(a) => { - let result = self.heap[a].clone(); - - if let HeapCellValue::NamedStr(narity, name) = result { - for i in 1 .. narity + 1 { - self.registers[i + narity] = self.registers[i].clone(); - self.registers[i] = self.heap[a + i].as_addr(a + i); - } - - self.try_call_predicate(code_dir, name, arity + narity - 1); - } else { - self.fail = true; - } - }, - Addr::Con(Constant::Atom(name)) => - self.try_call_predicate(code_dir, name, arity - 1), - _ => self.fail = true - }; - }, + &ControlInstruction::CallN(arity) => + self.execute_call_n(code_dir, true, arity), &ControlInstruction::Deallocate => { let e = self.e; @@ -1025,30 +1077,9 @@ impl MachineState { self.p += 1; }, &ControlInstruction::Execute(ref name, arity) => - self.try_execute_predicate(code_dir, name.clone(), arity), - &ControlInstruction::ExecuteN(arity) => { - let addr = self.deref(self.registers[arity].clone()); - - match self.store(addr) { - Addr::Str(a) => { - let result = self.heap[a].clone(); - - if let HeapCellValue::NamedStr(narity, name) = result { - for i in 1 .. narity + 1 { - self.registers[i + narity] = self.registers[i].clone(); - self.registers[i] = self.heap[a + i].as_addr(a + i); - } - - self.try_execute_predicate(code_dir, name, arity + narity - 1); - } else { - self.fail = true; - } - }, - Addr::Con(Constant::Atom(name)) => - self.try_execute_predicate(code_dir, name, arity - 1), - _ => self.fail = true - }; - }, + self.try_execute_predicate(code_dir, name.clone(), arity), + &ControlInstruction::ExecuteN(arity) => + self.execute_call_n(code_dir, false, arity), &ControlInstruction::Proceed => self.p = self.cp, }; diff --git a/src/prolog/prolog_parser.lalrpop b/src/prolog/prolog_parser.lalrpop index 5a2135db..ccebf81e 100644 --- a/src/prolog/prolog_parser.lalrpop +++ b/src/prolog/prolog_parser.lalrpop @@ -1,4 +1,5 @@ use prolog::ast::*; +//use prolog::prolog_parser_utils::*; use std::cell::Cell; @@ -19,49 +20,8 @@ BoxedTerm : Box = { => Box::new(t) }; -Call : QueryTerm = { - "call" "(" )*> ")" => { - match c { - QueryTerm::CallN(mut terms) => { - let vt = terms.pop().unwrap(); - let mut ts = ts; - - terms.append(&mut ts); - terms.push(vt); - - QueryTerm::CallN(terms) - }, - QueryTerm::Term(Term::Clause(cell, atom, mut terms)) => { - let mut ts = ts; - terms.append(&mut ts); - QueryTerm::Term(Term::Clause(cell, atom, terms)) - }, - _ => c - } - }, - "call" "(" "(" ",")*> ")" - )*> ")" => { - let mut ts = ts; - let mut tss = tss; - - ts.push(t); - - ts.append(&mut tss); - QueryTerm::Term(Term::Clause(Cell::default(), a, ts)) - }, - "call" "(" )*> ")" => - QueryTerm::Term(Term::Clause(Cell::default(), a, ts)), - "call" "(" )*> ")" => { - let mut ts = ts; - let bv = Box::new(Term::Var(Cell::default(), v)); - - ts.push(bv); - QueryTerm::CallN(ts) - } -}; - Clause : Term = { - "(" ",")*> ")" => { + "(" ",")*> ")" => { let mut ts = ts; ts.push(t); Term::Clause(Cell::default(), a, ts) @@ -109,22 +69,20 @@ Rule : Rule = { ":-" )*> => Rule { head: (c, h), clauses: cs }, ":-" )*> => - Rule { head: (Term::Constant(Cell::default(), Constant::Atom(a)), - h), + Rule { head: (Term::Constant(Cell::default(), Constant::Atom(a)), h), clauses: cs } }; QueryTerm : QueryTerm = { - => <>, "!" => QueryTerm::Cut, => QueryTerm::CallN(vec![Box::new(Term::Var(Cell::default(), <>))]), - => QueryTerm::Term(<>), + => QueryTerm::Term(<>), => QueryTerm::Term(Term::Constant(Cell::default(), Constant::Atom(<>))) }; Term : Term = { - => Term::Constant(Cell::default(), Constant::Atom(<>)), => <>, + => Term::Constant(Cell::default(), Constant::Atom(<>)), => <>, => Term::Var(Cell::default(), <>), "_" => Term::AnonVar diff --git a/src/prolog/prolog_parser.rs b/src/prolog/prolog_parser.rs index 6ab46d0d..c465658f 100644 --- a/src/prolog/prolog_parser.rs +++ b/src/prolog/prolog_parser.rs @@ -21,14 +21,9 @@ mod __parse__TopLevel { Term_22_5b_5d_22(&'input str), Term_22_5d_22(&'input str), Term_22___22(&'input str), - Term_22call_22(&'input str), Term_22_7c_22(&'input str), Termr_23_22_5bA_2dZ_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23(&'input str), Termr_23_22_5ba_2dz_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23(&'input str), - Termerror(__lalrpop_util::ErrorRecovery), - Nt_28_22_2c_22_20_3cBoxedTerm_3e_29(Box), - Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2a(::std::vec::Vec>), - Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(::std::vec::Vec>), Nt_28_22_2c_22_20_3cQueryTerm_3e_29(QueryTerm), Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2a(::std::vec::Vec), Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2b(::std::vec::Vec), @@ -42,7 +37,6 @@ mod __parse__TopLevel { Nt_28_3cQueryTerm_3e_20_22_2c_22_29_2b(::std::vec::Vec), NtAtom(Atom), NtBoxedTerm(Box), - NtCall(QueryTerm), NtClause(Term), NtList(Term), NtListInternals(Term), @@ -58,904 +52,324 @@ mod __parse__TopLevel { } const __ACTION: &'static [i32] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 12, 13, 14, 0, 15, 0, 0, 16, 17, 0, + 0, 0, 0, 0, 0, 0, 12, 13, 14, 0, 15, 0, 16, 17, // State 1 - 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 0, 0, 16, 17, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 0, 16, 17, // State 2 - 0, 21, 0, 0, -57, 22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 21, 0, 0, -42, 22, 0, 0, 0, 0, 0, 0, 0, 0, // State 3 - 0, 0, 0, 0, -58, 23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, -41, 23, 0, 0, 0, 0, 0, 0, 0, 0, // State 4 - 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, -43, // State 5 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, -47, // State 6 - 0, 0, 0, 0, 0, 0, 0, -17, -17, 0, -17, 0, 0, -17, -17, 0, + -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, -12, // State 7 - 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 8 - 0, 0, 0, 0, 25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 25, 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, + -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, -51, // State 10 - 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, -44, // State 11 - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 36, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, // State 12 - 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 46, 0, 0, 47, 48, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 0, 16, 17, // State 13 - 0, 0, 0, 0, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, // State 14 - 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, -45, // State 15 - 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, -50, // State 16 - 0, -24, 0, 0, -24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, // State 17 - 0, 0, 0, 0, 0, 0, 0, -18, -18, 0, -18, 0, 0, -18, -18, 0, + 0, 0, 0, 0, 0, 0, 0, -13, -13, 0, -13, 0, -13, -13, // State 18 - 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 19 - 0, 0, 0, 0, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 39, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 20 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 0, 16, 17, // State 21 - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 36, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, // State 22 - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 36, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, // State 23 - 0, 0, 0, 0, 0, 0, 0, -44, -44, 0, -44, 0, 0, -44, -44, 0, + 0, 0, 0, 0, 0, 0, 0, -29, -29, 0, -29, 0, -29, -29, // State 24 - 0, 0, 0, 0, 0, 0, 0, -45, -45, 0, -45, 0, 0, -45, -45, 0, + 0, 0, 0, 0, 0, 0, 0, -30, -30, 0, -30, 0, -30, -30, // State 25 - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 36, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, // State 26 - 0, 66, 0, -52, -52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 21, 0, -36, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 27 - 0, 0, 0, -48, -48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, -35, // State 28 - 0, 0, 0, -51, -51, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 29 - 0, 0, 0, 0, 67, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 46, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 30 - 0, 0, 0, 68, -46, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, -34, // State 31 - 0, 0, 0, -50, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, // State 32 - 0, 0, 0, -49, -49, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 21, -42, -42, 0, 0, 0, 0, 0, -42, 0, -42, 0, 0, // State 33 - 0, 69, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 47, 0, 0, 0, 0, 0, -25, 0, 48, 0, 0, // State 34 - 0, 0, 0, -66, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, -41, // State 35 - 0, -24, 0, -24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, // State 36 - 0, 70, 0, -57, 0, 0, 0, 0, 0, -57, 0, 0, -57, 0, 0, 0, + -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, -20, // State 37 - 0, 0, 0, 71, 0, 0, 0, 0, 0, -40, 0, 0, 72, 0, 0, 0, + -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, -29, // State 38 - 0, 0, 0, -58, 0, 0, 0, 0, 0, -58, 0, 0, -58, 0, 0, 0, + -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, // State 39 - 0, 0, 0, -59, 0, 0, 0, 0, 0, -59, 0, 0, -59, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 0, 16, 17, // State 40 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 73, 0, 0, 0, 0, 0, 0, + 0, 0, 51, 52, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 41 - 0, 0, 0, -25, 0, 0, 0, 0, 0, -25, 0, 0, -25, 0, 0, 0, + 0, 0, 0, 54, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 42 - 0, 0, 0, -60, 0, 0, 0, 0, 0, -60, 0, 0, -60, 0, 0, 0, + 0, 0, 0, 54, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 43 - 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 46, 0, 0, 47, 48, 0, + 0, 0, 0, 56, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 44 - 0, 0, 0, -38, 0, 0, 0, 0, 0, -38, 0, 0, -38, 0, 0, 0, + -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, -46, // State 45 - 0, 0, 0, -61, 0, 0, 0, 0, 0, -61, 0, 0, -61, 0, 0, 0, + -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, -17, // State 46 - 0, 0, 0, -66, 0, 0, 0, 0, 0, -66, 0, 0, -66, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 0, 16, 17, // State 47 - 0, -24, 0, -24, 0, 0, 0, 0, 0, -24, 0, 0, -24, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 13, 14, 0, 15, 0, 16, 17, // State 48 - 0, 0, 0, 0, 0, 0, 0, -44, -44, 0, -44, 0, 0, -44, -44, 0, + -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, // State 49 - 0, 0, 0, 0, 0, 0, 0, -45, -45, 0, -45, 0, 0, -45, -45, 0, + 0, 0, 59, 60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 50 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, + -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, // State 51 - 0, 76, -57, -57, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, -9, // State 52 - 0, 0, 77, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 61, -40, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 53 - 0, 0, -58, -58, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, // State 54 - 0, 0, -59, -59, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 61, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 55 - 0, 0, -25, -25, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, -18, // State 56 - 0, 0, -60, -60, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, // State 57 - 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 46, 0, 0, 47, 48, 0, + -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, -27, // State 58 - 0, 0, -38, -38, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, -22, // State 59 - 0, 0, -61, -61, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, // State 60 - 0, 0, -66, -66, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 17, // State 61 - 0, -24, -24, -24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, // State 62 - 0, 0, 0, 81, -55, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 63 - 0, 0, 0, 81, -53, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 64 - 0, 0, 0, 83, -47, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 65 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 66 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 67 - -22, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -22, 0, -22, -22, 0, - // State 68 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 61, 62, 0, - // State 69 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 70 - 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 46, 0, 0, 47, 48, 0, - // State 71 - 0, 0, 0, 0, 0, 0, 0, 99, 100, 0, 101, 0, 0, 102, 103, 0, - // State 72 - 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 73 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 104, 0, 0, 0, 0, 0, 0, - // State 74 - 0, 0, 105, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 75 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 76 - 0, 0, 0, 0, -36, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 77 - 0, 0, 0, 0, 0, 0, 0, -14, -14, 0, -14, 0, 0, -14, -14, 0, - // State 78 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 109, 0, 0, 0, 0, 0, 0, - // State 79 - 0, 0, 0, 110, -56, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 80 - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 36, 0, - // State 81 - 0, 0, 0, 110, -54, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 82 - -23, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -23, 0, -23, -23, 0, - // State 83 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 84 - 0, 0, 113, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 85 - 0, 115, 116, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 86 - 0, 0, 119, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 87 - 0, 0, 121, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 88 - 0, 122, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 89 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 90 - 0, 0, 124, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 91 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -41, 0, 0, 0, 0, 0, 0, - // State 92 - 0, 125, 0, 0, 0, 0, 0, 0, 0, -57, 0, 0, 0, 0, 0, 0, - // State 93 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -42, 0, 0, 0, 0, 0, 0, - // State 94 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -58, 0, 0, 0, 0, 0, 0, - // State 95 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -59, 0, 0, 0, 0, 0, 0, - // State 96 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -25, 0, 0, 0, 0, 0, 0, - // State 97 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -60, 0, 0, 0, 0, 0, 0, - // State 98 - 0, 0, 0, 0, 0, 0, 0, 44, 45, 0, 46, 0, 0, 47, 48, 0, - // State 99 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -38, 0, 0, 0, 0, 0, 0, - // State 100 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -61, 0, 0, 0, 0, 0, 0, - // State 101 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -66, 0, 0, 0, 0, 0, 0, - // State 102 - 0, -24, 0, 0, 0, 0, 0, 0, 0, -24, 0, 0, 0, 0, 0, 0, - // State 103 - 0, 0, 0, -39, 0, 0, 0, 0, 0, -39, 0, 0, -39, 0, 0, 0, - // State 104 - 0, 0, 0, 0, -37, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 105 - 0, 0, 0, 0, 0, 0, 0, -15, -15, 0, -15, 0, 0, -15, -15, 0, - // State 106 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 107 - 0, 0, 128, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 108 - 0, 0, -39, -39, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 109 - 33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 34, 0, 35, 36, 0, - // State 110 - 0, 0, 0, -9, -9, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 111 - 0, 0, 130, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 112 - 0, 0, 0, -36, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 113 - 0, 0, 131, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 114 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 115 - 0, 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 116 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 117 - 0, 0, 136, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 118 - 0, 0, 0, -26, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 119 - 0, 0, 137, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 120 - 0, 0, 0, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 121 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 89, 0, 61, 62, 0, - // State 122 - 0, 0, 141, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 123 - 0, 0, 0, -36, 0, 0, 0, 0, 0, -36, 0, 0, -36, 0, 0, 0, - // State 124 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 125 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 144, 0, 0, 0, 0, 0, 0, - // State 126 - 0, 0, 145, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 127 - 0, 0, -36, -36, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 128 - 0, 0, 0, -10, -10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 129 - 0, 0, 0, -37, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 130 - 0, 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 131 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 132 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 133 - 0, 0, 148, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 134 - 0, 0, -4, -4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 135 - 0, 0, 0, -27, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 136 - 0, 0, 0, -35, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 137 - 0, 150, 151, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 138 - 0, 0, 153, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 139 - 0, 0, 155, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 140 - 0, 0, 0, -37, 0, 0, 0, 0, 0, -37, 0, 0, -37, 0, 0, 0, - // State 141 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 142 - 0, 0, 157, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 143 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -39, 0, 0, 0, 0, 0, 0, - // State 144 - 0, 0, -37, -37, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 145 - 0, 0, -5, -5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 146 - 0, 0, 158, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 147 - 0, 0, 160, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 148 - 0, 0, 161, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 149 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 150 - 0, 0, -32, -32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 151 - 0, 0, 164, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 152 - 0, 0, -26, -26, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 153 - 0, 0, 165, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 154 - 0, 0, -34, -34, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 155 - 0, 0, 166, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 156 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -36, 0, 0, 0, 0, 0, 0, - // State 157 - 0, 0, 168, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 158 - 0, 0, 169, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 159 - 0, 0, 0, -28, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 160 - 0, 0, -33, -33, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 161 - 0, 0, 0, 0, 0, 0, 0, 58, 59, 0, 60, 0, 0, 61, 62, 0, - // State 162 - 0, 0, 171, 78, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 163 - 0, 0, -27, -27, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 164 - 0, 0, -35, -35, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 165 - 0, 0, 0, 0, 0, 0, 0, 0, 0, -37, 0, 0, 0, 0, 0, 0, - // State 166 - 0, 0, 172, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 167 - 0, 0, 0, -29, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 168 - 0, 0, 0, -30, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 169 - 0, 0, 173, 106, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 170 - 0, 0, 175, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 171 - 0, 0, 0, -31, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 172 - 0, 0, 177, 117, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 173 - 0, 0, 178, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 174 - 0, 0, -28, -28, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 175 - 0, 0, 179, 132, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 176 - 0, 0, -29, -29, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 177 - 0, 0, -30, -30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 178 - 0, 0, -31, -31, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, ]; const __EOF_ACTION: &'static [i32] = &[ - 0, - 0, - 0, - 0, - 0, - -63, - 0, - 0, - 0, - -67, - 0, - 0, - 0, 0, 0, 0, 0, -43, + -47, + -12, 0, 0, - 0, - 0, - 0, - -64, - -65, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, + -51, -44, - -45, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - -62, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, - 0, 0, 0, + -23, + -45, + -50, + -19, + -28, 0, 0, 0, 0, 0, + -48, + -49, 0, 0, + -35, 0, 0, + -34, + -33, 0, 0, + -41, 0, + -20, + -29, + -30, 0, 0, 0, 0, 0, + -46, + -17, 0, 0, + -24, 0, + -21, + -9, 0, 0, 0, + -18, + -26, + -27, + -22, + -10, 0, + -4, + -5, ]; const __GOTO: &'static [i32] = &[ // State 0 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 4, 5, 0, 6, 7, 0, 0, 8, 9, 10, 11, 0, + 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 3, 0, 4, 5, 0, 6, 7, 0, 0, 8, 9, 10, 11, 0, // State 1 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 4, 5, 0, 0, 18, 0, 0, 19, 20, 0, 11, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 4, 5, 0, 0, 18, 0, 0, 19, 20, 0, 11, 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, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, // 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, // State 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, 0, 0, + 0, 0, 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, // 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, // 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, // 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, // State 11 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 0, 28, 29, 0, 0, 0, 0, 30, 31, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 26, 27, 0, 28, 0, 0, 0, 0, 29, 30, 0, 0, 0, 31, 0, // State 12 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 40, 41, 0, 0, 0, 0, 0, 42, 0, 43, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 34, 35, 5, 36, 0, 0, 0, 0, 0, 37, 0, 11, 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, // 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, // 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, // 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, // 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, // 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, // 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, // State 20 - 0, 0, 0, 0, 0, 0, 0, 0, 51, 0, 0, 0, 0, 0, 52, 53, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, + 0, 0, 0, 0, 0, 40, 0, 0, 0, 0, 0, 33, 41, 35, 5, 0, 0, 0, 0, 0, 0, 37, 0, 11, 0, // State 21 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 63, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 0, 0, 0, 0, 0, 42, 0, 0, 0, 31, 0, // State 22 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 64, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 0, 0, 0, 0, 0, 43, 0, 0, 0, 31, 0, // State 23 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, // State 25 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 65, 0, 0, 0, 32, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 0, 0, 0, 0, 0, 44, 0, 0, 0, 31, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 27 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 28 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, // 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, // 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, // 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, // State 33 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 35 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 36 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, // 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, // 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, 33, 50, 35, 5, 0, 0, 0, 0, 0, 0, 37, 0, 11, 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, // 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, 53, 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, 55, 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, 37, 38, 0, 39, 40, 74, 0, 0, 0, 0, 0, 42, 0, 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, // State 44 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // State 45 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 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, 33, 34, 35, 5, 57, 0, 0, 0, 0, 0, 37, 0, 11, 0, // State 47 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 33, 58, 35, 5, 0, 0, 0, 0, 0, 0, 37, 0, 11, 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, // 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, // State 50 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 75, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 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, // 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, // 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, // State 53 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 0, 0, 0, 0, 0, 62, 0, 0, 0, 31, 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, // 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, // 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, // State 57 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 40, 79, 0, 0, 0, 0, 0, 42, 0, 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, // 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, // 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, // 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, 27, 0, 28, 0, 0, 0, 0, 0, 63, 0, 0, 0, 31, 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, // State 62 - 0, 0, 0, 0, 0, 80, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 63 - 0, 0, 0, 0, 0, 82, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 64 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 65 - 0, 0, 0, 0, 0, 0, 0, 0, 84, 0, 0, 0, 0, 0, 52, 85, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 66 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 67 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 68 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 0, 87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 88, 0, - // State 69 - 0, 0, 0, 0, 0, 0, 0, 0, 90, 0, 0, 0, 0, 0, 52, 91, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 70 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 40, 92, 0, 0, 0, 0, 0, 42, 0, 43, 0, - // State 71 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 93, 94, 0, 95, 96, 0, 0, 0, 0, 0, 0, 97, 0, 98, 0, - // State 72 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 73 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 74 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 75 - 0, 0, 0, 0, 0, 0, 0, 0, 107, 0, 0, 0, 0, 0, 52, 108, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 76 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 77 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 78 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 79 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 80 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 111, 0, 0, 0, 32, 0, - // State 81 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 82 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 83 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 112, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 84 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 85 - 0, 0, 114, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 86 - 0, 0, 118, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 87 - 0, 0, 120, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 88 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 89 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 123, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 90 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 91 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 92 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 93 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 94 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 95 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 96 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 97 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 98 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 37, 38, 0, 39, 40, 126, 0, 0, 0, 0, 0, 42, 0, 43, 0, - // State 99 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 100 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 101 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 102 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 103 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 104 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 105 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 106 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 127, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 107 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 108 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 109 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 27, 0, 28, 29, 0, 0, 0, 0, 0, 129, 0, 0, 0, 32, 0, - // State 110 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 111 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 112 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 113 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 114 - 0, 0, 0, 0, 0, 0, 0, 0, 133, 0, 0, 0, 0, 0, 52, 134, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 115 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 116 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 135, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 117 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 118 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 119 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 120 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 121 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 138, 0, 139, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 140, 0, - // State 122 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 123 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 124 - 0, 0, 0, 0, 0, 0, 0, 0, 142, 0, 0, 0, 0, 0, 52, 143, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 125 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 126 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 127 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 128 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 129 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 130 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 131 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 146, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 132 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 147, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 133 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 134 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 135 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 136 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 137 - 0, 0, 149, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 138 - 0, 0, 152, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 139 - 0, 0, 154, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 140 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 141 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 156, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 142 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 143 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 144 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 145 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 146 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 147 - 0, 0, 159, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 148 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 149 - 0, 0, 0, 0, 0, 0, 0, 0, 162, 0, 0, 0, 0, 0, 52, 163, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 150 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 151 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 152 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 153 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 154 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 155 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 156 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 157 - 0, 0, 167, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 158 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 159 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 160 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 161 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 52, 170, 0, 54, 55, 0, 0, 0, 0, 0, 0, 56, 0, 57, 0, - // State 162 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 163 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 164 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 165 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 166 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 167 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 168 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 169 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 170 - 0, 0, 174, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 171 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 172 - 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 173 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 174 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 175 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 176 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 177 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - // State 178 - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 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] = &[ @@ -970,12 +384,11 @@ mod __parse__TopLevel { r###""[]""###, r###""]""###, r###""_""###, - r###""call""###, r###""|""###, r###"r#"[A-Z][A-Za-z0-9_]*"#"###, r###"r#"[a-z][A-Za-z0-9_]*"#"###, ]; - __ACTION[(__state * 16)..].iter().zip(__TERMINAL).filter_map(|(&state, terminal)| { + __ACTION[(__state * 14)..].iter().zip(__TERMINAL).filter_map(|(&state, terminal)| { if state == 0 { None } else { @@ -1003,21 +416,20 @@ mod __parse__TopLevel { }; __last_location = __lookahead.2.clone(); __integer = match __lookahead.1 { - (0, _) if true => 0, - (1, _) if true => 1, - (2, _) if true => 2, - (3, _) if true => 3, - (4, _) if true => 4, - (5, _) if true => 5, - (6, _) if true => 6, - (7, _) if true => 7, - (8, _) if true => 8, - (9, _) if true => 9, - (10, _) if true => 10, - (11, _) if true => 11, - (12, _) if true => 12, - (13, _) if true => 13, - (14, _) if true => 14, + (2, _) if true => 0, + (3, _) if true => 1, + (4, _) if true => 2, + (5, _) if true => 3, + (6, _) if true => 4, + (7, _) if true => 5, + (8, _) if true => 6, + (9, _) if true => 7, + (10, _) if true => 8, + (11, _) if true => 9, + (12, _) if true => 10, + (13, _) if true => 11, + (0, _) if true => 12, + (1, _) if true => 13, _ => { let __state = *__states.last().unwrap() as usize; let __error = __lalrpop_util::ParseError::UnrecognizedToken { @@ -1029,67 +441,63 @@ mod __parse__TopLevel { }; '__inner: loop { let __state = *__states.last().unwrap() as usize; - let __action = __ACTION[__state * 16 + __integer]; + let __action = __ACTION[__state * 14 + __integer]; if __action > 0 { let __symbol = match __integer { 0 => match __lookahead.1 { - (0, __tok0) => __Symbol::Term_22_21_22(__tok0), + (2, __tok0) => __Symbol::Term_22_21_22((__tok0)), _ => unreachable!(), }, 1 => match __lookahead.1 { - (1, __tok0) => __Symbol::Term_22_28_22(__tok0), + (3, __tok0) => __Symbol::Term_22_28_22((__tok0)), _ => unreachable!(), }, 2 => match __lookahead.1 { - (2, __tok0) => __Symbol::Term_22_29_22(__tok0), + (4, __tok0) => __Symbol::Term_22_29_22((__tok0)), _ => unreachable!(), }, 3 => match __lookahead.1 { - (3, __tok0) => __Symbol::Term_22_2c_22(__tok0), + (5, __tok0) => __Symbol::Term_22_2c_22((__tok0)), _ => unreachable!(), }, 4 => match __lookahead.1 { - (4, __tok0) => __Symbol::Term_22_2e_22(__tok0), + (6, __tok0) => __Symbol::Term_22_2e_22((__tok0)), _ => unreachable!(), }, 5 => match __lookahead.1 { - (5, __tok0) => __Symbol::Term_22_3a_2d_22(__tok0), + (7, __tok0) => __Symbol::Term_22_3a_2d_22((__tok0)), _ => unreachable!(), }, 6 => match __lookahead.1 { - (6, __tok0) => __Symbol::Term_22_3f_2d_22(__tok0), + (8, __tok0) => __Symbol::Term_22_3f_2d_22((__tok0)), _ => unreachable!(), }, 7 => match __lookahead.1 { - (7, __tok0) => __Symbol::Term_22_5b_22(__tok0), + (9, __tok0) => __Symbol::Term_22_5b_22((__tok0)), _ => unreachable!(), }, 8 => match __lookahead.1 { - (8, __tok0) => __Symbol::Term_22_5b_5d_22(__tok0), + (10, __tok0) => __Symbol::Term_22_5b_5d_22((__tok0)), _ => unreachable!(), }, 9 => match __lookahead.1 { - (9, __tok0) => __Symbol::Term_22_5d_22(__tok0), + (11, __tok0) => __Symbol::Term_22_5d_22((__tok0)), _ => unreachable!(), }, 10 => match __lookahead.1 { - (10, __tok0) => __Symbol::Term_22___22(__tok0), + (12, __tok0) => __Symbol::Term_22___22((__tok0)), _ => unreachable!(), }, 11 => match __lookahead.1 { - (11, __tok0) => __Symbol::Term_22call_22(__tok0), + (13, __tok0) => __Symbol::Term_22_7c_22((__tok0)), _ => unreachable!(), }, 12 => match __lookahead.1 { - (12, __tok0) => __Symbol::Term_22_7c_22(__tok0), + (0, __tok0) => __Symbol::Termr_23_22_5bA_2dZ_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23((__tok0)), _ => unreachable!(), }, 13 => match __lookahead.1 { - (13, __tok0) => __Symbol::Termr_23_22_5bA_2dZ_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23(__tok0), - _ => unreachable!(), - }, - 14 => match __lookahead.1 { - (14, __tok0) => __Symbol::Termr_23_22_5ba_2dz_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23(__tok0), + (1, __tok0) => __Symbol::Termr_23_22_5ba_2dz_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23((__tok0)), _ => unreachable!(), }, _ => unreachable!(), @@ -1141,272 +549,214 @@ mod __parse__TopLevel { { let __nonterminal = match -__action { 1 => { - // ("," ) = ",", BoxedTerm => ActionFn(48); - let __sym1 = __pop_NtBoxedTerm(__symbols); + // ("," ) = ",", QueryTerm => ActionFn(31); + let __sym1 = __pop_NtQueryTerm(__symbols); let __sym0 = __pop_Term_22_2c_22(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action48::<>(input, __sym0, __sym1); + let __nt = super::__action31::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); - __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cBoxedTerm_3e_29(__nt), __end)); + __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cQueryTerm_3e_29(__nt), __end)); 0 } 2 => { - // ("," )* = => ActionFn(46); + // ("," )* = => ActionFn(29); 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::__action46::<>(input, &__start, &__end); + let __nt = super::__action29::<>(input, &__start, &__end); let __states_len = __states.len(); __states.truncate(__states_len - 0); - __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2a(__nt), __end)); + __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2a(__nt), __end)); 1 } 3 => { - // ("," )* = ("," )+ => ActionFn(47); - let __sym0 = __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action47::<>(input, __sym0); - let __states_len = __states.len(); - __states.truncate(__states_len - 1); - __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2a(__nt), __end)); - 1 - } - 4 => { - // ("," )+ = ",", BoxedTerm => ActionFn(57); - let __sym1 = __pop_NtBoxedTerm(__symbols); - let __sym0 = __pop_Term_22_2c_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action57::<>(input, __sym0, __sym1); - let __states_len = __states.len(); - __states.truncate(__states_len - 2); - __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__nt), __end)); - 2 - } - 5 => { - // ("," )+ = ("," )+, ",", BoxedTerm => ActionFn(58); - let __sym2 = __pop_NtBoxedTerm(__symbols); - let __sym1 = __pop_Term_22_2c_22(__symbols); - let __sym0 = __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym2.2.clone(); - let __nt = super::__action58::<>(input, __sym0, __sym1, __sym2); - let __states_len = __states.len(); - __states.truncate(__states_len - 3); - __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__nt), __end)); - 2 - } - 6 => { - // ("," ) = ",", QueryTerm => ActionFn(36); - let __sym1 = __pop_NtQueryTerm(__symbols); - let __sym0 = __pop_Term_22_2c_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym1.2.clone(); - let __nt = super::__action36::<>(input, __sym0, __sym1); - let __states_len = __states.len(); - __states.truncate(__states_len - 2); - __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cQueryTerm_3e_29(__nt), __end)); - 3 - } - 7 => { - // ("," )* = => ActionFn(34); - 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::__action34::<>(input, &__start, &__end); - let __states_len = __states.len(); - __states.truncate(__states_len - 0); - __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2a(__nt), __end)); - 4 - } - 8 => { - // ("," )* = ("," )+ => ActionFn(35); + // ("," )* = ("," )+ => ActionFn(30); let __sym0 = __pop_Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2b(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action35::<>(input, __sym0); + let __nt = super::__action30::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2a(__nt), __end)); - 4 + 1 } - 9 => { - // ("," )+ = ",", QueryTerm => ActionFn(67); + 4 => { + // ("," )+ = ",", QueryTerm => ActionFn(47); let __sym1 = __pop_NtQueryTerm(__symbols); let __sym0 = __pop_Term_22_2c_22(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action67::<>(input, __sym0, __sym1); + let __nt = super::__action47::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2b(__nt), __end)); - 5 + 2 } - 10 => { - // ("," )+ = ("," )+, ",", QueryTerm => ActionFn(68); + 5 => { + // ("," )+ = ("," )+, ",", QueryTerm => ActionFn(48); let __sym2 = __pop_NtQueryTerm(__symbols); let __sym1 = __pop_Term_22_2c_22(__symbols); let __sym0 = __pop_Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2b(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action68::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action48::<>(input, __sym0, __sym1, __sym2); let __states_len = __states.len(); __states.truncate(__states_len - 3); __symbols.push((__start, __Symbol::Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2b(__nt), __end)); - 5 + 2 } - 11 => { - // ( ",") = BoxedTerm, "," => ActionFn(45); + 6 => { + // ( ",") = BoxedTerm, "," => ActionFn(40); let __sym1 = __pop_Term_22_2c_22(__symbols); let __sym0 = __pop_NtBoxedTerm(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action45::<>(input, __sym0, __sym1); + let __nt = super::__action40::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29(__nt), __end)); - 6 + 3 } - 12 => { - // ( ",")* = => ActionFn(43); + 7 => { + // ( ",")* = => ActionFn(38); let __start = __symbols.last().map(|s| s.2.clone()).unwrap_or_default(); let __end = __lookahead_start.cloned().unwrap_or_else(|| __start.clone()); - let __nt = super::__action43::<>(input, &__start, &__end); + let __nt = super::__action38::<>(input, &__start, &__end); let __states_len = __states.len(); __states.truncate(__states_len - 0); __symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2a(__nt), __end)); - 7 + 4 } - 13 => { - // ( ",")* = ( ",")+ => ActionFn(44); + 8 => { + // ( ",")* = ( ",")+ => ActionFn(39); let __sym0 = __pop_Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action44::<>(input, __sym0); + let __nt = super::__action39::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2a(__nt), __end)); - 7 + 4 } - 14 => { - // ( ",")+ = BoxedTerm, "," => ActionFn(73); + 9 => { + // ( ",")+ = BoxedTerm, "," => ActionFn(53); let __sym1 = __pop_Term_22_2c_22(__symbols); let __sym0 = __pop_NtBoxedTerm(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action73::<>(input, __sym0, __sym1); + let __nt = super::__action53::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__nt), __end)); - 8 + 5 } - 15 => { - // ( ",")+ = ( ",")+, BoxedTerm, "," => ActionFn(74); + 10 => { + // ( ",")+ = ( ",")+, BoxedTerm, "," => ActionFn(54); let __sym2 = __pop_Term_22_2c_22(__symbols); let __sym1 = __pop_NtBoxedTerm(__symbols); let __sym0 = __pop_Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action74::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action54::<>(input, __sym0, __sym1, __sym2); let __states_len = __states.len(); __states.truncate(__states_len - 3); __symbols.push((__start, __Symbol::Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__nt), __end)); - 8 + 5 } - 16 => { - // () = PredicateClause => ActionFn(42); + 11 => { + // () = PredicateClause => ActionFn(37); let __sym0 = __pop_NtPredicateClause(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action42::<>(input, __sym0); + let __nt = super::__action37::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::Nt_28_3cPredicateClause_3e_29(__nt), __end)); - 9 + 6 } - 17 => { - // ()+ = PredicateClause => ActionFn(81); + 12 => { + // ()+ = PredicateClause => ActionFn(57); let __sym0 = __pop_NtPredicateClause(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action81::<>(input, __sym0); + let __nt = super::__action57::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::Nt_28_3cPredicateClause_3e_29_2b(__nt), __end)); - 10 + 7 } - 18 => { - // ()+ = ()+, PredicateClause => ActionFn(82); + 13 => { + // ()+ = ()+, PredicateClause => ActionFn(58); let __sym1 = __pop_NtPredicateClause(__symbols); let __sym0 = __pop_Nt_28_3cPredicateClause_3e_29_2b(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action82::<>(input, __sym0, __sym1); + let __nt = super::__action58::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::Nt_28_3cPredicateClause_3e_29_2b(__nt), __end)); - 10 + 7 } - 19 => { - // ( ",") = QueryTerm, "," => ActionFn(39); + 14 => { + // ( ",") = QueryTerm, "," => ActionFn(34); let __sym1 = __pop_Term_22_2c_22(__symbols); let __sym0 = __pop_NtQueryTerm(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action39::<>(input, __sym0, __sym1); + let __nt = super::__action34::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::Nt_28_3cQueryTerm_3e_20_22_2c_22_29(__nt), __end)); - 11 + 8 } - 20 => { - // ( ",")* = => ActionFn(37); + 15 => { + // ( ",")* = => ActionFn(32); 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::__action37::<>(input, &__start, &__end); + let __nt = super::__action32::<>(input, &__start, &__end); let __states_len = __states.len(); __states.truncate(__states_len - 0); __symbols.push((__start, __Symbol::Nt_28_3cQueryTerm_3e_20_22_2c_22_29_2a(__nt), __end)); - 12 + 9 } - 21 => { - // ( ",")* = ( ",")+ => ActionFn(38); + 16 => { + // ( ",")* = ( ",")+ => ActionFn(33); let __sym0 = __pop_Nt_28_3cQueryTerm_3e_20_22_2c_22_29_2b(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action38::<>(input, __sym0); + let __nt = super::__action33::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::Nt_28_3cQueryTerm_3e_20_22_2c_22_29_2a(__nt), __end)); - 12 + 9 } - 22 => { - // ( ",")+ = QueryTerm, "," => ActionFn(83); + 17 => { + // ( ",")+ = QueryTerm, "," => ActionFn(59); let __sym1 = __pop_Term_22_2c_22(__symbols); let __sym0 = __pop_NtQueryTerm(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action83::<>(input, __sym0, __sym1); + let __nt = super::__action59::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::Nt_28_3cQueryTerm_3e_20_22_2c_22_29_2b(__nt), __end)); - 13 + 10 } - 23 => { - // ( ",")+ = ( ",")+, QueryTerm, "," => ActionFn(84); + 18 => { + // ( ",")+ = ( ",")+, QueryTerm, "," => ActionFn(60); let __sym2 = __pop_Term_22_2c_22(__symbols); let __sym1 = __pop_NtQueryTerm(__symbols); let __sym0 = __pop_Nt_28_3cQueryTerm_3e_20_22_2c_22_29_2b(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action84::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action60::<>(input, __sym0, __sym1, __sym2); let __states_len = __states.len(); __states.truncate(__states_len - 3); __symbols.push((__start, __Symbol::Nt_28_3cQueryTerm_3e_20_22_2c_22_29_2b(__nt), __end)); - 13 + 10 } - 24 => { + 19 => { // Atom = r#"[a-z][A-Za-z0-9_]*"# => ActionFn(5); let __sym0 = __pop_Termr_23_22_5ba_2dz_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23(__symbols); let __start = __sym0.0.clone(); @@ -1415,9 +765,9 @@ mod __parse__TopLevel { let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtAtom(__nt), __end)); - 14 + 11 } - 25 => { + 20 => { // BoxedTerm = Term => ActionFn(6); let __sym0 = __pop_NtTerm(__symbols); let __start = __sym0.0.clone(); @@ -1426,183 +776,24 @@ mod __parse__TopLevel { let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtBoxedTerm(__nt), __end)); - 15 - } - 26 => { - // Call = "call", "(", Call, ")" => ActionFn(59); - let __sym3 = __pop_Term_22_29_22(__symbols); - let __sym2 = __pop_NtCall(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action59::<>(input, __sym0, __sym1, __sym2, __sym3); - let __states_len = __states.len(); - __states.truncate(__states_len - 4); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 - } - 27 => { - // Call = "call", "(", Call, ("," )+, ")" => ActionFn(60); - let __sym4 = __pop_Term_22_29_22(__symbols); - let __sym3 = __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__symbols); - let __sym2 = __pop_NtCall(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action60::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - let __states_len = __states.len(); - __states.truncate(__states_len - 5); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 - } - 28 => { - // Call = "call", "(", Atom, "(", BoxedTerm, ")", ")" => ActionFn(75); - let __sym6 = __pop_Term_22_29_22(__symbols); - let __sym5 = __pop_Term_22_29_22(__symbols); - let __sym4 = __pop_NtBoxedTerm(__symbols); - let __sym3 = __pop_Term_22_28_22(__symbols); - let __sym2 = __pop_NtAtom(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym6.2.clone(); - let __nt = super::__action75::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6); - let __states_len = __states.len(); - __states.truncate(__states_len - 7); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 - } - 29 => { - // Call = "call", "(", Atom, "(", ( ",")+, BoxedTerm, ")", ")" => ActionFn(76); - let __sym7 = __pop_Term_22_29_22(__symbols); - let __sym6 = __pop_Term_22_29_22(__symbols); - let __sym5 = __pop_NtBoxedTerm(__symbols); - let __sym4 = __pop_Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__symbols); - let __sym3 = __pop_Term_22_28_22(__symbols); - let __sym2 = __pop_NtAtom(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym7.2.clone(); - let __nt = super::__action76::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - let __states_len = __states.len(); - __states.truncate(__states_len - 8); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 - } - 30 => { - // Call = "call", "(", Atom, "(", BoxedTerm, ")", ("," )+, ")" => ActionFn(77); - let __sym7 = __pop_Term_22_29_22(__symbols); - let __sym6 = __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__symbols); - let __sym5 = __pop_Term_22_29_22(__symbols); - let __sym4 = __pop_NtBoxedTerm(__symbols); - let __sym3 = __pop_Term_22_28_22(__symbols); - let __sym2 = __pop_NtAtom(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym7.2.clone(); - let __nt = super::__action77::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7); - let __states_len = __states.len(); - __states.truncate(__states_len - 8); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 - } - 31 => { - // Call = "call", "(", Atom, "(", ( ",")+, BoxedTerm, ")", ("," )+, ")" => ActionFn(78); - let __sym8 = __pop_Term_22_29_22(__symbols); - let __sym7 = __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__symbols); - let __sym6 = __pop_Term_22_29_22(__symbols); - let __sym5 = __pop_NtBoxedTerm(__symbols); - let __sym4 = __pop_Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__symbols); - let __sym3 = __pop_Term_22_28_22(__symbols); - let __sym2 = __pop_NtAtom(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym8.2.clone(); - let __nt = super::__action78::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4, __sym5, __sym6, __sym7, __sym8); - let __states_len = __states.len(); - __states.truncate(__states_len - 9); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 - } - 32 => { - // Call = "call", "(", Atom, ")" => ActionFn(63); - let __sym3 = __pop_Term_22_29_22(__symbols); - let __sym2 = __pop_NtAtom(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action63::<>(input, __sym0, __sym1, __sym2, __sym3); - let __states_len = __states.len(); - __states.truncate(__states_len - 4); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 - } - 33 => { - // Call = "call", "(", Atom, ("," )+, ")" => ActionFn(64); - let __sym4 = __pop_Term_22_29_22(__symbols); - let __sym3 = __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__symbols); - let __sym2 = __pop_NtAtom(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action64::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - let __states_len = __states.len(); - __states.truncate(__states_len - 5); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 - } - 34 => { - // Call = "call", "(", Var, ")" => ActionFn(65); - let __sym3 = __pop_Term_22_29_22(__symbols); - let __sym2 = __pop_NtVar(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym3.2.clone(); - let __nt = super::__action65::<>(input, __sym0, __sym1, __sym2, __sym3); - let __states_len = __states.len(); - __states.truncate(__states_len - 4); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 - } - 35 => { - // Call = "call", "(", Var, ("," )+, ")" => ActionFn(66); - let __sym4 = __pop_Term_22_29_22(__symbols); - let __sym3 = __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__symbols); - let __sym2 = __pop_NtVar(__symbols); - let __sym1 = __pop_Term_22_28_22(__symbols); - let __sym0 = __pop_Term_22call_22(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym4.2.clone(); - let __nt = super::__action66::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); - let __states_len = __states.len(); - __states.truncate(__states_len - 5); - __symbols.push((__start, __Symbol::NtCall(__nt), __end)); - 16 + 12 } - 36 => { - // Clause = Atom, "(", BoxedTerm, ")" => ActionFn(79); + 21 => { + // Clause = Atom, "(", BoxedTerm, ")" => ActionFn(55); let __sym3 = __pop_Term_22_29_22(__symbols); let __sym2 = __pop_NtBoxedTerm(__symbols); let __sym1 = __pop_Term_22_28_22(__symbols); let __sym0 = __pop_NtAtom(__symbols); let __start = __sym0.0.clone(); let __end = __sym3.2.clone(); - let __nt = super::__action79::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action55::<>(input, __sym0, __sym1, __sym2, __sym3); let __states_len = __states.len(); __states.truncate(__states_len - 4); __symbols.push((__start, __Symbol::NtClause(__nt), __end)); - 17 + 13 } - 37 => { - // Clause = Atom, "(", ( ",")+, BoxedTerm, ")" => ActionFn(80); + 22 => { + // Clause = Atom, "(", ( ",")+, BoxedTerm, ")" => ActionFn(56); let __sym4 = __pop_Term_22_29_22(__symbols); let __sym3 = __pop_NtBoxedTerm(__symbols); let __sym2 = __pop_Nt_28_3cBoxedTerm_3e_20_22_2c_22_29_2b(__symbols); @@ -1610,297 +801,286 @@ mod __parse__TopLevel { let __sym0 = __pop_NtAtom(__symbols); let __start = __sym0.0.clone(); let __end = __sym4.2.clone(); - let __nt = super::__action80::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); + let __nt = super::__action56::<>(input, __sym0, __sym1, __sym2, __sym3, __sym4); let __states_len = __states.len(); __states.truncate(__states_len - 5); __symbols.push((__start, __Symbol::NtClause(__nt), __end)); - 17 + 13 } - 38 => { - // List = "[]" => ActionFn(12); + 23 => { + // List = "[]" => ActionFn(8); let __sym0 = __pop_Term_22_5b_5d_22(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action12::<>(input, __sym0); + let __nt = super::__action8::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtList(__nt), __end)); - 18 + 14 } - 39 => { - // List = "[", ListInternals, "]" => ActionFn(13); + 24 => { + // List = "[", ListInternals, "]" => ActionFn(9); let __sym2 = __pop_Term_22_5d_22(__symbols); let __sym1 = __pop_NtListInternals(__symbols); let __sym0 = __pop_Term_22_5b_22(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action13::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action9::<>(input, __sym0, __sym1, __sym2); let __states_len = __states.len(); __states.truncate(__states_len - 3); __symbols.push((__start, __Symbol::NtList(__nt), __end)); - 18 + 14 } - 40 => { - // ListInternals = BoxedTerm => ActionFn(14); + 25 => { + // ListInternals = BoxedTerm => ActionFn(10); let __sym0 = __pop_NtBoxedTerm(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action14::<>(input, __sym0); + let __nt = super::__action10::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtListInternals(__nt), __end)); - 19 + 15 } - 41 => { - // ListInternals = BoxedTerm, ",", ListInternals => ActionFn(15); + 26 => { + // ListInternals = BoxedTerm, ",", ListInternals => ActionFn(11); let __sym2 = __pop_NtListInternals(__symbols); let __sym1 = __pop_Term_22_2c_22(__symbols); let __sym0 = __pop_NtBoxedTerm(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action15::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action11::<>(input, __sym0, __sym1, __sym2); let __states_len = __states.len(); __states.truncate(__states_len - 3); __symbols.push((__start, __Symbol::NtListInternals(__nt), __end)); - 19 + 15 } - 42 => { - // ListInternals = BoxedTerm, "|", BoxedTerm => ActionFn(16); + 27 => { + // ListInternals = BoxedTerm, "|", BoxedTerm => ActionFn(12); let __sym2 = __pop_NtBoxedTerm(__symbols); let __sym1 = __pop_Term_22_7c_22(__symbols); let __sym0 = __pop_NtBoxedTerm(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action16::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action12::<>(input, __sym0, __sym1, __sym2); let __states_len = __states.len(); __states.truncate(__states_len - 3); __symbols.push((__start, __Symbol::NtListInternals(__nt), __end)); - 19 + 15 } - 43 => { - // Predicate = ()+, PredicateClause => ActionFn(17); + 28 => { + // Predicate = ()+, PredicateClause => ActionFn(13); let __sym1 = __pop_NtPredicateClause(__symbols); let __sym0 = __pop_Nt_28_3cPredicateClause_3e_29_2b(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action17::<>(input, __sym0, __sym1); + let __nt = super::__action13::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::NtPredicate(__nt), __end)); - 20 + 16 } - 44 => { - // PredicateClause = Rule, "." => ActionFn(18); + 29 => { + // PredicateClause = Rule, "." => ActionFn(14); let __sym1 = __pop_Term_22_2e_22(__symbols); let __sym0 = __pop_NtRule(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action18::<>(input, __sym0, __sym1); + let __nt = super::__action14::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::NtPredicateClause(__nt), __end)); - 21 + 17 } - 45 => { - // PredicateClause = Term, "." => ActionFn(19); + 30 => { + // PredicateClause = Term, "." => ActionFn(15); let __sym1 = __pop_Term_22_2e_22(__symbols); let __sym0 = __pop_NtTerm(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action19::<>(input, __sym0, __sym1); + let __nt = super::__action15::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::NtPredicateClause(__nt), __end)); - 21 + 17 } - 46 => { - // Query = QueryTerm => ActionFn(85); + 31 => { + // Query = QueryTerm => ActionFn(61); let __sym0 = __pop_NtQueryTerm(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action85::<>(input, __sym0); + let __nt = super::__action61::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtQuery(__nt), __end)); - 22 + 18 } - 47 => { - // Query = ( ",")+, QueryTerm => ActionFn(86); + 32 => { + // Query = ( ",")+, QueryTerm => ActionFn(62); let __sym1 = __pop_NtQueryTerm(__symbols); let __sym0 = __pop_Nt_28_3cQueryTerm_3e_20_22_2c_22_29_2b(__symbols); let __start = __sym0.0.clone(); let __end = __sym1.2.clone(); - let __nt = super::__action86::<>(input, __sym0, __sym1); + let __nt = super::__action62::<>(input, __sym0, __sym1); let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::NtQuery(__nt), __end)); - 22 - } - 48 => { - // QueryTerm = Call => ActionFn(23); - let __sym0 = __pop_NtCall(__symbols); - let __start = __sym0.0.clone(); - let __end = __sym0.2.clone(); - let __nt = super::__action23::<>(input, __sym0); - let __states_len = __states.len(); - __states.truncate(__states_len - 1); - __symbols.push((__start, __Symbol::NtQueryTerm(__nt), __end)); - 23 + 18 } - 49 => { - // QueryTerm = "!" => ActionFn(24); + 33 => { + // QueryTerm = "!" => ActionFn(19); let __sym0 = __pop_Term_22_21_22(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action24::<>(input, __sym0); + let __nt = super::__action19::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtQueryTerm(__nt), __end)); - 23 + 19 } - 50 => { - // QueryTerm = Var => ActionFn(25); + 34 => { + // QueryTerm = Var => ActionFn(20); let __sym0 = __pop_NtVar(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action25::<>(input, __sym0); + let __nt = super::__action20::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtQueryTerm(__nt), __end)); - 23 + 19 } - 51 => { - // QueryTerm = Clause => ActionFn(26); + 35 => { + // QueryTerm = Clause => ActionFn(21); let __sym0 = __pop_NtClause(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action26::<>(input, __sym0); + let __nt = super::__action21::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtQueryTerm(__nt), __end)); - 23 + 19 } - 52 => { - // QueryTerm = Atom => ActionFn(27); + 36 => { + // QueryTerm = Atom => ActionFn(22); let __sym0 = __pop_NtAtom(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action27::<>(input, __sym0); + let __nt = super::__action22::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtQueryTerm(__nt), __end)); - 23 + 19 } - 53 => { - // Rule = Clause, ":-", QueryTerm => ActionFn(69); + 37 => { + // Rule = Clause, ":-", QueryTerm => ActionFn(49); let __sym2 = __pop_NtQueryTerm(__symbols); let __sym1 = __pop_Term_22_3a_2d_22(__symbols); let __sym0 = __pop_NtClause(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action69::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action49::<>(input, __sym0, __sym1, __sym2); let __states_len = __states.len(); __states.truncate(__states_len - 3); __symbols.push((__start, __Symbol::NtRule(__nt), __end)); - 24 + 20 } - 54 => { - // Rule = Clause, ":-", QueryTerm, ("," )+ => ActionFn(70); + 38 => { + // Rule = Clause, ":-", QueryTerm, ("," )+ => ActionFn(50); let __sym3 = __pop_Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2b(__symbols); let __sym2 = __pop_NtQueryTerm(__symbols); let __sym1 = __pop_Term_22_3a_2d_22(__symbols); let __sym0 = __pop_NtClause(__symbols); let __start = __sym0.0.clone(); let __end = __sym3.2.clone(); - let __nt = super::__action70::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action50::<>(input, __sym0, __sym1, __sym2, __sym3); let __states_len = __states.len(); __states.truncate(__states_len - 4); __symbols.push((__start, __Symbol::NtRule(__nt), __end)); - 24 + 20 } - 55 => { - // Rule = Atom, ":-", QueryTerm => ActionFn(71); + 39 => { + // Rule = Atom, ":-", QueryTerm => ActionFn(51); let __sym2 = __pop_NtQueryTerm(__symbols); let __sym1 = __pop_Term_22_3a_2d_22(__symbols); let __sym0 = __pop_NtAtom(__symbols); let __start = __sym0.0.clone(); let __end = __sym2.2.clone(); - let __nt = super::__action71::<>(input, __sym0, __sym1, __sym2); + let __nt = super::__action51::<>(input, __sym0, __sym1, __sym2); let __states_len = __states.len(); __states.truncate(__states_len - 3); __symbols.push((__start, __Symbol::NtRule(__nt), __end)); - 24 + 20 } - 56 => { - // Rule = Atom, ":-", QueryTerm, ("," )+ => ActionFn(72); + 40 => { + // Rule = Atom, ":-", QueryTerm, ("," )+ => ActionFn(52); let __sym3 = __pop_Nt_28_22_2c_22_20_3cQueryTerm_3e_29_2b(__symbols); let __sym2 = __pop_NtQueryTerm(__symbols); let __sym1 = __pop_Term_22_3a_2d_22(__symbols); let __sym0 = __pop_NtAtom(__symbols); let __start = __sym0.0.clone(); let __end = __sym3.2.clone(); - let __nt = super::__action72::<>(input, __sym0, __sym1, __sym2, __sym3); + let __nt = super::__action52::<>(input, __sym0, __sym1, __sym2, __sym3); let __states_len = __states.len(); __states.truncate(__states_len - 4); __symbols.push((__start, __Symbol::NtRule(__nt), __end)); - 24 + 20 } - 57 => { - // Term = Atom => ActionFn(28); - let __sym0 = __pop_NtAtom(__symbols); + 41 => { + // Term = Clause => ActionFn(23); + let __sym0 = __pop_NtClause(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action28::<>(input, __sym0); + let __nt = super::__action23::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtTerm(__nt), __end)); - 25 + 21 } - 58 => { - // Term = Clause => ActionFn(29); - let __sym0 = __pop_NtClause(__symbols); + 42 => { + // Term = Atom => ActionFn(24); + let __sym0 = __pop_NtAtom(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action29::<>(input, __sym0); + let __nt = super::__action24::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtTerm(__nt), __end)); - 25 + 21 } - 59 => { - // Term = List => ActionFn(30); + 43 => { + // Term = List => ActionFn(25); let __sym0 = __pop_NtList(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action30::<>(input, __sym0); + let __nt = super::__action25::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtTerm(__nt), __end)); - 25 + 21 } - 60 => { - // Term = Var => ActionFn(31); + 44 => { + // Term = Var => ActionFn(26); let __sym0 = __pop_NtVar(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action31::<>(input, __sym0); + let __nt = super::__action26::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtTerm(__nt), __end)); - 25 + 21 } - 61 => { - // Term = "_" => ActionFn(32); + 45 => { + // Term = "_" => ActionFn(27); let __sym0 = __pop_Term_22___22(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action32::<>(input, __sym0); + let __nt = super::__action27::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtTerm(__nt), __end)); - 25 + 21 } - 62 => { + 46 => { // TopLevel = "?-", Query, "." => ActionFn(1); let __sym2 = __pop_Term_22_2e_22(__symbols); let __sym1 = __pop_NtQuery(__symbols); @@ -1911,9 +1091,9 @@ mod __parse__TopLevel { let __states_len = __states.len(); __states.truncate(__states_len - 3); __symbols.push((__start, __Symbol::NtTopLevel(__nt), __end)); - 26 + 22 } - 63 => { + 47 => { // TopLevel = Predicate => ActionFn(2); let __sym0 = __pop_NtPredicate(__symbols); let __start = __sym0.0.clone(); @@ -1922,9 +1102,9 @@ mod __parse__TopLevel { let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtTopLevel(__nt), __end)); - 26 + 22 } - 64 => { + 48 => { // TopLevel = Rule, "." => ActionFn(3); let __sym1 = __pop_Term_22_2e_22(__symbols); let __sym0 = __pop_NtRule(__symbols); @@ -1934,9 +1114,9 @@ mod __parse__TopLevel { let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::NtTopLevel(__nt), __end)); - 26 + 22 } - 65 => { + 49 => { // TopLevel = Term, "." => ActionFn(4); let __sym1 = __pop_Term_22_2e_22(__symbols); let __sym0 = __pop_NtTerm(__symbols); @@ -1946,20 +1126,20 @@ mod __parse__TopLevel { let __states_len = __states.len(); __states.truncate(__states_len - 2); __symbols.push((__start, __Symbol::NtTopLevel(__nt), __end)); - 26 + 22 } - 66 => { - // Var = r#"[A-Z][A-Za-z0-9_]*"# => ActionFn(33); + 50 => { + // Var = r#"[A-Z][A-Za-z0-9_]*"# => ActionFn(28); let __sym0 = __pop_Termr_23_22_5bA_2dZ_5d_5bA_2dZa_2dz0_2d9___5d_2a_22_23(__symbols); let __start = __sym0.0.clone(); let __end = __sym0.2.clone(); - let __nt = super::__action33::<>(input, __sym0); + let __nt = super::__action28::<>(input, __sym0); let __states_len = __states.len(); __states.truncate(__states_len - 1); __symbols.push((__start, __Symbol::NtVar(__nt), __end)); - 27 + 23 } - 67 => { + 51 => { // __TopLevel = TopLevel => ActionFn(0); let __sym0 = __pop_NtTopLevel(__symbols); let __start = __sym0.0.clone(); @@ -1970,7 +1150,7 @@ mod __parse__TopLevel { _ => panic!("invalid action code {}", __action) }; let __state = *__states.last().unwrap() as usize; - let __next_state = __GOTO[__state * 29 + __nonterminal] - 1; + let __next_state = __GOTO[__state * 25 + __nonterminal] - 1; __states.push(__next_state); None } @@ -2084,16 +1264,6 @@ mod __parse__TopLevel { _ => panic!("symbol type mismatch") } } - fn __pop_Term_22call_22< - 'input, - >( - __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, &'input str, usize) { - match __symbols.pop().unwrap() { - (__l, __Symbol::Term_22call_22(__v), __r) => (__l, __v, __r), - _ => panic!("symbol type mismatch") - } - } fn __pop_Term_22_7c_22< 'input, >( @@ -2124,46 +1294,6 @@ mod __parse__TopLevel { _ => panic!("symbol type mismatch") } } - fn __pop_Termerror< - 'input, - >( - __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, __lalrpop_util::ErrorRecovery, usize) { - match __symbols.pop().unwrap() { - (__l, __Symbol::Termerror(__v), __r) => (__l, __v, __r), - _ => panic!("symbol type mismatch") - } - } - fn __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29< - 'input, - >( - __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, Box, usize) { - match __symbols.pop().unwrap() { - (__l, __Symbol::Nt_28_22_2c_22_20_3cBoxedTerm_3e_29(__v), __r) => (__l, __v, __r), - _ => panic!("symbol type mismatch") - } - } - fn __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2a< - 'input, - >( - __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, ::std::vec::Vec>, usize) { - match __symbols.pop().unwrap() { - (__l, __Symbol::Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2a(__v), __r) => (__l, __v, __r), - _ => panic!("symbol type mismatch") - } - } - fn __pop_Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b< - 'input, - >( - __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, ::std::vec::Vec>, usize) { - match __symbols.pop().unwrap() { - (__l, __Symbol::Nt_28_22_2c_22_20_3cBoxedTerm_3e_29_2b(__v), __r) => (__l, __v, __r), - _ => panic!("symbol type mismatch") - } - } fn __pop_Nt_28_22_2c_22_20_3cQueryTerm_3e_29< 'input, >( @@ -2294,16 +1424,6 @@ mod __parse__TopLevel { _ => panic!("symbol type mismatch") } } - fn __pop_NtCall< - 'input, - >( - __symbols: &mut ::std::vec::Vec<(usize,__Symbol<'input>,usize)> - ) -> (usize, QueryTerm, usize) { - match __symbols.pop().unwrap() { - (__l, __Symbol::NtCall(__v), __r) => (__l, __v, __r), - _ => panic!("symbol type mismatch") - } - } fn __pop_NtClause< 'input, >( @@ -2427,491 +1547,59 @@ mod __parse__TopLevel { } pub use self::__parse__TopLevel::parse_TopLevel; mod __intern_token { + #![allow(unused_imports)] + use prolog::ast::*; + use std::cell::Cell; extern crate lalrpop_util as __lalrpop_util; + extern crate regex as __regex; pub struct __Matcher<'input> { text: &'input str, consumed: usize, - } - - fn __tokenize(text: &str) -> Option<(usize, usize)> { - let mut __chars = text.char_indices(); - let mut __current_match: Option<(usize, usize)> = None; - let mut __current_state: usize = 0; - loop { - match __current_state { - 0 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 33 => /* '!' */ { - __current_match = Some((0, __index + 1)); - __current_state = 1; - continue; - } - 40 => /* '(' */ { - __current_match = Some((1, __index + 1)); - __current_state = 2; - continue; - } - 41 => /* ')' */ { - __current_match = Some((2, __index + 1)); - __current_state = 3; - continue; - } - 44 => /* ',' */ { - __current_match = Some((3, __index + 1)); - __current_state = 4; - continue; - } - 46 => /* '.' */ { - __current_match = Some((4, __index + 1)); - __current_state = 5; - continue; - } - 58 => /* ':' */ { - __current_state = 6; - continue; - } - 63 => /* '?' */ { - __current_state = 7; - continue; - } - 65 ... 90 => { - __current_match = Some((13, __index + __ch.len_utf8())); - __current_state = 8; - continue; - } - 91 => /* '[' */ { - __current_match = Some((7, __index + 1)); - __current_state = 9; - continue; - } - 93 => /* ']' */ { - __current_match = Some((9, __index + 1)); - __current_state = 10; - continue; - } - 95 => /* '_' */ { - __current_match = Some((10, __index + 1)); - __current_state = 11; - continue; - } - 97 ... 98 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 12; - continue; - } - 99 => /* 'c' */ { - __current_match = Some((14, __index + 1)); - __current_state = 13; - continue; - } - 100 ... 122 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 12; - continue; - } - 124 => /* '|' */ { - __current_match = Some((12, __index + 1)); - __current_state = 14; - continue; - } - _ => { - return __current_match; - } - } - } - 1 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 2 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 3 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 4 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 5 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 6 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 45 => /* '-' */ { - __current_match = Some((5, __index + 1)); - __current_state = 16; - continue; - } - _ => { - return __current_match; - } - } - } - 7 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 45 => /* '-' */ { - __current_match = Some((6, __index + 1)); - __current_state = 17; - continue; - } - _ => { - return __current_match; - } - } - } - 8 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 48 ... 57 => { - __current_match = Some((13, __index + __ch.len_utf8())); - __current_state = 18; - continue; - } - 65 ... 90 => { - __current_match = Some((13, __index + __ch.len_utf8())); - __current_state = 18; - continue; - } - 95 => /* '_' */ { - __current_match = Some((13, __index + 1)); - __current_state = 18; - continue; - } - 97 ... 122 => { - __current_match = Some((13, __index + __ch.len_utf8())); - __current_state = 18; - continue; - } - _ => { - return __current_match; - } - } - } - 9 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 93 => /* ']' */ { - __current_match = Some((8, __index + 1)); - __current_state = 19; - continue; - } - _ => { - return __current_match; - } - } - } - 10 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 11 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 12 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 48 ... 57 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 65 ... 90 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 95 => /* '_' */ { - __current_match = Some((14, __index + 1)); - __current_state = 20; - continue; - } - 97 ... 122 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - _ => { - return __current_match; - } - } - } - 13 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 48 ... 57 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 65 ... 90 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 95 => /* '_' */ { - __current_match = Some((14, __index + 1)); - __current_state = 20; - continue; - } - 97 => /* 'a' */ { - __current_match = Some((14, __index + 1)); - __current_state = 21; - continue; - } - 98 ... 122 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - _ => { - return __current_match; - } - } - } - 14 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 15 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 16 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 17 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 18 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 48 ... 57 => { - __current_match = Some((13, __index + __ch.len_utf8())); - __current_state = 18; - continue; - } - 65 ... 90 => { - __current_match = Some((13, __index + __ch.len_utf8())); - __current_state = 18; - continue; - } - 95 => /* '_' */ { - __current_match = Some((13, __index + 1)); - __current_state = 18; - continue; - } - 97 ... 122 => { - __current_match = Some((13, __index + __ch.len_utf8())); - __current_state = 18; - continue; - } - _ => { - return __current_match; - } - } - } - 19 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - _ => { - return __current_match; - } - } - } - 20 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 48 ... 57 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 65 ... 90 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 95 => /* '_' */ { - __current_match = Some((14, __index + 1)); - __current_state = 20; - continue; - } - 97 ... 122 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - _ => { - return __current_match; - } - } - } - 21 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 48 ... 57 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 65 ... 90 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 95 => /* '_' */ { - __current_match = Some((14, __index + 1)); - __current_state = 20; - continue; - } - 97 ... 107 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 108 => /* 'l' */ { - __current_match = Some((14, __index + 1)); - __current_state = 22; - continue; - } - 109 ... 122 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - _ => { - return __current_match; - } - } - } - 22 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 48 ... 57 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 65 ... 90 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 95 => /* '_' */ { - __current_match = Some((14, __index + 1)); - __current_state = 20; - continue; - } - 97 ... 107 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 108 => /* 'l' */ { - __current_match = Some((11, __index + 1)); - __current_state = 23; - continue; - } - 109 ... 122 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - _ => { - return __current_match; - } - } - } - 23 => { - let (__index, __ch) = match __chars.next() { Some(p) => p, None => return __current_match }; - match __ch as u32 { - 48 ... 57 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 65 ... 90 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - 95 => /* '_' */ { - __current_match = Some((14, __index + 1)); - __current_state = 20; - continue; - } - 97 ... 122 => { - __current_match = Some((14, __index + __ch.len_utf8())); - __current_state = 20; - continue; - } - _ => { - return __current_match; - } - } - } - _ => { panic!("invalid state {}", __current_state); } - } - } + regex_set: __regex::RegexSet, + regex_vec: Vec<__regex::Regex>, } impl<'input> __Matcher<'input> { pub fn new(s: &'input str) -> __Matcher<'input> { - __Matcher { text: s, consumed: 0 } + let __strs: &[&str] = &[ + "^(?u:[A-Z])(?u:[0-9A-Z_-_a-z])*", + "^(?u:[a-z])(?u:[0-9A-Z_-_a-z])*", + "^(?u:!)", + "^(?u:\\()", + "^(?u:\\))", + "^(?u:,)", + "^(?u:\\.)", + "^(?u::\\-)", + "^(?u:\\?\\-)", + "^(?u:\\[)", + "^(?u:\\[\\])", + "^(?u:\\])", + "^(?u:_)", + "^(?u:\\|)", + ]; + let __regex_set = __regex::RegexSet::new(__strs).unwrap(); + let __regex_vec = vec![ + __regex::Regex::new("^(?u:[A-Z])(?u:[0-9A-Z_-_a-z])*").unwrap(), + __regex::Regex::new("^(?u:[a-z])(?u:[0-9A-Z_-_a-z])*").unwrap(), + __regex::Regex::new("^(?u:!)").unwrap(), + __regex::Regex::new("^(?u:\\()").unwrap(), + __regex::Regex::new("^(?u:\\))").unwrap(), + __regex::Regex::new("^(?u:,)").unwrap(), + __regex::Regex::new("^(?u:\\.)").unwrap(), + __regex::Regex::new("^(?u::\\-)").unwrap(), + __regex::Regex::new("^(?u:\\?\\-)").unwrap(), + __regex::Regex::new("^(?u:\\[)").unwrap(), + __regex::Regex::new("^(?u:\\[\\])").unwrap(), + __regex::Regex::new("^(?u:\\])").unwrap(), + __regex::Regex::new("^(?u:_)").unwrap(), + __regex::Regex::new("^(?u:\\|)").unwrap(), + ]; + __Matcher { + text: s, + consumed: 0, + regex_set: __regex_set, + regex_vec: __regex_vec, + } } } @@ -2927,18 +1615,30 @@ mod __intern_token { self.consumed = __start_offset; None } else { - match __tokenize(__text) { - Some((__index, __length)) => { - let __result = &__text[..__length]; - let __remaining = &__text[__length..]; - let __end_offset = __start_offset + __length; - self.text = __remaining; - self.consumed = __end_offset; - Some(Ok((__start_offset, (__index, __result), __end_offset))) - } - None => { - Some(Err(__lalrpop_util::ParseError::InvalidToken { location: __start_offset })) + let __matches = self.regex_set.matches(__text); + if !__matches.matched_any() { + Some(Err(__lalrpop_util::ParseError::InvalidToken { + location: __start_offset, + })) + } else { + let mut __longest_match = 0; + let mut __index = 0; + for __i in 0 .. 14 { + if __matches.matched(__i) { + let __match = self.regex_vec[__i].find(__text).unwrap(); + let __len = __match.end(); + if __len >= __longest_match { + __longest_match = __len; + __index = __i; + } + } } + let __result = &__text[..__longest_match]; + let __remaining = &__text[__longest_match..]; + let __end_offset = __start_offset + __longest_match; + self.text = __remaining; + self.consumed = __end_offset; + Some(Ok((__start_offset, (__index, __result), __end_offset))) } } } @@ -2946,7 +1646,7 @@ mod __intern_token { } #[allow(unused_variables)] -pub fn __action0< +fn __action0< 'input, >( input: &'input str, @@ -2957,7 +1657,7 @@ pub fn __action0< } #[allow(unused_variables)] -pub fn __action1< +fn __action1< 'input, >( input: &'input str, @@ -2970,7 +1670,7 @@ pub fn __action1< } #[allow(unused_variables)] -pub fn __action2< +fn __action2< 'input, >( input: &'input str, @@ -2981,149 +1681,53 @@ pub fn __action2< } #[allow(unused_variables)] -pub fn __action3< +fn __action3< 'input, >( input: &'input str, (_, __0, _): (usize, Rule, usize), (_, _, _): (usize, &'input str, usize), -) -> TopLevel -{ - TopLevel::Rule(__0) -} - -#[allow(unused_variables)] -pub fn __action4< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Term, usize), - (_, _, _): (usize, &'input str, usize), -) -> TopLevel -{ - TopLevel::Fact(__0) -} - -#[allow(unused_variables)] -pub fn __action5< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, &'input str, usize), -) -> Atom -{ - __0.trim().to_string() -} - -#[allow(unused_variables)] -pub fn __action6< - 'input, ->( - input: &'input str, - (_, t, _): (usize, Term, usize), -) -> Box -{ - Box::new(t) -} - -#[allow(unused_variables)] -pub fn __action7< - 'input, ->( - input: &'input str, - (_, _, _): (usize, &'input str, usize), - (_, _, _): (usize, &'input str, usize), - (_, c, _): (usize, QueryTerm, usize), - (_, ts, _): (usize, ::std::vec::Vec>, usize), - (_, _, _): (usize, &'input str, usize), -) -> QueryTerm +) -> TopLevel { - { - match c { - QueryTerm::CallN(mut terms) => { - let vt = terms.pop().unwrap(); - let mut ts = ts; - - terms.append(&mut ts); - terms.push(vt); - - QueryTerm::CallN(terms) - }, - QueryTerm::Term(Term::Clause(cell, atom, mut terms)) => { - let mut ts = ts; - terms.append(&mut ts); - QueryTerm::Term(Term::Clause(cell, atom, terms)) - }, - _ => c - } - } + TopLevel::Rule(__0) } #[allow(unused_variables)] -pub fn __action8< +fn __action4< 'input, >( input: &'input str, + (_, __0, _): (usize, Term, usize), (_, _, _): (usize, &'input str, usize), - (_, _, _): (usize, &'input str, usize), - (_, a, _): (usize, Atom, usize), - (_, _, _): (usize, &'input str, usize), - (_, ts, _): (usize, ::std::vec::Vec>, usize), - (_, t, _): (usize, Box, usize), - (_, _, _): (usize, &'input str, usize), - (_, tss, _): (usize, ::std::vec::Vec>, usize), - (_, _, _): (usize, &'input str, usize), -) -> QueryTerm +) -> TopLevel { - { - let mut ts = ts; - let mut tss = tss; - - ts.push(t); - - ts.append(&mut tss); - QueryTerm::Term(Term::Clause(Cell::default(), a, ts)) - } + TopLevel::Fact(__0) } #[allow(unused_variables)] -pub fn __action9< +fn __action5< 'input, >( input: &'input str, - (_, _, _): (usize, &'input str, usize), - (_, _, _): (usize, &'input str, usize), - (_, a, _): (usize, Atom, usize), - (_, ts, _): (usize, ::std::vec::Vec>, usize), - (_, _, _): (usize, &'input str, usize), -) -> QueryTerm + (_, __0, _): (usize, &'input str, usize), +) -> Atom { - QueryTerm::Term(Term::Clause(Cell::default(), a, ts)) + __0.trim().to_string() } #[allow(unused_variables)] -pub fn __action10< +fn __action6< 'input, >( input: &'input str, - (_, _, _): (usize, &'input str, usize), - (_, _, _): (usize, &'input str, usize), - (_, v, _): (usize, Var, usize), - (_, ts, _): (usize, ::std::vec::Vec>, usize), - (_, _, _): (usize, &'input str, usize), -) -> QueryTerm + (_, t, _): (usize, Term, usize), +) -> Box { - { - let mut ts = ts; - let bv = Box::new(Term::Var(Cell::default(), v)); - - ts.push(bv); - QueryTerm::CallN(ts) - } + Box::new(t) } #[allow(unused_variables)] -pub fn __action11< +fn __action7< 'input, >( input: &'input str, @@ -3142,7 +1746,7 @@ pub fn __action11< } #[allow(unused_variables)] -pub fn __action12< +fn __action8< 'input, >( input: &'input str, @@ -3153,7 +1757,7 @@ pub fn __action12< } #[allow(unused_variables)] -pub fn __action13< +fn __action9< 'input, >( input: &'input str, @@ -3166,7 +1770,7 @@ pub fn __action13< } #[allow(unused_variables)] -pub fn __action14< +fn __action10< 'input, >( input: &'input str, @@ -3180,7 +1784,7 @@ pub fn __action14< } #[allow(unused_variables)] -pub fn __action15< +fn __action11< 'input, >( input: &'input str, @@ -3195,7 +1799,7 @@ pub fn __action15< } #[allow(unused_variables)] -pub fn __action16< +fn __action12< 'input, >( input: &'input str, @@ -3208,7 +1812,7 @@ pub fn __action16< } #[allow(unused_variables)] -pub fn __action17< +fn __action13< 'input, >( input: &'input str, @@ -3224,7 +1828,7 @@ pub fn __action17< } #[allow(unused_variables)] -pub fn __action18< +fn __action14< 'input, >( input: &'input str, @@ -3236,7 +1840,7 @@ pub fn __action18< } #[allow(unused_variables)] -pub fn __action19< +fn __action15< 'input, >( input: &'input str, @@ -3248,7 +1852,7 @@ pub fn __action19< } #[allow(unused_variables)] -pub fn __action20< +fn __action16< 'input, >( input: &'input str, @@ -3264,7 +1868,7 @@ pub fn __action20< } #[allow(unused_variables)] -pub fn __action21< +fn __action17< 'input, >( input: &'input str, @@ -3278,7 +1882,7 @@ pub fn __action21< } #[allow(unused_variables)] -pub fn __action22< +fn __action18< 'input, >( input: &'input str, @@ -3288,24 +1892,12 @@ pub fn __action22< (_, cs, _): (usize, ::std::vec::Vec, usize), ) -> Rule { - Rule { head: (Term::Constant(Cell::default(), Constant::Atom(a)), - h), + Rule { head: (Term::Constant(Cell::default(), Constant::Atom(a)), h), clauses: cs } } #[allow(unused_variables)] -pub fn __action23< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, QueryTerm, usize), -) -> QueryTerm -{ - __0 -} - -#[allow(unused_variables)] -pub fn __action24< +fn __action19< 'input, >( input: &'input str, @@ -3316,7 +1908,7 @@ pub fn __action24< } #[allow(unused_variables)] -pub fn __action25< +fn __action20< 'input, >( input: &'input str, @@ -3327,7 +1919,7 @@ pub fn __action25< } #[allow(unused_variables)] -pub fn __action26< +fn __action21< 'input, >( input: &'input str, @@ -3338,7 +1930,7 @@ pub fn __action26< } #[allow(unused_variables)] -pub fn __action27< +fn __action22< 'input, >( input: &'input str, @@ -3349,29 +1941,29 @@ pub fn __action27< } #[allow(unused_variables)] -pub fn __action28< +fn __action23< 'input, >( input: &'input str, - (_, __0, _): (usize, Atom, usize), + (_, __0, _): (usize, Term, usize), ) -> Term { - Term::Constant(Cell::default(), Constant::Atom(__0)) + __0 } #[allow(unused_variables)] -pub fn __action29< +fn __action24< 'input, >( input: &'input str, - (_, __0, _): (usize, Term, usize), + (_, __0, _): (usize, Atom, usize), ) -> Term { - __0 + Term::Constant(Cell::default(), Constant::Atom(__0)) } #[allow(unused_variables)] -pub fn __action30< +fn __action25< 'input, >( input: &'input str, @@ -3382,7 +1974,7 @@ pub fn __action30< } #[allow(unused_variables)] -pub fn __action31< +fn __action26< 'input, >( input: &'input str, @@ -3393,7 +1985,7 @@ pub fn __action31< } #[allow(unused_variables)] -pub fn __action32< +fn __action27< 'input, >( input: &'input str, @@ -3404,7 +1996,7 @@ pub fn __action32< } #[allow(unused_variables)] -pub fn __action33< +fn __action28< 'input, >( input: &'input str, @@ -3415,7 +2007,7 @@ pub fn __action33< } #[allow(unused_variables)] -pub fn __action34< +fn __action29< 'input, >( input: &'input str, @@ -3427,7 +2019,7 @@ pub fn __action34< } #[allow(unused_variables)] -pub fn __action35< +fn __action30< 'input, >( input: &'input str, @@ -3438,7 +2030,7 @@ pub fn __action35< } #[allow(unused_variables)] -pub fn __action36< +fn __action31< 'input, >( input: &'input str, @@ -3450,7 +2042,7 @@ pub fn __action36< } #[allow(unused_variables)] -pub fn __action37< +fn __action32< 'input, >( input: &'input str, @@ -3462,7 +2054,7 @@ pub fn __action37< } #[allow(unused_variables)] -pub fn __action38< +fn __action33< 'input, >( input: &'input str, @@ -3473,7 +2065,7 @@ pub fn __action38< } #[allow(unused_variables)] -pub fn __action39< +fn __action34< 'input, >( input: &'input str, @@ -3485,7 +2077,7 @@ pub fn __action39< } #[allow(unused_variables)] -pub fn __action40< +fn __action35< 'input, >( input: &'input str, @@ -3496,7 +2088,7 @@ pub fn __action40< } #[allow(unused_variables)] -pub fn __action41< +fn __action36< 'input, >( input: &'input str, @@ -3508,7 +2100,7 @@ pub fn __action41< } #[allow(unused_variables)] -pub fn __action42< +fn __action37< 'input, >( input: &'input str, @@ -3519,42 +2111,7 @@ pub fn __action42< } #[allow(unused_variables)] -pub fn __action43< - 'input, ->( - input: &'input str, - __lookbehind: &usize, - __lookahead: &usize, -) -> ::std::vec::Vec> -{ - vec![] -} - -#[allow(unused_variables)] -pub fn __action44< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec>, usize), -) -> ::std::vec::Vec> -{ - v -} - -#[allow(unused_variables)] -pub fn __action45< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Box, usize), - (_, _, _): (usize, &'input str, usize), -) -> Box -{ - (__0) -} - -#[allow(unused_variables)] -pub fn __action46< +fn __action38< 'input, >( input: &'input str, @@ -3566,418 +2123,99 @@ pub fn __action46< } #[allow(unused_variables)] -pub fn __action47< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec>, usize), -) -> ::std::vec::Vec> -{ - v -} - -#[allow(unused_variables)] -pub fn __action48< - 'input, ->( - input: &'input str, - (_, _, _): (usize, &'input str, usize), - (_, __0, _): (usize, Box, usize), -) -> Box -{ - (__0) -} - -#[allow(unused_variables)] -pub fn __action49< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Box, usize), -) -> ::std::vec::Vec> -{ - vec![__0] -} - -#[allow(unused_variables)] -pub fn __action50< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec>, usize), - (_, e, _): (usize, Box, usize), -) -> ::std::vec::Vec> -{ - { let mut v = v; v.push(e); v } -} - -#[allow(unused_variables)] -pub fn __action51< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, Box, usize), -) -> ::std::vec::Vec> -{ - vec![__0] -} - -#[allow(unused_variables)] -pub fn __action52< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec>, usize), - (_, e, _): (usize, Box, usize), -) -> ::std::vec::Vec> -{ - { let mut v = v; v.push(e); v } -} - -#[allow(unused_variables)] -pub fn __action53< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, QueryTerm, usize), -) -> ::std::vec::Vec -{ - vec![__0] -} - -#[allow(unused_variables)] -pub fn __action54< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec, usize), - (_, e, _): (usize, QueryTerm, usize), -) -> ::std::vec::Vec -{ - { let mut v = v; v.push(e); v } -} - -#[allow(unused_variables)] -pub fn __action55< - 'input, ->( - input: &'input str, - (_, __0, _): (usize, QueryTerm, usize), -) -> ::std::vec::Vec -{ - vec![__0] -} - -#[allow(unused_variables)] -pub fn __action56< - 'input, ->( - input: &'input str, - (_, v, _): (usize, ::std::vec::Vec, usize), - (_, e, _): (usize, QueryTerm, usize), -) -> ::std::vec::Vec -{ - { let mut v = v; v.push(e); v } -} - -#[allow(unused_variables)] -pub fn __action57< - 'input, ->( - input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, Box, usize), -) -> ::std::vec::Vec> -{ - let __start0 = __0.0.clone(); - let __end0 = __1.2.clone(); - let __temp0 = __action48( - input, - __0, - __1, - ); - let __temp0 = (__start0, __temp0, __end0); - __action49( - input, - __temp0, - ) -} - -#[allow(unused_variables)] -pub fn __action58< - 'input, ->( - input: &'input str, - __0: (usize, ::std::vec::Vec>, usize), - __1: (usize, &'input str, usize), - __2: (usize, Box, usize), -) -> ::std::vec::Vec> -{ - let __start0 = __1.0.clone(); - let __end0 = __2.2.clone(); - let __temp0 = __action48( - input, - __1, - __2, - ); - let __temp0 = (__start0, __temp0, __end0); - __action50( - input, - __0, - __temp0, - ) -} - -#[allow(unused_variables)] -pub fn __action59< +fn __action39< 'input, >( input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, QueryTerm, usize), - __3: (usize, &'input str, usize), -) -> QueryTerm -{ - let __start0 = __2.2.clone(); - let __end0 = __3.0.clone(); - let __temp0 = __action46( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action7( - input, - __0, - __1, - __2, - __temp0, - __3, - ) + (_, v, _): (usize, ::std::vec::Vec>, usize), +) -> ::std::vec::Vec> +{ + v } #[allow(unused_variables)] -pub fn __action60< +fn __action40< 'input, >( input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, QueryTerm, usize), - __3: (usize, ::std::vec::Vec>, usize), - __4: (usize, &'input str, usize), -) -> QueryTerm + (_, __0, _): (usize, Box, usize), + (_, _, _): (usize, &'input str, usize), +) -> Box { - let __start0 = __3.0.clone(); - let __end0 = __3.2.clone(); - let __temp0 = __action47( - input, - __3, - ); - let __temp0 = (__start0, __temp0, __end0); - __action7( - input, - __0, - __1, - __2, - __temp0, - __4, - ) + (__0) } #[allow(unused_variables)] -pub fn __action61< +fn __action41< 'input, >( input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Atom, usize), - __3: (usize, &'input str, usize), - __4: (usize, ::std::vec::Vec>, usize), - __5: (usize, Box, usize), - __6: (usize, &'input str, usize), - __7: (usize, &'input str, usize), -) -> QueryTerm + (_, __0, _): (usize, Box, usize), +) -> ::std::vec::Vec> { - let __start0 = __6.2.clone(); - let __end0 = __7.0.clone(); - let __temp0 = __action46( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action8( - input, - __0, - __1, - __2, - __3, - __4, - __5, - __6, - __temp0, - __7, - ) + vec![__0] } #[allow(unused_variables)] -pub fn __action62< +fn __action42< 'input, >( input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Atom, usize), - __3: (usize, &'input str, usize), - __4: (usize, ::std::vec::Vec>, usize), - __5: (usize, Box, usize), - __6: (usize, &'input str, usize), - __7: (usize, ::std::vec::Vec>, usize), - __8: (usize, &'input str, usize), -) -> QueryTerm + (_, v, _): (usize, ::std::vec::Vec>, usize), + (_, e, _): (usize, Box, usize), +) -> ::std::vec::Vec> { - let __start0 = __7.0.clone(); - let __end0 = __7.2.clone(); - let __temp0 = __action47( - input, - __7, - ); - let __temp0 = (__start0, __temp0, __end0); - __action8( - input, - __0, - __1, - __2, - __3, - __4, - __5, - __6, - __temp0, - __8, - ) + { let mut v = v; v.push(e); v } } #[allow(unused_variables)] -pub fn __action63< +fn __action43< 'input, >( input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Atom, usize), - __3: (usize, &'input str, usize), -) -> QueryTerm + (_, __0, _): (usize, QueryTerm, usize), +) -> ::std::vec::Vec { - let __start0 = __2.2.clone(); - let __end0 = __3.0.clone(); - let __temp0 = __action46( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action9( - input, - __0, - __1, - __2, - __temp0, - __3, - ) + vec![__0] } #[allow(unused_variables)] -pub fn __action64< +fn __action44< 'input, >( input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Atom, usize), - __3: (usize, ::std::vec::Vec>, usize), - __4: (usize, &'input str, usize), -) -> QueryTerm + (_, v, _): (usize, ::std::vec::Vec, usize), + (_, e, _): (usize, QueryTerm, usize), +) -> ::std::vec::Vec { - let __start0 = __3.0.clone(); - let __end0 = __3.2.clone(); - let __temp0 = __action47( - input, - __3, - ); - let __temp0 = (__start0, __temp0, __end0); - __action9( - input, - __0, - __1, - __2, - __temp0, - __4, - ) + { let mut v = v; v.push(e); v } } #[allow(unused_variables)] -pub fn __action65< +fn __action45< 'input, >( input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Var, usize), - __3: (usize, &'input str, usize), -) -> QueryTerm + (_, __0, _): (usize, QueryTerm, usize), +) -> ::std::vec::Vec { - let __start0 = __2.2.clone(); - let __end0 = __3.0.clone(); - let __temp0 = __action46( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action10( - input, - __0, - __1, - __2, - __temp0, - __3, - ) + vec![__0] } #[allow(unused_variables)] -pub fn __action66< +fn __action46< 'input, >( input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Var, usize), - __3: (usize, ::std::vec::Vec>, usize), - __4: (usize, &'input str, usize), -) -> QueryTerm + (_, v, _): (usize, ::std::vec::Vec, usize), + (_, e, _): (usize, QueryTerm, usize), +) -> ::std::vec::Vec { - let __start0 = __3.0.clone(); - let __end0 = __3.2.clone(); - let __temp0 = __action47( - input, - __3, - ); - let __temp0 = (__start0, __temp0, __end0); - __action10( - input, - __0, - __1, - __2, - __temp0, - __4, - ) + { let mut v = v; v.push(e); v } } #[allow(unused_variables)] -pub fn __action67< +fn __action47< 'input, >( input: &'input str, @@ -3987,20 +2225,20 @@ pub fn __action67< { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action36( + let __temp0 = __action31( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action55( + __action45( input, __temp0, ) } #[allow(unused_variables)] -pub fn __action68< +fn __action48< 'input, >( input: &'input str, @@ -4011,13 +2249,13 @@ pub fn __action68< { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action36( + let __temp0 = __action31( input, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action56( + __action46( input, __0, __temp0, @@ -4025,7 +2263,7 @@ pub fn __action68< } #[allow(unused_variables)] -pub fn __action69< +fn __action49< 'input, >( input: &'input str, @@ -4036,13 +2274,13 @@ pub fn __action69< { let __start0 = __2.2.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action34( + let __temp0 = __action29( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action21( + __action17( input, __0, __1, @@ -4052,7 +2290,7 @@ pub fn __action69< } #[allow(unused_variables)] -pub fn __action70< +fn __action50< 'input, >( input: &'input str, @@ -4064,12 +2302,12 @@ pub fn __action70< { let __start0 = __3.0.clone(); let __end0 = __3.2.clone(); - let __temp0 = __action35( + let __temp0 = __action30( input, __3, ); let __temp0 = (__start0, __temp0, __end0); - __action21( + __action17( input, __0, __1, @@ -4079,7 +2317,7 @@ pub fn __action70< } #[allow(unused_variables)] -pub fn __action71< +fn __action51< 'input, >( input: &'input str, @@ -4090,13 +2328,13 @@ pub fn __action71< { let __start0 = __2.2.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action34( + let __temp0 = __action29( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action22( + __action18( input, __0, __1, @@ -4106,7 +2344,7 @@ pub fn __action71< } #[allow(unused_variables)] -pub fn __action72< +fn __action52< 'input, >( input: &'input str, @@ -4118,12 +2356,12 @@ pub fn __action72< { let __start0 = __3.0.clone(); let __end0 = __3.2.clone(); - let __temp0 = __action35( + let __temp0 = __action30( input, __3, ); let __temp0 = (__start0, __temp0, __end0); - __action22( + __action18( input, __0, __1, @@ -4133,7 +2371,7 @@ pub fn __action72< } #[allow(unused_variables)] -pub fn __action73< +fn __action53< 'input, >( input: &'input str, @@ -4143,20 +2381,20 @@ pub fn __action73< { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action45( + let __temp0 = __action40( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action51( + __action41( input, __temp0, ) } #[allow(unused_variables)] -pub fn __action74< +fn __action54< 'input, >( input: &'input str, @@ -4167,165 +2405,21 @@ pub fn __action74< { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action45( - input, - __1, - __2, - ); - let __temp0 = (__start0, __temp0, __end0); - __action52( - input, - __0, - __temp0, - ) -} - -#[allow(unused_variables)] -pub fn __action75< - 'input, ->( - input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Atom, usize), - __3: (usize, &'input str, usize), - __4: (usize, Box, usize), - __5: (usize, &'input str, usize), - __6: (usize, &'input str, usize), -) -> QueryTerm -{ - let __start0 = __3.2.clone(); - let __end0 = __4.0.clone(); - let __temp0 = __action43( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action61( - input, - __0, - __1, - __2, - __3, - __temp0, - __4, - __5, - __6, - ) -} - -#[allow(unused_variables)] -pub fn __action76< - 'input, ->( - input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Atom, usize), - __3: (usize, &'input str, usize), - __4: (usize, ::std::vec::Vec>, usize), - __5: (usize, Box, usize), - __6: (usize, &'input str, usize), - __7: (usize, &'input str, usize), -) -> QueryTerm -{ - let __start0 = __4.0.clone(); - let __end0 = __4.2.clone(); - let __temp0 = __action44( - input, - __4, - ); - let __temp0 = (__start0, __temp0, __end0); - __action61( - input, - __0, - __1, - __2, - __3, - __temp0, - __5, - __6, - __7, - ) -} - -#[allow(unused_variables)] -pub fn __action77< - 'input, ->( - input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Atom, usize), - __3: (usize, &'input str, usize), - __4: (usize, Box, usize), - __5: (usize, &'input str, usize), - __6: (usize, ::std::vec::Vec>, usize), - __7: (usize, &'input str, usize), -) -> QueryTerm -{ - let __start0 = __3.2.clone(); - let __end0 = __4.0.clone(); - let __temp0 = __action43( - input, - &__start0, - &__end0, - ); - let __temp0 = (__start0, __temp0, __end0); - __action62( + let __temp0 = __action40( input, - __0, __1, __2, - __3, - __temp0, - __4, - __5, - __6, - __7, - ) -} - -#[allow(unused_variables)] -pub fn __action78< - 'input, ->( - input: &'input str, - __0: (usize, &'input str, usize), - __1: (usize, &'input str, usize), - __2: (usize, Atom, usize), - __3: (usize, &'input str, usize), - __4: (usize, ::std::vec::Vec>, usize), - __5: (usize, Box, usize), - __6: (usize, &'input str, usize), - __7: (usize, ::std::vec::Vec>, usize), - __8: (usize, &'input str, usize), -) -> QueryTerm -{ - let __start0 = __4.0.clone(); - let __end0 = __4.2.clone(); - let __temp0 = __action44( - input, - __4, ); let __temp0 = (__start0, __temp0, __end0); - __action62( + __action42( input, __0, - __1, - __2, - __3, __temp0, - __5, - __6, - __7, - __8, ) } #[allow(unused_variables)] -pub fn __action79< +fn __action55< 'input, >( input: &'input str, @@ -4337,13 +2431,13 @@ pub fn __action79< { let __start0 = __1.2.clone(); let __end0 = __2.0.clone(); - let __temp0 = __action43( + let __temp0 = __action38( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action11( + __action7( input, __0, __1, @@ -4354,7 +2448,7 @@ pub fn __action79< } #[allow(unused_variables)] -pub fn __action80< +fn __action56< 'input, >( input: &'input str, @@ -4367,12 +2461,12 @@ pub fn __action80< { let __start0 = __2.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action44( + let __temp0 = __action39( input, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action11( + __action7( input, __0, __1, @@ -4383,7 +2477,7 @@ pub fn __action80< } #[allow(unused_variables)] -pub fn __action81< +fn __action57< 'input, >( input: &'input str, @@ -4392,19 +2486,19 @@ pub fn __action81< { let __start0 = __0.0.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action42( + let __temp0 = __action37( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action40( + __action35( input, __temp0, ) } #[allow(unused_variables)] -pub fn __action82< +fn __action58< 'input, >( input: &'input str, @@ -4414,12 +2508,12 @@ pub fn __action82< { let __start0 = __1.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action42( + let __temp0 = __action37( input, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action41( + __action36( input, __0, __temp0, @@ -4427,7 +2521,7 @@ pub fn __action82< } #[allow(unused_variables)] -pub fn __action83< +fn __action59< 'input, >( input: &'input str, @@ -4437,20 +2531,20 @@ pub fn __action83< { let __start0 = __0.0.clone(); let __end0 = __1.2.clone(); - let __temp0 = __action39( + let __temp0 = __action34( input, __0, __1, ); let __temp0 = (__start0, __temp0, __end0); - __action53( + __action43( input, __temp0, ) } #[allow(unused_variables)] -pub fn __action84< +fn __action60< 'input, >( input: &'input str, @@ -4461,13 +2555,13 @@ pub fn __action84< { let __start0 = __1.0.clone(); let __end0 = __2.2.clone(); - let __temp0 = __action39( + let __temp0 = __action34( input, __1, __2, ); let __temp0 = (__start0, __temp0, __end0); - __action54( + __action44( input, __0, __temp0, @@ -4475,7 +2569,7 @@ pub fn __action84< } #[allow(unused_variables)] -pub fn __action85< +fn __action61< 'input, >( input: &'input str, @@ -4484,13 +2578,13 @@ pub fn __action85< { let __start0 = __0.0.clone(); let __end0 = __0.0.clone(); - let __temp0 = __action37( + let __temp0 = __action32( input, &__start0, &__end0, ); let __temp0 = (__start0, __temp0, __end0); - __action20( + __action16( input, __temp0, __0, @@ -4498,7 +2592,7 @@ pub fn __action85< } #[allow(unused_variables)] -pub fn __action86< +fn __action62< 'input, >( input: &'input str, @@ -4508,12 +2602,12 @@ pub fn __action86< { let __start0 = __0.0.clone(); let __end0 = __0.2.clone(); - let __temp0 = __action38( + let __temp0 = __action33( input, __0, ); let __temp0 = (__start0, __temp0, __end0); - __action20( + __action16( input, __temp0, __1, -- 2.54.0