[INFO] cloning repository https://github.com/oaleaf/cx [INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/oaleaf/cx" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Foaleaf%2Fcx", kill_on_drop: false }` [INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Foaleaf%2Fcx'... [INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }` [INFO] [stdout] bdda1e5435301880bdef7b2bd2b7d6789fc8cf72 [INFO] testing oaleaf/cx against beta-2022-04-10 for beta-1.61-1 [INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Foaleaf%2Fcx" "/workspace/builds/worker-46/source", kill_on_drop: false }` [INFO] [stderr] Cloning into '/workspace/builds/worker-46/source'... [INFO] [stderr] done. [INFO] validating manifest of git repo https://github.com/oaleaf/cx on toolchain beta-2022-04-10 [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }` [INFO] started tweaking git repo https://github.com/oaleaf/cx [INFO] finished tweaking git repo https://github.com/oaleaf/cx [INFO] tweaked toml for git repo https://github.com/oaleaf/cx written to /workspace/builds/worker-46/source/Cargo.toml [INFO] crate git repo https://github.com/oaleaf/cx already has a lockfile, it will not be regenerated [INFO] running `Command { std: "/workspace/cargo-home/bin/cargo" "+beta-2022-04-10" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }` [INFO] [stderr] Blocking waiting for file lock on package cache [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-46/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-46/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }` [INFO] [stdout] 79d0f27950a850cb25967a4e852921f9827c90e5cae8a7eff1449a82c7f7dea0 [INFO] running `Command { std: "docker" "start" "-a" "79d0f27950a850cb25967a4e852921f9827c90e5cae8a7eff1449a82c7f7dea0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "inspect" "79d0f27950a850cb25967a4e852921f9827c90e5cae8a7eff1449a82c7f7dea0", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "79d0f27950a850cb25967a4e852921f9827c90e5cae8a7eff1449a82c7f7dea0", kill_on_drop: false }` [INFO] [stdout] 79d0f27950a850cb25967a4e852921f9827c90e5cae8a7eff1449a82c7f7dea0 [INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-46/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-46/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=warn" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:b0c94ce3c1162fcb8e57cac5b65ec2f72eabb1eebea4fcc35e269e823f681646" "/opt/rustwide/cargo-home/bin/cargo" "+beta-2022-04-10" "build" "--frozen" "--message-format=json", kill_on_drop: false }` [INFO] [stdout] 317bac55ca8ffffd3f555dddf068f788a6dd0d155b1c7d52785ed69c914461ae [INFO] running `Command { std: "docker" "start" "-a" "317bac55ca8ffffd3f555dddf068f788a6dd0d155b1c7d52785ed69c914461ae", kill_on_drop: false }` [INFO] [stderr] Compiling libc v0.2.112 [INFO] [stderr] Compiling log v0.4.14 [INFO] [stderr] Compiling once_cell v1.9.0 [INFO] [stderr] Compiling parking_lot_core v0.8.5 [INFO] [stderr] Compiling cranelift-codegen-shared v0.80.0 [INFO] [stderr] Compiling regex-syntax v0.6.25 [INFO] [stderr] Compiling target-lexicon v0.12.2 [INFO] [stderr] Compiling crunchy v0.2.2 [INFO] [stderr] Compiling tiny-keccak v2.0.2 [INFO] [stderr] Compiling siphasher v0.3.9 [INFO] [stderr] Compiling cranelift-entity v0.80.0 [INFO] [stderr] Compiling rustc-hash v1.1.0 [INFO] [stderr] Compiling new_debug_unreachable v1.0.4 [INFO] [stderr] Compiling precomputed-hash v0.1.1 [INFO] [stderr] Compiling syn v1.0.86 [INFO] [stderr] Compiling fixedbitset v0.2.0 [INFO] [stderr] Compiling bit-vec v0.6.3 [INFO] [stderr] Compiling either v1.6.1 [INFO] [stderr] Compiling diff v0.1.12 [INFO] [stderr] Compiling serde v1.0.133 [INFO] [stderr] Compiling pico-args v0.4.2 [INFO] [stderr] Compiling utf8-ranges v1.0.4 [INFO] [stderr] Compiling anyhow v1.0.52 [INFO] [stderr] Compiling beef v0.5.1 [INFO] [stderr] Compiling cx_intr v0.1.0 (/opt/rustwide/workdir/crates/cx_intr) [INFO] [stderr] Compiling instant v0.1.12 [INFO] [stderr] Compiling ahash v0.7.6 [INFO] [stderr] Compiling indexmap v1.8.0 [INFO] [stderr] Compiling lock_api v0.4.5 [INFO] [stderr] Compiling aho-corasick v0.7.18 [INFO] [stderr] Compiling quote v1.0.15 [INFO] [stdout] warning: use of deprecated struct `HasherGenerator`: may be prone to hash collisions and therefore is not recommended [INFO] [stdout] --> crates/cx_intr/src/lib.rs:88:51 [INFO] [stdout] | [INFO] [stdout] 88 | unsafe impl InternerTokenGenerator for HasherGenerator [INFO] [stdout] | ^^^^^^^^^^^^^^^ [INFO] [stdout] | [INFO] [stdout] = note: `#[warn(deprecated)]` on by default [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling phf_shared v0.8.0 [INFO] [stderr] Compiling itertools v0.10.3 [INFO] [stdout] warning: 1 warning emitted [INFO] [stdout] [INFO] [stdout] [INFO] [stderr] Compiling bit-set v0.5.2 [INFO] [stderr] Compiling cranelift-codegen-meta v0.80.0 [INFO] [stderr] Compiling cranelift-bforest v0.80.0 [INFO] [stderr] Compiling regalloc v0.0.33 [INFO] [stderr] Compiling ena v0.14.0 [INFO] [stderr] Compiling getrandom v0.2.4 [INFO] [stderr] Compiling dirs-sys-next v0.1.2 [INFO] [stderr] Compiling atty v0.2.14 [INFO] [stderr] Compiling region v2.2.0 [INFO] [stderr] Compiling parking_lot v0.11.2 [INFO] [stderr] Compiling dirs-next v2.0.0 [INFO] [stderr] Compiling string_cache v0.8.2 [INFO] [stderr] Compiling regex v1.5.4 [INFO] [stderr] Compiling term v0.7.0 [INFO] [stderr] Compiling hashbrown v0.11.2 [INFO] [stderr] Compiling cranelift-codegen v0.80.0 [INFO] [stderr] Compiling ascii-canvas v3.0.0 [INFO] [stderr] Compiling lalrpop-util v0.19.6 [INFO] [stderr] Compiling string-interner v0.14.0 [INFO] [stderr] Compiling cx_ir v0.1.0 (/opt/rustwide/workdir/crates/cx_ir) [INFO] [stderr] Compiling petgraph v0.5.1 [INFO] [stderr] Compiling lalrpop v0.19.6 [INFO] [stderr] Compiling logos-derive v0.12.0 [INFO] [stderr] Compiling logos v0.12.0 [INFO] [stderr] Compiling cranelift-module v0.80.0 [INFO] [stderr] Compiling cranelift-native v0.80.0 [INFO] [stderr] Compiling cranelift-frontend v0.80.0 [INFO] [stderr] Compiling cranelift-jit v0.80.0 [INFO] [stderr] Compiling cranelift v0.80.0 [INFO] [stderr] Compiling cx_syn v0.1.0 (/opt/rustwide/workdir/crates/cx_syn) [INFO] [stderr] error: failed to run custom build command for `cx_syn v0.1.0 (/opt/rustwide/workdir/crates/cx_syn)` [INFO] [stderr] [INFO] [stderr] Caused by: [INFO] [stderr] process didn't exit successfully: `/opt/rustwide/target/debug/build/cx_syn-08d73b3d611aaab4/build-script-build` (exit status: 1) [INFO] [stderr] --- stdout [INFO] [stderr] cargo:rerun-if-changed=src/cx_grammar.lalrpop [INFO] [stderr] processing file `src/cx_grammar.lalrpop` [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr1 = Expr1 (*) "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = Expr1 (*) "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = Expr1 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"."` we can reduce to a `Expr2` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] "!" Expr1 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:153:1: 153:4, which would consume the top 1 token(s) from the stack and produce a `Expr2`. This might then yield a parse tree like [INFO] [stderr] Expr1 ╷ "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr2─┤ │ [INFO] [stderr] ├─Expr3─┤ │ [INFO] [stderr] ├─Expr4─┤ │ [INFO] [stderr] ├─Expr5─┘ │ [INFO] [stderr] └─Expr5───────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr1`. This might then yield a parse tree like [INFO] [stderr] "!" Expr1 "newline continuation" "." Name [INFO] [stderr] │ ├─Expr1─────────────────────────────┤ [INFO] [stderr] │ └─Expr2─────────────────────────────┤ [INFO] [stderr] └─Expr2─────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"%"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"*"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"/"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr5 ">=" Expr3 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:153:1: 153:4, which would consume the top 1 token(s) from the stack and produce a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr3 ╷ "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr4─┤ │ [INFO] [stderr] ├─Expr5─┘ │ [INFO] [stderr] └─Expr5───────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr3`. This might then yield a parse tree like [INFO] [stderr] Expr5 ">=" Expr3 "newline continuation" "%" Expr2 [INFO] [stderr] │ ├─Expr3──────────────────────────────┤ [INFO] [stderr] │ └─Expr4──────────────────────────────┤ [INFO] [stderr] └─Expr5─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"+"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"-"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr "==" Expr4 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:153:1: 153:4, which would consume the top 1 token(s) from the stack and produce a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr4 ╷ "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr5─┘ │ [INFO] [stderr] └─Expr5───────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr "==" Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] │ ├─Expr4──────────────────────────────┤ [INFO] [stderr] │ └─Expr5──────────────────────────────┤ [INFO] [stderr] └─Expr─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Name "=" Expr5 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:153:1: 153:4, which would consume the top 1 token(s) from the stack and produce a `Expr`. This might then yield a parse tree like [INFO] [stderr] Expr5 ╷ "newline continuation" "==" Expr5 [INFO] [stderr] ├─Expr─┘ │ [INFO] [stderr] └─Expr───────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Name "=" Expr5 "newline continuation" "<" Expr4 [INFO] [stderr] │ ├─Expr5──────────────────────────────┤ [INFO] [stderr] │ └─Expr───────────────────────────────┤ [INFO] [stderr] └─DefaultFnParam──────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"!"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"("` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"bin num"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"dec num"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"fn"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"hex num"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"name"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"newline"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"oct num"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"usn"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:9:5: 9:38: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Block = (*) "{" Item+ "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Block = (*) "{" "}" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = (*) Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) Number ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" (Expr0 Comma)+ ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" Expr0 ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr0 = (*) "(" ")" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr0 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = (*) Expr1 "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) Expr1 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = (*) "!" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = (*) Expr3 "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = (*) Expr4 "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = (*) Expr5 "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = (*) "fn" Name "(" FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) FnDecl ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) Stmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) UsnStmt ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item = (*) "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Item+ = Item+ (*) Item ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "bin num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "dec num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "hex num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Number = (*) "oct num" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] SourceFileRoot = Item+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Stmt = (*) Expr "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] UsnStmt = (*) "usn" Path "newline" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"{"` we can reduce to a `SourceFileRoot` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:24:5: 24:48: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (Name Colon2)+ = Name (*) "::" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Path = Name (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"::"` we can reduce to a `Path` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "!=" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "!=" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "!=" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "!=" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr "!=" Expr5 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:216:5: 216:89, which would consume the top 3 token(s) from the stack and produce a `Expr`. This might then yield a parse tree like [INFO] [stderr] Expr "!=" Expr5 "newline continuation" "==" Expr5 [INFO] [stderr] ├─Expr────────┘ │ [INFO] [stderr] └─Expr──────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr "!=" Expr5 "newline continuation" "<" Expr4 [INFO] [stderr] │ └─Expr5──────────────────────────────┤ [INFO] [stderr] └─Expr─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "==" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "==" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "==" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "==" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr "==" Expr5 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:213:5: 213:86, which would consume the top 3 token(s) from the stack and produce a `Expr`. This might then yield a parse tree like [INFO] [stderr] Expr "==" Expr5 "newline continuation" "==" Expr5 [INFO] [stderr] ├─Expr────────┘ │ [INFO] [stderr] └─Expr──────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr "==" Expr5 "newline continuation" "<" Expr4 [INFO] [stderr] │ └─Expr5──────────────────────────────┤ [INFO] [stderr] └─Expr─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:193:5: 193:87: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "+" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"%"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:193:5: 193:87: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "+" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"*"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:193:5: 193:87: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "+" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"/"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:193:5: 193:87: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr4 "+" Expr3 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:193:5: 193:87, which would consume the top 3 token(s) from the stack and produce a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr4 "+" Expr3 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr4───────┤ │ [INFO] [stderr] ├─Expr5───────┘ │ [INFO] [stderr] └─Expr5─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr3`. This might then yield a parse tree like [INFO] [stderr] Expr4 "+" Expr3 "newline continuation" "%" Expr2 [INFO] [stderr] │ └─Expr3──────────────────────────────┤ [INFO] [stderr] └─Expr4────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:196:5: 196:88: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "-" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"%"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:196:5: 196:88: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "-" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"*"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:196:5: 196:88: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "-" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"/"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:196:5: 196:88: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr4 "-" Expr3 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:196:5: 196:88, which would consume the top 3 token(s) from the stack and produce a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr4 "-" Expr3 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr4───────┤ │ [INFO] [stderr] ├─Expr5───────┘ │ [INFO] [stderr] └─Expr5─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr3`. This might then yield a parse tree like [INFO] [stderr] Expr4 "-" Expr3 "newline continuation" "%" Expr2 [INFO] [stderr] │ └─Expr3──────────────────────────────┤ [INFO] [stderr] └─Expr4────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:200:5: 200:85: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "<" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"+"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:200:5: 200:85: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "<" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"-"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:200:5: 200:85: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr5 "<" Expr4 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:200:5: 200:85, which would consume the top 3 token(s) from the stack and produce a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr5 "<" Expr4 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr5───────┘ │ [INFO] [stderr] └─Expr5─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr5 "<" Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] │ └─Expr4──────────────────────────────┤ [INFO] [stderr] └─Expr5────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:206:5: 206:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "<=" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"+"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:206:5: 206:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "<=" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"-"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:206:5: 206:86: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr5 "<=" Expr4 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:206:5: 206:86, which would consume the top 3 token(s) from the stack and produce a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr5 "<=" Expr4 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr5────────┘ │ [INFO] [stderr] └─Expr5──────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr5 "<=" Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] │ └─Expr4──────────────────────────────┤ [INFO] [stderr] └─Expr5─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:203:5: 203:85: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 ">" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"+"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:203:5: 203:85: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 ">" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"-"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:203:5: 203:85: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr5 ">" Expr4 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:203:5: 203:85, which would consume the top 3 token(s) from the stack and produce a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr5 ">" Expr4 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr5───────┘ │ [INFO] [stderr] └─Expr5─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr5 ">" Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] │ └─Expr4──────────────────────────────┤ [INFO] [stderr] └─Expr5────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:209:5: 209:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 ">=" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"+"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:209:5: 209:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 ">=" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"-"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:209:5: 209:86: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr5 ">=" Expr4 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:209:5: 209:86, which would consume the top 3 token(s) from the stack and produce a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr5 ">=" Expr4 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr5────────┘ │ [INFO] [stderr] └─Expr5──────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr5 ">=" Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] │ └─Expr4──────────────────────────────┤ [INFO] [stderr] └─Expr5─────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (DefaultFnParam Comma)+ = (*) (DefaultFnParam Comma)+ DefaultFnParam "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] (DefaultFnParam Comma)+ = (*) DefaultFnParam "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] (PosFnParam Comma)+ = (*) (PosFnParam Comma)+ PosFnParam "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] (PosFnParam Comma)+ = (*) PosFnParam "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name Ty "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name ":" Ty "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = "fn" Name "(" (*) FnParamList ")" Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnDecl = "fn" Name "(" (*) FnParamList ")" RetTy Block ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) (DefaultFnParam Comma)+ ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) (DefaultFnParam Comma)+ DefaultFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) (PosFnParam Comma)+ ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) (PosFnParam Comma)+ (DefaultFnParam Comma)+ ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) (PosFnParam Comma)+ (DefaultFnParam Comma)+ DefaultFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) (PosFnParam Comma)+ DefaultFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) (PosFnParam Comma)+ PosFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) DefaultFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (*) PosFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] PosFnParam = (*) Name Ty ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] PosFnParam = (*) Name ":" Ty ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"name"` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:24:5: 24:48: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (Name Colon2)+ = (Name Colon2)+ Name (*) "::" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Path = (Name Colon2)+ Name (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"::"` we can reduce to a `Path` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:24:5: 24:48: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (Name Colon2)+ = Name (*) "::" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Path = "::" Name (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"::"` we can reduce to a `Path` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "newline continuation" "!=" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "newline continuation" "!=" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "newline continuation" "!=" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "newline continuation" "!=" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:216:5: 216:89: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr "newline continuation" "!=" Expr5 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:216:5: 216:89, which would consume the top 4 token(s) from the stack and produce a `Expr`. This might then yield a parse tree like [INFO] [stderr] Expr "newline continuation" "!=" Expr5 "newline continuation" "==" Expr5 [INFO] [stderr] ├─Expr───────────────────────────────┘ │ [INFO] [stderr] └─Expr─────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr "newline continuation" "!=" Expr5 "newline continuation" "<" Expr4 [INFO] [stderr] │ └─Expr5──────────────────────────────┤ [INFO] [stderr] └─Expr────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "newline continuation" "==" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "newline continuation" "==" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"<="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "newline continuation" "==" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">"` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr = Expr "newline continuation" "==" Expr5 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" "<=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 (*) "newline continuation" ">=" Expr4 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `">="` we can reduce to a `Expr` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:213:5: 213:86: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr "newline continuation" "==" Expr5 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:213:5: 213:86, which would consume the top 4 token(s) from the stack and produce a `Expr`. This might then yield a parse tree like [INFO] [stderr] Expr "newline continuation" "==" Expr5 "newline continuation" "==" Expr5 [INFO] [stderr] ├─Expr───────────────────────────────┘ │ [INFO] [stderr] └─Expr─────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr "newline continuation" "==" Expr5 "newline continuation" "<" Expr4 [INFO] [stderr] │ └─Expr5──────────────────────────────┤ [INFO] [stderr] └─Expr────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:193:5: 193:87: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "newline continuation" "+" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"%"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:193:5: 193:87: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "newline continuation" "+" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"*"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:193:5: 193:87: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "newline continuation" "+" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"/"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:193:5: 193:87: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:193:5: 193:87, which would consume the top 4 token(s) from the stack and produce a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr4 "newline continuation" "+" Expr3 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr4──────────────────────────────┤ │ [INFO] [stderr] ├─Expr5──────────────────────────────┘ │ [INFO] [stderr] └─Expr5────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr3`. This might then yield a parse tree like [INFO] [stderr] Expr4 "newline continuation" "+" Expr3 "newline continuation" "%" Expr2 [INFO] [stderr] │ └─Expr3──────────────────────────────┤ [INFO] [stderr] └─Expr4───────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:196:5: 196:88: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "newline continuation" "-" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"%"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:196:5: 196:88: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "newline continuation" "-" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"*"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:196:5: 196:88: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr3 = Expr3 (*) "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "%" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "*" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr3 = Expr3 (*) "newline continuation" "/" Expr2 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 "newline continuation" "-" Expr3 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"/"` we can reduce to a `Expr4` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:196:5: 196:88: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr4 "newline continuation" "-" Expr3 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:196:5: 196:88, which would consume the top 4 token(s) from the stack and produce a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr4 "newline continuation" "-" Expr3 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr4──────────────────────────────┤ │ [INFO] [stderr] ├─Expr5──────────────────────────────┘ │ [INFO] [stderr] └─Expr5────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr3`. This might then yield a parse tree like [INFO] [stderr] Expr4 "newline continuation" "-" Expr3 "newline continuation" "%" Expr2 [INFO] [stderr] │ └─Expr3──────────────────────────────┤ [INFO] [stderr] └─Expr4───────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:200:5: 200:85: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "newline continuation" "<" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"+"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:200:5: 200:85: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "newline continuation" "<" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"-"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:200:5: 200:85: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr5 "newline continuation" "<" Expr4 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:200:5: 200:85, which would consume the top 4 token(s) from the stack and produce a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr5 "newline continuation" "<" Expr4 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr5──────────────────────────────┘ │ [INFO] [stderr] └─Expr5────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr5 "newline continuation" "<" Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] │ └─Expr4──────────────────────────────┤ [INFO] [stderr] └─Expr5───────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:206:5: 206:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "newline continuation" "<=" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"+"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:206:5: 206:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "newline continuation" "<=" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"-"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:206:5: 206:86: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr5 "newline continuation" "<=" Expr4 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:206:5: 206:86, which would consume the top 4 token(s) from the stack and produce a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr5 "newline continuation" "<=" Expr4 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr5───────────────────────────────┘ │ [INFO] [stderr] └─Expr5─────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr5 "newline continuation" "<=" Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] │ └─Expr4──────────────────────────────┤ [INFO] [stderr] └─Expr5────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:203:5: 203:85: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "newline continuation" ">" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"+"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:203:5: 203:85: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "newline continuation" ">" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"-"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:203:5: 203:85: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr5 "newline continuation" ">" Expr4 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:203:5: 203:85, which would consume the top 4 token(s) from the stack and produce a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr5 "newline continuation" ">" Expr4 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr5──────────────────────────────┘ │ [INFO] [stderr] └─Expr5────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr5 "newline continuation" ">" Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] │ └─Expr4──────────────────────────────┤ [INFO] [stderr] └─Expr5───────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:209:5: 209:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "newline continuation" ">=" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"+"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:209:5: 209:86: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr4 = Expr4 (*) "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "+" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr4 = Expr4 (*) "newline continuation" "-" Expr3 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr5 = Expr5 "newline continuation" ">=" Expr4 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"-"` we can reduce to a `Expr5` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:209:5: 209:86: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] Expr5 "newline continuation" ">=" Expr4 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:209:5: 209:86, which would consume the top 4 token(s) from the stack and produce a `Expr5`. This might then yield a parse tree like [INFO] [stderr] Expr5 "newline continuation" ">=" Expr4 "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr5───────────────────────────────┘ │ [INFO] [stderr] └─Expr5─────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr4`. This might then yield a parse tree like [INFO] [stderr] Expr5 "newline continuation" ">=" Expr4 "newline continuation" "+" Expr3 [INFO] [stderr] │ └─Expr4──────────────────────────────┤ [INFO] [stderr] └─Expr5────────────────────────────────────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (DefaultFnParam Comma)+ = (DefaultFnParam Comma)+ (*) DefaultFnParam "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name Ty "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name ":" Ty "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (DefaultFnParam Comma)+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (DefaultFnParam Comma)+ (*) DefaultFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"name"` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (DefaultFnParam Comma)+ = (*) (DefaultFnParam Comma)+ DefaultFnParam "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] (DefaultFnParam Comma)+ = (*) DefaultFnParam "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] (PosFnParam Comma)+ = (PosFnParam Comma)+ (*) PosFnParam "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name Ty "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name ":" Ty "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ (*) (DefaultFnParam Comma)+ ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ (*) (DefaultFnParam Comma)+ DefaultFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ (*) DefaultFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ (*) PosFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] PosFnParam = (*) Name Ty ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] PosFnParam = (*) Name ":" Ty ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"name"` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (DefaultFnParam Comma)+ = DefaultFnParam (*) "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = DefaultFnParam (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `","` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (PosFnParam Comma)+ = PosFnParam (*) "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = PosFnParam (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `","` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:24:5: 24:48: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (Name Colon2)+ = (Name Colon2)+ Name (*) "::" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Path = "::" (Name Colon2)+ Name (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"::"` we can reduce to a `Path` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (DefaultFnParam Comma)+ = (DefaultFnParam Comma)+ DefaultFnParam (*) "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (DefaultFnParam Comma)+ DefaultFnParam (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `","` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (DefaultFnParam Comma)+ = (DefaultFnParam Comma)+ (*) DefaultFnParam "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name Ty "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name ":" Ty "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] DefaultFnParam = (*) Name "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ (DefaultFnParam Comma)+ (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ (DefaultFnParam Comma)+ (*) DefaultFnParam ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Name = (*) "name" ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"name"` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (DefaultFnParam Comma)+ = DefaultFnParam (*) "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ DefaultFnParam (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `","` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (PosFnParam Comma)+ = (PosFnParam Comma)+ PosFnParam (*) "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ PosFnParam (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `","` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:116:5: 116:48: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name Ty (*) "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] PosFnParam = Name Ty (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"="` we can reduce to a `PosFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:112:5: 112:70: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] (DefaultFnParam Comma)+ = (DefaultFnParam Comma)+ DefaultFnParam (*) "," ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] FnParamList = (PosFnParam Comma)+ (DefaultFnParam Comma)+ DefaultFnParam (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `","` we can reduce to a `FnParamList` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:116:5: 116:48: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name ":" Ty (*) "=" Expr ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] PosFnParam = Name ":" Ty (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"="` we can reduce to a `PosFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:120:5: 120:63: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name "=" Expr (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"!="` we can reduce to a `DefaultFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:120:5: 120:63: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name "=" Expr (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"=="` we can reduce to a `DefaultFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:120:5: 120:63: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name "=" Expr (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"newline continuation"` we can reduce to a `DefaultFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:120:5: 120:63: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name Ty "=" Expr (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"!="` we can reduce to a `DefaultFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:120:5: 120:63: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name Ty "=" Expr (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"=="` we can reduce to a `DefaultFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:120:5: 120:63: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name Ty "=" Expr (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"newline continuation"` we can reduce to a `DefaultFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:120:5: 120:63: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name ":" Ty "=" Expr (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"!="` we can reduce to a `DefaultFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:120:5: 120:63: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name ":" Ty "=" Expr (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"=="` we can reduce to a `DefaultFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:120:5: 120:63: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] DefaultFnParam = Name ":" Ty "=" Expr (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "!=" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr = Expr (*) "newline continuation" "==" Expr5 ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"newline continuation"` we can reduce to a `DefaultFnParam` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Conflict detected [INFO] [stderr] [INFO] [stderr] when in this state: [INFO] [stderr] Expr1 = Expr1 (*) "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr1 = Expr1 (*) "newline continuation" "." Name ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] Expr2 = Expr1 (*) ["!", "!=", "#", "%", "&&", "(", ")", "*", "+", ",", "-", ".", "/", ":", "::", "<", "<=", "=", "==", ">", ">=", "@", "[", "]", "bin num", "dec num", "fn", "hex num", "name", "newline", "newline continuation", "oct num", "struct", "usn", "{", "||", "}", EOF] [INFO] [stderr] [INFO] [stderr] and looking at a token `"."` we can reduce to a `Expr2` but we can also shift [INFO] [stderr] [INFO] [stderr] src/cx_grammar.lalrpop:153:1: 153:4: Local ambiguity detected [INFO] [stderr] [INFO] [stderr] The problem arises after having observed the following symbols in the input: [INFO] [stderr] "!" Expr1 [INFO] [stderr] At that point, if the next token is a `"newline continuation"`, then the parser can proceed in two different ways. [INFO] [stderr] [INFO] [stderr] First, the parser could execute the production at src/cx_grammar.lalrpop:153:1: 153:4, which would consume the top 1 token(s) from the stack and produce a `Expr2`. This might then yield a parse tree like [INFO] [stderr] Expr1 ╷ "newline continuation" ">=" Expr4 [INFO] [stderr] ├─Expr2─┤ │ [INFO] [stderr] ├─Expr3─┤ │ [INFO] [stderr] ├─Expr4─┤ │ [INFO] [stderr] ├─Expr5─┘ │ [INFO] [stderr] └─Expr5───────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] Alternatively, the parser could shift the `"newline continuation"` token and later use it to construct a `Expr1`. This might then yield a parse tree like [INFO] [stderr] "!" Expr1 "newline continuation" "." Name [INFO] [stderr] │ ├─Expr1─────────────────────────────┤ [INFO] [stderr] │ └─Expr2─────────────────────────────┤ [INFO] [stderr] └─Expr2─────────────────────────────────┘ [INFO] [stderr] [INFO] [stderr] See the LALRPOP manual for advice on making your grammar LR(1). [INFO] running `Command { std: "docker" "inspect" "317bac55ca8ffffd3f555dddf068f788a6dd0d155b1c7d52785ed69c914461ae", kill_on_drop: false }` [INFO] running `Command { std: "docker" "rm" "-f" "317bac55ca8ffffd3f555dddf068f788a6dd0d155b1c7d52785ed69c914461ae", kill_on_drop: false }` [INFO] [stdout] 317bac55ca8ffffd3f555dddf068f788a6dd0d155b1c7d52785ed69c914461ae