diff options
author | Akim Demaille <akim.demaille@gmail.com> | 2020-02-02 17:29:21 +0100 |
---|---|---|
committer | Akim Demaille <akim.demaille@gmail.com> | 2020-02-05 13:17:00 +0100 |
commit | 0f587e9931580f297a968c0e6d06e865b43736a0 (patch) | |
tree | e5eafca050d9659a581526013a71008a9588ab68 /examples | |
parent | 48be689a73c9f1d048eace66afc184dc2c86ff79 (diff) | |
download | bison-0f587e9931580f297a968c0e6d06e865b43736a0.tar.gz |
java: examples: prefer switch to chains of else-if
* examples/java/calc/Calc.y, examples/java/simple/Calc.y: here.
* examples/java/simple/Calc.y: Use the tokenizer's handling of blanks.
Diffstat (limited to 'examples')
-rw-r--r-- | examples/java/calc/Calc.y | 19 | ||||
-rw-r--r-- | examples/java/simple/Calc.y | 19 |
2 files changed, 19 insertions, 19 deletions
diff --git a/examples/java/calc/Calc.y b/examples/java/calc/Calc.y index dc3f99df..7a682860 100644 --- a/examples/java/calc/Calc.y +++ b/examples/java/calc/Calc.y @@ -118,23 +118,22 @@ class CalcLexer implements Calc.Lexer { start.set (end); int ttype = st.nextToken (); end.set (reader.getPosition ()); - if (ttype == st.TT_EOF) - return EOF; - else if (ttype == st.TT_EOL) + switch (ttype) { + case StreamTokenizer.TT_EOF: + return EOF; + case StreamTokenizer.TT_EOL: end.line += 1; end.column = 0; return (int) '\n'; - } - else if (ttype == st.TT_WORD) - { + case StreamTokenizer.TT_WORD: yylval = new Integer (st.sval); return NUM; + case ' ': case '\t': + return yylex (); + default: + return ttype; } - else if (st.ttype == ' ' || st.ttype == '\t') - return yylex (); - else - return st.ttype; } } diff --git a/examples/java/simple/Calc.y b/examples/java/simple/Calc.y index 0337e49d..e6c39df9 100644 --- a/examples/java/simple/Calc.y +++ b/examples/java/simple/Calc.y @@ -76,6 +76,8 @@ class CalcLexer implements Calc.Lexer { st = new StreamTokenizer (new InputStreamReader (is)); st.resetSyntax (); st.eolIsSignificant (true); + st.whitespaceChars ('\t', '\t'); + st.whitespaceChars (' ', ' '); st.wordChars ('0', '9'); } @@ -92,18 +94,17 @@ class CalcLexer implements Calc.Lexer { public int yylex () throws IOException { int ttype = st.nextToken (); - if (ttype == st.TT_EOF) - return EOF; - else if (ttype == st.TT_EOL) - return (int) '\n'; - else if (ttype == st.TT_WORD) + switch (ttype) { + case StreamTokenizer.TT_EOF: + return EOF; + case StreamTokenizer.TT_EOL: + return (int) '\n'; + case StreamTokenizer.TT_WORD: yylval = new Integer (st.sval); return NUM; + default: + return ttype; } - else if (st.ttype == ' ' || st.ttype == '\t') - return yylex (); - else - return st.ttype; } } |