java: clean up the definition of token kinds

From

    public interface Lexer {
      /* Token kinds.  */
      /** Token number, to be returned by the scanner.  */
      static final int YYEOF = 0;
      /** Token number, to be returned by the scanner.  */
      static final int YYERRCODE = 256;
      /** Token number, to be returned by the scanner.  */
      static final int YYUNDEF = 257;
      /** Token number, to be returned by the scanner.  */
      static final int BANG = 258;
    ...
      /** Deprecated, use b4_symbol(0, id) instead.  */
      public static final int EOF = YYEOF;

to

    public interface Lexer {
      /* Token kinds.  */
      /** Token "end of file", to be returned by the scanner.  */
      static final int YYEOF = 0;
      /** Token error, to be returned by the scanner.  */
      static final int YYerror = 256;
      /** Token "invalid token", to be returned by the scanner.  */
      static final int YYUNDEF = 257;
      /** Token "!", to be returned by the scanner.  */
      static final int BANG = 258;
    ...
      /** Deprecated, use YYEOF instead.  */
      public static final int EOF = YYEOF;

* data/skeletons/java.m4 (b4_token_enum): Display the symbol's tag in
comment.
* data/skeletons/lalr1.java: Address overquotation issue.
* examples/java/calc/Calc.y, examples/java/simple/Calc.y: Use YYEOF,
not EOF.
This commit is contained in:
Akim Demaille
2020-04-28 07:46:33 +02:00
parent cd4e799da4
commit 11027558c8
6 changed files with 16 additions and 7 deletions

4
TODO
View File

@@ -84,6 +84,10 @@ Also do it in data/skeletons.
Don't rename in Bison 3.6 (it would be logical to do so) because that Don't rename in Bison 3.6 (it would be logical to do so) because that
would probably create many conflicts in Vincent's work (see previous point). would probably create many conflicts in Vincent's work (see previous point).
** A dev warning for b4_
Maybe we should check for m4_ and b4_ leaking out of the m4 processing, as
Autoconf does. It would have caught overquotation issues.
* Bison 3.8 * Bison 3.8
** Unit rules / Injection rules (Akim Demaille) ** Unit rules / Injection rules (Akim Demaille)
Maybe we could expand unit rules (or "injections", see Maybe we could expand unit rules (or "injections", see

View File

@@ -137,9 +137,14 @@ m4_define([b4_integral_parser_table_define],
# ------------------------ # ------------------------
# Output the definition of this token as an enum. # Output the definition of this token as an enum.
m4_define([b4_token_enum], m4_define([b4_token_enum],
[b4_token_format([ /** Token number, to be returned by the scanner. */ [b4_token_visible_if([$1],
static final int %s = %s; [m4_format([[ /** Token %s, to be returned by the scanner. */
], [$1])]) static final int %s = %s%s;
]],
b4_symbol([$1], [tag]),
b4_symbol([$1], [id]),
b4_symbol([$1], b4_api_token_raw_if([[number]], [[user_number]])))])])
# b4_token_enums # b4_token_enums
# -------------- # --------------

View File

@@ -180,7 +180,7 @@ import java.text.MessageFormat;
*/ */
public interface Lexer { public interface Lexer {
]b4_token_enums[ ]b4_token_enums[
/** Deprecated, use b4_symbol(0, id) instead. */ /** Deprecated, use ]b4_symbol(0, id)[ instead. */
public static final int EOF = ]b4_symbol(0, id)[; public static final int EOF = ]b4_symbol(0, id)[;
]b4_locations_if([[ ]b4_locations_if([[

View File

@@ -150,7 +150,7 @@ class CalcLexer implements Calc.Lexer {
end.set(reader.getPosition()); end.set(reader.getPosition());
switch (ttype) { switch (ttype) {
case StreamTokenizer.TT_EOF: case StreamTokenizer.TT_EOF:
return EOF; return YYEOF;
case StreamTokenizer.TT_EOL: case StreamTokenizer.TT_EOL:
end.line += 1; end.line += 1;
end.column = 0; end.column = 0;

View File

@@ -93,7 +93,7 @@ class CalcLexer implements Calc.Lexer {
int ttype = st.nextToken(); int ttype = st.nextToken();
switch (ttype) { switch (ttype) {
case StreamTokenizer.TT_EOF: case StreamTokenizer.TT_EOF:
return EOF; return YYEOF;
case StreamTokenizer.TT_EOL: case StreamTokenizer.TT_EOL:
return (int) '\n'; return (int) '\n';
case StreamTokenizer.TT_WORD: case StreamTokenizer.TT_WORD:

View File

@@ -392,7 +392,7 @@ m4_define([AT_CALC_YYLEX(java)],
switch (tkind) switch (tkind)
{ {
case StreamTokenizer.TT_EOF: case StreamTokenizer.TT_EOF:
return EOF; return CALC_EOF;
case StreamTokenizer.TT_EOL:;]AT_LOCATION_IF([[ case StreamTokenizer.TT_EOL:;]AT_LOCATION_IF([[
end.line += 1; end.line += 1;
end.column = 0;]])[ end.column = 0;]])[