diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 565c2cdf1..8681301a7 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,105 +1,21 @@
# TODO: remove this as submodules aren't used anymore.
variables:
GIT_SUBMODULE_STRATEGY: recursive
- build_binary_script: "./scripts/distribution/generic/build.sh"
- package_binary_script: "./scripts/distribution/generic/package.sh"
LIGO_REGISTRY_IMAGE_BASE_NAME: "${CI_PROJECT_PATH}/${CI_PROJECT_NAME}"
WEBIDE_IMAGE_NAME: "registry.gitlab.com/${CI_PROJECT_PATH}/ligo_webide"
stages:
- - test
- - build_and_package_binaries
- - build_docker
- - build_and_deploy
- - ide-unit-test
- - ide-build
- - ide-e2e-test
+ - build
+ - push
- ide-deploy
- - nix
- - nix-push
- versioning
-# TODO provide sensible CI for master
-dont-merge-to-master:
- stage: test
- script:
- - "false"
- only:
- - master
-
-.build_binary: &build_binary
- stage: test # To run in sequence and save CPU usage, use stage: build_and_package_binaries
- script:
- - export COMMIT_DATE="$(git show --no-patch --format=%ci)"
- - $build_binary_script "$target_os_family" "$target_os" "$target_os_version"
- - $package_binary_script "$target_os_family" "$target_os" "$target_os_version"
- artifacts:
- paths:
- - dist/package/**/*
-
-.website_build: &website_build
- stage: build_and_deploy
- image: node:12
- dependencies:
- - build-and-package-debian-9
- - build-and-package-debian-10
- - build-and-package-ubuntu-18-04
- - build-and-package-ubuntu-19-10
- before_script:
- - export COMMIT_DATE="$(git show --no-patch --format=%ci)"
- - export TERM=dumb
- - scripts/install_native_dependencies.sh
- - scripts/install_opam.sh # TODO: or scripts/install_build_environment.sh ?
- - export PATH="/usr/local/bin${PATH:+:}${PATH:-}"
- - eval $(opam config env)
- - scripts/setup_switch.sh
- - eval $(opam config env)
- - scripts/setup_repos.sh
-
- # install deps for internal documentation
- - scripts/install_vendors_deps.sh
- - opam install -y odoc
- - scripts/build_ligo_local.sh
-
- # build with odoc
- - dune build @doc
-
- # copy .deb packages into website
- - find dist -name \*.deb -exec sh -c 'cp {} gitlab-pages/website/static/deb/ligo_$(basename $(dirname {})).deb' \;
-
- # yarn
- - cd gitlab-pages/website
- - yarn install
- script:
- - yarn build
- # move internal odoc documentation to the website folder
- - mv ../../_build/default/_doc/_html/ build/odoc
- after_script:
- - cp -r gitlab-pages/website/build public
- - cp -r gitlab-pages/website/sitemap.xml public/sitemap.xml
- artifacts:
- paths:
- - public
-
-.docker: &docker
+.docker-image:
+ stage: push
image: docker:19.03.5
services:
- docker:19.03.5-dind
-.before_script: &before_script
- before_script:
- # Install dependencies
- # rsync is needed by opam to sync a package installed from a local directory with the copy in ~/.opam
- - export COMMIT_DATE="$(git show --no-patch --format=%ci)"
- - export TERM=dumb
- - scripts/install_native_dependencies.sh
- - scripts/install_opam.sh # TODO: or scripts/install_build_environment.sh ?
- - export PATH="/usr/local/bin${PATH:+:}${PATH:-}"
- - eval $(opam config env)
- - scripts/setup_switch.sh
- - eval $(opam config env)
- - scripts/setup_repos.sh
-
version_scheduled_job:
stage: versioning
script:
@@ -107,192 +23,118 @@ version_scheduled_job:
only:
- schedules
-local-dune-job:
- <<: *before_script
- stage: test
- script:
- - scripts/install_vendors_deps.sh
- - scripts/build_ligo_local.sh
- - dune runtest
- - make coverage
- artifacts:
- paths:
- - _coverage_all
+.nix:
+ stage: build
+ tags:
+ - nix
+ before_script:
+ - find "$CI_PROJECT_DIR" -path "$CI_PROJECT_DIR/.git" -prune -o "(" -type d -a -not -perm -u=w ")" -exec chmod --verbose u+w {} ";"
+ - nix-env -f channel:nixos-unstable -iA gnutar gitMinimal
+ - export COMMIT_DATE="$(git show --no-patch --format=%ci)"
+
+# The binary produced is useless by itself
+binary:
+ extends: .nix
only:
- merge_requests
- dev
- - tags
- - triggers
- /^.*-run-dev$/
-
-# Run a docker build without publishing to the registry
-build-current-docker-image:
- stage: build_docker
- dependencies:
- - build-and-package-debian-10
- <<: *docker
script:
- - export COMMIT_DATE="$(git show --no-patch --format=%ci)"
- - sh scripts/build_docker_image.sh next
- - sh scripts/test_cli.sh
+ - nix-build nix -A ligo-bin
+
+doc:
+ extends: .nix
only:
- merge_requests
-
-# When a MR/PR is merged to dev
-# take the previous build and publish it to Docker Hub
-build-and-publish-latest-docker-image:
- stage: build_and_deploy
- <<: *docker
- dependencies:
- - build-and-package-debian-10
+ - dev
+ - /^.*-run-dev$/
script:
- - sh scripts/build_docker_image.sh $(if test "$CI_COMMIT_REF_NAME" = "dev"; then echo next; else echo next-attempt; fi)
- - sh scripts/test_cli.sh
- - echo ${LIGO_REGISTRY_PASSWORD} | docker login -u ${LIGO_REGISTRY_USER} --password-stdin
- - docker push ${LIGO_REGISTRY_IMAGE_BUILD:-ligolang/ligo}:$(if test "$CI_COMMIT_REF_NAME" = "dev"; then echo next; else echo next-attempt; fi)
+ - nix-build nix -A ligo-doc
+ - cp -Lr --no-preserve=mode,ownership,timestamps result/share/doc .
+ artifacts:
+ paths:
+ - doc
+
+test:
+ extends: .nix
+ only:
+ - merge_requests
+ - dev
+ - /^.*-run-dev$/
+ script:
+ - nix-build nix -A ligo-coverage
+ - cp -Lr --no-preserve=mode,ownership,timestamps result/share/coverage .
+ artifacts:
+ paths:
+ - coverage
+
+webide-e2e:
+ extends: .nix
+ only:
+ - merge_requests
+ - dev
+ - /^.*-run-dev$/
+ script:
+ - nix-build nix -A ligo-editor.e2e
+
+docker:
+ extends: .nix
+ only:
+ - merge_requests
+ - dev
+ - /^.*-run-dev$/
+ script:
+ - nix-build nix -A ligo-docker
+ - cp -L result ligo.tar.gz
+ artifacts:
+ paths:
+ - ligo.tar.gz
+
+docker-push:
+ extends: .docker-image
+ dependencies:
+ - docker
+ needs:
+ - docker
rules:
# Only deploy docker when from the dev branch AND on the canonical ligolang/ligo repository
- if: '$CI_COMMIT_REF_NAME =~ /^(dev|.*-run-dev)$/ && $CI_PROJECT_PATH == "ligolang/ligo"'
when: always
+ script:
+ - echo ${LIGO_REGISTRY_PASSWORD} | docker login -u ${LIGO_REGISTRY_USER} --password-stdin
+ - docker load -i=./ligo.tar.gz
+ - export LIGO_REGISTRY_FULL_NAME=${LIGO_REGISTRY_IMAGE_BUILD:-ligolang/ligo}:$(if test "$CI_COMMIT_REF_NAME" = "dev"; then echo next; else echo next-attempt; fi)
+ - docker tag ligo "${LIGO_REGISTRY_FULL_NAME}"
+ - docker push "${LIGO_REGISTRY_FULL_NAME}"
-# It'd be a good idea to generate those jobs dynamically,
-# based on desired targets
-build-and-package-debian-9:
- <<: *docker
- # To run in sequence and save CPU usage, use stage: build_and_package_binaries
- stage: test
- variables:
- target_os_family: "debian"
- target_os: "debian"
- target_os_version: "9"
- <<: *build_binary
- only:
- - dev
- - tags
- - /^.*-run-dev$/
-
-build-and-package-debian-10:
- <<: *docker
- # To run in sequence and save CPU usage, use stage: build_and_package_binaries
- stage: test
- variables:
- target_os_family: "debian"
- target_os: "debian"
- target_os_version: "10"
- <<: *build_binary
- # this one is merge_requests and dev, because the debian 10 binary
- # is used for build-current-docker-image and for
- # build-and-publish-latest-docker-image
+webide-docker:
+ extends: .nix
only:
- merge_requests
- dev
- - tags
- /^.*-run-dev$/
+ script:
+ - nix-build nix -A ligo-editor-docker
+ - cp -L result webide.tar.gz
+ artifacts:
+ paths:
+ - webide.tar.gz
-build-and-package-ubuntu-18-04:
- <<: *docker
- # To run in sequence and save CPU usage, use stage: build_and_package_binaries
- stage: test
- variables:
- target_os_family: "debian"
- target_os: "ubuntu"
- target_os_version: "18.04"
- <<: *build_binary
- only:
- - dev
- - tags
- - /^.*-run-dev$/
-
-build-and-package-ubuntu-19-10:
- <<: *docker
- # To run in sequence and save CPU usage, use stage: build_and_package_binaries
- stage: test
- variables:
- target_os_family: "debian"
- target_os: "ubuntu"
- target_os_version: "19.10"
- <<: *build_binary
- only:
- - dev
- - tags
- - /^.*-run-dev$/
-
-# Pages are deployed from dev, be careful not to override 'next'
-# in case something gets merged into 'dev' while releasing.
-pages:
- <<: *website_build
- rules:
- - if: '$CI_COMMIT_REF_NAME == "dev" && $CI_PROJECT_PATH == "ligolang/ligo"'
- when: always
-
-pages-attempt:
- <<: *website_build
- rules:
- - if: '$CI_COMMIT_REF_NAME =~ /^.*-run-dev$/ && $CI_PROJECT_PATH == "ligolang/ligo"'
- when: always
-
-# WEBIDE jobs
-
-run-webide-unit-tests:
- stage: ide-unit-test
+webide-push:
+ extends: .docker-image
dependencies:
- - build-and-package-debian-10
- image: node:12-buster
- script:
- - mv $(realpath dist/package/debian-10/*.deb) ligo_deb10.deb
- - apt-get update && apt-get -y install libev-dev perl pkg-config libgmp-dev libhidapi-dev m4 libcap-dev bubblewrap rsync
- - dpkg -i ligo_deb10.deb
- - cd tools/webide/packages/server
- - npm ci
- - export LIGO_CMD=/bin/ligo && npm run test
+ - webide-docker
+ needs:
+ - webide-docker
rules:
- - if: '$TAG_JOB != "true"'
- changes:
- - tools/webide/**
+ # Only deploy docker when from the dev branch AND on the canonical ligolang/ligo repository
+ - if: '$CI_COMMIT_REF_NAME =~ /^(dev|.*-run-dev)$/ && $CI_PROJECT_PATH == "ligolang/ligo"'
when: always
-
-build-publish-ide-image:
- stage: build_and_deploy
- <<: *docker
script:
- - ls -F
- - find dist/
- - find dist/package/ -name '*ligo_*deb'
- - mv $(realpath dist/package/debian-10/*.deb) tools/webide/ligo_deb10.deb
- - cp -r src/test/examples tools/webide/packages/client/examples
- - cd tools/webide
- echo "${CI_BUILD_TOKEN}" | docker login -u gitlab-ci-token --password-stdin registry.gitlab.com
- - >
- docker build
- -t "${WEBIDE_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}"
- --build-arg GIT_TAG="${CI_COMMIT_SHA}"
- --build-arg GIT_COMMIT="${CI_COMMIT_SHORT_SHA}"
- --build-arg EXAMPLES_DIR_SRC=packages/client/examples
- .
+ - docker load -i=./webide.tar.gz
+ - docker tag ligo-editor "${WEBIDE_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}"
- docker push "${WEBIDE_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}"
- rules:
- - if: '$TAG_JOB != "true"'
- changes:
- - tools/webide/**
- when: always
- if: '$CI_COMMIT_REF_NAME == "dev"'
- when: always
-
-run-webide-e2e-tests:
- stage: ide-e2e-test
- <<: *docker
- image: tmaier/docker-compose
- script:
- - cd tools/webide/packages/e2e
- - export WEBIDE_IMAGE="${WEBIDE_IMAGE_NAME}:${CI_COMMIT_SHORT_SHA}"
- - docker-compose run e2e
- rules:
- - if: '$TAG_JOB != "true"'
- changes:
- - tools/webide/**
- when: always
- if: '$CI_COMMIT_REF_NAME == "dev"'
- when: always
deploy-handoff:
# Handoff deployment duties to private repo
@@ -305,161 +147,39 @@ deploy-handoff:
- if: '$CI_COMMIT_REF_NAME == "dev"'
when: always
-
-##### The following jobs will replace the ones above! #####
-# TODO: add jobs for deploying the website, build a docker image and deploy it
-
-.prepare_nix: &prepare_nix
- image: nixos/nix:latest
- before_script:
- - nix-env -f channel:nixos-unstable -iA gnutar gitMinimal cachix
- - export COMMIT_DATE="$(git show --no-patch --format=%ci)"
- - echo "sandbox = true" > /etc/nix/nix.conf
- # A temporary caching solution
- - cachix use balsoft
- # TODO Don't upload everything, use a post-build-hook to only upload what can't be substituted
- - cachix push -w balsoft &
-
-# The binary produced is useless by itself
-binary-nix:
- stage: nix
- <<: *prepare_nix
+static-binary:
+ extends: .nix
only:
- merge_requests
- dev
- /^.*-run-dev$/
- script:
- - nix-build nix -A ligo-bin
-
-doc-nix:
- stage: nix
- <<: *prepare_nix
- only:
- - merge_requests
- - dev
- - /^.*-run-dev$/
- script:
- - nix-build nix -A ligo-doc
- - cp -Lr result/share/doc result-doc
- artifacts:
- paths:
- - result-doc
-
-test-nix:
- stage: nix
- <<: *prepare_nix
- only:
- - merge_requests
- - dev
- - /^.*-run-dev$/
- script:
- - nix-build nix -A ligo-coverage
- - cp -Lr result/share/coverage result-coverage
- artifacts:
- paths:
- - result-coverage
-
-# FIXME For some reason, e2e tests can't build on CI.
-.webide-e2e-nix:
- stage: nix
- <<: *prepare_nix
- rules:
- - changes:
- - tools/webide/**
- when: always
- - if: '$CI_COMMIT_REF_NAME =~ /^(dev|.*-run-dev)$/ && $CI_PROJECT_PATH == "ligolang/ligo"'
- when: always
- script:
- - nix-build nix -A ligo-editor.e2e
-
-docker-nix:
- stage: nix
- only:
- - merge_requests
- - dev
- - /^.*-run-dev$/
- <<: *prepare_nix
- script:
- - nix-build nix -A ligo-docker
- - cp -L result ligo.tar.gz
- artifacts:
- paths:
- - ligo.tar.gz
-
-docker-push-nix:
- stage: nix-push
- <<: *docker
- dependencies:
- - docker-nix
- needs:
- - docker-nix
- rules:
- # Only deploy docker when from the dev branch AND on the canonical ligolang/ligo repository
- - if: '$CI_COMMIT_REF_NAME =~ /^(dev|.*-run-dev)$/ && $CI_PROJECT_PATH == "ligolang/ligo"'
- when: always
- script:
- - echo ${LIGO_REGISTRY_PASSWORD} | docker login -u ${LIGO_REGISTRY_USER} --password-stdin
- - docker load -i=./ligo.tar.gz
- - export LIGO_REGISTRY_FULL_NAME=${LIGO_REGISTRY_IMAGE_BUILD:-ligolang/ligo}:$(if test "$CI_COMMIT_REF_NAME" = "dev"; then echo next-nix; else echo next-attempt-nix; fi)
- - docker tag ligo "${LIGO_REGISTRY_FULL_NAME}"
- - docker push "${LIGO_REGISTRY_FULL_NAME}"
-
-webide-docker-nix:
- stage: nix
- only:
- - merge_requests
- - dev
- - /^.*-run-dev$/
- <<: *prepare_nix
- script:
- - nix-build nix -A ligo-editor-docker
- - cp -L result webide.tar.gz
- artifacts:
- paths:
- - webide.tar.gz
-
-
-webide-push-nix:
- stage: nix-push
- <<: *docker
- dependencies:
- - webide-docker-nix
- needs:
- - webide-docker-nix
- rules:
- # Only deploy docker when from the dev branch AND on the canonical ligolang/ligo repository
- - if: '$CI_COMMIT_REF_NAME =~ /^(dev|.*-run-dev)$/ && $CI_PROJECT_PATH == "ligolang/ligo"'
- when: always
- script:
- - echo "${CI_BUILD_TOKEN}" | docker login -u gitlab-ci-token --password-stdin registry.gitlab.com
- - docker load -i=./webide.tar.gz
- - docker tag ligo-editor "${WEBIDE_IMAGE_NAME}:nix${CI_COMMIT_SHORT_SHA}"
- - docker push "${WEBIDE_IMAGE_NAME}:nix${CI_COMMIT_SHORT_SHA}"
-
-static-binary-nix:
- stage: nix
- <<: *prepare_nix
- only:
- - dev
- - /^.*-run-dev$/
script:
- nix-build nix -A ligo-static
# Check that the binary is truly static and has 0 dependencies
- test $(nix-store -q --references ./result | wc -l) -eq 0
- - cp -Lr result/bin result-static
+ - cp -L result/bin/ligo ligo
+ - chmod +rwx ligo
artifacts:
paths:
- - result-static
+ - ligo
-website-nix:
- stage: nix
- <<: *prepare_nix
- only:
- - dev
- - /^.*-run-dev$/
+.website:
+ extends: .nix
script:
- nix-build nix -A ligo-website
- - cp -Lr result/ result-website
+ - cp -Lr --no-preserve=mode,ownership,timestamps result/ public
artifacts:
paths:
- - result-website
+ - public
+
+pages:
+ extends: .website
+ rules:
+ - if: '$CI_COMMIT_REF_NAME == "dev" && $CI_PROJECT_PATH == "ligolang/ligo"'
+ when: always
+
+pages-attempt:
+ extends: .website
+ only:
+ - merge_requests
+ - /^.*-run-dev$/
diff --git a/gitlab-pages/docs/advanced/interop.md b/gitlab-pages/docs/advanced/interop.md
new file mode 100644
index 000000000..736efc8f8
--- /dev/null
+++ b/gitlab-pages/docs/advanced/interop.md
@@ -0,0 +1,730 @@
+---
+id: interop
+title: Interop
+---
+
+import Syntax from '@theme/Syntax';
+
+LIGO can work together with other smart contract languages on Tezos. However
+data structures might have different representations in Michelson and not
+correctly match the standard LIGO types.
+
+## Michelson types and annotations
+Michelson types consist of `or`'s and `pair`'s, combined with field annotations.
+Field annotations add contraints on a Michelson type, for example a pair of
+`(pair (int %foo) (string %bar))` will only work with the exact equivalence or
+the same type without the field annotations.
+
+To clarify:
+
+```michelson
+(pair (int %foo) (string %bar))
+````
+
+works with
+
+```michelson
+(pair (int %foo) (string %bar))
+```
+
+works with
+
+```michelson
+(pair int string)
+```
+
+works not with
+
+```michelson
+(pair (int %bar) (string %foo))
+```
+
+works not with
+
+```michelson
+(pair (string %bar) (int %foo))
+```
+
+:::info
+In the case of annotated entrypoints - the annotated `or` tree directly under
+`parameter` in a contract - you should annotations, as otherwise it would
+become unclear which entrypoint you are referring to.
+:::
+
+## Entrypoints and annotations
+It's possible for a contract to have multiple entrypoints, which translates in
+LIGO to a `parameter` with a variant type as shown here:
+
+
+
+```pascaligo
+type storage is int
+
+type parameter is
+ | Left of int
+ | Right of int
+
+function main (const p: parameter; const x: storage): (list(operation) * storage) is
+ ((nil: list(operation)), case p of
+ | Left(i) -> x - i
+ | Right(i) -> x + i
+ end)
+```
+
+
+
+
+```cameligo
+type storage = int
+
+type parameter =
+ | Left of int
+ | Right of int
+
+let main ((p, x): (parameter * storage)): (operation list * storage) =
+ (([]: operation list), (match p with
+ | Left i -> x - i
+ | Right i -> x + i
+ ))
+
+```
+
+
+
+
+```reasonligo
+type storage = int
+
+type parameter =
+ | Left(int)
+ | Right(int)
+
+let main = ((p, x): (parameter, storage)): (list(operation), storage) => {
+ ([]: list(operation), (switch(p) {
+ | Left(i) => x - i
+ | Right(i) => x + i
+ }))
+};
+
+```
+
+
+
+This contract can be called by another contract, like this one:
+
+
+
+
+```pascaligo group=get_entrypoint_opt
+type storage is int
+
+type parameter is int
+
+type x is Left of int
+
+function main (const p: parameter; const s: storage): (list(operation) * storage) is block {
+ const contract: contract(x) =
+ case (Tezos.get_entrypoint_opt("%left", ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx":address)): option(contract(x))) of
+ | Some (c) -> c
+ | None -> (failwith("not a correct contract") : contract(x))
+ end;
+
+ const result: (list(operation) * storage) = ((list [Tezos.transaction(Left(2), 2mutez, contract)]: list(operation)), s)
+} with result
+```
+
+
+
+
+
+
+```cameligo group=get_entrypoint_opt
+type storage = int
+
+type parameter = int
+
+type x = Left of int
+
+let main (p, s: parameter * storage): operation list * storage = (
+ let contract: x contract =
+ match ((Tezos.get_entrypoint_opt "%left" ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx": address)): x contract option) with
+ | Some c -> c
+ | None -> (failwith "contract does not match": x contract)
+ in
+ (([
+ Tezos.transaction (Left 2) 2mutez contract;
+ ]: operation list), s)
+)
+```
+
+
+
+
+
+```reasonligo group=get_entrypoint_opt
+type storage = int;
+
+type parameter = int;
+
+type x = Left(int);
+
+let main = ((p, s): (parameter, storage)): (list(operation), storage) => {
+ let contract: contract(x) =
+ switch (Tezos.get_entrypoint_opt("%left", ("tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx": address)): option(contract(x))) {
+ | Some c => c
+ | None => (failwith ("contract does not match"): contract(x))
+ };
+ ([
+ Tezos.transaction(Left(2), 2mutez, contract)
+ ]: list(operation), s);
+};
+```
+
+
+
+Notice how we directly use the `%left` entrypoint without mentioning the
+`%right` entrypoint. This is done with the help of annotations. Without
+annotations it wouldn't be clear what our `int` would be referring to.
+
+This currently only works for `or`'s or variant types in LIGO.
+
+## Interop with Michelson
+To interop with existing Michelson code or for compatibility with certain
+development tooling, LIGO has two special interop types: `michelson_or` and
+`michelson_pair`. These types give the flexibility to model the exact Michelson
+output, including field annotations.
+
+Take for example the following Michelson type that we want to interop with:
+
+```michelson
+(or
+ (unit %z)
+ (or %other
+ (unit %y)
+ (pair %other
+ (string %x)
+ (pair %other
+ (int %w)
+ (nat %v)))))
+```
+
+To reproduce this type we can use the following LIGO code:
+
+
+
+```pascaligo
+type w_and_v is michelson_pair(int, "w", nat, "v")
+type x_and is michelson_pair(string, "x", w_and_v, "other")
+type y_or is michelson_or(unit, "y", x_and, "other")
+type z_or is michelson_or(unit, "z", y_or, "other")
+```
+
+
+
+
+```cameligo
+type w_and_v = (int, "w", nat, "v") michelson_pair
+type x_and = (string, "x", w_and_v, "other") michelson_pair
+type y_or = (unit, "y", x_and, "other") michelson_or
+type z_or = (unit, "z", y_or, "other") michelson_or
+```
+
+
+
+
+```reasonligo
+type w_and_v = michelson_pair(int, "w", nat, "v")
+type x_and = michelson_pair(string, "x", w_and_v, "other")
+type y_or = michelson_or(unit, "y", x_and, "other")
+type z_or = michelson_or(unit, "z", y_or, "other")
+```
+
+
+
+If you don't want to have an annotation, you need to provide an empty string.
+
+:::info
+Alternatively, if annotations are not important you can also use plain tuples
+for pair's instead. Plain tuples don't have any annotations.
+:::
+
+To use variables of type `michelson_or` you have to use `M_left` and `M_right`.
+`M_left` picks the left `or` case while `M_right` picks the right `or` case.
+For `michelson_pair` you need to use tuples.
+
+
+
+```pascaligo
+const z: z_or = (M_left (unit) : z_or);
+
+const y_1: y_or = (M_left (unit): y_or);
+const y: z_or = (M_right (y_1) : z_or);
+
+const x_pair: x_and = ("foo", (2, 3n));
+const x_1: y_or = (M_right (x_pair): y_or);
+const x: z_or = (M_right (y_1) : z_or);
+```
+
+
+
+
+```cameligo
+let z: z_or = (M_left (unit) : z_or)
+
+let y_1: y_or = (M_left (unit): y_or)
+let y: z_or = (M_right (y_1) : z_or)
+
+let x_pair: x_and = ("foo", (2, 3n))
+let x_1: y_or = (M_right (x_pair): y_or)
+let x: z_or = (M_right (y_1) : z_or)
+```
+
+
+
+
+```reasonligo
+let z: z_or = (M_left (unit) : z_or)
+
+let y_1: y_or = (M_left (unit): y_or)
+let y: z_or = (M_right (y_1) : z_or)
+
+let x_pair: x_and = ("foo", (2, 3n))
+let x_1: y_or = (M_right (x_pair): y_or)
+let x: z_or = (M_right (y_1) : z_or)
+```
+
+
+
+## Helper functions
+Converting between different LIGO types and data structures can happen in two
+ways. The first way is to use the provided layout conversion functions, and the
+second way is to handle the layout conversion manually.
+
+:::info
+In both cases it will increase the size of the smart contract and the
+conversion will happen when running the smart contract.
+:::
+
+### Converting left combed Michelson data structures
+Here's an example of a left combed Michelson data structure using pairs:
+
+```michelson
+ (pair %other
+ (pair %other
+ (string %s)
+ (int %w)
+ )
+ (nat %v)
+ )
+```
+
+Which could respond with the following record type:
+
+
+
+```pascaligo
+type l_record is record [
+ s: string;
+ w: int;
+ v: nat
+]
+```
+
+
+
+
+```cameligo
+type l_record = {
+ s: string;
+ w: int;
+ v: nat
+}
+```
+
+
+
+
+```reasonligo
+type l_record = {
+ s: string,
+ w: int,
+ v: nat
+}
+```
+
+
+
+If we want to convert from the Michelson type to our record type and vice
+versa, we can use the following code:
+
+
+
+```pascaligo
+type michelson is michelson_pair_left_comb(l_record)
+
+function of_michelson (const f: michelson) : l_record is
+ block {
+ const p: l_record = Layout.convert_from_left_comb(f)
+ }
+ with p
+
+function to_michelson (const f: l_record) : michelson is
+ block {
+ const p: michelson = Layout.convert_to_left_comb ((f: l_record))
+ }
+ with p
+```
+
+
+
+
+```cameligo
+type michelson = l_record michelson_pair_left_comb
+
+let of_michelson (f: michelson) : l_record =
+ let p: l_record = Layout.convert_from_left_comb f in
+ p
+
+let to_michelson (f: l_record) : michelson =
+ let p = Layout.convert_to_left_comb (f: l_record) in
+ p
+```
+
+
+
+
+```reasonligo
+type michelson = michelson_pair_left_comb(l_record);
+
+let of_michelson = (f: michelson) : l_record => {
+ let p: l_record = Layout.convert_from_left_comb(f);
+ p
+};
+
+let to_michelson = (f: l_record) : michelson => {
+ let p = Layout.convert_to_left_comb(f: l_record);
+ p
+}
+
+```
+
+
+
+In the case of a left combed Michelson `or` data structure, that you want to
+translate to a variant, you can use the `michelson_or_left_comb` type.
+
+For example:
+
+
+
+```pascaligo
+type vari is
+| Foo of int
+| Bar of nat
+| Other of bool
+
+type r is michelson_or_left_comb(vari)
+```
+
+
+
+
+```cameligo
+type vari =
+| Foo of int
+| Bar of nat
+| Other of bool
+
+type r = vari michelson_or_left_comb
+```
+
+
+
+
+```reasonligo
+type vari =
+| Foo(int)
+| Bar(nat)
+| Other(bool)
+
+type r = michelson_or_left_comb(vari)
+```
+
+
+
+And then use these types in `Layout.convert_from_left_comb` or
+`Layout.convert_to_left_comb`, similar to the `pair`s example above, like this:
+
+
+
+```pascaligo
+function of_michelson_or (const f: r) : vari is
+ block {
+ const p: vari = Layout.convert_from_left_comb(f)
+ }
+ with p
+
+function to_michelson_or (const f: vari) : r is
+ block {
+ const p: r = Layout.convert_to_left_comb((f: vari))
+ }
+ with p
+```
+
+
+
+
+```cameligo
+let of_michelson_or (f: r) : vari =
+ let p: vari = Layout.convert_from_left_comb f in
+ p
+
+let to_michelson_or (f: vari) : r =
+ let p = Layout.convert_to_left_comb (f: vari) in
+ p
+```
+
+
+
+
+```reasonligo
+let of_michelson_or = (f: r) : vari => {
+ let p: vari = Layout.convert_from_left_comb(f);
+ p
+};
+
+let to_michelson_or = (f: vari) : r => {
+ let p = Layout.convert_to_left_comb(f: vari);
+ p
+}
+
+```
+
+
+
+### Converting right combed Michelson data structures
+
+In the case of right combed data structures, like:
+
+```michelson
+ (pair %other
+ (string %s)
+ (pair %other
+ (int %w)
+ (nat %v)
+ )
+ )
+```
+
+you can almost use the same code as that for the left combed data structures,
+but with `michelson_or_right_comb`, `michelson_pair_right_comb`,
+`Layout.convert_from_right_comb`, and `Layout.convert_to_left_comb`
+respectively.
+
+### Manual data structure conversion
+If you want to get your hands dirty, it's also possible to do manual data
+structure conversion.
+
+The following code can be used as inspiration:
+
+
+
+```pascaligo group=helper_functions
+type z_to_v is
+| Z
+| Y
+| X
+| W
+| V
+
+type w_or_v is michelson_or(unit, "w", unit, "v")
+type x_or is michelson_or(unit, "x", w_or_v, "other")
+type y_or is michelson_or(unit, "y", x_or, "other")
+type z_or is michelson_or(unit, "z", y_or, "other")
+
+type test is record [
+ z: string;
+ y: int;
+ x: string;
+ w: bool;
+ v: int;
+]
+
+function make_concrete_sum (const r: z_to_v) : z_or is block {
+ const z: z_or = (M_left (unit) : z_or);
+
+ const y_1: y_or = (M_left (unit): y_or);
+ const y: z_or = (M_right (y_1) : z_or);
+
+ const x_2: x_or = (M_left (unit): x_or);
+ const x_1: y_or = (M_right (x_2): y_or);
+ const x: z_or = (M_right (x_1) : z_or);
+
+ const w_3: w_or_v = (M_left (unit): w_or_v);
+ const w_2: x_or = (M_right (w_3): x_or);
+ const w_1: y_or = (M_right (w_2): y_or);
+ const w: z_or = (M_right (w_1) : z_or);
+
+ const v_3: w_or_v = (M_right (unit): w_or_v);
+ const v_2: x_or = (M_right (v_3): x_or);
+ const v_1: y_or = (M_right (v_2): y_or);
+ const v: z_or = (M_right (v_1) : z_or);
+}
+ with (case r of
+ | Z -> z
+ | Y -> y
+ | X -> x
+ | W -> w
+ | V -> v
+ end)
+
+
+function make_concrete_record (const r: test) : (string * int * string * bool * int) is
+ (r.z, r.y, r.x, r.w, r.v)
+
+function make_abstract_sum (const z_or: z_or) : z_to_v is
+ (case z_or of
+ | M_left (n) -> Z
+ | M_right (y_or) ->
+ (case y_or of
+ | M_left (n) -> Y
+ | M_right (x_or) ->
+ (case x_or of
+ | M_left (n) -> X
+ | M_right (w_or) ->
+ (case (w_or) of
+ | M_left (n) -> W
+ | M_right (n) -> V
+ end)
+ end)
+ end)
+ end)
+
+function make_abstract_record (const z: string; const y: int; const x: string; const w: bool; const v: int) : test is
+ record [ z = z; y = y; x = x; w = w; v = v ]
+
+```
+
+
+
+
+
+
+```cameligo group=helper_functions
+type z_to_v =
+| Z
+| Y
+| X
+| W
+| V
+
+type w_or_v = (unit, "w", unit, "v") michelson_or
+type x_or = (unit, "x", w_or_v, "other") michelson_or
+type y_or = (unit, "y", x_or, "other") michelson_or
+type z_or = (unit, "z", y_or, "other") michelson_or
+
+type test = {
+ z: string;
+ y: int;
+ x: string;
+ w: bool;
+ v: int;
+}
+
+let make_concrete_sum (r: z_to_v) : z_or =
+ match r with
+ | Z -> (M_left (unit) : z_or)
+ | Y -> (M_right (M_left (unit): y_or) : z_or )
+ | X -> (M_right (M_right (M_left (unit): x_or): y_or) : z_or )
+ | W -> (M_right (M_right (M_right (M_left (unit): w_or_v): x_or): y_or) : z_or )
+ | V -> (M_right (M_right (M_right (M_right (unit): w_or_v): x_or): y_or) : z_or )
+
+let make_concrete_record (r: test) : (string * int * string * bool * int) =
+ (r.z, r.y, r.x, r.w, r.v)
+
+let make_abstract_sum (z_or: z_or) : z_to_v =
+ match z_or with
+ | M_left n -> Z
+ | M_right y_or ->
+ (match y_or with
+ | M_left n -> Y
+ | M_right x_or -> (
+ match x_or with
+ | M_left n -> X
+ | M_right w_or -> (
+ match w_or with
+ | M_left n -> W
+ | M_right n -> V)))
+
+
+let make_abstract_record (z: string) (y: int) (x: string) (w: bool) (v: int) : test =
+ { z = z; y = y; x = x; w = w; v = v }
+
+```
+
+
+
+
+
+```reasonligo group=helper_functions
+type z_to_v =
+| Z
+| Y
+| X
+| W
+| V
+
+type w_or_v = michelson_or(unit, "w", unit, "v")
+type x_or = michelson_or(unit, "x", w_or_v, "other")
+type y_or = michelson_or(unit, "y", x_or, "other")
+type z_or = michelson_or(unit, "z", y_or, "other")
+
+type test = {
+ z: string,
+ y: int,
+ x: string,
+ w: bool,
+ v: int
+}
+
+let make_concrete_sum = (r: z_to_v) : z_or =>
+ switch(r){
+ | Z => (M_left (unit) : z_or)
+ | Y => (M_right (M_left (unit): y_or) : z_or )
+ | X => (M_right (M_right (M_left (unit): x_or): y_or) : z_or )
+ | W => (M_right (M_right (M_right (M_left (unit): w_or_v): x_or): y_or) : z_or )
+ | V => (M_right (M_right (M_right (M_right (unit): w_or_v): x_or): y_or) : z_or )
+ }
+
+let make_concrete_record = (r: test) : (string, int, string, bool, int) =>
+ (r.z, r.y, r.x, r.w, r.v)
+
+let make_abstract_sum = (z_or: z_or) : z_to_v =>
+ switch (z_or) {
+ | M_left n => Z
+ | M_right y_or => (
+ switch (y_or) {
+ | M_left n => Y
+ | M_right x_or => (
+ switch (x_or) {
+ | M_left n => X
+ | M_right w_or => (
+ switch (w_or) {
+ | M_left n => W
+ | M_right n => V
+ })
+ })
+ })
+ }
+
+
+let make_abstract_record = (z: string, y: int, x: string, w: bool, v: int) : test =>
+ { z : z, y, x, w, v }
+
+```
+
+
+
+## Amendment
+With the upcoming 007 amendment to Tezos this will change though, and also
+`pair`'s can be ordered differently.
\ No newline at end of file
diff --git a/gitlab-pages/docs/intro/installation.md b/gitlab-pages/docs/intro/installation.md
index 87abfdfe5..cfe77e84a 100644
--- a/gitlab-pages/docs/intro/installation.md
+++ b/gitlab-pages/docs/intro/installation.md
@@ -40,20 +40,31 @@ curl https://gitlab.com/ligolang/ligo/raw/master/scripts/installer.sh | bash -s
ligo --help
```
+## Static Linux binary
+
+The `ligo` executable is statically linked. It should run on most modern Linux distributions.
+
+To use it, get it [here](/bin/linux/ligo), make it executable, you're done!
+
+```zsh
+wget https://ligolang.org/bin/linux/ligo
+chmod +x ./ligo
+```
+
+Optionally, you can put it somewhere in your `PATH` for easy access:
+
+```zsh
+sudo cp ./ligo /usr/local/bin
+```
## Debian Linux package installation
-We have produced .deb packages for a few Debian Linux versions. They will install a global `ligo` executable.
-First download one of the packages below, and then install using:
+A `.deb` package containing the static `ligo` executable is also available.
+First download [the package](/deb/ligo.deb), and then install using:
+```zsh
+sudo apt install ./ligo.deb
```
-sudo apt install ./.deb
-```
-
-- [Ubuntu 18.04](/deb/ligo_ubuntu-18.04.deb)
-- [Ubuntu 19.10](/deb/ligo_ubuntu-19.10.deb)
-- [Debian 9](/deb/ligo_debian-9.deb)
-- [Debian 10](/deb/ligo_debian-10.deb)
## Release schedule
diff --git a/gitlab-pages/website/sidebars.json b/gitlab-pages/website/sidebars.json
index 2d32e898b..7aef10a0e 100644
--- a/gitlab-pages/website/sidebars.json
+++ b/gitlab-pages/website/sidebars.json
@@ -19,8 +19,9 @@
"advanced/entrypoints-contracts",
"advanced/include",
"advanced/first-contract",
- "advanced/michelson-and-ligo",
- "advanced/inline"
+ "advanced/michelson-and-ligo",
+ "advanced/inline",
+ "advanced/interop"
],
"Reference": [
"api/cli-commands",
diff --git a/nix/README.md b/nix/README.md
new file mode 100644
index 000000000..e0c44dcb6
--- /dev/null
+++ b/nix/README.md
@@ -0,0 +1,30 @@
+# Nix expressions for building LIGO
+
+Nix is a declarative package manager. Get it here: https://nixos.org/nix
+
+These expressions are used on CI to reproducibly build the LIGO compiler, as well as WebIDE and https://ligolang.org .
+
+If you wish to build it yourself, do `nix build -f. $thing`, where `$thing` is
+
+- `ligo`: executables, libraries, documentation, coverage reports
+- `ligo-bin`: a dynamically linked binary (Linux, Mac)
+- `ligo-static`: a statically linked binary (Linux only)
+- `ligo-doc`: documentation generated by odoc
+- `ligo-editor`: WebIDE, it can be started with `result/bin/ligo-editor`
+- `ligo-website`: the website, website root is `result`
+- `ligo-docker`: a docker image with LIGO binaries
+- `ligo-editor-docker`: a docker image with webide
+- `ligo-deb`: debian package with static binaries
+
+The output of `nix build` can be found in `result` directory.
+
+## Quick maintenance guide
+
+- `opam-repository` and `tezos-opam-repository` are pinned. To update them when required, run `niv update` (you can get niv with `nix shell 'nixpkgs#niv'`)
+- `ocaml` version is pinned in `ocaml-overlay.nix`. If you want to update it, go there and change the version.
+- If something fails, `nix repl pkgs.nix` can be very useful to investigate it.
+
+## Known caveats
+
+- This is not a [nix flake](https://gist.github.com/edolstra/40da6e3a4d4ee8fd019395365e0772e7). This will never be a flake if we want to keep this low-maintenance, because of the way `opam` sources are defined. Sometimes, the checksum is omitted there, so we have to use `fetchTarball` without the checksum, which won't work in restricted mode (which is required for flakes). The only solution would be to generate nix expressions for opam-repository separately, but it means a manual step in the process (and it's also impossible to make this work as a flake).
+- For the same reason as above, evaluation can take a while because we need to download all the sources every `tarball-ttl` seconds. This can be mitigated by setting `tarball-ttl` to a high value.
diff --git a/nix/docker.nix b/nix/docker.nix
index acda1c971..5820717b3 100644
--- a/nix/docker.nix
+++ b/nix/docker.nix
@@ -1,10 +1,7 @@
{ dockerTools, writeShellScriptBin, runCommand, mcpp, bash, coreutils, ligo, name ? "ligo" }:
-let
- tmp = runCommand "tmp" {} "mkdir -p $out/tmp";
-in
dockerTools.buildLayeredImage {
inherit name;
tag = "latest";
- contents = [ ligo tmp bash ];
+ contents = [ ligo bash ];
config.Entrypoint = name;
}
diff --git a/nix/ligo-editor.nix b/nix/ligo-editor.nix
index 9a1a88920..809881904 100644
--- a/nix/ligo-editor.nix
+++ b/nix/ligo-editor.nix
@@ -2,10 +2,12 @@
, writeShellScriptBin, makeFontsConf, buildEnv, rsync, sources
, chromium ? null }:
let
+ # Use a common yarn.lock for everything
yarnLock = ../tools/webide/yarn.lock;
installPhase = "mkdir $out; cp -Lr node_modules $out/node_modules";
+ # node_modules of the server
server = mkYarnPackage {
name = "webide-server";
src = ../tools/webide/packages/server;
@@ -19,6 +21,8 @@ let
distPhase = "true";
inherit yarnLock installPhase;
};
+
+ # node_modules of the client
client = mkYarnPackage rec {
name = "webide-client";
src = ../tools/webide/packages/client;
@@ -42,6 +46,7 @@ let
*/
};
+ # Perform the e2e tests; output is empty on purpose
e2e = mkYarnPackage rec {
name = "webide-e2e";
src = ../tools/webide/packages/e2e;
@@ -61,6 +66,7 @@ let
inherit yarnLock;
};
+ # Run the WebIDE server with all the needed env variables
ligo-editor = writeShellScriptBin "ligo-editor" ''
set -e
LIGO_CMD=${ligo-bin}/bin/ligo \
diff --git a/nix/ligo-website.nix b/nix/ligo-website.nix
index 5e95e7b8c..336434e33 100644
--- a/nix/ligo-website.nix
+++ b/nix/ligo-website.nix
@@ -9,7 +9,7 @@ buildNpmPackage {
'';
installPhase = ''
cp -Lr build $out
- cp -r ${ligo-deb}/* $out/deb
+ cp -r ${ligo-deb}/*.deb $out/deb/ligo.deb
mkdir -p $out/bin/linux
cp -r ${ligo-static}/bin/ligo $out/bin/linux/ligo
cp -r ${ligo-doc}/share/doc $out/odoc
diff --git a/nix/nodejs-overlay.nix b/nix/nodejs-overlay.nix
index 7a5badf30..ab625530e 100644
--- a/nix/nodejs-overlay.nix
+++ b/nix/nodejs-overlay.nix
@@ -1,4 +1,5 @@
self: super: {
+ # Note: this overlay doesn't apply to nix-npm-buildpackage
nodejs = super.nodejs-12_x;
nodePackages = super.nodePackages_12_x;
nodejs-slim = super.nodejs-slim-12_x;
diff --git a/nix/ocaml-overlay.nix b/nix/ocaml-overlay.nix
index d811becad..b44cfdcef 100644
--- a/nix/ocaml-overlay.nix
+++ b/nix/ocaml-overlay.nix
@@ -1,3 +1,5 @@
+# An overlay that adds ligo to ocamlPackages
+
{ sources ? import ./sources.nix
, CI_COMMIT_SHA ? builtins.getEnv "CI_COMMIT_SHA"
, COMMIT_DATE ? builtins.getEnv "COMMIT_DATE" }:
@@ -6,6 +8,7 @@ let
opam-nix = import sources.opam-nix (import sources.nixpkgs { });
inherit (import sources."gitignore.nix" { inherit (self) lib; })
gitignoreSource;
+ # Remove list of directories or files from source (to stop unneeded rebuilds)
filterOut = xs:
self.lib.cleanSourceWith {
filter = p: type: !(builtins.elem (builtins.baseNameOf p) xs);
@@ -14,6 +17,7 @@ let
in {
ocamlPackages = self.ocaml-ng.ocamlPackages_4_07.overrideScope'
(builtins.foldl' self.lib.composeExtensions (_: _: { }) [
+ # Both opam-repository and tezos-opam-repository are updated manually with `niv update`
(opam-nix.traverseOPAMRepo' sources.opam-repository)
(opam-nix.traverseOPAMRepo sources.tezos-opam-repository)
(opam-nix.callOPAMPackage (filterOut [
@@ -26,19 +30,23 @@ in {
"gitlab-pages"
]))
(oself: osuper: {
+ # Strange naming in nixpkgs
ocamlfind = oself.findlib;
lablgtk = null;
lwt = oself.lwt4;
+ # Native dependencies
conf-gmp = self.gmp;
conf-libev = self.libev;
conf-hidapi = self.hidapi;
conf-pkg-config = self.pkg-config;
+ # Strange problems
bigstring = osuper.bigstring.overrideAttrs (_: { doCheck = false; });
xmldiff = osuper.xmldiff.overrideAttrs (_: { src = sources.xmldiff; });
getopt = osuper.getopt.overrideAttrs (_: { configurePhase = "true"; });
+ # Force certain versions
ipaddr = osuper.ipaddr.versions."4.0.0";
conduit = osuper.conduit.versions."2.1.0";
conduit-lwt-unix = osuper.conduit-lwt-unix.versions."2.0.2";
@@ -64,6 +72,7 @@ in {
propagatedBuildInputs = buildInputs;
});
+ # A combination of executables, libraries, documentation and test coverage
ligo = self.buildEnv {
name = "ligo";
paths = with oself; [
@@ -74,6 +83,7 @@ in {
];
};
+ # LIGO executable and public libraries
ligo-out = osuper.ligo.overrideAttrs (oa: {
name = "ligo-out";
inherit CI_COMMIT_SHA COMMIT_DATE;
@@ -82,6 +92,8 @@ in {
nativeBuildInputs = oa.nativeBuildInputs
++ [ self.buildPackages.rakudo ];
});
+
+ # LIGO test suite; output empty on purpose
ligo-tests = osuper.ligo.overrideAttrs (oa: {
name = "ligo-tests";
src = filterOut [
@@ -98,6 +110,7 @@ in {
++ [ self.buildPackages.rakudo ];
installPhase = "mkdir $out";
});
+ # LIGO odoc documentation
ligo-doc = osuper.ligo.overrideAttrs (oa: {
name = "ligo-doc";
buildInputs = oa.buildInputs
@@ -109,6 +122,7 @@ in {
installPhase =
"mkdir $out; cp -r _build/default/_doc/_html/ $out/doc";
});
+ # LIGO test coverage reports
ligo-coverage = oself.ligo-tests.overrideAttrs (oa: {
name = "ligo-coverage";
nativeBuildInputs = oa.nativeBuildInputs
diff --git a/nix/packageDeb.nix b/nix/packageDeb.nix
index bb5f0a57b..d7366e797 100644
--- a/nix/packageDeb.nix
+++ b/nix/packageDeb.nix
@@ -1,3 +1,4 @@
+# Create a debian package from static executable
{ stdenv, lib, writeTextFile, ligo-static, dpkg }:
let
project = "ligo";
diff --git a/nix/pkgs.nix b/nix/pkgs.nix
index d832dde56..23c2abe5a 100644
--- a/nix/pkgs.nix
+++ b/nix/pkgs.nix
@@ -1,20 +1,25 @@
+# nixpkgs extended with all the overlays for LIGO
{ sources ? import ./sources.nix }:
let
ocaml-overlay = import ./ocaml-overlay.nix { inherit sources; };
static-overlay = import ./static-overlay.nix pkgs;
mac-overlay = import ./mac-overlay.nix;
nodejs-overlay = import ./nodejs-overlay.nix;
+ nix-npm-buildpackage = pkgs.callPackage sources.nix-npm-buildpackage { };
+
pkgs = import sources.nixpkgs {
overlays = [ ocaml-overlay nodejs-overlay ]
+ # This is done here to prevent the need for bootstrap nixpkgs
++ (if builtins.currentSystem == "x86_64-darwin"
then [ mac-overlay ]
else [ ]);
};
+
+ # Takes $pkg/ligo and creates a new package with $pkg/bin/ligo
separateBinary = pkg:
pkgs.runCommandNoCC "${pkg.name}-bin" { }
"mkdir -p $out/bin; cp -Lr ${pkg}/ligo $out/bin";
- nix-npm-buildpackage = pkgs.callPackage sources.nix-npm-buildpackage { };
in pkgs.extend (self: super: {
inherit (self.ocamlPackages) ligo ligo-out ligo-tests ligo-doc ligo-coverage;
ligo-bin = separateBinary self.ligo-out.bin;
diff --git a/nix/sources.json b/nix/sources.json
index ec94d353f..d0d6aaf54 100644
--- a/nix/sources.json
+++ b/nix/sources.json
@@ -17,10 +17,10 @@
"homepage": "",
"owner": "serokell",
"repo": "nix-npm-buildpackage",
- "rev": "0450c7d88dc3d0a26461b05cfa36f45d551f4d63",
- "sha256": "1w0k4jxw141win67rk66nvg323j5i3s4m1w3icf1g1f0p2zyf531",
+ "rev": "f2107f638f7df7450a5b7b77b96aaf9752b838d9",
+ "sha256": "02w8jxmmhxsq7fgzml75b8w8i9mdqxnaajia99jajg6rdiam8zfp",
"type": "tarball",
- "url": "https://github.com/serokell/nix-npm-buildpackage/archive/0450c7d88dc3d0a26461b05cfa36f45d551f4d63.tar.gz",
+ "url": "https://github.com/serokell/nix-npm-buildpackage/archive/f2107f638f7df7450a5b7b77b96aaf9752b838d9.tar.gz",
"url_template": "https://github.com///archive/.tar.gz"
},
"nixpkgs": {
diff --git a/nix/static-overlay.nix b/nix/static-overlay.nix
index 5add8718f..e16aa8646 100644
--- a/nix/static-overlay.nix
+++ b/nix/static-overlay.nix
@@ -1,3 +1,6 @@
+# An overlay that adds flags needed to build LIGO statically;
+# Supposed to be applied to pkgsMusl
+# Takes `native` as a package set that doesn't cause mass rebuilds (so that we don't have to build perl with musl)
native: self: super:
let dds = x: x.overrideAttrs (o: { dontDisableStatic = true; });
in {
diff --git a/nix/static.patch b/nix/static.patch
index f4ce39a39..efe5c43b8 100644
--- a/nix/static.patch
+++ b/nix/static.patch
@@ -1,5 +1,6 @@
diff --git a/src/bin/dune b/src/bin/dune
index 162963b4b..29dfa5191 100644
+With this patch, a static executable is produced
--- a/src/bin/dune
+++ b/src/bin/dune
@@ -34,5 +34,6 @@
diff --git a/src/bin/expect_tests/contract_tests.ml b/src/bin/expect_tests/contract_tests.ml
index d069c62aa..6de7be144 100644
--- a/src/bin/expect_tests/contract_tests.ml
+++ b/src/bin/expect_tests/contract_tests.ml
@@ -1549,7 +1549,7 @@ let%expect_test _ =
let%expect_test _ =
run_ligo_bad [ "compile-contract" ; bad_contract "bad_contract.mligo" ; "main" ] ;
[%expect {|
- ligo: in file "", line 0, characters 0-0. badly typed contract: unexpected entrypoint type {"location":"in file \"\", line 0, characters 0-0","entrypoint":"main","entrypoint_type":"( nat * int ) -> int"}
+ ligo: in file "bad_contract.mligo", line 4, characters 0-3. badly typed contract: unexpected entrypoint type {"location":"in file \"bad_contract.mligo\", line 4, characters 0-3","entrypoint":"main","entrypoint_type":"( nat * int ) -> int"}
If you're not sure how to fix this error, you can
@@ -1562,7 +1562,7 @@ let%expect_test _ =
run_ligo_bad [ "compile-contract" ; bad_contract "bad_contract2.mligo" ; "main" ] ;
[%expect {|
- ligo: in file "", line 0, characters 0-0. bad return type: expected (type_operator: list(operation)), got string {"location":"in file \"\", line 0, characters 0-0","entrypoint":"main"}
+ ligo: in file "bad_contract2.mligo", line 5, characters 0-3. bad return type: expected (type_operator: list(operation)), got string {"location":"in file \"bad_contract2.mligo\", line 5, characters 0-3","entrypoint":"main"}
If you're not sure how to fix this error, you can
@@ -1575,7 +1575,7 @@ let%expect_test _ =
run_ligo_bad [ "compile-contract" ; bad_contract "bad_contract3.mligo" ; "main" ] ;
[%expect {|
- ligo: in file "", line 0, characters 0-0. badly typed contract: expected {int} and {string} to be the same in the entrypoint type {"location":"in file \"\", line 0, characters 0-0","entrypoint":"main","entrypoint_type":"( nat * int ) -> ( (type_operator: list(operation)) * string )"}
+ ligo: in file "bad_contract3.mligo", line 5, characters 0-3. badly typed contract: expected {int} and {string} to be the same in the entrypoint type {"location":"in file \"bad_contract3.mligo\", line 5, characters 0-3","entrypoint":"main","entrypoint_type":"( nat * int ) -> ( (type_operator: list(operation)) * string )"}
If you're not sure how to fix this error, you can
@@ -1692,4 +1692,56 @@ let%expect_test _ =
* Visit our documentation: https://ligolang.org/docs/intro/introduction
* Ask a question on our Discord: https://discord.gg/9rhYaEt
* Open a gitlab issue: https://gitlab.com/ligolang/ligo/issues/new
- * Check the changelog by running 'ligo changelog' |}]
+ * Check the changelog by running 'ligo changelog' |}];
+
+ run_ligo_good ["print-ast"; contract "letin.mligo"];
+ [%expect {|
+ type storage = (int ,
+ int)
+ const main : (int ,
+ storage) -> ((TO_list(operation)) ,
+ storage) = lambda (n:Some((int ,
+ storage))) : None return let x = let x = 7 : int in (ADD(x ,
+ n.0) ,
+ ADD(n.1.0 ,
+ n.1.1)) : (int ,
+ int) in (list[] : (TO_list(operation)) ,
+ x)
+ const f0 = lambda (a:Some(string)) : None return true(unit)
+ const f1 = lambda (a:Some(string)) : None return true(unit)
+ const f2 = lambda (a:Some(string)) : None return true(unit)
+ const letin_nesting = lambda (_:Some(unit)) : None return let s = "test" in let p0 = (f0)@(s) in { ASSERTION(p0);
+ let p1 = (f1)@(s) in { ASSERTION(p1);
+ let p2 = (f2)@(s) in { ASSERTION(p2);
+ s}}}
+ const letin_nesting2 = lambda (x:Some(int)) : None return let y = 2 in let z = 3 in ADD(ADD(x ,
+ y) ,
+ z)
+ |}];
+
+ run_ligo_good ["print-ast"; contract "letin.religo"];
+ [%expect {|
+ type storage = (int ,
+ int)
+ const main : (int ,
+ storage) -> ((TO_list(operation)) ,
+ storage) = lambda (n:Some((int ,
+ storage))) : None return let x = let x = 7 : int in (ADD(x ,
+ n.0) ,
+ ADD(n.1.0 ,
+ n.1.1)) : (int ,
+ int) in (list[] : (TO_list(operation)) ,
+ x)
+ const f0 = lambda (a:Some(string)) : None return true(unit)
+ const f1 = lambda (a:Some(string)) : None return true(unit)
+ const f2 = lambda (a:Some(string)) : None return true(unit)
+ const letin_nesting = lambda (_:Some(unit)) : None return let s = "test" in let p0 = (f0)@(s) in { ASSERTION(p0);
+ let p1 = (f1)@(s) in { ASSERTION(p1);
+ let p2 = (f2)@(s) in { ASSERTION(p2);
+ s}}}
+ const letin_nesting2 = lambda (x:Some(int)) : None return let y = 2 in let z = 3 in ADD(ADD(x ,
+ y) ,
+ z)
+ |}];
+
+
diff --git a/src/bin/expect_tests/typer_error_tests.ml b/src/bin/expect_tests/typer_error_tests.ml
index 1718b83a0..c8690a3e5 100644
--- a/src/bin/expect_tests/typer_error_tests.ml
+++ b/src/bin/expect_tests/typer_error_tests.ml
@@ -3,7 +3,7 @@ open Cli_expect
let%expect_test _ =
run_ligo_bad [ "compile-contract" ; "../../test/contracts/negative/error_function_annotation_1.mligo"; "main"];
[%expect {|
- ligo: in file "", line 0, characters 0-0. different type constructors: Expected these two constant type constructors to be the same, but they're different {"a":"unit","b":"int"}
+ ligo: in file "error_function_annotation_1.mligo", line 1, characters 0-3. different type constructors: Expected these two constant type constructors to be the same, but they're different {"a":"unit","b":"int"}
If you're not sure how to fix this error, you can
@@ -29,7 +29,7 @@ let%expect_test _ =
run_ligo_bad [ "compile-contract" ; "../../test/contracts/negative/error_function_annotation_3.mligo"; "f"];
[%expect {|
- ligo: in file "", line 0, characters 0-0. different kinds: {"a":"( (type_operator: list(operation)) * sum[Add -> int , Sub -> int] )","b":"sum[Add -> int , Sub -> int]"}
+ ligo: in file "error_function_annotation_3.mligo", line 6, characters 0-3. different kinds: {"a":"( (type_operator: list(operation)) * sum[Add -> int , Sub -> int] )","b":"sum[Add -> int , Sub -> int]"}
If you're not sure how to fix this error, you can
diff --git a/src/passes/1-parser/cameligo/AST.ml b/src/passes/1-parser/cameligo/AST.ml
index 35d60056a..9be76e138 100644
--- a/src/passes/1-parser/cameligo/AST.ml
+++ b/src/passes/1-parser/cameligo/AST.ml
@@ -187,21 +187,22 @@ and field_decl = {
and type_tuple = (type_expr, comma) nsepseq par reg
and pattern =
- PConstr of constr_pattern
-| PUnit of the_unit reg
-| PFalse of kwd_false
-| PTrue of kwd_true
-| PVar of variable
-| PInt of (Lexer.lexeme * Z.t) reg
-| PNat of (Lexer.lexeme * Z.t) reg
-| PBytes of (Lexer.lexeme * Hex.t) reg
-| PString of string reg
-| PWild of wild
-| PList of list_pattern
-| PTuple of (pattern, comma) nsepseq reg
-| PPar of pattern par reg
-| PRecord of field_pattern reg ne_injection reg
-| PTyped of typed_pattern reg
+ PConstr of constr_pattern
+| PUnit of the_unit reg
+| PFalse of kwd_false
+| PTrue of kwd_true
+| PVar of variable
+| PInt of (Lexer.lexeme * Z.t) reg
+| PNat of (Lexer.lexeme * Z.t) reg
+| PBytes of (Lexer.lexeme * Hex.t) reg
+| PString of string reg
+| PVerbatim of string reg
+| PWild of wild
+| PList of list_pattern
+| PTuple of (pattern, comma) nsepseq reg
+| PPar of pattern par reg
+| PRecord of field_pattern reg ne_injection reg
+| PTyped of typed_pattern reg
and constr_pattern =
PNone of c_None
@@ -269,8 +270,9 @@ and list_expr =
(*| Append of (expr * append * expr) reg*)
and string_expr =
- Cat of cat bin_op reg
-| String of string reg
+ Cat of cat bin_op reg
+| String of string reg
+| Verbatim of string reg
and constr_expr =
ENone of c_None
@@ -429,8 +431,8 @@ let pattern_to_region = function
| PTrue region | PFalse region
| PTuple {region;_} | PVar {region;_}
| PInt {region;_}
-| PString {region;_} | PWild region
-| PPar {region;_}
+| PString {region;_} | PVerbatim {region;_}
+| PWild region | PPar {region;_}
| PRecord {region; _} | PTyped {region; _}
| PNat {region; _} | PBytes {region; _}
-> region
@@ -456,7 +458,7 @@ let arith_expr_to_region = function
| Nat {region; _} -> region
let string_expr_to_region = function
- String {region;_} | Cat {region;_} -> region
+ Verbatim {region;_} | String {region;_} | Cat {region;_} -> region
let list_expr_to_region = function
ECons {region; _} | EListComp {region; _}
diff --git a/src/passes/1-parser/cameligo/LexToken.mli b/src/passes/1-parser/cameligo/LexToken.mli
index 4af326823..fabddb2fa 100644
--- a/src/passes/1-parser/cameligo/LexToken.mli
+++ b/src/passes/1-parser/cameligo/LexToken.mli
@@ -78,14 +78,15 @@ type t =
(* Identifiers, labels, numbers and strings *)
-| Ident of string Region.reg
-| Constr of string Region.reg
-| Int of (string * Z.t) Region.reg
-| Nat of (string * Z.t) Region.reg
-| Mutez of (string * Z.t) Region.reg
-| String of string Region.reg
-| Bytes of (string * Hex.t) Region.reg
-| Attr of string Region.reg
+| Ident of string Region.reg
+| Constr of string Region.reg
+| Int of (string * Z.t) Region.reg
+| Nat of (string * Z.t) Region.reg
+| Mutez of (string * Z.t) Region.reg
+| String of string Region.reg
+| Verbatim of string Region.reg
+| Bytes of (string * Hex.t) Region.reg
+| Attr of string Region.reg
(* Keywords *)
@@ -142,17 +143,18 @@ type sym_err = Invalid_symbol
type attr_err = Invalid_attribute
type kwd_err = Invalid_keyword
-val mk_int : lexeme -> Region.t -> (token, int_err) result
-val mk_nat : lexeme -> Region.t -> (token, nat_err) result
-val mk_mutez : lexeme -> Region.t -> (token, int_err) result
-val mk_ident : lexeme -> Region.t -> (token, ident_err) result
-val mk_sym : lexeme -> Region.t -> (token, sym_err) result
-val mk_kwd : lexeme -> Region.t -> (token, kwd_err) result
-val mk_string : lexeme -> Region.t -> token
-val mk_bytes : lexeme -> Region.t -> token
-val mk_constr : lexeme -> Region.t -> token
-val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result
-val eof : Region.t -> token
+val mk_int : lexeme -> Region.t -> (token, int_err) result
+val mk_nat : lexeme -> Region.t -> (token, nat_err) result
+val mk_mutez : lexeme -> Region.t -> (token, int_err) result
+val mk_ident : lexeme -> Region.t -> (token, ident_err) result
+val mk_sym : lexeme -> Region.t -> (token, sym_err) result
+val mk_kwd : lexeme -> Region.t -> (token, kwd_err) result
+val mk_string : lexeme -> Region.t -> token
+val mk_verbatim : lexeme -> Region.t -> token
+val mk_bytes : lexeme -> Region.t -> token
+val mk_constr : lexeme -> Region.t -> token
+val mk_attr : string -> lexeme -> Region.t -> (token, attr_err) result
+val eof : Region.t -> token
(* Predicates *)
diff --git a/src/passes/1-parser/cameligo/LexToken.mll b/src/passes/1-parser/cameligo/LexToken.mll
index 823acb754..7d54d440b 100644
--- a/src/passes/1-parser/cameligo/LexToken.mll
+++ b/src/passes/1-parser/cameligo/LexToken.mll
@@ -62,14 +62,15 @@ type t =
(* Identifiers, labels, numbers and strings *)
-| Ident of string Region.reg
-| Constr of string Region.reg
-| Int of (string * Z.t) Region.reg
-| Nat of (string * Z.t) Region.reg
-| Mutez of (string * Z.t) Region.reg
-| String of string Region.reg
-| Bytes of (string * Hex.t) Region.reg
-| Attr of string Region.reg
+| Ident of string Region.reg
+| Constr of string Region.reg
+| Int of (string * Z.t) Region.reg
+| Nat of (string * Z.t) Region.reg
+| Mutez of (string * Z.t) Region.reg
+| String of string Region.reg
+| Verbatim of string Region.reg
+| Bytes of (string * Hex.t) Region.reg
+| Attr of string Region.reg
(* Keywords *)
@@ -112,6 +113,8 @@ let proj_token = function
String Region.{region; value} ->
region, sprintf "String %s" value
+| Verbatim Region.{region; value} ->
+ region, sprintf "Verbatim {|%s|}" value
| Bytes Region.{region; value = s,b} ->
region,
sprintf "Bytes (\"%s\", \"0x%s\")" s (Hex.show b)
@@ -193,6 +196,7 @@ let to_lexeme = function
(* Literals *)
String s -> String.escaped s.Region.value
+| Verbatim v -> String.escaped v.Region.value
| Bytes b -> fst b.Region.value
| Int i
| Nat i
@@ -405,6 +409,9 @@ and scan_constr region lexicon = parse
let mk_string lexeme region =
String Region.{region; value=lexeme}
+let mk_verbatim lexeme region =
+ Verbatim Region.{region; value=lexeme}
+
let mk_bytes lexeme region =
let norm = Str.(global_replace (regexp "_") "" lexeme) in
let value = lexeme, `Hex norm
diff --git a/src/passes/1-parser/cameligo/ParToken.mly b/src/passes/1-parser/cameligo/ParToken.mly
index 0d32e61de..0214d56a3 100644
--- a/src/passes/1-parser/cameligo/ParToken.mly
+++ b/src/passes/1-parser/cameligo/ParToken.mly
@@ -5,14 +5,15 @@
(* Literals *)
-%token String ""
-%token <(LexToken.lexeme * Hex.t) Region.reg> Bytes ""
-%token <(string * Z.t) Region.reg> Int ""
-%token <(string * Z.t) Region.reg> Nat ""
-%token <(string * Z.t) Region.reg> Mutez ""
-%token Ident ""
-%token Constr ""
-%token Attr ""
+%token String ""
+%token Verbatim ""
+%token <(LexToken.lexeme * Hex.t) Region.reg> Bytes ""
+%token <(string * Z.t) Region.reg> Int ""
+%token <(string * Z.t) Region.reg> Nat ""
+%token <(string * Z.t) Region.reg> Mutez ""
+%token Ident ""
+%token Constr ""
+%token Attr ""
(* Symbols *)
diff --git a/src/passes/1-parser/cameligo/Parser.mly b/src/passes/1-parser/cameligo/Parser.mly
index 6578342a9..4f309c5b6 100644
--- a/src/passes/1-parser/cameligo/Parser.mly
+++ b/src/passes/1-parser/cameligo/Parser.mly
@@ -147,8 +147,8 @@ cartesian:
in TProd {region; value} }
core_type:
- type_name { TVar $1 }
-| par(type_expr) { TPar $1 }
+ type_name { TVar $1 }
+| par(type_expr) { TPar $1 }
| "" { TString $1 }
| module_name "." type_name {
let module_name = $1.value in
@@ -287,6 +287,7 @@ core_pattern:
| "" { PNat $1 }
| "" { PBytes $1 }
| "" { PString $1 }
+| "" { PVerbatim $1 }
| unit { PUnit $1 }
| "false" { PFalse $1 }
| "true" { PTrue $1 }
@@ -573,6 +574,7 @@ core_expr:
| "" | module_field { EVar $1 }
| projection { EProj $1 }
| "" { EString (String $1) }
+| "" { EString (Verbatim $1) }
| unit { EUnit $1 }
| "false" { ELogic (BoolExpr (False $1)) }
| "true" { ELogic (BoolExpr (True $1)) }
@@ -656,8 +658,12 @@ field_assignment:
field_expr = $3}
in {region; value} }
+path :
+ "" { Name $1 }
+| projection { Path $1 }
+
sequence:
- "begin" sep_or_term_list(expr,";")? "end" {
+ "begin" series? "end" {
let region = cover $1 $3
and compound = BeginEnd ($1,$3) in
let elements, terminator =
@@ -668,6 +674,36 @@ sequence:
let value = {compound; elements; terminator}
in {region; value} }
-path :
- "" { Name $1 }
-| projection { Path $1 }
+series:
+ last_expr {
+ let expr, term = $1 in (expr, []), term
+ }
+| seq_expr ";" series {
+ let rest, term = $3 in
+ let seq = Utils.nsepseq_cons $1 $2 rest
+ in seq, term }
+
+last_expr:
+ seq_expr ";"?
+| fun_expr(seq_expr) ";"?
+| match_expr(seq_expr) ";"? {
+ $1,$2
+ }
+| "let" ioption("rec") let_binding seq(Attr) "in" series {
+ let seq, term = $6 in
+ let stop = nsepseq_to_region expr_to_region seq in
+ let region = cover $1 stop in
+ let compound = BeginEnd (Region.ghost, Region.ghost) in
+ let elements = Some seq in
+ let value = {compound; elements; terminator=term} in
+ let body = ESeq {region; value} in
+ let value = {kwd_let = $1;
+ kwd_rec = $2;
+ binding = $3;
+ attributes = $4;
+ kwd_in = $5;
+ body}
+ in ELetIn {region; value}, term }
+
+seq_expr:
+ disj_expr_level | if_then_else (seq_expr) { $1 }
diff --git a/src/passes/1-parser/cameligo/ParserLog.ml b/src/passes/1-parser/cameligo/ParserLog.ml
index 2a6535aa6..b51c0782d 100644
--- a/src/passes/1-parser/cameligo/ParserLog.ml
+++ b/src/passes/1-parser/cameligo/ParserLog.ml
@@ -97,7 +97,13 @@ let print_uident state {region; value} =
let print_string state {region; value} =
let line =
- sprintf "%s: String %s\n"
+ sprintf "%s: String %S\n"
+ (compact state region) value
+ in Buffer.add_string state#buffer line
+
+let print_verbatim state {region; value} =
+ let line =
+ sprintf "%s: Verbatim {|%s|}\n"
(compact state region) value
in Buffer.add_string state#buffer line
@@ -279,6 +285,7 @@ and print_pattern state = function
| PNat i -> print_nat state i
| PBytes b -> print_bytes state b
| PString s -> print_string state s
+| PVerbatim v -> print_verbatim state v
| PWild wild -> print_token state wild "_"
| PPar {value={lpar;inside=p;rpar}; _} ->
print_token state lpar "(";
@@ -458,6 +465,8 @@ and print_string_expr state = function
print_expr state arg2
| String s ->
print_string state s
+| Verbatim v ->
+ print_verbatim state v
and print_logic_expr state = function
BoolExpr e -> print_bool_expr state e
@@ -606,7 +615,15 @@ let pp_node state name =
let node = sprintf "%s%s\n" state#pad_path name
in Buffer.add_string state#buffer node
-let pp_string state = pp_ident state
+let pp_string state {value=name; region} =
+ let reg = compact state region in
+ let node = sprintf "%s%S (%s)\n" state#pad_path name reg
+ in Buffer.add_string state#buffer node
+
+let pp_verbatim state {value=name; region} =
+ let reg = compact state region in
+ let node = sprintf "%s{|%s|} (%s)\n" state#pad_path name reg
+ in Buffer.add_string state#buffer node
let pp_loc_node state name region =
pp_ident state {value=name; region}
@@ -692,6 +709,9 @@ and pp_pattern state = function
| PString s ->
pp_node state "PString";
pp_string (state#pad 1 0) s
+| PVerbatim v ->
+ pp_node state "PVerbatim";
+ pp_verbatim (state#pad 1 0) v
| PUnit {region; _} ->
pp_loc_node state "PUnit" region
| PFalse region ->
@@ -991,6 +1011,9 @@ and pp_string_expr state = function
| String s ->
pp_node state "String";
pp_string (state#pad 1 0) s
+| Verbatim v ->
+ pp_node state "Verbatim";
+ pp_string (state#pad 1 0) v
and pp_arith_expr state = function
Add {value; region} ->
diff --git a/src/passes/1-parser/cameligo/Pretty.ml b/src/passes/1-parser/cameligo/Pretty.ml
index 8c332b680..6da2c7bf9 100644
--- a/src/passes/1-parser/cameligo/Pretty.ml
+++ b/src/passes/1-parser/cameligo/Pretty.ml
@@ -33,7 +33,9 @@ and pp_attributes = function
and pp_ident {value; _} = string value
-and pp_string s = pp_ident s
+and pp_string s = string "\"" ^^ pp_ident s ^^ string "\""
+
+and pp_verbatim s = string "{|" ^^ pp_ident s ^^ string "|}"
and pp_let_binding (binding : let_binding) =
let {binders; lhs_type; let_rhs; _} = binding in
@@ -57,6 +59,7 @@ and pp_pattern = function
| PNat n -> pp_nat n
| PBytes b -> pp_bytes b
| PString s -> pp_string s
+| PVerbatim s -> pp_verbatim s
| PWild _ -> string "_"
| PList l -> pp_plist l
| PTuple t -> pp_ptuple t
@@ -226,6 +229,7 @@ and pp_mutez {value; _} =
and pp_string_expr = function
Cat e -> pp_bin_op "^" e
| String e -> pp_string e
+| Verbatim e -> pp_verbatim e
and pp_list_expr = function
ECons e -> pp_bin_op "::" e
diff --git a/src/passes/1-parser/cameligo/Scoping.ml b/src/passes/1-parser/cameligo/Scoping.ml
index 4b44a0189..651306022 100644
--- a/src/passes/1-parser/cameligo/Scoping.ml
+++ b/src/passes/1-parser/cameligo/Scoping.ml
@@ -77,7 +77,8 @@ let rec vars_of_pattern env = function
PConstr p -> vars_of_pconstr env p
| PUnit _ | PFalse _ | PTrue _
| PInt _ | PNat _ | PBytes _
-| PString _ | PWild _ -> env
+| PString _ | PVerbatim _
+| PWild _ -> env
| PVar var ->
if VarSet.mem var env then
raise (Error (Non_linear_pattern var))
diff --git a/src/passes/1-parser/cameligo/error.messages.checked-in b/src/passes/1-parser/cameligo/error.messages.checked-in
index 629edb9e2..c3ac95367 100644
--- a/src/passes/1-parser/cameligo/error.messages.checked-in
+++ b/src/passes/1-parser/cameligo/error.messages.checked-in
@@ -1,40 +1,971 @@
-interactive_expr: Begin True RBRACKET
+interactive_expr: Begin Fun WILD ARROW Bytes SEMI With
##
-## Ends in an error in state: 219.
+## Ends in an error in state: 485.
##
-## sequence -> Begin option(sep_or_term_list(expr,SEMI)) . End [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## sequence -> Begin option(series) . End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
-## Begin option(sep_or_term_list(expr,SEMI))
+## Begin option(series)
+##
+
+
+
+interactive_expr: Begin Fun WILD ARROW With
+##
+## Ends in an error in state: 467.
+##
+## fun_expr(seq_expr) -> Fun nseq(irrefutable) ARROW . seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## Fun nseq(irrefutable) ARROW
+##
+
+
+
+interactive_expr: Begin Fun With
+##
+## Ends in an error in state: 465.
+##
+## fun_expr(seq_expr) -> Fun . nseq(irrefutable) ARROW seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## Fun
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Fun WILD ARROW With
+##
+## Ends in an error in state: 454.
+##
+## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Fun nseq(irrefutable) ARROW
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Fun With
+##
+## Ends in an error in state: 452.
+##
+## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Fun
+##
+
+
+
+interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim COMMA Bytes With
+##
+## Ends in an error in state: 457.
+##
+## if_then_else(closed_if) -> If expr Then closed_if . Else closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## If expr Then closed_if
##
## WARNING: This example involves spurious reductions.
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 244, spurious reduction of production nsepseq(expr,SEMI) -> expr
-## In state 222, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI)
-## In state 218, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level
+## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA)
+## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level)
+## In state 455, spurious reduction of production base_expr(closed_if) -> tuple_expr
+## In state 355, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if)
+## In state 354, spurious reduction of production closed_if -> base_if_then_else__open(closed_if)
+##
+
+
+
+interactive_expr: Begin If Verbatim Then If Verbatim Then Verbatim Else With
+##
+## Ends in an error in state: 458.
+##
+## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## If expr Then closed_if Else
+##
+
+
+
+interactive_expr: Begin If Verbatim Then If Verbatim Then With
+##
+## Ends in an error in state: 451.
+##
+## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## If expr Then
+##
+
+
+
+interactive_expr: Begin If Verbatim Then If Verbatim With
+##
+## Ends in an error in state: 450.
+##
+## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## If expr
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+##
+
+
+
+interactive_expr: Begin If Verbatim Then If With
+##
+## Ends in an error in state: 449.
+##
+## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## If
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes Attr Type
+##
+## Ends in an error in state: 447.
+##
+## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec let_binding seq(Attr)
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes In With
+##
+## Ends in an error in state: 448.
+##
+## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec let_binding seq(Attr) In
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Let Rec WILD EQ Bytes With
+##
+## Ends in an error in state: 446.
+##
+## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec let_binding
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Let Rec With
+##
+## Ends in an error in state: 445.
+##
+## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes Attr Type
+##
+## Ends in an error in state: 460.
+##
+## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Let let_binding seq(Attr)
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes In With
+##
+## Ends in an error in state: 461.
+##
+## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Let let_binding seq(Attr) In
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Let WILD EQ Bytes With
+##
+## Ends in an error in state: 459.
+##
+## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Let let_binding
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Let With
+##
+## Ends in an error in state: 444.
+##
+## let_expr(closed_if) -> Let . let_binding seq(Attr) In closed_if [ Else ]
+## let_expr(closed_if) -> Let . Rec let_binding seq(Attr) In closed_if [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Let
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Match Verbatim Type
+##
+## Ends in an error in state: 266.
+##
+## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Match expr
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Match Verbatim With VBAR Begin
+##
+## Ends in an error in state: 268.
+##
+## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Match expr With option(VBAR)
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Match Verbatim With WILD ARROW Bytes With
+##
+## Ends in an error in state: 406.
+##
+## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ]
+## cases(base_if_then_else) -> cases(base_cond) . VBAR case_clause(base_if_then_else) [ Else ]
+##
+## The known suffix of the stack is as follows:
+## cases(base_cond)
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 392, spurious reduction of production base_expr(base_cond) -> disj_expr_level
+## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond)
+## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond)
+## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond
+## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond)
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Match Verbatim With With
+##
+## Ends in an error in state: 267.
+##
+## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Match expr With
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Match With
+##
+## Ends in an error in state: 265.
+##
+## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ]
+##
+## The known suffix of the stack is as follows:
+## Match
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Verbatim COMMA Bytes With
+##
+## Ends in an error in state: 462.
+##
+## if_then_else(seq_expr) -> If expr Then closed_if . Else seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## If expr Then closed_if
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level
+## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA)
+## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level)
+## In state 455, spurious reduction of production base_expr(closed_if) -> tuple_expr
+## In state 355, spurious reduction of production base_if_then_else__open(closed_if) -> base_expr(closed_if)
+## In state 354, spurious reduction of production closed_if -> base_if_then_else__open(closed_if)
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Verbatim Else With
+##
+## Ends in an error in state: 463.
+##
+## if_then_else(seq_expr) -> If expr Then closed_if Else . seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## If expr Then closed_if Else
+##
+
+
+
+interactive_expr: Begin If Verbatim Then Verbatim With
+##
+## Ends in an error in state: 456.
+##
+## base_expr(closed_if) -> disj_expr_level . [ Else ]
+## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ Or Else COMMA BOOL_OR ]
+## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ Or Else COMMA BOOL_OR ]
+## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ Else ]
+##
+## The known suffix of the stack is as follows:
+## disj_expr_level
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+##
+
+
+
+interactive_expr: Begin If Verbatim Then With
+##
+## Ends in an error in state: 443.
+##
+## if_then_else(seq_expr) -> If expr Then . closed_if Else seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## If expr Then
+##
+
+
+
+interactive_expr: Begin If Verbatim With
+##
+## Ends in an error in state: 442.
+##
+## if_then_else(seq_expr) -> If expr . Then closed_if Else seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## If expr
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+##
+
+
+
+interactive_expr: Begin If With
+##
+## Ends in an error in state: 441.
+##
+## if_then_else(seq_expr) -> If . expr Then closed_if Else seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## If
+##
+
+
+
+interactive_expr: Begin Let Rec WILD EQ Bytes Attr Type
+##
+## Ends in an error in state: 439.
+##
+## last_expr -> Let Rec let_binding seq(Attr) . In series [ End ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec let_binding seq(Attr)
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+##
+
+
+
+interactive_expr: Begin Let Rec WILD EQ Bytes In With
+##
+## Ends in an error in state: 440.
+##
+## last_expr -> Let Rec let_binding seq(Attr) In . series [ End ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec let_binding seq(Attr) In
+##
+
+
+
+interactive_expr: Begin Let Rec WILD EQ Bytes With
+##
+## Ends in an error in state: 438.
+##
+## last_expr -> Let Rec let_binding . seq(Attr) In series [ End ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec let_binding
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+##
+
+
+
+interactive_expr: Begin Let Rec With
+##
+## Ends in an error in state: 437.
+##
+## last_expr -> Let Rec . let_binding seq(Attr) In series [ End ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec
+##
+
+
+
+interactive_expr: Begin Let WILD EQ Bytes Attr Type
+##
+## Ends in an error in state: 481.
+##
+## last_expr -> Let let_binding seq(Attr) . In series [ End ]
+##
+## The known suffix of the stack is as follows:
+## Let let_binding seq(Attr)
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+##
+
+
+
+interactive_expr: Begin Let WILD EQ Bytes In With
+##
+## Ends in an error in state: 482.
+##
+## last_expr -> Let let_binding seq(Attr) In . series [ End ]
+##
+## The known suffix of the stack is as follows:
+## Let let_binding seq(Attr) In
+##
+
+
+
+interactive_expr: Begin Let WILD EQ Bytes With
+##
+## Ends in an error in state: 480.
+##
+## last_expr -> Let let_binding . seq(Attr) In series [ End ]
+##
+## The known suffix of the stack is as follows:
+## Let let_binding
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+##
+
+
+
+interactive_expr: Begin Let With
+##
+## Ends in an error in state: 436.
+##
+## last_expr -> Let . let_binding seq(Attr) In series [ End ]
+## last_expr -> Let . Rec let_binding seq(Attr) In series [ End ]
+##
+## The known suffix of the stack is as follows:
+## Let
+##
+
+
+
+interactive_expr: Begin Match Verbatim Type
+##
+## Ends in an error in state: 242.
+##
+## match_expr(seq_expr) -> Match expr . With option(VBAR) cases(seq_expr) [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## Match expr
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+##
+
+
+
+interactive_expr: Begin Match Verbatim With VBAR Begin
+##
+## Ends in an error in state: 245.
+##
+## match_expr(seq_expr) -> Match expr With option(VBAR) . cases(seq_expr) [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## Match expr With option(VBAR)
+##
+
+
+
+interactive_expr: Begin Match Verbatim With WILD ARROW Bytes VBAR With
+##
+## Ends in an error in state: 433.
+##
+## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ VBAR ]
+## cases(seq_expr) -> cases(base_cond) VBAR . case_clause(seq_expr) [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## cases(base_cond) VBAR
+##
+
+
+
+interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With
+##
+## Ends in an error in state: 426.
+##
+## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ VBAR ]
+## if_then_else(seq_expr) -> If expr Then closed_if Else . seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## If expr Then closed_if Else
+##
+
+
+
+interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim Then With
+##
+## Ends in an error in state: 424.
+##
+## if_then(base_cond) -> If expr Then . base_cond [ VBAR ]
+## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ VBAR ]
+## if_then_else(seq_expr) -> If expr Then . closed_if Else seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## If expr Then
+##
+
+
+
+interactive_expr: Begin Match Verbatim With WILD ARROW If Verbatim With
+##
+## Ends in an error in state: 423.
+##
+## if_then(base_cond) -> If expr . Then base_cond [ VBAR ]
+## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ VBAR ]
+## if_then_else(seq_expr) -> If expr . Then closed_if Else seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## If expr
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+##
+
+
+
+interactive_expr: Begin Match Verbatim With WILD ARROW If With
+##
+## Ends in an error in state: 422.
+##
+## if_then(base_cond) -> If . expr Then base_cond [ VBAR ]
+## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ VBAR ]
+## if_then_else(seq_expr) -> If . expr Then closed_if Else seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## If
+##
+
+
+
+interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim COMMA Bytes With
+##
+## Ends in an error in state: 432.
+##
+## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ]
+## cases(seq_expr) -> cases(base_cond) . VBAR case_clause(seq_expr) [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## cases(base_cond)
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level
+## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA)
+## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level)
+## In state 417, spurious reduction of production base_expr(base_cond) -> tuple_expr
+## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond)
+## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond)
+## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond
+## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond)
+##
+
+
+
+interactive_expr: Begin Match Verbatim With WILD ARROW Verbatim With
+##
+## Ends in an error in state: 429.
+##
+## base_expr(base_cond) -> disj_expr_level . [ VBAR ]
+## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ VBAR SEMI Or End COMMA BOOL_OR ]
+## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ VBAR SEMI Or End COMMA BOOL_OR ]
+## seq_expr -> disj_expr_level . [ SEMI End ]
+## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ VBAR ]
+##
+## The known suffix of the stack is as follows:
+## disj_expr_level
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+##
+
+
+
+interactive_expr: Begin Match Verbatim With WILD ARROW With
+##
+## Ends in an error in state: 256.
+##
+## case_clause(base_cond) -> pattern ARROW . base_cond [ VBAR ]
+## case_clause(seq_expr) -> pattern ARROW . seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## pattern ARROW
+##
+
+
+
+interactive_expr: Begin Match Verbatim With WILD CONS Bytes SEMI
+##
+## Ends in an error in state: 255.
+##
+## case_clause(base_cond) -> pattern . ARROW base_cond [ VBAR ]
+## case_clause(seq_expr) -> pattern . ARROW seq_expr [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## pattern
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 97, spurious reduction of production tail -> sub_pattern
+## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail
+##
+
+
+
+interactive_expr: Begin Match Verbatim With With
+##
+## Ends in an error in state: 243.
+##
+## match_expr(seq_expr) -> Match expr With . option(VBAR) cases(seq_expr) [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## Match expr With
+##
+
+
+
+interactive_expr: Begin Match With
+##
+## Ends in an error in state: 205.
+##
+## match_expr(seq_expr) -> Match . expr With option(VBAR) cases(seq_expr) [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## Match
+##
+
+
+
+interactive_expr: Begin Verbatim SEMI With
+##
+## Ends in an error in state: 471.
+##
+## option(SEMI) -> SEMI . [ End ]
+## series -> seq_expr SEMI . series [ End ]
+##
+## The known suffix of the stack is as follows:
+## seq_expr SEMI
+##
+
+
+
+interactive_expr: Begin Verbatim With
+##
+## Ends in an error in state: 464.
+##
+## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ SEMI Or End BOOL_OR ]
+## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ SEMI Or End BOOL_OR ]
+## seq_expr -> disj_expr_level . [ SEMI End ]
+##
+## The known suffix of the stack is as follows:
+## disj_expr_level
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
##
interactive_expr: Begin With
##
-## Ends in an error in state: 202.
+## Ends in an error in state: 204.
##
-## sequence -> Begin . option(sep_or_term_list(expr,SEMI)) End [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## sequence -> Begin . option(series) End [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## Begin
@@ -44,7 +975,7 @@ interactive_expr: Begin With
interactive_expr: C_None WILD
##
-## Ends in an error in state: 223.
+## Ends in an error in state: 221.
##
## add_expr_level -> mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
@@ -59,7 +990,7 @@ interactive_expr: C_None WILD
interactive_expr: C_Some With
##
-## Ends in an error in state: 203.
+## Ends in an error in state: 206.
##
## constr_expr -> C_Some . core_expr [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -71,9 +1002,9 @@ interactive_expr: C_Some With
interactive_expr: Constr DOT Ident DOT With
##
-## Ends in an error in state: 197.
+## Ends in an error in state: 199.
##
-## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## projection -> Constr DOT Ident DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## Constr DOT Ident DOT
@@ -83,10 +1014,10 @@ interactive_expr: Constr DOT Ident DOT With
interactive_expr: Constr DOT Ident WILD
##
-## Ends in an error in state: 196.
+## Ends in an error in state: 198.
##
-## module_fun -> Ident . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## module_fun -> Ident . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## Constr DOT Ident
@@ -96,10 +1027,10 @@ interactive_expr: Constr DOT Ident WILD
interactive_expr: Constr DOT With
##
-## Ends in an error in state: 194.
+## Ends in an error in state: 196.
##
-## module_field -> Constr DOT . module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## module_field -> Constr DOT . module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## Constr DOT
@@ -109,12 +1040,12 @@ interactive_expr: Constr DOT With
interactive_expr: Constr WILD
##
-## Ends in an error in state: 193.
+## Ends in an error in state: 195.
##
## constr_expr -> Constr . core_expr [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
## constr_expr -> Constr . [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
-## module_field -> Constr . DOT module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## module_field -> Constr . DOT module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## Constr
@@ -124,9 +1055,9 @@ interactive_expr: Constr WILD
interactive_expr: Fun WILD ARROW With
##
-## Ends in an error in state: 191.
+## Ends in an error in state: 193.
##
-## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Fun nseq(irrefutable) ARROW
@@ -136,7 +1067,7 @@ interactive_expr: Fun WILD ARROW With
interactive_expr: Fun WILD RPAR
##
-## Ends in an error in state: 309.
+## Ends in an error in state: 359.
##
## nseq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ]
##
@@ -147,14 +1078,14 @@ interactive_expr: Fun WILD RPAR
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 135, spurious reduction of production irrefutable -> sub_irrefutable
+## In state 136, spurious reduction of production irrefutable -> sub_irrefutable
##
interactive_expr: Fun WILD WILD RPAR
##
-## Ends in an error in state: 311.
+## Ends in an error in state: 361.
##
## seq(irrefutable) -> irrefutable . seq(irrefutable) [ ARROW ]
##
@@ -165,16 +1096,16 @@ interactive_expr: Fun WILD WILD RPAR
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 135, spurious reduction of production irrefutable -> sub_irrefutable
+## In state 136, spurious reduction of production irrefutable -> sub_irrefutable
##
interactive_expr: Fun With
##
-## Ends in an error in state: 189.
+## Ends in an error in state: 191.
##
-## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Fun
@@ -184,9 +1115,9 @@ interactive_expr: Fun With
interactive_expr: Ident DOT Int DOT With
##
-## Ends in an error in state: 186.
+## Ends in an error in state: 188.
##
-## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## nsepseq(selection,DOT) -> selection DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## selection DOT
@@ -196,10 +1127,10 @@ interactive_expr: Ident DOT Int DOT With
interactive_expr: Ident DOT Int WILD
##
-## Ends in an error in state: 185.
+## Ends in an error in state: 187.
##
-## nsepseq(selection,DOT) -> selection . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## nsepseq(selection,DOT) -> selection . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## nsepseq(selection,DOT) -> selection . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## selection
@@ -209,9 +1140,9 @@ interactive_expr: Ident DOT Int WILD
interactive_expr: Ident DOT With
##
-## Ends in an error in state: 182.
+## Ends in an error in state: 184.
##
-## projection -> Ident DOT . nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## projection -> Ident DOT . nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## Ident DOT
@@ -221,10 +1152,10 @@ interactive_expr: Ident DOT With
interactive_expr: Ident WILD
##
-## Ends in an error in state: 181.
+## Ends in an error in state: 183.
##
-## core_expr -> Ident . [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## projection -> Ident . DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## core_expr -> Ident . [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## projection -> Ident . DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## Ident
@@ -232,12 +1163,12 @@ interactive_expr: Ident WILD
-interactive_expr: If True Then Fun WILD ARROW With
+interactive_expr: If Verbatim Then Fun WILD ARROW With
##
-## Ends in an error in state: 427.
+## Ends in an error in state: 506.
##
## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ]
-## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(expr) -> Fun nseq(irrefutable) ARROW . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Fun nseq(irrefutable) ARROW
@@ -245,12 +1176,12 @@ interactive_expr: If True Then Fun WILD ARROW With
-interactive_expr: If True Then Fun With
+interactive_expr: If Verbatim Then Fun With
##
-## Ends in an error in state: 425.
+## Ends in an error in state: 504.
##
## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ]
-## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(expr) -> Fun . nseq(irrefutable) ARROW expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Fun
@@ -258,12 +1189,12 @@ interactive_expr: If True Then Fun With
-interactive_expr: If True Then If True Then True Else With
+interactive_expr: If Verbatim Then If Verbatim Then Verbatim Else With
##
-## Ends in an error in state: 432.
+## Ends in an error in state: 511.
##
## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ]
-## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## If expr Then closed_if Else
@@ -271,13 +1202,13 @@ interactive_expr: If True Then If True Then True Else With
-interactive_expr: If True Then If True Then With
+interactive_expr: If Verbatim Then If Verbatim Then With
##
-## Ends in an error in state: 424.
+## Ends in an error in state: 503.
##
-## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ]
-## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## If expr Then
@@ -285,13 +1216,13 @@ interactive_expr: If True Then If True Then With
-interactive_expr: If True Then If True With
+interactive_expr: If Verbatim Then If Verbatim With
##
-## Ends in an error in state: 423.
+## Ends in an error in state: 502.
##
-## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ]
-## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## If expr
@@ -300,29 +1231,29 @@ interactive_expr: If True Then If True With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
-interactive_expr: If True Then If With
+interactive_expr: If Verbatim Then If With
##
-## Ends in an error in state: 422.
+## Ends in an error in state: 501.
##
-## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ]
-## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## If
@@ -330,12 +1261,12 @@ interactive_expr: If True Then If With
-interactive_expr: If True Then Let Rec WILD EQ Bytes Attr Type
+interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes Attr Type
##
-## Ends in an error in state: 420.
+## Ends in an error in state: 499.
##
## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ]
-## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let Rec let_binding seq(Attr)
@@ -344,18 +1275,18 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes Attr Type
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
##
-interactive_expr: If True Then Let Rec WILD EQ Bytes In With
+interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes In With
##
-## Ends in an error in state: 421.
+## Ends in an error in state: 500.
##
## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ]
-## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let Rec let_binding seq(Attr) In
@@ -363,12 +1294,12 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes In With
-interactive_expr: If True Then Let Rec WILD EQ Bytes With
+interactive_expr: If Verbatim Then Let Rec WILD EQ Bytes With
##
-## Ends in an error in state: 419.
+## Ends in an error in state: 498.
##
## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ]
-## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let Rec let_binding
@@ -377,29 +1308,29 @@ interactive_expr: If True Then Let Rec WILD EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
-interactive_expr: If True Then Let Rec With
+interactive_expr: If Verbatim Then Let Rec With
##
-## Ends in an error in state: 418.
+## Ends in an error in state: 497.
##
## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ]
-## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let Rec
@@ -407,12 +1338,12 @@ interactive_expr: If True Then Let Rec With
-interactive_expr: If True Then Let WILD EQ Bytes Attr Type
+interactive_expr: If Verbatim Then Let WILD EQ Bytes Attr Type
##
-## Ends in an error in state: 436.
+## Ends in an error in state: 515.
##
## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ]
-## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let let_binding seq(Attr)
@@ -421,18 +1352,18 @@ interactive_expr: If True Then Let WILD EQ Bytes Attr Type
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
##
-interactive_expr: If True Then Let WILD EQ Bytes In With
+interactive_expr: If Verbatim Then Let WILD EQ Bytes In With
##
-## Ends in an error in state: 437.
+## Ends in an error in state: 516.
##
## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ]
-## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let let_binding seq(Attr) In
@@ -440,12 +1371,12 @@ interactive_expr: If True Then Let WILD EQ Bytes In With
-interactive_expr: If True Then Let WILD EQ Bytes With
+interactive_expr: If Verbatim Then Let WILD EQ Bytes With
##
-## Ends in an error in state: 435.
+## Ends in an error in state: 514.
##
## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ]
-## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let let_binding
@@ -454,31 +1385,31 @@ interactive_expr: If True Then Let WILD EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
-interactive_expr: If True Then Let With
+interactive_expr: If Verbatim Then Let With
##
-## Ends in an error in state: 417.
+## Ends in an error in state: 496.
##
## let_expr(closed_if) -> Let . let_binding seq(Attr) In closed_if [ Else ]
## let_expr(closed_if) -> Let . Rec let_binding seq(Attr) In closed_if [ Else ]
-## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let
@@ -486,11 +1417,11 @@ interactive_expr: If True Then Let With
-interactive_expr: If True Then Match True Type
+interactive_expr: If Verbatim Then Match Verbatim Type
##
-## Ends in an error in state: 316.
+## Ends in an error in state: 492.
##
-## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ]
##
## The known suffix of the stack is as follows:
@@ -500,27 +1431,27 @@ interactive_expr: If True Then Match True Type
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
-interactive_expr: If True Then Match True With VBAR Begin
+interactive_expr: If Verbatim Then Match Verbatim With VBAR Begin
##
-## Ends in an error in state: 319.
+## Ends in an error in state: 494.
##
-## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ]
##
## The known suffix of the stack is as follows:
@@ -529,11 +1460,11 @@ interactive_expr: If True Then Match True With VBAR Begin
-interactive_expr: If True Then Match True With WILD ARROW Bytes VBAR With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Bytes VBAR With
##
-## Ends in an error in state: 346.
+## Ends in an error in state: 407.
##
-## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## cases(base_if_then_else) -> cases(base_cond) VBAR . case_clause(base_if_then_else) [ Else ]
##
## The known suffix of the stack is as follows:
@@ -542,11 +1473,11 @@ interactive_expr: If True Then Match True With WILD ARROW Bytes VBAR With
-interactive_expr: If True Then Match True With WILD ARROW Fun WILD ARROW With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun WILD ARROW With
##
-## Ends in an error in state: 399.
+## Ends in an error in state: 387.
##
-## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## fun_expr(base_if_then_else) -> Fun nseq(irrefutable) ARROW . base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -555,11 +1486,11 @@ interactive_expr: If True Then Match True With WILD ARROW Fun WILD ARROW With
-interactive_expr: If True Then Match True With WILD ARROW Fun With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Fun With
##
-## Ends in an error in state: 397.
+## Ends in an error in state: 385.
##
-## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## fun_expr(base_if_then_else) -> Fun . nseq(irrefutable) ARROW base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -568,11 +1499,11 @@ interactive_expr: If True Then Match True With WILD ARROW Fun With
-interactive_expr: If True Then Match True With WILD ARROW If True Then True Else With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With
##
-## Ends in an error in state: 396.
+## Ends in an error in state: 384.
##
-## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(base_if_then_else) -> If expr Then closed_if Else . base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -581,12 +1512,12 @@ interactive_expr: If True Then Match True With WILD ARROW If True Then True Else
-interactive_expr: If True Then Match True With WILD ARROW If True Then With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim Then With
##
-## Ends in an error in state: 338.
+## Ends in an error in state: 278.
##
-## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(base_if_then_else) -> If expr Then . closed_if Else base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -595,12 +1526,12 @@ interactive_expr: If True Then Match True With WILD ARROW If True Then With
-interactive_expr: If True Then Match True With WILD ARROW If True With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If Verbatim With
##
-## Ends in an error in state: 337.
+## Ends in an error in state: 277.
##
-## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(base_if_then_else) -> If expr . Then closed_if Else base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -610,28 +1541,28 @@ interactive_expr: If True Then Match True With WILD ARROW If True With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
-interactive_expr: If True Then Match True With WILD ARROW If With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW If With
##
-## Ends in an error in state: 336.
+## Ends in an error in state: 276.
##
-## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(base_if_then_else) -> If . expr Then closed_if Else base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -640,11 +1571,11 @@ interactive_expr: If True Then Match True With WILD ARROW If With
-interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type
##
-## Ends in an error in state: 334.
+## Ends in an error in state: 274.
##
-## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) . In base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -654,17 +1585,17 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
##
-interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes In With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With
##
-## Ends in an error in state: 335.
+## Ends in an error in state: 275.
##
-## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(base_if_then_else) -> Let Rec let_binding seq(Attr) In . base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -673,11 +1604,11 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes
-interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With
##
-## Ends in an error in state: 333.
+## Ends in an error in state: 273.
##
-## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(base_if_then_else) -> Let Rec let_binding . seq(Attr) In base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -687,28 +1618,28 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec WILD EQ Bytes
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
-interactive_expr: If True Then Match True With WILD ARROW Let Rec With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let Rec With
##
-## Ends in an error in state: 332.
+## Ends in an error in state: 272.
##
-## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(base_if_then_else) -> Let Rec . let_binding seq(Attr) In base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -717,11 +1648,11 @@ interactive_expr: If True Then Match True With WILD ARROW Let Rec With
-interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes Attr Type
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type
##
-## Ends in an error in state: 411.
+## Ends in an error in state: 399.
##
-## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(base_if_then_else) -> Let let_binding seq(Attr) . In base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -731,17 +1662,17 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes Attr
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
##
-interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes In With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes In With
##
-## Ends in an error in state: 412.
+## Ends in an error in state: 400.
##
-## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(base_if_then_else) -> Let let_binding seq(Attr) In . base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -750,11 +1681,11 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes In W
-interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let WILD EQ Bytes With
##
-## Ends in an error in state: 410.
+## Ends in an error in state: 398.
##
-## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(base_if_then_else) -> Let let_binding . seq(Attr) In base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -764,29 +1695,29 @@ interactive_expr: If True Then Match True With WILD ARROW Let WILD EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
-interactive_expr: If True Then Match True With WILD ARROW Let With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Let With
##
-## Ends in an error in state: 331.
+## Ends in an error in state: 271.
##
-## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(base_if_then_else) -> Let . let_binding seq(Attr) In base_if_then_else [ Else ]
## let_expr(base_if_then_else) -> Let . Rec let_binding seq(Attr) In base_if_then_else [ Else ]
##
@@ -796,11 +1727,41 @@ interactive_expr: If True Then Match True With WILD ARROW Let With
-interactive_expr: If True Then Match True With WILD ARROW With
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW Verbatim End
##
-## Ends in an error in state: 330.
+## Ends in an error in state: 392.
##
-## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## base_expr(base_if_then_else) -> disj_expr_level . [ Else ]
+## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ]
+## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ]
+## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## disj_expr_level
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+##
+
+
+
+interactive_expr: If Verbatim Then Match Verbatim With WILD ARROW With
+##
+## Ends in an error in state: 270.
+##
+## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## case_clause(base_if_then_else) -> pattern ARROW . base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -809,11 +1770,11 @@ interactive_expr: If True Then Match True With WILD ARROW With
-interactive_expr: If True Then Match True With WILD CONS Bytes SEMI
+interactive_expr: If Verbatim Then Match Verbatim With WILD CONS Bytes SEMI
##
-## Ends in an error in state: 329.
+## Ends in an error in state: 269.
##
-## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## case_clause(base_if_then_else) -> pattern . ARROW base_if_then_else [ Else ]
##
## The known suffix of the stack is as follows:
@@ -823,17 +1784,17 @@ interactive_expr: If True Then Match True With WILD CONS Bytes SEMI
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 96, spurious reduction of production tail -> sub_pattern
-## In state 323, spurious reduction of production pattern -> sub_pattern CONS tail
+## In state 97, spurious reduction of production tail -> sub_pattern
+## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail
##
-interactive_expr: If True Then Match True With With
+interactive_expr: If Verbatim Then Match Verbatim With With
##
-## Ends in an error in state: 317.
+## Ends in an error in state: 493.
##
-## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ]
##
## The known suffix of the stack is as follows:
@@ -842,11 +1803,11 @@ interactive_expr: If True Then Match True With With
-interactive_expr: If True Then Match With
+interactive_expr: If Verbatim Then Match With
##
-## Ends in an error in state: 315.
+## Ends in an error in state: 491.
##
-## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ]
##
## The known suffix of the stack is as follows:
@@ -855,12 +1816,12 @@ interactive_expr: If True Then Match With
-interactive_expr: If True Then True COMMA Bytes VBAR
+interactive_expr: If Verbatim Then Verbatim COMMA Bytes VBAR
##
-## Ends in an error in state: 428.
+## Ends in an error in state: 507.
##
## base_expr(closed_if) -> tuple_expr . [ Else ]
-## base_expr(expr) -> tuple_expr . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## base_expr(expr) -> tuple_expr . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## tuple_expr
@@ -869,27 +1830,27 @@ interactive_expr: If True Then True COMMA Bytes VBAR
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 296, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level
-## In state 295, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA)
-## In state 217, spurious reduction of production tuple_expr -> tuple(disj_expr_level)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level
+## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA)
+## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level)
##
-interactive_expr: If True Then True Else With
+interactive_expr: If Verbatim Then Verbatim Else With
##
-## Ends in an error in state: 440.
+## Ends in an error in state: 519.
##
-## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then_else(expr) -> If expr Then closed_if Else . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## If expr Then closed_if Else
@@ -897,15 +1858,15 @@ interactive_expr: If True Then True Else With
-interactive_expr: If True Then True VBAR
+interactive_expr: If Verbatim Then Verbatim VBAR
##
-## Ends in an error in state: 429.
+## Ends in an error in state: 508.
##
## base_expr(closed_if) -> disj_expr_level . [ Else ]
-## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ]
-## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ]
-## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End Else EOF COLON Attr ]
+## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ]
+## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ]
+## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## disj_expr_level
@@ -914,25 +1875,25 @@ interactive_expr: If True Then True VBAR
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
##
-interactive_expr: If True Then With
+interactive_expr: If Verbatim Then With
##
-## Ends in an error in state: 314.
+## Ends in an error in state: 490.
##
-## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(expr) -> If expr Then . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(expr) -> If expr Then . closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## If expr Then
@@ -940,12 +1901,12 @@ interactive_expr: If True Then With
-interactive_expr: If True With
+interactive_expr: If Verbatim With
##
-## Ends in an error in state: 313.
+## Ends in an error in state: 489.
##
-## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(expr) -> If expr . Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(expr) -> If expr . Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## If expr
@@ -954,28 +1915,28 @@ interactive_expr: If True With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
interactive_expr: If With
##
-## Ends in an error in state: 180.
+## Ends in an error in state: 182.
##
-## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(expr) -> If . expr Then expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(expr) -> If . expr Then closed_if Else expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## If
@@ -985,7 +1946,7 @@ interactive_expr: If With
interactive_expr: LBRACE Constr DOT Ident With
##
-## Ends in an error in state: 444.
+## Ends in an error in state: 523.
##
## projection -> Constr DOT Ident . DOT nsepseq(selection,DOT) [ With ]
##
@@ -997,7 +1958,7 @@ interactive_expr: LBRACE Constr DOT Ident With
interactive_expr: LBRACE Constr DOT With
##
-## Ends in an error in state: 443.
+## Ends in an error in state: 522.
##
## projection -> Constr DOT . Ident DOT nsepseq(selection,DOT) [ With ]
##
@@ -1009,7 +1970,7 @@ interactive_expr: LBRACE Constr DOT With
interactive_expr: LBRACE Constr With
##
-## Ends in an error in state: 442.
+## Ends in an error in state: 521.
##
## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With ]
##
@@ -1019,11 +1980,11 @@ interactive_expr: LBRACE Constr With
-interactive_expr: LBRACE Ident DOT Ident VBAR
+interactive_expr: LBRACE Ident DOT Ident Verbatim
##
-## Ends in an error in state: 448.
+## Ends in an error in state: 527.
##
-## update_record -> LBRACE path . With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## update_record -> LBRACE path . With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## LBRACE path
@@ -1032,16 +1993,16 @@ interactive_expr: LBRACE Ident DOT Ident VBAR
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 185, spurious reduction of production nsepseq(selection,DOT) -> selection
-## In state 188, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT)
-## In state 447, spurious reduction of production path -> projection
+## In state 187, spurious reduction of production nsepseq(selection,DOT) -> selection
+## In state 190, spurious reduction of production projection -> Ident DOT nsepseq(selection,DOT)
+## In state 526, spurious reduction of production path -> projection
##
interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With
##
-## Ends in an error in state: 475.
+## Ends in an error in state: 554.
##
## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ]
## seq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ]
@@ -1054,7 +2015,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With
interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With
##
-## Ends in an error in state: 474.
+## Ends in an error in state: 553.
##
## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ]
## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ]
@@ -1067,26 +2028,26 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 441, spurious reduction of production field_assignment -> Ident EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 520, spurious reduction of production field_assignment -> Ident EQ expr
##
interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With
##
-## Ends in an error in state: 471.
+## Ends in an error in state: 550.
##
## field_assignment -> Ident . EQ expr [ SEMI RBRACE ]
##
@@ -1098,7 +2059,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI Ident With
interactive_expr: LBRACE Ident EQ Bytes SEMI With
##
-## Ends in an error in state: 470.
+## Ends in an error in state: 549.
##
## nsepseq(field_assignment,SEMI) -> field_assignment SEMI . nsepseq(field_assignment,SEMI) [ RBRACE ]
## nseq(__anonymous_0(field_assignment,SEMI)) -> field_assignment SEMI . seq(__anonymous_0(field_assignment,SEMI)) [ RBRACE ]
@@ -1111,7 +2072,7 @@ interactive_expr: LBRACE Ident EQ Bytes SEMI With
interactive_expr: LBRACE Ident EQ Bytes With
##
-## Ends in an error in state: 469.
+## Ends in an error in state: 548.
##
## nsepseq(field_assignment,SEMI) -> field_assignment . [ RBRACE ]
## nsepseq(field_assignment,SEMI) -> field_assignment . SEMI nsepseq(field_assignment,SEMI) [ RBRACE ]
@@ -1124,26 +2085,26 @@ interactive_expr: LBRACE Ident EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 441, spurious reduction of production field_assignment -> Ident EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 520, spurious reduction of production field_assignment -> Ident EQ expr
##
interactive_expr: LBRACE Ident EQ With
##
-## Ends in an error in state: 178.
+## Ends in an error in state: 180.
##
## field_assignment -> Ident EQ . expr [ SEMI RBRACE ]
##
@@ -1155,7 +2116,7 @@ interactive_expr: LBRACE Ident EQ With
interactive_expr: LBRACE Ident WILD
##
-## Ends in an error in state: 177.
+## Ends in an error in state: 179.
##
## field_assignment -> Ident . EQ expr [ SEMI RBRACE ]
## path -> Ident . [ With ]
@@ -1169,7 +2130,7 @@ interactive_expr: LBRACE Ident WILD
interactive_expr: LBRACE Ident With Ident DOT With
##
-## Ends in an error in state: 451.
+## Ends in an error in state: 530.
##
## nsepseq(field_name,DOT) -> Ident DOT . nsepseq(field_name,DOT) [ EQ ]
##
@@ -1181,7 +2142,7 @@ interactive_expr: LBRACE Ident With Ident DOT With
interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With
##
-## Ends in an error in state: 465.
+## Ends in an error in state: 544.
##
## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ]
## seq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ]
@@ -1194,7 +2155,7 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes SEMI With
interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes With
##
-## Ends in an error in state: 464.
+## Ends in an error in state: 543.
##
## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ]
## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ]
@@ -1207,26 +2168,26 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI Ident EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 459, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 538, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr
##
interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With
##
-## Ends in an error in state: 461.
+## Ends in an error in state: 540.
##
## nsepseq(field_path_assignment,SEMI) -> field_path_assignment SEMI . nsepseq(field_path_assignment,SEMI) [ RBRACE ]
## nseq(__anonymous_0(field_path_assignment,SEMI)) -> field_path_assignment SEMI . seq(__anonymous_0(field_path_assignment,SEMI)) [ RBRACE ]
@@ -1239,7 +2200,7 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes SEMI With
interactive_expr: LBRACE Ident With Ident EQ Bytes With
##
-## Ends in an error in state: 460.
+## Ends in an error in state: 539.
##
## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . [ RBRACE ]
## nsepseq(field_path_assignment,SEMI) -> field_path_assignment . SEMI nsepseq(field_path_assignment,SEMI) [ RBRACE ]
@@ -1252,26 +2213,26 @@ interactive_expr: LBRACE Ident With Ident EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 459, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 538, spurious reduction of production field_path_assignment -> nsepseq(field_name,DOT) EQ expr
##
interactive_expr: LBRACE Ident With Ident EQ With
##
-## Ends in an error in state: 458.
+## Ends in an error in state: 537.
##
## field_path_assignment -> nsepseq(field_name,DOT) EQ . expr [ SEMI RBRACE ]
##
@@ -1283,7 +2244,7 @@ interactive_expr: LBRACE Ident With Ident EQ With
interactive_expr: LBRACE Ident With Ident With
##
-## Ends in an error in state: 450.
+## Ends in an error in state: 529.
##
## nsepseq(field_name,DOT) -> Ident . [ EQ ]
## nsepseq(field_name,DOT) -> Ident . DOT nsepseq(field_name,DOT) [ EQ ]
@@ -1296,9 +2257,9 @@ interactive_expr: LBRACE Ident With Ident With
interactive_expr: LBRACE Ident With With
##
-## Ends in an error in state: 449.
+## Ends in an error in state: 528.
##
-## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## update_record -> LBRACE path With . sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## LBRACE path With
@@ -1308,10 +2269,10 @@ interactive_expr: LBRACE Ident With With
interactive_expr: LBRACE With
##
-## Ends in an error in state: 176.
+## Ends in an error in state: 178.
##
-## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## record_expr -> LBRACE . sep_or_term_list(field_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## update_record -> LBRACE . path With sep_or_term_list(field_path_assignment,SEMI) RBRACE [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## LBRACE
@@ -1319,44 +2280,12 @@ interactive_expr: LBRACE With
-interactive_expr: LBRACKET True End
+interactive_expr: LBRACKET Verbatim SEMI Verbatim SEMI With
##
-## Ends in an error in state: 480.
+## Ends in an error in state: 569.
##
-## list__(expr) -> LBRACKET option(sep_or_term_list(expr,SEMI)) . RBRACKET [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-##
-## The known suffix of the stack is as follows:
-## LBRACKET option(sep_or_term_list(expr,SEMI))
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 244, spurious reduction of production nsepseq(expr,SEMI) -> expr
-## In state 222, spurious reduction of production sep_or_term_list(expr,SEMI) -> nsepseq(expr,SEMI)
-## In state 218, spurious reduction of production option(sep_or_term_list(expr,SEMI)) -> sep_or_term_list(expr,SEMI)
-##
-
-
-
-interactive_expr: LBRACKET True SEMI True SEMI With
-##
-## Ends in an error in state: 249.
-##
-## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ]
-## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ]
+## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ]
+## seq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ]
##
## The known suffix of the stack is as follows:
## expr SEMI
@@ -1364,13 +2293,13 @@ interactive_expr: LBRACKET True SEMI True SEMI With
-interactive_expr: LBRACKET True SEMI True With
+interactive_expr: LBRACKET Verbatim SEMI Verbatim With
##
-## Ends in an error in state: 248.
+## Ends in an error in state: 568.
##
-## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ]
-## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ]
-## seq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ]
+## nsepseq(expr,SEMI) -> expr . [ RBRACKET ]
+## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ]
+## seq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET ]
##
## The known suffix of the stack is as follows:
## expr
@@ -1379,28 +2308,28 @@ interactive_expr: LBRACKET True SEMI True With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
-interactive_expr: LBRACKET True SEMI With
+interactive_expr: LBRACKET Verbatim SEMI With
##
-## Ends in an error in state: 245.
+## Ends in an error in state: 565.
##
-## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET End ]
-## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ]
+## nsepseq(expr,SEMI) -> expr SEMI . nsepseq(expr,SEMI) [ RBRACKET ]
+## nseq(__anonymous_0(expr,SEMI)) -> expr SEMI . seq(__anonymous_0(expr,SEMI)) [ RBRACKET ]
##
## The known suffix of the stack is as follows:
## expr SEMI
@@ -1408,13 +2337,13 @@ interactive_expr: LBRACKET True SEMI With
-interactive_expr: LBRACKET True With
+interactive_expr: LBRACKET Verbatim With
##
-## Ends in an error in state: 244.
+## Ends in an error in state: 564.
##
-## nsepseq(expr,SEMI) -> expr . [ RBRACKET End ]
-## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET End ]
-## nseq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET End ]
+## nsepseq(expr,SEMI) -> expr . [ RBRACKET ]
+## nsepseq(expr,SEMI) -> expr . SEMI nsepseq(expr,SEMI) [ RBRACKET ]
+## nseq(__anonymous_0(expr,SEMI)) -> expr . SEMI seq(__anonymous_0(expr,SEMI)) [ RBRACKET ]
##
## The known suffix of the stack is as follows:
## expr
@@ -1423,27 +2352,27 @@ interactive_expr: LBRACKET True With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
interactive_expr: LBRACKET With
##
-## Ends in an error in state: 168.
+## Ends in an error in state: 170.
##
-## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## list__(expr) -> LBRACKET . option(sep_or_term_list(expr,SEMI)) RBRACKET [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## LBRACKET
@@ -1451,11 +2380,11 @@ interactive_expr: LBRACKET With
-interactive_expr: LPAR True COLON String VBAR
+interactive_expr: LPAR Verbatim COLON String VBAR
##
-## Ends in an error in state: 511.
+## Ends in an error in state: 582.
##
-## par(__anonymous_1) -> LPAR expr COLON type_expr . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## par(__anonymous_1) -> LPAR expr COLON type_expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## LPAR expr COLON type_expr
@@ -1471,11 +2400,11 @@ interactive_expr: LPAR True COLON String VBAR
-interactive_expr: LPAR True COLON With
+interactive_expr: LPAR Verbatim COLON With
##
-## Ends in an error in state: 510.
+## Ends in an error in state: 581.
##
-## par(__anonymous_1) -> LPAR expr COLON . type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## par(__anonymous_1) -> LPAR expr COLON . type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## LPAR expr COLON
@@ -1483,12 +2412,12 @@ interactive_expr: LPAR True COLON With
-interactive_expr: LPAR True With
+interactive_expr: LPAR Verbatim With
##
-## Ends in an error in state: 508.
+## Ends in an error in state: 579.
##
-## par(__anonymous_1) -> LPAR expr . COLON type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## par(expr) -> LPAR expr . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## par(__anonymous_1) -> LPAR expr . COLON type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## par(expr) -> LPAR expr . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## LPAR expr
@@ -1497,29 +2426,29 @@ interactive_expr: LPAR True With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
interactive_expr: LPAR With
##
-## Ends in an error in state: 165.
+## Ends in an error in state: 167.
##
-## par(__anonymous_1) -> LPAR . expr COLON type_expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## par(expr) -> LPAR . expr RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## unit -> LPAR . RPAR [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## par(__anonymous_1) -> LPAR . expr COLON type_expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## par(expr) -> LPAR . expr RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## unit -> LPAR . RPAR [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## LPAR
@@ -1529,9 +2458,9 @@ interactive_expr: LPAR With
interactive_expr: Let Rec WILD EQ Bytes Attr Type
##
-## Ends in an error in state: 174.
+## Ends in an error in state: 176.
##
-## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let Rec let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let Rec let_binding seq(Attr)
@@ -1540,17 +2469,17 @@ interactive_expr: Let Rec WILD EQ Bytes Attr Type
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
##
interactive_expr: Let Rec WILD EQ Bytes In With
##
-## Ends in an error in state: 175.
+## Ends in an error in state: 177.
##
-## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let Rec let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let Rec let_binding seq(Attr) In
@@ -1560,9 +2489,9 @@ interactive_expr: Let Rec WILD EQ Bytes In With
interactive_expr: Let Rec WILD EQ Bytes With
##
-## Ends in an error in state: 171.
+## Ends in an error in state: 173.
##
-## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let Rec let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let Rec let_binding
@@ -1571,28 +2500,28 @@ interactive_expr: Let Rec WILD EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
interactive_expr: Let Rec With
##
-## Ends in an error in state: 170.
+## Ends in an error in state: 172.
##
-## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let Rec . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let Rec
@@ -1602,9 +2531,9 @@ interactive_expr: Let Rec With
interactive_expr: Let WILD EQ Bytes Attr Type
##
-## Ends in an error in state: 478.
+## Ends in an error in state: 557.
##
-## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let let_binding seq(Attr) . In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let let_binding seq(Attr)
@@ -1613,17 +2542,17 @@ interactive_expr: Let WILD EQ Bytes Attr Type
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
##
interactive_expr: Let WILD EQ Bytes In With
##
-## Ends in an error in state: 479.
+## Ends in an error in state: 558.
##
-## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let let_binding seq(Attr) In . expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let let_binding seq(Attr) In
@@ -1633,9 +2562,9 @@ interactive_expr: Let WILD EQ Bytes In With
interactive_expr: Let WILD EQ Bytes With
##
-## Ends in an error in state: 477.
+## Ends in an error in state: 556.
##
-## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let let_binding . seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let let_binding
@@ -1644,29 +2573,29 @@ interactive_expr: Let WILD EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
interactive_expr: Let With
##
-## Ends in an error in state: 169.
+## Ends in an error in state: 171.
##
-## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(expr) -> Let . let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## let_expr(expr) -> Let . Rec let_binding seq(Attr) In expr [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Let
@@ -1676,7 +2605,7 @@ interactive_expr: Let With
interactive_expr: MINUS With
##
-## Ends in an error in state: 167.
+## Ends in an error in state: 169.
##
## unary_expr_level -> MINUS . call_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -1686,11 +2615,11 @@ interactive_expr: MINUS With
-interactive_expr: Match True Type
+interactive_expr: Match Verbatim Type
##
-## Ends in an error in state: 483.
+## Ends in an error in state: 572.
##
-## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## match_expr(base_cond) -> Match expr . With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Match expr
@@ -1699,25 +2628,25 @@ interactive_expr: Match True Type
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
-interactive_expr: Match True With LPAR Bytes RPAR With
+interactive_expr: Match Verbatim With LPAR Bytes RPAR With
##
-## Ends in an error in state: 321.
+## Ends in an error in state: 247.
##
## pattern -> sub_pattern . CONS tail [ ARROW ]
## tuple(sub_pattern) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ]
@@ -1728,11 +2657,11 @@ interactive_expr: Match True With LPAR Bytes RPAR With
-interactive_expr: Match True With VBAR Begin
+interactive_expr: Match Verbatim With VBAR Begin
##
-## Ends in an error in state: 485.
+## Ends in an error in state: 574.
##
-## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## match_expr(base_cond) -> Match expr With option(VBAR) . cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Match expr With option(VBAR)
@@ -1740,11 +2669,11 @@ interactive_expr: Match True With VBAR Begin
-interactive_expr: Match True With WILD ARROW Bytes VBAR With
+interactive_expr: Match Verbatim With WILD ARROW Bytes VBAR With
##
-## Ends in an error in state: 507.
+## Ends in an error in state: 578.
##
-## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## cases(base_cond) -> cases(base_cond) VBAR . case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## cases(base_cond) VBAR
@@ -1752,11 +2681,11 @@ interactive_expr: Match True With WILD ARROW Bytes VBAR With
-interactive_expr: Match True With WILD ARROW Fun WILD ARROW With
+interactive_expr: Match Verbatim With WILD ARROW Fun WILD ARROW With
##
-## Ends in an error in state: 500.
+## Ends in an error in state: 416.
##
-## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Fun nseq(irrefutable) ARROW
@@ -1764,11 +2693,11 @@ interactive_expr: Match True With WILD ARROW Fun WILD ARROW With
-interactive_expr: Match True With WILD ARROW Fun With
+interactive_expr: Match Verbatim With WILD ARROW Fun With
##
-## Ends in an error in state: 498.
+## Ends in an error in state: 414.
##
-## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Fun
@@ -1776,11 +2705,11 @@ interactive_expr: Match True With WILD ARROW Fun With
-interactive_expr: Match True With WILD ARROW If True Then Fun WILD ARROW With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun WILD ARROW With
##
-## Ends in an error in state: 361.
+## Ends in an error in state: 289.
##
-## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(base_cond) -> Fun nseq(irrefutable) ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## fun_expr(closed_if) -> Fun nseq(irrefutable) ARROW . closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1789,11 +2718,11 @@ interactive_expr: Match True With WILD ARROW If True Then Fun WILD ARROW With
-interactive_expr: Match True With WILD ARROW If True Then Fun With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Fun With
##
-## Ends in an error in state: 359.
+## Ends in an error in state: 287.
##
-## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## fun_expr(base_cond) -> Fun . nseq(irrefutable) ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## fun_expr(closed_if) -> Fun . nseq(irrefutable) ARROW closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1802,11 +2731,11 @@ interactive_expr: Match True With WILD ARROW If True Then Fun With
-interactive_expr: Match True With WILD ARROW If True Then If True Then True Else With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Then Verbatim Else With
##
-## Ends in an error in state: 380.
+## Ends in an error in state: 364.
##
-## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(closed_if) -> If expr Then closed_if Else . closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1815,12 +2744,12 @@ interactive_expr: Match True With WILD ARROW If True Then If True Then True Else
-interactive_expr: Match True With WILD ARROW If True Then If True Then With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim Then With
##
-## Ends in an error in state: 358.
+## Ends in an error in state: 286.
##
-## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(closed_if) -> If expr Then . closed_if Else closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1829,12 +2758,12 @@ interactive_expr: Match True With WILD ARROW If True Then If True Then With
-interactive_expr: Match True With WILD ARROW If True Then If True With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If Verbatim With
##
-## Ends in an error in state: 357.
+## Ends in an error in state: 285.
##
-## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(closed_if) -> If expr . Then closed_if Else closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1844,28 +2773,28 @@ interactive_expr: Match True With WILD ARROW If True Then If True With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
-interactive_expr: Match True With WILD ARROW If True Then If With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then If With
##
-## Ends in an error in state: 356.
+## Ends in an error in state: 284.
##
-## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## if_then_else(closed_if) -> If . expr Then closed_if Else closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1874,11 +2803,11 @@ interactive_expr: Match True With WILD ARROW If True Then If With
-interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes Attr Type
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes Attr Type
##
-## Ends in an error in state: 354.
+## Ends in an error in state: 282.
##
-## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(closed_if) -> Let Rec let_binding seq(Attr) . In closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1888,17 +2817,17 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
##
-interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes In With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes In With
##
-## Ends in an error in state: 355.
+## Ends in an error in state: 283.
##
-## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(closed_if) -> Let Rec let_binding seq(Attr) In . closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1907,11 +2836,11 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes
-interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec WILD EQ Bytes With
##
-## Ends in an error in state: 353.
+## Ends in an error in state: 281.
##
-## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(closed_if) -> Let Rec let_binding . seq(Attr) In closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1921,28 +2850,28 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec WILD EQ Bytes
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
-interactive_expr: Match True With WILD ARROW If True Then Let Rec With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let Rec With
##
-## Ends in an error in state: 352.
+## Ends in an error in state: 280.
##
-## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(closed_if) -> Let Rec . let_binding seq(Attr) In closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1951,11 +2880,11 @@ interactive_expr: Match True With WILD ARROW If True Then Let Rec With
-interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes Attr Type
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes Attr Type
##
-## Ends in an error in state: 391.
+## Ends in an error in state: 379.
##
-## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(closed_if) -> Let let_binding seq(Attr) . In closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1965,17 +2894,17 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes Attr
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
##
-interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes In With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes In With
##
-## Ends in an error in state: 392.
+## Ends in an error in state: 380.
##
-## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(closed_if) -> Let let_binding seq(Attr) In . closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1984,11 +2913,11 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes In W
-interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let WILD EQ Bytes With
##
-## Ends in an error in state: 390.
+## Ends in an error in state: 378.
##
-## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(closed_if) -> Let let_binding . seq(Attr) In closed_if [ Else ]
##
## The known suffix of the stack is as follows:
@@ -1998,29 +2927,29 @@ interactive_expr: Match True With WILD ARROW If True Then Let WILD EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
-interactive_expr: Match True With WILD ARROW If True Then Let With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Let With
##
-## Ends in an error in state: 351.
+## Ends in an error in state: 279.
##
-## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
## let_expr(closed_if) -> Let . let_binding seq(Attr) In closed_if [ Else ]
## let_expr(closed_if) -> Let . Rec let_binding seq(Attr) In closed_if [ Else ]
##
@@ -2030,108 +2959,11 @@ interactive_expr: Match True With WILD ARROW If True Then Let With
-interactive_expr: Match True With WILD ARROW If True Then Match True Type
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim Else With
##
-## Ends in an error in state: 340.
+## Ends in an error in state: 413.
##
-## match_expr(base_if_then_else) -> Match expr . With option(VBAR) cases(base_if_then_else) [ Else ]
-##
-## The known suffix of the stack is as follows:
-## Match expr
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-##
-
-
-
-interactive_expr: Match True With WILD ARROW If True Then Match True With VBAR Begin
-##
-## Ends in an error in state: 342.
-##
-## match_expr(base_if_then_else) -> Match expr With option(VBAR) . cases(base_if_then_else) [ Else ]
-##
-## The known suffix of the stack is as follows:
-## Match expr With option(VBAR)
-##
-
-
-
-interactive_expr: Match True With WILD ARROW If True Then Match True With WILD ARROW Bytes With
-##
-## Ends in an error in state: 345.
-##
-## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ VBAR ]
-## cases(base_if_then_else) -> cases(base_cond) . VBAR case_clause(base_if_then_else) [ Else ]
-##
-## The known suffix of the stack is as follows:
-## cases(base_cond)
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 404, spurious reduction of production base_expr(base_cond) -> disj_expr_level
-## In state 376, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond)
-## In state 377, spurious reduction of production base_cond -> base_cond__open(base_cond)
-## In state 415, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond
-## In state 350, spurious reduction of production cases(base_cond) -> case_clause(base_cond)
-##
-
-
-
-interactive_expr: Match True With WILD ARROW If True Then Match True With With
-##
-## Ends in an error in state: 341.
-##
-## match_expr(base_if_then_else) -> Match expr With . option(VBAR) cases(base_if_then_else) [ Else ]
-##
-## The known suffix of the stack is as follows:
-## Match expr With
-##
-
-
-
-interactive_expr: Match True With WILD ARROW If True Then Match With
-##
-## Ends in an error in state: 339.
-##
-## match_expr(base_if_then_else) -> Match . expr With option(VBAR) cases(base_if_then_else) [ Else ]
-##
-## The known suffix of the stack is as follows:
-## Match
-##
-
-
-
-interactive_expr: Match True With WILD ARROW If True Then True Else With
-##
-## Ends in an error in state: 497.
-##
-## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then_else(base_cond) -> If expr Then closed_if Else . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## If expr Then closed_if Else
@@ -2139,252 +2971,15 @@ interactive_expr: Match True With WILD ARROW If True Then True Else With
-interactive_expr: Match True With WILD ARROW If True Then With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then Verbatim End
##
-## Ends in an error in state: 495.
+## Ends in an error in state: 299.
##
-## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## If expr Then
-##
-
-
-
-interactive_expr: Match True With WILD ARROW If True With
-##
-## Ends in an error in state: 494.
-##
-## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## If expr
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-##
-
-
-
-interactive_expr: Match True With WILD ARROW If With
-##
-## Ends in an error in state: 493.
-##
-## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## If
-##
-
-
-
-interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes Attr Type
-##
-## Ends in an error in state: 491.
-##
-## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## Let Rec let_binding seq(Attr)
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
-##
-
-
-
-interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes In With
-##
-## Ends in an error in state: 492.
-##
-## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## Let Rec let_binding seq(Attr) In
-##
-
-
-
-interactive_expr: Match True With WILD ARROW Let Rec WILD EQ Bytes With
-##
-## Ends in an error in state: 490.
-##
-## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## Let Rec let_binding
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
-##
-
-
-
-interactive_expr: Match True With WILD ARROW Let Rec With
-##
-## Ends in an error in state: 489.
-##
-## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## Let Rec
-##
-
-
-
-interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes Attr Type
-##
-## Ends in an error in state: 504.
-##
-## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## Let let_binding seq(Attr)
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 172, spurious reduction of production seq(Attr) ->
-## In state 173, spurious reduction of production seq(Attr) -> Attr seq(Attr)
-##
-
-
-
-interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes In With
-##
-## Ends in an error in state: 505.
-##
-## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## Let let_binding seq(Attr) In
-##
-
-
-
-interactive_expr: Match True With WILD ARROW Let WILD EQ Bytes With
-##
-## Ends in an error in state: 503.
-##
-## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## Let let_binding
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
-##
-
-
-
-interactive_expr: Match True With WILD ARROW Let With
-##
-## Ends in an error in state: 488.
-##
-## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## Let
-##
-
-
-
-interactive_expr: Match True With WILD ARROW True COMMA Bytes Else
-##
-## Ends in an error in state: 506.
-##
-## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## Match expr With option(VBAR) cases(base_cond)
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 296, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level
-## In state 295, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA)
-## In state 217, spurious reduction of production tuple_expr -> tuple(disj_expr_level)
-## In state 501, spurious reduction of production base_expr(base_cond) -> tuple_expr
-## In state 376, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond)
-## In state 377, spurious reduction of production base_cond -> base_cond__open(base_cond)
-## In state 415, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond
-## In state 350, spurious reduction of production cases(base_cond) -> case_clause(base_cond)
-##
-
-
-
-interactive_expr: Match True With WILD ARROW True Else
-##
-## Ends in an error in state: 502.
-##
-## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End EOF COMMA COLON BOOL_OR Attr ]
-## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End EOF COMMA COLON BOOL_OR Attr ]
-## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## base_expr(closed_if) -> disj_expr_level . [ Else ]
+## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ]
+## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ]
+## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## disj_expr_level
@@ -2393,24 +2988,291 @@ interactive_expr: Match True With WILD ARROW True Else
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
##
-interactive_expr: Match True With WILD ARROW With
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim Then With
##
-## Ends in an error in state: 487.
+## Ends in an error in state: 264.
##
-## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## if_then(base_cond) -> If expr Then . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(base_cond) -> If expr Then . closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## If expr Then
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW If Verbatim With
+##
+## Ends in an error in state: 263.
+##
+## if_then(base_cond) -> If expr . Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(base_cond) -> If expr . Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## If expr
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW If With
+##
+## Ends in an error in state: 262.
+##
+## if_then(base_cond) -> If . expr Then base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## if_then_else(base_cond) -> If . expr Then closed_if Else base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## If
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes Attr Type
+##
+## Ends in an error in state: 260.
+##
+## let_expr(base_cond) -> Let Rec let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec let_binding seq(Attr)
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes In With
+##
+## Ends in an error in state: 261.
+##
+## let_expr(base_cond) -> Let Rec let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec let_binding seq(Attr) In
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Let Rec WILD EQ Bytes With
+##
+## Ends in an error in state: 259.
+##
+## let_expr(base_cond) -> Let Rec let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec let_binding
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Let Rec With
+##
+## Ends in an error in state: 258.
+##
+## let_expr(base_cond) -> Let Rec . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## Let Rec
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes Attr Type
+##
+## Ends in an error in state: 420.
+##
+## let_expr(base_cond) -> Let let_binding seq(Attr) . In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## Let let_binding seq(Attr)
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 174, spurious reduction of production seq(Attr) ->
+## In state 175, spurious reduction of production seq(Attr) -> Attr seq(Attr)
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes In With
+##
+## Ends in an error in state: 421.
+##
+## let_expr(base_cond) -> Let let_binding seq(Attr) In . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## Let let_binding seq(Attr) In
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Let WILD EQ Bytes With
+##
+## Ends in an error in state: 419.
+##
+## let_expr(base_cond) -> Let let_binding . seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## Let let_binding
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Let With
+##
+## Ends in an error in state: 257.
+##
+## let_expr(base_cond) -> Let . let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## let_expr(base_cond) -> Let . Rec let_binding seq(Attr) In base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## Let
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Verbatim COMMA Bytes Else
+##
+## Ends in an error in state: 577.
+##
+## cases(base_cond) -> cases(base_cond) . VBAR case_clause(base_cond) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## match_expr(base_cond) -> Match expr With option(VBAR) cases(base_cond) . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## Match expr With option(VBAR) cases(base_cond)
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 344, spurious reduction of production nsepseq(disj_expr_level,COMMA) -> disj_expr_level
+## In state 343, spurious reduction of production tuple(disj_expr_level) -> disj_expr_level COMMA nsepseq(disj_expr_level,COMMA)
+## In state 220, spurious reduction of production tuple_expr -> tuple(disj_expr_level)
+## In state 417, spurious reduction of production base_expr(base_cond) -> tuple_expr
+## In state 356, spurious reduction of production base_cond__open(base_cond) -> base_expr(base_cond)
+## In state 357, spurious reduction of production base_cond -> base_cond__open(base_cond)
+## In state 403, spurious reduction of production case_clause(base_cond) -> pattern ARROW base_cond
+## In state 411, spurious reduction of production cases(base_cond) -> case_clause(base_cond)
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW Verbatim End
+##
+## Ends in an error in state: 418.
+##
+## base_expr(base_cond) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ]
+## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ]
+## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## disj_expr_level
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+##
+
+
+
+interactive_expr: Match Verbatim With WILD ARROW With
+##
+## Ends in an error in state: 576.
+##
+## case_clause(base_cond) -> pattern ARROW . base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## pattern ARROW
@@ -2418,9 +3280,9 @@ interactive_expr: Match True With WILD ARROW With
-interactive_expr: Match True With WILD COMMA WILD COMMA With
+interactive_expr: Match Verbatim With WILD COMMA WILD COMMA With
##
-## Ends in an error in state: 326.
+## Ends in an error in state: 252.
##
## nsepseq(sub_pattern,COMMA) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ]
##
@@ -2430,9 +3292,9 @@ interactive_expr: Match True With WILD COMMA WILD COMMA With
-interactive_expr: Match True With WILD COMMA WILD With
+interactive_expr: Match Verbatim With WILD COMMA WILD With
##
-## Ends in an error in state: 325.
+## Ends in an error in state: 251.
##
## nsepseq(sub_pattern,COMMA) -> sub_pattern . [ ARROW ]
## nsepseq(sub_pattern,COMMA) -> sub_pattern . COMMA nsepseq(sub_pattern,COMMA) [ ARROW ]
@@ -2443,9 +3305,9 @@ interactive_expr: Match True With WILD COMMA WILD With
-interactive_expr: Match True With WILD COMMA With
+interactive_expr: Match Verbatim With WILD COMMA With
##
-## Ends in an error in state: 324.
+## Ends in an error in state: 250.
##
## tuple(sub_pattern) -> sub_pattern COMMA . nsepseq(sub_pattern,COMMA) [ ARROW ]
##
@@ -2455,11 +3317,11 @@ interactive_expr: Match True With WILD COMMA With
-interactive_expr: Match True With WILD CONS Bytes SEMI
+interactive_expr: Match Verbatim With WILD CONS Bytes SEMI
##
-## Ends in an error in state: 486.
+## Ends in an error in state: 575.
##
-## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## case_clause(base_cond) -> pattern . ARROW base_cond [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## pattern
@@ -2468,15 +3330,15 @@ interactive_expr: Match True With WILD CONS Bytes SEMI
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 96, spurious reduction of production tail -> sub_pattern
-## In state 323, spurious reduction of production pattern -> sub_pattern CONS tail
+## In state 97, spurious reduction of production tail -> sub_pattern
+## In state 249, spurious reduction of production pattern -> sub_pattern CONS tail
##
-interactive_expr: Match True With WILD CONS With
+interactive_expr: Match Verbatim With WILD CONS With
##
-## Ends in an error in state: 322.
+## Ends in an error in state: 248.
##
## pattern -> sub_pattern CONS . tail [ ARROW ]
##
@@ -2486,9 +3348,9 @@ interactive_expr: Match True With WILD CONS With
-interactive_expr: Match True With WILD With
+interactive_expr: Match Verbatim With WILD With
##
-## Ends in an error in state: 343.
+## Ends in an error in state: 404.
##
## pattern -> core_pattern . [ ARROW ]
## sub_pattern -> core_pattern . [ CONS COMMA ]
@@ -2499,11 +3361,11 @@ interactive_expr: Match True With WILD With
-interactive_expr: Match True With With
+interactive_expr: Match Verbatim With With
##
-## Ends in an error in state: 484.
+## Ends in an error in state: 573.
##
-## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## match_expr(base_cond) -> Match expr With . option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Match expr With
@@ -2513,9 +3375,9 @@ interactive_expr: Match True With With
interactive_expr: Match With
##
-## Ends in an error in state: 166.
+## Ends in an error in state: 168.
##
-## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
+## match_expr(base_cond) -> Match . expr With option(VBAR) cases(base_cond) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## Match
@@ -2525,7 +3387,7 @@ interactive_expr: Match With
interactive_expr: Not With
##
-## Ends in an error in state: 162.
+## Ends in an error in state: 164.
##
## unary_expr_level -> Not . call_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -2535,9 +3397,9 @@ interactive_expr: Not With
-interactive_expr: True BOOL_AND With
+interactive_expr: Verbatim BOOL_AND With
##
-## Ends in an error in state: 271.
+## Ends in an error in state: 319.
##
## bin_op(conj_expr_level,BOOL_AND,comp_expr_level) -> conj_expr_level BOOL_AND . comp_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR BOOL_AND Attr ]
##
@@ -2547,9 +3409,9 @@ interactive_expr: True BOOL_AND With
-interactive_expr: True BOOL_OR With
+interactive_expr: Verbatim BOOL_OR With
##
-## Ends in an error in state: 302.
+## Ends in an error in state: 350.
##
## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level BOOL_OR . conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ]
##
@@ -2559,9 +3421,9 @@ interactive_expr: True BOOL_OR With
-interactive_expr: True CAT With
+interactive_expr: Verbatim CAT With
##
-## Ends in an error in state: 254.
+## Ends in an error in state: 302.
##
## bin_op(cons_expr_level,CAT,cat_expr_level) -> cons_expr_level CAT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ]
##
@@ -2571,11 +3433,11 @@ interactive_expr: True CAT With
-interactive_expr: True COMMA True COMMA With
+interactive_expr: Verbatim COMMA Verbatim COMMA With
##
-## Ends in an error in state: 297.
+## Ends in an error in state: 345.
##
-## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End Else EOF COLON Attr ]
+## nsepseq(disj_expr_level,COMMA) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## disj_expr_level COMMA
@@ -2583,11 +3445,40 @@ interactive_expr: True COMMA True COMMA With
-interactive_expr: True COMMA With
+interactive_expr: Verbatim COMMA Verbatim End
##
-## Ends in an error in state: 294.
+## Ends in an error in state: 344.
##
-## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In End Else EOF COLON Attr ]
+## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ]
+## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In Else EOF COMMA COLON BOOL_OR Attr ]
+## nsepseq(disj_expr_level,COMMA) -> disj_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ]
+## nsepseq(disj_expr_level,COMMA) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## disj_expr_level
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+##
+
+
+
+interactive_expr: Verbatim COMMA With
+##
+## Ends in an error in state: 342.
+##
+## tuple(disj_expr_level) -> disj_expr_level COMMA . nsepseq(disj_expr_level,COMMA) [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Let In Else EOF COLON Attr ]
##
## The known suffix of the stack is as follows:
## disj_expr_level COMMA
@@ -2595,9 +3486,9 @@ interactive_expr: True COMMA With
-interactive_expr: True CONS With
+interactive_expr: Verbatim CONS With
##
-## Ends in an error in state: 268.
+## Ends in an error in state: 316.
##
## bin_op(add_expr_level,CONS,cons_expr_level) -> add_expr_level CONS . cons_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -2607,12 +3498,12 @@ interactive_expr: True CONS With
-interactive_expr: True Constr With
+interactive_expr: Verbatim Constr With
##
-## Ends in an error in state: 200.
+## Ends in an error in state: 202.
##
-## module_field -> Constr . DOT module_fun [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
-## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## module_field -> Constr . DOT module_fun [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
+## projection -> Constr . DOT Ident DOT nsepseq(selection,DOT) [ With Verbatim VBAR Type True Then TIMES String SLASH SEMI RPAR RBRACKET RBRACE PLUS Or Nat NE Mutez Mod MINUS Let LT LPAR LE LBRACKET LBRACE Int In Ident GT GE False End Else EQ EOF Constr CONS COMMA COLON CAT Bytes Begin BOOL_OR BOOL_AND Attr ]
##
## The known suffix of the stack is as follows:
## Constr
@@ -2620,9 +3511,9 @@ interactive_expr: True Constr With
-interactive_expr: True EQ With
+interactive_expr: Verbatim EQ With
##
-## Ends in an error in state: 283.
+## Ends in an error in state: 331.
##
## bin_op(comp_expr_level,EQ,cat_expr_level) -> comp_expr_level EQ . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ]
##
@@ -2632,9 +3523,9 @@ interactive_expr: True EQ With
-interactive_expr: True GE With
+interactive_expr: Verbatim GE With
##
-## Ends in an error in state: 281.
+## Ends in an error in state: 329.
##
## bin_op(comp_expr_level,GE,cat_expr_level) -> comp_expr_level GE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ]
##
@@ -2644,9 +3535,9 @@ interactive_expr: True GE With
-interactive_expr: True GT With
+interactive_expr: Verbatim GT With
##
-## Ends in an error in state: 279.
+## Ends in an error in state: 327.
##
## bin_op(comp_expr_level,GT,cat_expr_level) -> comp_expr_level GT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ]
##
@@ -2656,9 +3547,9 @@ interactive_expr: True GT With
-interactive_expr: True LE With
+interactive_expr: Verbatim LE With
##
-## Ends in an error in state: 277.
+## Ends in an error in state: 325.
##
## bin_op(comp_expr_level,LE,cat_expr_level) -> comp_expr_level LE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ]
##
@@ -2668,9 +3559,9 @@ interactive_expr: True LE With
-interactive_expr: True LT With
+interactive_expr: Verbatim LT With
##
-## Ends in an error in state: 275.
+## Ends in an error in state: 323.
##
## bin_op(comp_expr_level,LT,cat_expr_level) -> comp_expr_level LT . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ]
##
@@ -2680,9 +3571,9 @@ interactive_expr: True LT With
-interactive_expr: True MINUS C_None WILD
+interactive_expr: Verbatim MINUS C_None WILD
##
-## Ends in an error in state: 267.
+## Ends in an error in state: 315.
##
## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
@@ -2695,9 +3586,9 @@ interactive_expr: True MINUS C_None WILD
-interactive_expr: True MINUS With
+interactive_expr: Verbatim MINUS With
##
-## Ends in an error in state: 266.
+## Ends in an error in state: 314.
##
## bin_op(add_expr_level,MINUS,mult_expr_level) -> add_expr_level MINUS . mult_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -2707,9 +3598,9 @@ interactive_expr: True MINUS With
-interactive_expr: True Mod With
+interactive_expr: Verbatim Mod With
##
-## Ends in an error in state: 237.
+## Ends in an error in state: 235.
##
## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level Mod . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -2719,9 +3610,9 @@ interactive_expr: True Mod With
-interactive_expr: True NE With
+interactive_expr: Verbatim NE With
##
-## Ends in an error in state: 273.
+## Ends in an error in state: 321.
##
## bin_op(comp_expr_level,NE,cat_expr_level) -> comp_expr_level NE . cat_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or NE Let LT LE In GT GE End Else EQ EOF COMMA COLON BOOL_OR BOOL_AND Attr ]
##
@@ -2731,9 +3622,9 @@ interactive_expr: True NE With
-interactive_expr: True Or With
+interactive_expr: Verbatim Or With
##
-## Ends in an error in state: 252.
+## Ends in an error in state: 300.
##
## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level Or . conj_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE Or Let In End Else EOF COMMA COLON BOOL_OR Attr ]
##
@@ -2743,9 +3634,9 @@ interactive_expr: True Or With
-interactive_expr: True PLUS C_None WILD
+interactive_expr: Verbatim PLUS C_None WILD
##
-## Ends in an error in state: 265.
+## Ends in an error in state: 313.
##
## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS mult_expr_level . [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
## bin_op(mult_expr_level,Mod,unary_expr_level) -> mult_expr_level . Mod unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
@@ -2758,9 +3649,9 @@ interactive_expr: True PLUS C_None WILD
-interactive_expr: True PLUS With
+interactive_expr: Verbatim PLUS With
##
-## Ends in an error in state: 264.
+## Ends in an error in state: 312.
##
## bin_op(add_expr_level,PLUS,mult_expr_level) -> add_expr_level PLUS . mult_expr_level [ With VBAR Type Then SEMI RPAR RBRACKET RBRACE PLUS Or NE MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -2770,9 +3661,9 @@ interactive_expr: True PLUS With
-interactive_expr: True SLASH With
+interactive_expr: Verbatim SLASH With
##
-## Ends in an error in state: 235.
+## Ends in an error in state: 233.
##
## bin_op(mult_expr_level,SLASH,unary_expr_level) -> mult_expr_level SLASH . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -2782,9 +3673,9 @@ interactive_expr: True SLASH With
-interactive_expr: True TIMES With
+interactive_expr: Verbatim TIMES With
##
-## Ends in an error in state: 224.
+## Ends in an error in state: 222.
##
## bin_op(mult_expr_level,TIMES,unary_expr_level) -> mult_expr_level TIMES . unary_expr_level [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -2794,9 +3685,38 @@ interactive_expr: True TIMES With
-interactive_expr: True True True WILD
+interactive_expr: Verbatim VBAR
##
-## Ends in an error in state: 230.
+## Ends in an error in state: 368.
+##
+## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ]
+## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In EOF COMMA COLON BOOL_OR Attr ]
+## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In EOF COLON Attr ]
+##
+## The known suffix of the stack is as follows:
+## disj_expr_level
+##
+## WARNING: This example involves spurious reductions.
+## This implies that, although the LR(1) items shown above provide an
+## accurate view of the past (what has been recognized so far), they
+## may provide an INCOMPLETE view of the future (what was expected next).
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+##
+
+
+
+interactive_expr: Verbatim Verbatim Verbatim WILD
+##
+## Ends in an error in state: 228.
##
## seq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -2806,9 +3726,9 @@ interactive_expr: True True True WILD
-interactive_expr: True True WILD
+interactive_expr: Verbatim Verbatim WILD
##
-## Ends in an error in state: 228.
+## Ends in an error in state: 226.
##
## nseq(core_expr) -> core_expr . seq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
##
@@ -2818,38 +3738,9 @@ interactive_expr: True True WILD
-interactive_expr: True VBAR
+interactive_expr: Verbatim WILD
##
-## Ends in an error in state: 251.
-##
-## base_expr(expr) -> disj_expr_level . [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-## bin_op(disj_expr_level,BOOL_OR,conj_expr_level) -> disj_expr_level . BOOL_OR conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In End EOF COMMA COLON BOOL_OR Attr ]
-## bin_op(disj_expr_level,Or,conj_expr_level) -> disj_expr_level . Or conj_expr_level [ With Type Then SEMI RPAR RBRACKET RBRACE Or Let In End EOF COMMA COLON BOOL_OR Attr ]
-## tuple(disj_expr_level) -> disj_expr_level . COMMA nsepseq(disj_expr_level,COMMA) [ With Type Then SEMI RPAR RBRACKET RBRACE Let In End EOF COLON Attr ]
-##
-## The known suffix of the stack is as follows:
-## disj_expr_level
-##
-## WARNING: This example involves spurious reductions.
-## This implies that, although the LR(1) items shown above provide an
-## accurate view of the past (what has been recognized so far), they
-## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-##
-
-
-
-interactive_expr: True WILD
-##
-## Ends in an error in state: 226.
+## Ends in an error in state: 224.
##
## call_expr -> core_expr . nseq(core_expr) [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
## call_expr_level -> core_expr . [ With VBAR Type Then TIMES SLASH SEMI RPAR RBRACKET RBRACE PLUS Or NE Mod MINUS Let LT LE In GT GE End Else EQ EOF CONS COMMA COLON CAT BOOL_OR BOOL_AND Attr ]
@@ -2860,9 +3751,9 @@ interactive_expr: True WILD
-interactive_expr: True With
+interactive_expr: Verbatim With
##
-## Ends in an error in state: 528.
+## Ends in an error in state: 599.
##
## interactive_expr -> expr . EOF [ # ]
##
@@ -2873,25 +3764,25 @@ interactive_expr: True With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
##
interactive_expr: With
##
-## Ends in an error in state: 526.
+## Ends in an error in state: 597.
##
## interactive_expr' -> . interactive_expr [ # ]
##
@@ -2903,7 +3794,7 @@ interactive_expr: With
contract: Let Ident WILD COLON String VBAR
##
-## Ends in an error in state: 158.
+## Ends in an error in state: 159.
##
## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) . EQ expr [ Type Let In EOF Attr ]
##
@@ -2917,15 +3808,15 @@ contract: Let Ident WILD COLON String VBAR
## In state 28, spurious reduction of production cartesian -> core_type
## In state 36, spurious reduction of production fun_type -> cartesian
## In state 27, spurious reduction of production type_expr -> fun_type
-## In state 156, spurious reduction of production type_annotation -> COLON type_expr
-## In state 157, spurious reduction of production option(type_annotation) -> type_annotation
+## In state 157, spurious reduction of production type_annotation -> COLON type_expr
+## In state 158, spurious reduction of production option(type_annotation) -> type_annotation
##
contract: Let Ident WILD EQ With
##
-## Ends in an error in state: 159.
+## Ends in an error in state: 160.
##
## let_binding -> Ident nseq(sub_irrefutable) option(type_annotation) EQ . expr [ Type Let In EOF Attr ]
##
@@ -2937,7 +3828,7 @@ contract: Let Ident WILD EQ With
contract: Let Ident WILD WILD With
##
-## Ends in an error in state: 151.
+## Ends in an error in state: 152.
##
## seq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ]
##
@@ -2949,7 +3840,7 @@ contract: Let Ident WILD WILD With
contract: Let Ident WILD With
##
-## Ends in an error in state: 150.
+## Ends in an error in state: 151.
##
## nseq(sub_irrefutable) -> sub_irrefutable . seq(sub_irrefutable) [ EQ COLON ]
##
@@ -2961,7 +3852,7 @@ contract: Let Ident WILD With
contract: Let Ident With
##
-## Ends in an error in state: 149.
+## Ends in an error in state: 150.
##
## let_binding -> Ident . nseq(sub_irrefutable) option(type_annotation) EQ expr [ Type Let In EOF Attr ]
## sub_irrefutable -> Ident . [ EQ COMMA COLON ]
@@ -2974,7 +3865,7 @@ contract: Let Ident With
contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With
##
-## Ends in an error in state: 127.
+## Ends in an error in state: 128.
##
## nsepseq(field_pattern,SEMI) -> field_pattern SEMI . nsepseq(field_pattern,SEMI) [ RBRACE ]
## seq(__anonymous_0(field_pattern,SEMI)) -> field_pattern SEMI . seq(__anonymous_0(field_pattern,SEMI)) [ RBRACE ]
@@ -2987,7 +3878,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes SEMI With
contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With
##
-## Ends in an error in state: 126.
+## Ends in an error in state: 127.
##
## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ]
## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ]
@@ -3001,7 +3892,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI Ident EQ Bytes With
contract: Let LBRACE Ident EQ Bytes SEMI With
##
-## Ends in an error in state: 123.
+## Ends in an error in state: 124.
##
## nsepseq(field_pattern,SEMI) -> field_pattern SEMI . nsepseq(field_pattern,SEMI) [ RBRACE ]
## nseq(__anonymous_0(field_pattern,SEMI)) -> field_pattern SEMI . seq(__anonymous_0(field_pattern,SEMI)) [ RBRACE ]
@@ -3014,7 +3905,7 @@ contract: Let LBRACE Ident EQ Bytes SEMI With
contract: Let LBRACE Ident EQ Bytes With
##
-## Ends in an error in state: 122.
+## Ends in an error in state: 123.
##
## nsepseq(field_pattern,SEMI) -> field_pattern . [ RBRACE ]
## nsepseq(field_pattern,SEMI) -> field_pattern . SEMI nsepseq(field_pattern,SEMI) [ RBRACE ]
@@ -3064,7 +3955,7 @@ contract: Let LBRACE With
contract: Let LPAR Constr C_Some With
##
-## Ends in an error in state: 80.
+## Ends in an error in state: 81.
##
## constr_pattern -> C_Some . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ]
##
@@ -3076,7 +3967,7 @@ contract: Let LPAR Constr C_Some With
contract: Let LPAR Constr Constr With
##
-## Ends in an error in state: 79.
+## Ends in an error in state: 80.
##
## constr_pattern -> Constr . [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ]
## constr_pattern -> Constr . sub_pattern [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ]
@@ -3089,7 +3980,7 @@ contract: Let LPAR Constr Constr With
contract: Let LPAR Constr LBRACKET WILD RPAR
##
-## Ends in an error in state: 92.
+## Ends in an error in state: 93.
##
## nsepseq(tail,SEMI) -> tail . [ RBRACKET ]
## nsepseq(tail,SEMI) -> tail . SEMI nsepseq(tail,SEMI) [ RBRACKET ]
@@ -3102,14 +3993,14 @@ contract: Let LPAR Constr LBRACKET WILD RPAR
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 96, spurious reduction of production tail -> sub_pattern
+## In state 97, spurious reduction of production tail -> sub_pattern
##
contract: Let LPAR Constr LBRACKET WILD SEMI WILD RPAR
##
-## Ends in an error in state: 94.
+## Ends in an error in state: 95.
##
## nsepseq(tail,SEMI) -> tail . [ RBRACKET ]
## nsepseq(tail,SEMI) -> tail . SEMI nsepseq(tail,SEMI) [ RBRACKET ]
@@ -3122,14 +4013,14 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD RPAR
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 96, spurious reduction of production tail -> sub_pattern
+## In state 97, spurious reduction of production tail -> sub_pattern
##
contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI With
##
-## Ends in an error in state: 95.
+## Ends in an error in state: 96.
##
## nsepseq(tail,SEMI) -> tail SEMI . nsepseq(tail,SEMI) [ RBRACKET ]
## seq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ]
@@ -3142,7 +4033,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI WILD SEMI With
contract: Let LPAR Constr LBRACKET WILD SEMI With
##
-## Ends in an error in state: 93.
+## Ends in an error in state: 94.
##
## nsepseq(tail,SEMI) -> tail SEMI . nsepseq(tail,SEMI) [ RBRACKET ]
## nseq(__anonymous_0(tail,SEMI)) -> tail SEMI . seq(__anonymous_0(tail,SEMI)) [ RBRACKET ]
@@ -3155,7 +4046,7 @@ contract: Let LPAR Constr LBRACKET WILD SEMI With
contract: Let LPAR Constr LBRACKET With
##
-## Ends in an error in state: 75.
+## Ends in an error in state: 76.
##
## list__(tail) -> LBRACKET . option(sep_or_term_list(tail,SEMI)) RBRACKET [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ]
##
@@ -3167,7 +4058,7 @@ contract: Let LPAR Constr LBRACKET With
contract: Let LPAR Constr LPAR WILD COMMA WILD COMMA With
##
-## Ends in an error in state: 112.
+## Ends in an error in state: 113.
##
## nsepseq(tail,COMMA) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ]
##
@@ -3179,7 +4070,7 @@ contract: Let LPAR Constr LPAR WILD COMMA WILD COMMA With
contract: Let LPAR Constr LPAR WILD COMMA WILD SEMI
##
-## Ends in an error in state: 111.
+## Ends in an error in state: 112.
##
## nsepseq(tail,COMMA) -> tail . [ RPAR ]
## nsepseq(tail,COMMA) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ]
@@ -3191,14 +4082,14 @@ contract: Let LPAR Constr LPAR WILD COMMA WILD SEMI
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 96, spurious reduction of production tail -> sub_pattern
+## In state 97, spurious reduction of production tail -> sub_pattern
##
contract: Let LPAR Constr LPAR WILD COMMA With
##
-## Ends in an error in state: 110.
+## Ends in an error in state: 111.
##
## tuple(tail) -> tail COMMA . nsepseq(tail,COMMA) [ RPAR ]
##
@@ -3210,7 +4101,7 @@ contract: Let LPAR Constr LPAR WILD COMMA With
contract: Let LPAR Constr LPAR WILD CONS With
##
-## Ends in an error in state: 97.
+## Ends in an error in state: 98.
##
## tail -> sub_pattern CONS . tail [ SEMI RPAR RBRACKET COMMA ARROW ]
##
@@ -3222,7 +4113,7 @@ contract: Let LPAR Constr LPAR WILD CONS With
contract: Let LPAR Constr LPAR WILD SEMI
##
-## Ends in an error in state: 108.
+## Ends in an error in state: 109.
##
## par(tail) -> LPAR tail . RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ]
## tuple(tail) -> tail . COMMA nsepseq(tail,COMMA) [ RPAR ]
@@ -3234,14 +4125,14 @@ contract: Let LPAR Constr LPAR WILD SEMI
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 96, spurious reduction of production tail -> sub_pattern
+## In state 97, spurious reduction of production tail -> sub_pattern
##
contract: Let LPAR Constr LPAR WILD With
##
-## Ends in an error in state: 96.
+## Ends in an error in state: 97.
##
## tail -> sub_pattern . [ SEMI RPAR RBRACKET COMMA ARROW ]
## tail -> sub_pattern . CONS tail [ SEMI RPAR RBRACKET COMMA ARROW ]
@@ -3254,7 +4145,7 @@ contract: Let LPAR Constr LPAR WILD With
contract: Let LPAR Constr LPAR With
##
-## Ends in an error in state: 74.
+## Ends in an error in state: 75.
##
## par(ptuple) -> LPAR . ptuple RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ]
## par(tail) -> LPAR . tail RPAR [ SEMI RPAR RBRACKET RBRACE CONS COMMA ARROW ]
@@ -3268,7 +4159,7 @@ contract: Let LPAR Constr LPAR With
contract: Let LPAR Constr WILD With
##
-## Ends in an error in state: 147.
+## Ends in an error in state: 148.
##
## par(closed_irrefutable) -> LPAR closed_irrefutable . RPAR [ WILD RPAR LPAR LBRACE Ident EQ Constr COMMA COLON ARROW ]
##
@@ -3280,7 +4171,7 @@ contract: Let LPAR Constr WILD With
contract: Let LPAR Constr With
##
-## Ends in an error in state: 130.
+## Ends in an error in state: 131.
##
## closed_irrefutable -> Constr . sub_pattern [ RPAR ]
## sub_irrefutable -> Constr . [ RPAR COMMA COLON ]
@@ -3293,7 +4184,7 @@ contract: Let LPAR Constr With
contract: Let LPAR WILD COLON With
##
-## Ends in an error in state: 145.
+## Ends in an error in state: 146.
##
## typed_pattern -> irrefutable COLON . type_expr [ RPAR ]
##
@@ -3305,7 +4196,7 @@ contract: Let LPAR WILD COLON With
contract: Let LPAR WILD WILD
##
-## Ends in an error in state: 144.
+## Ends in an error in state: 145.
##
## closed_irrefutable -> irrefutable . [ RPAR ]
## typed_pattern -> irrefutable . COLON type_expr [ RPAR ]
@@ -3317,7 +4208,7 @@ contract: Let LPAR WILD WILD
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 135, spurious reduction of production irrefutable -> sub_irrefutable
+## In state 136, spurious reduction of production irrefutable -> sub_irrefutable
##
@@ -3337,7 +4228,7 @@ contract: Let LPAR With
contract: Let Rec WILD EQ Bytes With
##
-## Ends in an error in state: 515.
+## Ends in an error in state: 586.
##
## let_declaration -> Let Rec let_binding . seq(Attr) [ Type Let EOF ]
##
@@ -3348,19 +4239,19 @@ contract: Let Rec WILD EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
@@ -3379,7 +4270,7 @@ contract: Let Rec With
contract: Let WILD COLON Ident VBAR
##
-## Ends in an error in state: 387.
+## Ends in an error in state: 375.
##
## let_binding -> irrefutable option(type_annotation) . EQ expr [ Type Let In EOF Attr ]
##
@@ -3393,15 +4284,15 @@ contract: Let WILD COLON Ident VBAR
## In state 28, spurious reduction of production cartesian -> core_type
## In state 36, spurious reduction of production fun_type -> cartesian
## In state 27, spurious reduction of production type_expr -> fun_type
-## In state 156, spurious reduction of production type_annotation -> COLON type_expr
-## In state 157, spurious reduction of production option(type_annotation) -> type_annotation
+## In state 157, spurious reduction of production type_annotation -> COLON type_expr
+## In state 158, spurious reduction of production option(type_annotation) -> type_annotation
##
contract: Let WILD COLON With
##
-## Ends in an error in state: 155.
+## Ends in an error in state: 156.
##
## type_annotation -> COLON . type_expr [ EQ ]
##
@@ -3413,7 +4304,7 @@ contract: Let WILD COLON With
contract: Let WILD COMMA WILD COMMA With
##
-## Ends in an error in state: 139.
+## Ends in an error in state: 140.
##
## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ]
##
@@ -3425,7 +4316,7 @@ contract: Let WILD COMMA WILD COMMA With
contract: Let WILD COMMA WILD With
##
-## Ends in an error in state: 138.
+## Ends in an error in state: 139.
##
## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ]
## nsepseq(sub_irrefutable,COMMA) -> sub_irrefutable . COMMA nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ]
@@ -3438,7 +4329,7 @@ contract: Let WILD COMMA WILD With
contract: Let WILD COMMA With
##
-## Ends in an error in state: 136.
+## Ends in an error in state: 137.
##
## tuple(sub_irrefutable) -> sub_irrefutable COMMA . nsepseq(sub_irrefutable,COMMA) [ WILD RPAR LPAR LBRACE Ident EQ Constr COLON ARROW ]
##
@@ -3450,7 +4341,7 @@ contract: Let WILD COMMA With
contract: Let WILD EQ Bytes Attr With
##
-## Ends in an error in state: 172.
+## Ends in an error in state: 174.
##
## seq(Attr) -> Attr . seq(Attr) [ Type Let In EOF ]
##
@@ -3462,7 +4353,7 @@ contract: Let WILD EQ Bytes Attr With
contract: Let WILD EQ Bytes With
##
-## Ends in an error in state: 517.
+## Ends in an error in state: 588.
##
## let_declaration -> Let let_binding . seq(Attr) [ Type Let EOF ]
##
@@ -3473,26 +4364,26 @@ contract: Let WILD EQ Bytes With
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 226, spurious reduction of production call_expr_level -> core_expr
-## In state 233, spurious reduction of production unary_expr_level -> call_expr_level
-## In state 215, spurious reduction of production mult_expr_level -> unary_expr_level
-## In state 223, spurious reduction of production add_expr_level -> mult_expr_level
-## In state 263, spurious reduction of production cons_expr_level -> add_expr_level
-## In state 253, spurious reduction of production cat_expr_level -> cons_expr_level
-## In state 285, spurious reduction of production comp_expr_level -> cat_expr_level
-## In state 292, spurious reduction of production conj_expr_level -> comp_expr_level
-## In state 299, spurious reduction of production disj_expr_level -> conj_expr_level
-## In state 251, spurious reduction of production base_expr(expr) -> disj_expr_level
-## In state 305, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
-## In state 306, spurious reduction of production expr -> base_cond__open(expr)
-## In state 389, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
+## In state 224, spurious reduction of production call_expr_level -> core_expr
+## In state 231, spurious reduction of production unary_expr_level -> call_expr_level
+## In state 218, spurious reduction of production mult_expr_level -> unary_expr_level
+## In state 221, spurious reduction of production add_expr_level -> mult_expr_level
+## In state 311, spurious reduction of production cons_expr_level -> add_expr_level
+## In state 301, spurious reduction of production cat_expr_level -> cons_expr_level
+## In state 333, spurious reduction of production comp_expr_level -> cat_expr_level
+## In state 340, spurious reduction of production conj_expr_level -> comp_expr_level
+## In state 347, spurious reduction of production disj_expr_level -> conj_expr_level
+## In state 368, spurious reduction of production base_expr(expr) -> disj_expr_level
+## In state 370, spurious reduction of production base_cond__open(expr) -> base_expr(expr)
+## In state 371, spurious reduction of production expr -> base_cond__open(expr)
+## In state 377, spurious reduction of production let_binding -> irrefutable option(type_annotation) EQ expr
##
contract: Let WILD EQ With
##
-## Ends in an error in state: 388.
+## Ends in an error in state: 376.
##
## let_binding -> irrefutable option(type_annotation) EQ . expr [ Type Let In EOF Attr ]
##
@@ -3504,7 +4395,7 @@ contract: Let WILD EQ With
contract: Let WILD WILD
##
-## Ends in an error in state: 386.
+## Ends in an error in state: 374.
##
## let_binding -> irrefutable . option(type_annotation) EQ expr [ Type Let In EOF Attr ]
##
@@ -3515,14 +4406,14 @@ contract: Let WILD WILD
## This implies that, although the LR(1) items shown above provide an
## accurate view of the past (what has been recognized so far), they
## may provide an INCOMPLETE view of the future (what was expected next).
-## In state 135, spurious reduction of production irrefutable -> sub_irrefutable
+## In state 136, spurious reduction of production irrefutable -> sub_irrefutable
##