diff options
author | Tim Landscheidt <tim@tim-landscheidt.de> | 2012-02-12 01:29:41 +0000 |
---|---|---|
committer | Akim Demaille <akim@lrde.epita.fr> | 2012-03-27 15:21:28 +0200 |
commit | e34e97bcd736ab3193bfd3abd4162db3b159836d (patch) | |
tree | 3b21b42702572bd4e6ec24b562c059c96b0ede35 /tests/java.at | |
parent | bbaf618c3e9a5645c5d71bf2ea0de2bdeb8a4976 (diff) | |
download | bison-e34e97bcd736ab3193bfd3abd4162db3b159836d.tar.gz |
Java: Fix syntax error handling without error token.
* data/lalr1.java (YYParser::parse): Here.
* tests/java.at: Add test case.
Diffstat (limited to 'tests/java.at')
-rw-r--r-- | tests/java.at | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/tests/java.at b/tests/java.at index e16701df..b9e9deee 100644 --- a/tests/java.at +++ b/tests/java.at @@ -749,3 +749,69 @@ AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Position']], [1], [ignore]) AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Location']], [1], [ignore]) AT_CLEANUP + + +# ----------------------------------------------- # +# Java syntax error handling without error token. # +# ----------------------------------------------- # + +AT_SETUP([Java syntax error handling without error token]) + +AT_DATA([[YYParser.y]], [[%language "Java" + +%lex-param { String s } + +%code imports { + import java.io.IOException; +} + +%code lexer { + String Input; + int Position; + + public YYLexer (String s) + { + Input = s; + Position = 0; + } + + public void yyerror (String s) + { + System.err.println (s); + } + + public Object getLVal () + { + return null; + } + + public int yylex () throws IOException + { + if (Position >= Input.length ()) + return EOF; + else + return Input.charAt (Position++); + } +} + +%code { + public static void main (String args []) throws IOException + { + YYParser p = new YYParser (args [0]); + p.parse (); + } +} +%% +input: + 'a' 'a' +; +]]) +AT_BISON_CHECK([[YYParser.y]]) +AT_JAVA_COMPILE([[YYParser.java]]) +AT_JAVA_PARSER_CHECK([[YYParser aa]], [[0]], [[]], [[]]) +AT_JAVA_PARSER_CHECK([[YYParser ab]], [[0]], [[]], [[syntax error +]]) +AT_JAVA_PARSER_CHECK([[YYParser ba]], [[0]], [[]], [[syntax error +]]) + +AT_CLEANUP |