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.
This commit is contained in:
Akim Demaille
2020-02-02 17:29:21 +01:00
parent 48be689a73
commit 0f587e9931
2 changed files with 19 additions and 19 deletions

View File

@@ -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;
}
}

View File

@@ -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;
}
}