rust/src/grammar
Carol Nichols e70c8584d5 Revert "Panic if the grammar verifier sees a token it doesn't recognize"
This reverts commit 9c7d5ae57c.

This was wrong... the `continue` was to ignore the latter half of the
tokens file. Another mechanism will have to be used to keep the model
grammar's tokens in sync with the actual grammar's tokens :-/
2015-05-17 10:48:42 -04:00
..
.gitignore
check.sh Model lexer: Fix remaining issues 2015-04-21 12:02:12 +02:00
lexer.l
parser-lalr-main.c
parser-lalr.y Functional changes for associated constants. Cross-crate usage of associated constants is not yet working. 2015-04-23 21:02:26 -06:00
raw-string-literal-ambiguity.md
README.md Model lexer: Fix remaining issues 2015-04-21 12:02:12 +02:00
RustLexer.g4 Declare other tokens used later in the reference grammar 2015-05-05 19:47:50 -04:00
testparser.py Move compile-fail tests that are rejected by the parser to parse-fail 2015-02-06 22:23:16 +01:00
tokens.h
verify.rs Revert "Panic if the grammar verifier sees a token it doesn't recognize" 2015-05-17 10:48:42 -04:00
xidcontinue.g4 Finished unicode support in the model lexer. 2015-04-19 23:05:32 +02:00
xidstart.g4 Finished unicode support in the model lexer. 2015-04-19 23:05:32 +02:00

Reference grammar.

Uses antlr4 and a custom Rust tool to compare ASTs/token streams generated. You can use the check-lexer make target to run all of the available tests.

To use manually:

antlr4 RustLexer.g4
javac *.java
rustc -O verify.rs
for file in ../*/**.rs; do
    echo $file;
    grun RustLexer tokens -tokens < "$file" | ./verify "$file" RustLexer.tokens || break
done

Note That the ../*/**.rs glob will match every *.rs file in the above directory and all of its recursive children. This is a zsh extension.