From b6f6c99c3c502418026b979ae871c899304cbd3d Mon Sep 17 00:00:00 2001
From: Sam Harwell
Date: Sun, 19 Jan 2014 19:53:54 -0600
Subject: [PATCH] Updated documentation for ErrorType
---
tool/src/org/antlr/v4/tool/ErrorType.java | 745 ++++++++++++++++++++--
1 file changed, 701 insertions(+), 44 deletions(-)
diff --git a/tool/src/org/antlr/v4/tool/ErrorType.java b/tool/src/org/antlr/v4/tool/ErrorType.java
index 4e7222754..451a03a41 100644
--- a/tool/src/org/antlr/v4/tool/ErrorType.java
+++ b/tool/src/org/antlr/v4/tool/ErrorType.java
@@ -30,6 +30,7 @@
package org.antlr.v4.tool;
import org.antlr.v4.Tool;
+import org.antlr.v4.runtime.Lexer;
/**
* A complex enumeration of all the error messages that the tool can issue.
@@ -42,97 +43,577 @@ import org.antlr.v4.Tool;
* @since 4.0
*/
public enum ErrorType {
- // Tool errors
+ /*
+ * Tool errors
+ */
+
+ /**
+ * Compiler Error 1.
+ *
+ * cannot write file 'filename': reason
+ */
CANNOT_WRITE_FILE(1, "cannot write file '': ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 2.
+ *
+ * unknown command-line option 'option'
+ */
INVALID_CMDLINE_ARG(2, "unknown command-line option ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 3.
+ *
+ * cannot find tokens file 'filename'
+ */
CANNOT_FIND_TOKENS_FILE(3, "cannot find tokens file ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 4.
+ *
+ * cannot find tokens file 'filename': reason
+ */
ERROR_READING_TOKENS_FILE(4, "cannot find tokens file '': ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 5.
+ *
+ * directory not found: directory
+ */
DIR_NOT_FOUND(5, "directory not found: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 6.
+ *
+ * output directory is a file: filename
+ */
OUTPUT_DIR_IS_FILE(6, "output directory is a file: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 7.
+ *
+ * cannot find or open file: filename
+ */
CANNOT_OPEN_FILE(7, "cannot find or open file: ; reason: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 8.
+ *
+ *
+ * grammar name 'name' and file name 'filename' differ
+ */
FILE_AND_GRAMMAR_NAME_DIFFER(8, "grammar name '' and file name '' differ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 9.
+ *
+ * invalid {@code -Dname=value} syntax: 'syntax'
+ */
BAD_OPTION_SET_SYNTAX(9, "invalid -Dname=value syntax: ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 10.
+ *
+ * warning treated as error
+ */
WARNING_TREATED_AS_ERROR(10, "warning treated as error", ErrorSeverity.ERROR_ONE_OFF),
+ /**
+ * Compiler Error 20.
+ *
+ * internal error: message
+ */
INTERNAL_ERROR(20, "internal error: : " +
"", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 21.
+ *
+ * .tokens file syntax error filename: message
+ */
TOKENS_FILE_SYNTAX_ERROR(21, ".tokens file syntax error :", ErrorSeverity.ERROR),
+ /**
+ * Compiler Warning 22.
+ *
+ * template error: message
+ */
STRING_TEMPLATE_WARNING(22, "template error: : " +
"", ErrorSeverity.WARNING),
- // Code generation errors
+ /*
+ * Code generation errors
+ */
+
+ /**
+ * Compiler Error 30.
+ *
+ * can't find code generation templates: group
+ */
MISSING_CODE_GEN_TEMPLATES(30, "can't find code generation templates: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 31.
+ *
+ *
+ * ANTLR cannot generate 'language' code as of version
+ * version
+ */
CANNOT_CREATE_TARGET_GENERATOR(31, "ANTLR cannot generate '' code as of version "+ Tool.VERSION, ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 32.
+ *
+ *
+ * code generation template 'template' has missing, misnamed, or
+ * incomplete arg list; missing 'field'
+ */
CODE_TEMPLATE_ARG_ISSUE(32, "code generation template '' has missing, misnamed, or incomplete arg list; missing ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 33.
+ *
+ * missing code generation template 'template'
+ */
CODE_GEN_TEMPLATES_INCOMPLETE(33, "missing code generation template ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 34.
+ *
+ *
+ * no mapping to template name for output model class 'class'
+ */
NO_MODEL_TO_TEMPLATE_MAPPING(34, "no mapping to template name for output model class ''", ErrorSeverity.ERROR),
- // Grammar errors
+ /*
+ * Grammar errors
+ */
+
+ /**
+ * Compiler Error 50.
+ *
+ * syntax error: message
+ */
SYNTAX_ERROR(50, "syntax error: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 51.
+ *
+ * rule 'rule' redefinition; previous at line line
+ */
RULE_REDEFINITION(51, "rule '' redefinition; previous at line ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 52.
+ *
+ * lexer rule 'rule' not allowed in parser
+ */
LEXER_RULES_NOT_ALLOWED(52, "lexer rule '' not allowed in parser", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 53.
+ *
+ * parser rule 'rule' not allowed in lexer
+ */
PARSER_RULES_NOT_ALLOWED(53, "parser rule '' not allowed in lexer", ErrorSeverity.ERROR),
- REPEATED_PREQUEL(54, "repeated grammar prequel spec (option, token, or import); please merge", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 54.
+ *
+ *
+ * repeated grammar prequel spec ({@code options}, {@code tokens}, or
+ * {@code import}); please merge
+ */
+ REPEATED_PREQUEL(54, "repeated grammar prequel spec (options, tokens, or import); please merge", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 56.
+ *
+ * reference to undefined rule: rule
+ */
UNDEFINED_RULE_REF(56, "reference to undefined rule: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 57.
+ *
+ *
+ * reference to undefined rule 'rule' in non-local ref
+ * 'reference'
+ */
UNDEFINED_RULE_IN_NONLOCAL_REF(57, "reference to undefined rule '' in non-local ref ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 60.
+ *
+ * token names must start with an uppercase letter: name
+ */
TOKEN_NAMES_MUST_START_UPPER(60, "token names must start with an uppercase letter: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 63.
+ *
+ *
+ * unknown attribute reference 'attribute' in
+ * 'expression'
+ */
UNKNOWN_SIMPLE_ATTRIBUTE(63, "unknown attribute reference '' in ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 64.
+ *
+ *
+ * parameter 'parameter' of rule 'rule' is not accessible
+ * in this scope: expression
+ */
INVALID_RULE_PARAMETER_REF(64, "parameter '' of rule '' is not accessible in this scope: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 65.
+ *
+ *
+ * unknown attribute 'attribute' for rule 'rule' in
+ * 'expression'
+ */
UNKNOWN_RULE_ATTRIBUTE(65, "unknown attribute '' for rule '' in ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 66.
+ *
+ *
+ * attribute 'attribute' isn't a valid property in
+ * 'expression'
+ */
UNKNOWN_ATTRIBUTE_IN_SCOPE(66, "attribute '' isn't a valid property in ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 67.
+ *
+ *
+ * missing attribute access on rule reference 'rule' in
+ * 'expression'
+ */
ISOLATED_RULE_REF(67, "missing attribute access on rule reference '' in ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 69.
+ *
+ * label 'label' conflicts with rule with same name
+ */
LABEL_CONFLICTS_WITH_RULE(69, "label '' conflicts with rule with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 70.
+ *
+ * label 'label' conflicts with token with same name
+ */
LABEL_CONFLICTS_WITH_TOKEN(70, "label '' conflicts with token with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 72.
+ *
+ * label 'label' conflicts with parameter with same name
+ */
LABEL_CONFLICTS_WITH_ARG(72, "label '' conflicts with parameter with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 73.
+ *
+ * label 'label' conflicts with return value with same name
+ */
LABEL_CONFLICTS_WITH_RETVAL(73, "label '' conflicts with return value with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 74.
+ *
+ * label 'label' conflicts with local with same name
+ */
LABEL_CONFLICTS_WITH_LOCAL(74, "label '' conflicts with local with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 75.
+ *
+ *
+ * label 'label' type mismatch with previous definition:
+ * message
+ */
LABEL_TYPE_CONFLICT(75, "label '' type mismatch with previous definition: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 76.
+ *
+ *
+ * return value 'name' conflicts with parameter with same name
+ */
RETVAL_CONFLICTS_WITH_ARG(76, "return value '' conflicts with parameter with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 79.
+ *
+ * missing arguments(s) on rule reference: rule
+ */
MISSING_RULE_ARGS(79, "missing arguments(s) on rule reference: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 80.
+ *
+ * rule 'rule' has no defined parameters
+ */
RULE_HAS_NO_ARGS(80, "rule '' has no defined parameters", ErrorSeverity.ERROR),
+ /**
+ * Compiler Warning 83.
+ *
+ * unsupported option 'option'
+ */
ILLEGAL_OPTION(83, "unsupported option ''", ErrorSeverity.WARNING),
+ /**
+ * Compiler Warning 84.
+ *
+ * unsupported option value 'name=value'
+ */
ILLEGAL_OPTION_VALUE(84, "unsupported option value '='", ErrorSeverity.WARNING),
+ /**
+ * Compiler Error 94.
+ *
+ * redefinition of 'action' action
+ */
ACTION_REDEFINITION(94, "redefinition of '' action", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 99.
+ *
+ * This error may take any of the following forms.
+ *
+ *
+ * - grammar 'grammar' has no rules
+ * - implicitly generated grammar 'grammar' has no rules
+ *
+ */
NO_RULES(99, "implicitly generated grammar '' has no rules", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 105.
+ *
+ *
+ * reference to undefined grammar in rule reference:
+ * grammar.rule
+ */
NO_SUCH_GRAMMAR_SCOPE(105, "reference to undefined grammar in rule reference: .", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 106.
+ *
+ * rule 'rule' is not defined in grammar 'grammar'
+ */
NO_SUCH_RULE_IN_SCOPE(106, "rule '' is not defined in grammar ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Warning 108.
+ *
+ * token name 'Token' is already defined
+ */
TOKEN_NAME_REASSIGNMENT(108, "token name '' is already defined", ErrorSeverity.WARNING),
+ /**
+ * Compiler Warning 109.
+ *
+ * options ignored in imported grammar 'grammar'
+ */
OPTIONS_IN_DELEGATE(109, "options ignored in imported grammar ''", ErrorSeverity.WARNING),
+ /**
+ * Compiler Error 110.
+ *
+ *
+ * can't find or load grammar 'grammar' from
+ * 'filename'
+ */
CANNOT_FIND_IMPORTED_GRAMMAR(110, "can't find or load grammar '' from ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 111.
+ *
+ *
+ * grammartype grammar 'grammar1' cannot import
+ * grammartype grammar 'grammar2'
+ */
INVALID_IMPORT(111, " grammar '' cannot import grammar ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 113.
+ *
+ *
+ * grammartype grammar 'grammar1' and imported
+ * grammartype grammar 'grammar2' both generate
+ * 'recognizer'
+ */
IMPORT_NAME_CLASH(113, " grammar '' and imported grammar '' both generate ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Warning 118.
+ *
+ *
+ * all operators of alt 'alt' of left-recursive rule must have same
+ * associativity
+ */
ALL_OPS_NEED_SAME_ASSOC(118, "all operators of alt '' of left-recursive rule must have same associativity", ErrorSeverity.WARNING),
+ /**
+ * Compiler Error 119.
+ *
+ *
+ * The following sets of rules are mutually left-recursive
+ * [rules]
+ */
LEFT_RECURSION_CYCLES(119, "The following sets of rules are mutually left-recursive }; separator=\", \">]}; separator=\" and \">", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 120.
+ *
+ * lexical modes are only allowed in lexer grammars
+ */
MODE_NOT_IN_LEXER(120, "lexical modes are only allowed in lexer grammars", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 121.
+ *
+ * cannot find an attribute name in attribute declaration
+ */
CANNOT_FIND_ATTRIBUTE_NAME_IN_DECL(121, "cannot find an attribute name in attribute declaration", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 122.
+ *
+ * rule 'rule': must label all alternatives or none
+ */
RULE_WITH_TOO_FEW_ALT_LABELS(122, "rule '': must label all alternatives or none", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 123.
+ *
+ *
+ * rule alt label 'label' redefined in rule 'rule1',
+ * originally in rule 'rule2'
+ */
ALT_LABEL_REDEF(123, "rule alt label '' redefined in rule '', originally in rule ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 124.
+ *
+ *
+ * rule alt label 'label' conflicts with rule 'rule'
+ */
ALT_LABEL_CONFLICTS_WITH_RULE(124, "rule alt label '' conflicts with rule ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Warning 125.
+ *
+ * implicit definition of token 'Token' in parser
+ */
IMPLICIT_TOKEN_DEFINITION(125, "implicit definition of token '' in parser", ErrorSeverity.WARNING),
+ /**
+ * Compiler Error 126.
+ *
+ *
+ * cannot create implicit token for string literal in non-combined grammar:
+ * literal
+ */
IMPLICIT_STRING_DEFINITION(126, "cannot create implicit token for string literal in non-combined grammar: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 128.
+ *
+ *
+ * attribute references not allowed in lexer actions:
+ * expression
+ */
ATTRIBUTE_IN_LEXER_ACTION(128, "attribute references not allowed in lexer actions: $", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 130.
+ *
+ * label 'label' assigned to a block which is not a set
+ */
LABEL_BLOCK_NOT_A_SET(130, "label '' assigned to a block which is not a set", ErrorSeverity.ERROR),
+ /**
+ * Compiler Warning 131.
+ *
+ * This warning may take any of the following forms.
+ *
+ *
+ * - greedy block {@code ()*} contains wildcard; the non-greedy syntax {@code ()*?} may be preferred
+ * - greedy block {@code ()+} contains wildcard; the non-greedy syntax {@code ()+?} may be preferred
+ *
+ */
EXPECTED_NON_GREEDY_WILDCARD_BLOCK(131, "greedy block () contains wildcard; the non-greedy syntax ()? may be preferred", ErrorSeverity.WARNING),
+ /**
+ * Compiler Error 132.
+ *
+ *
+ * action in lexer rule 'rule' must be last element of single
+ * outermost alt
+ *
+ * @deprecated This error is no longer issued by ANTLR 4.2.
+ */
@Deprecated
LEXER_ACTION_PLACEMENT_ISSUE(132, "action in lexer rule '' must be last element of single outermost alt", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 133.
+ *
+ *
+ * {@code ->command} in lexer rule 'rule' must be last element of
+ * single outermost alt
+ */
LEXER_COMMAND_PLACEMENT_ISSUE(133, "->command in lexer rule '' must be last element of single outermost alt", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 134.
+ *
+ *
+ * symbol 'symbol' conflicts with generated code in target language
+ * or runtime
+ *
+ *
+ * Note: This error has the same number as the unrelated error
+ * {@link #UNSUPPORTED_REFERENCE_IN_LEXER_SET}.
+ */
USE_OF_BAD_WORD(134, "symbol '' conflicts with generated code in target language or runtime", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 134.
+ *
+ * rule reference 'rule' is not currently supported in a set
+ *
+ *
+ * Note: This error has the same number as the unrelated error
+ * {@link #USE_OF_BAD_WORD}.
+ */
UNSUPPORTED_REFERENCE_IN_LEXER_SET(134, "rule reference '' is not currently supported in a set", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 135.
+ *
+ * cannot assign a value to list label 'label'
+ */
ASSIGNMENT_TO_LIST_LABEL(135, "cannot assign a value to list label ''", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 136.
+ *
+ * return value 'name' conflicts with rule with same name
+ */
RETVAL_CONFLICTS_WITH_RULE(136, "return value '' conflicts with rule with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 137.
+ *
+ * return value 'name' conflicts with token with same name
+ */
RETVAL_CONFLICTS_WITH_TOKEN(137, "return value '' conflicts with token with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 138.
+ *
+ * parameter 'parameter' conflicts with rule with same name
+ */
ARG_CONFLICTS_WITH_RULE(138, "parameter '' conflicts with rule with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 139.
+ *
+ * parameter 'parameter' conflicts with token with same name
+ */
ARG_CONFLICTS_WITH_TOKEN(139, "parameter '' conflicts with token with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 140.
+ *
+ * local 'local' conflicts with rule with same name
+ */
LOCAL_CONFLICTS_WITH_RULE(140, "local '' conflicts with rule with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 141.
+ *
+ * local 'local' conflicts with rule token same name
+ */
LOCAL_CONFLICTS_WITH_TOKEN(141, "local '' conflicts with rule token same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 142.
+ *
+ * local 'local' conflicts with parameter with same name
+ */
LOCAL_CONFLICTS_WITH_ARG(142, "local '' conflicts with parameter with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 143.
+ *
+ * local 'local' conflicts with return value with same name
+ */
LOCAL_CONFLICTS_WITH_RETVAL(143, "local '' conflicts with return value with same name", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 144.
+ *
+ *
+ * multi-character literals are not allowed in lexer sets:
+ * literal
+ */
INVALID_LITERAL_IN_LEXER_SET(144, "multi-character literals are not allowed in lexer sets: ", ErrorSeverity.ERROR),
+ /**
+ * Compiler Error 145.
+ *
+ *
+ * lexer mode 'mode' must contain at least one non-fragment
+ * rule
+ *
+ *
+ * Every lexer mode must contain at least one rule which is not declared
+ * with the {@code fragment} modifier.
+ */
MODE_WITHOUT_RULES(145, "lexer mode '' must contain at least one non-fragment rule", ErrorSeverity.ERROR),
/**
- * All non-fragment lexer rules must match at least one character.
- *
- * The following example shows this error.
+ * Compiler Warning 146.
+ *
+ * non-fragment lexer rule 'rule' can match the empty string
+ *
+ * All non-fragment lexer rules must match at least one character.
+ *
+ * The following example shows this error.
*
*
* Whitespace : [ \t]+; // ok
@@ -145,10 +626,16 @@ public enum ErrorType {
*/
EPSILON_TOKEN(146, "non-fragment lexer rule '' can match the empty string", ErrorSeverity.WARNING),
/**
- * Left-recursive rules must contain at least one alternative which is not
- * left recursive.
- *
- * The following rule produces this error.
+ * Compiler Error 147.
+ *
+ *
+ * left recursive rule 'rule' must contain an alternative which is
+ * not left recursive
+ *
+ * Left-recursive rules must contain at least one alternative which is not
+ * left recursive.
+ *
+ * The following rule produces this error.
*
*
* // error 147:
@@ -159,10 +646,16 @@ public enum ErrorType {
*/
NO_NON_LR_ALTS(147, "left recursive rule '' must contain an alternative which is not left recursive", ErrorSeverity.ERROR),
/**
- * In left-recursive rules, all left-recursive alternatives must match at
- * least one symbol following the recursive rule invocation.
- *
- * The following rule produces this error.
+ * Compiler Error 148.
+ *
+ *
+ * left recursive rule 'rule' contains a left recursive alternative
+ * which can be followed by the empty string
+ *
+ * In left-recursive rules, all left-recursive alternatives must match at
+ * least one symbol following the recursive rule invocation.
+ *
+ * The following rule produces this error.
*
*
* a : ID // ok (alternative is not left recursive)
@@ -173,57 +666,89 @@ public enum ErrorType {
*/
EPSILON_LR_FOLLOW(148, "left recursive rule '' contains a left recursive alternative which can be followed by the empty string", ErrorSeverity.ERROR),
/**
- * Each lexer command requires an explicit implementation in the target
+ * Compiler Error 149.
+ *
+ *
+ * lexer command 'command' does not exist or is not supported by
+ * the current target
+ *
+ * Each lexer command requires an explicit implementation in the target
* templates. This error indicates that the command was incorrectly written
- * or is not supported by the current target.
- *
- * The following rule produces this error.
- *
+ * or is not supported by the current target.
+ *
+ * The following rule produces this error.
+ *
*
* X : 'foo' -> type(Foo); // ok
* Y : 'foo' -> token(Foo); // error 149 (token is not a supported lexer command)
*
+ *
+ * @since 4.1
*/
INVALID_LEXER_COMMAND(149, "lexer command '' does not exist or is not supported by the current target", ErrorSeverity.ERROR),
/**
- * Some lexer commands require an argument.
- *
- * The following rule produces this error.
+ * Compiler Error 150.
+ *
+ * missing argument for lexer command 'command'
+ *
+ * Some lexer commands require an argument.
+ *
+ * The following rule produces this error.
*
*
* X : 'foo' -> type(Foo); // ok
* Y : 'foo' -> type; // error 150 (the type command requires an argument)
*
+ *
+ * @since 4.1
*/
MISSING_LEXER_COMMAND_ARGUMENT(150, "missing argument for lexer command ''", ErrorSeverity.ERROR),
/**
- * A lexer command which does not take parameters was invoked with an
- * argument.
- *
- * The following rule produces this error.
+ * Compiler Error 151.
+ *
+ * lexer command 'command' does not take any arguments
+ *
+ * A lexer command which does not take parameters was invoked with an
+ * argument.
+ *
+ * The following rule produces this error.
*
*
* X : 'foo' -> popMode; // ok
* Y : 'foo' -> popMode(A); // error 151 (the popMode command does not take an argument)
*
+ *
+ * @since 4.1
*/
UNWANTED_LEXER_COMMAND_ARGUMENT(151, "lexer command '' does not take any arguments", ErrorSeverity.ERROR),
/**
- * The parser contains an unterminated string literal.
- *
- * The following rule produces this error.
+ * Compiler Error 152.
+ *
+ * unterminated string literal
+ *
+ * The parser contains an unterminated string literal.
+ *
+ * The following rule produces this error.
*
*
* x : 'x'; // ok
* y : 'y; // error 152
*
+ *
+ * @since 4.1
*/
UNTERMINATED_STRING_LITERAL(152, "unterminated string literal", ErrorSeverity.ERROR),
/**
- * A rule contains a closure ({@code (...)*}) or positive closure
- * ({@code (...)+}) around an empty alternative.
- *
- * The following rule produces this error.
+ * Compiler Error 153.
+ *
+ *
+ * rule 'rule' contains a closure with at least one alternative
+ * that can match an empty string
+ *
+ * A rule contains a closure ({@code (...)*}) or positive closure
+ * ({@code (...)+}) around an empty alternative.
+ *
+ * The following rule produces this error.
*
*
* x : ;
@@ -231,13 +756,21 @@ public enum ErrorType {
* z1 : ('foo' | 'bar'? 'bar2'?)*; // error 153
* z2 : ('foo' | 'bar' 'bar2'? | 'bar2')*; // ok
*
+ *
+ * @since 4.1
*/
EPSILON_CLOSURE(153, "rule '' contains a closure with at least one alternative that can match an empty string", ErrorSeverity.ERROR),
/**
- * A rule contains an optional block ({@code (...)?}) around an empty
- * alternative.
- *
- * The following rule produces this warning.
+ * Compiler Warning 154.
+ *
+ *
+ * rule 'rule' contains an optional block with at least one
+ * alternative that can match an empty string
+ *
+ * A rule contains an optional block ({@code (...)?}) around an empty
+ * alternative.
+ *
+ * The following rule produces this warning.
*
*
* x : ;
@@ -245,16 +778,24 @@ public enum ErrorType {
* z1 : ('foo' | 'bar'? 'bar2'?)?; // warning 154
* z2 : ('foo' | 'bar' 'bar2'? | 'bar2')?; // ok
*
+ *
+ * @since 4.1
*/
EPSILON_OPTIONAL(154, "rule '' contains an optional block with at least one alternative that can match an empty string", ErrorSeverity.WARNING),
/**
- * A lexer rule contains a standard lexer command, but the constant value
+ * Compiler Warning 155.
+ *
+ *
+ * rule 'rule' contains a lexer command with an unrecognized
+ * constant value; lexer interpreters may produce incorrect output
+ *
+ * A lexer rule contains a standard lexer command, but the constant value
* argument for the command is an unrecognized string. As a result, the
* lexer command will be translated as a custom lexer action, preventing the
* command from executing in some interpreted modes. The output of the lexer
- * interpreter may not match the output of the generated lexer.
- *
- * The following rule produces this warning.
+ * interpreter may not match the output of the generated lexer.
+ *
+ * The following rule produces this warning.
*
*
* @members {
@@ -264,17 +805,102 @@ public enum ErrorType {
* X : 'foo' -> channel(HIDDEN); // ok
* Y : 'bar' -> channel(CUSTOM); // warning 155
*
+ *
+ * @since 4.2
*/
UNKNOWN_LEXER_CONSTANT(155, "rule '' contains a lexer command with an unrecognized constant value; lexer interpreters may produce incorrect output", ErrorSeverity.WARNING),
- // Backward incompatibility errors
+ /*
+ * Backward incompatibility errors
+ */
+
+ /**
+ * Compiler Error 200.
+ *
+ * tree grammars are not supported in ANTLR 4
+ *
+ *
+ * This error message is provided as a compatibility notice for users
+ * migrating from ANTLR 3. ANTLR 4 does not support tree grammars, but
+ * instead offers automatically generated parse tree listeners and visitors
+ * as a more maintainable alternative.
+ */
V3_TREE_GRAMMAR(200, "tree grammars are not supported in ANTLR 4", ErrorSeverity.ERROR),
+ /**
+ * Compiler Warning 201.
+ *
+ *
+ * labels in lexer rules are not supported in ANTLR 4; actions cannot
+ * reference elements of lexical rules but you can use
+ * {@link Lexer#getText()} to get the entire text matched for the rule
+ *
+ *
+ * ANTLR 4 uses a DFA for recognition of entire tokens, resulting in faster
+ * and smaller lexers than ANTLR 3 produced. As a result, sub-rules
+ * referenced within lexer rules are not tracked independently, and cannot
+ * be assigned to labels.
+ */
V3_LEXER_LABEL(201, "labels in lexer rules are not supported in ANTLR 4; " +
"actions cannot reference elements of lexical rules but you can use " +
"getText() to get the entire text matched for the rule", ErrorSeverity.WARNING),
+ /**
+ * Compiler Warning 202.
+ *
+ *
+ * '{@code tokens {A; B;}}' syntax is now '{@code tokens {A, B}}' in ANTLR
+ * 4
+ *
+ *
+ * ANTLR 4 uses comma-separated token declarations in the {@code tokens{}}
+ * block. This warning appears when the tokens block is written using the
+ * ANTLR 3 syntax of semicolon-terminated token declarations.
+ *
+ *
+ * NOTE: ANTLR 4 does not allow a trailing comma to appear following the
+ * last token declared in the {@code tokens{}} block.
+ */
V3_TOKENS_SYNTAX(202, "'tokens {A; B;}' syntax is now 'tokens {A, B}' in ANTLR 4", ErrorSeverity.WARNING),
+ /**
+ * Compiler Error 203.
+ *
+ *
+ * assignments in {@code tokens{}} are not supported in ANTLR 4; use lexical
+ * rule 'TokenName : LiteralValue;' instead
+ *
+ *
+ * ANTLR 3 allowed literal tokens to be declared and assigned a value within
+ * the {@code tokens{}} block. ANTLR 4 no longer offers this syntax. When
+ * migrating a grammar from ANTLR 3 to ANTLR 4, any tokens with a literal
+ * value declared in the {@code tokens{}} block should be converted to
+ * standard lexer rules.
+ */
V3_ASSIGN_IN_TOKENS(203, "assignments in tokens{} are not supported in ANTLR 4; use lexical rule ' : ;' instead", ErrorSeverity.ERROR),
+ /**
+ * Compiler Warning 204.
+ *
+ *
+ * {@code {...}?=>} explicitly gated semantic predicates are deprecated in
+ * ANTLR 4; use {@code {...}?} instead
+ *
+ *
+ * ANTLR 4 treats semantic predicates consistently in a manner similar to
+ * gated semantic predicates in ANTLR 3. When migrating a grammar from ANTLR
+ * 3 to ANTLR 4, all uses of the gated semantic predicate syntax can be
+ * safely converted to the standard semantic predicated syntax, which is the
+ * only form used by ANTLR 4.
+ */
V3_GATED_SEMPRED(204, "{...}?=> explicitly gated semantic predicates are deprecated in ANTLR 4; use {...}? instead", ErrorSeverity.WARNING),
+ /**
+ * Compiler Error 205.
+ *
+ * {@code (...)=>} syntactic predicates are not supported in ANTLR 4
+ *
+ *
+ * ANTLR 4's improved lookahead algorithms do not require the use of
+ * syntactic predicates to disambiguate long lookahead sequences. The
+ * syntactic predicates should be removed when migrating a grammar from
+ * ANTLR 3 to ANTLR 4.
+ */
V3_SYNPRED(205, "(...)=> syntactic predicates are not supported in ANTLR 4", ErrorSeverity.ERROR),
// Dependency sorting errors
@@ -283,10 +909,41 @@ public enum ErrorType {
//CIRCULAR_DEPENDENCY(200, "your grammars contain a circular dependency and cannot be sorted into a valid build order", ErrorSeverity.ERROR),
;
+ /**
+ * The error or warning message, in StringTemplate 4 format using {@code <}
+ * and {@code >} as the delimiters. Arguments for the message may be
+ * referenced using the following names:
+ *
+ *
+ * - {@code arg}: The first template argument
+ * - {@code arg2}: The second template argument
+ * - {@code arg3}: The third template argument
+ * - {@code verbose}: {@code true} if verbose messages were requested; otherwise, {@code false}
+ * - {@code exception}: The exception which resulted in the error, if any.
+ * - {@code stackTrace}: The stack trace for the exception, when available.
+ *
+ */
public final String msg;
- public final int code; // unique, deterministic unchanging error code once we release
+ /**
+ * The error or warning number.
+ *
+ * The code should be unique, and following its
+ * use in a release should not be altered or reassigned.
+ */
+ public final int code;
+ /**
+ * The error severity.
+ */
public final ErrorSeverity severity;
+ /**
+ * Constructs a new {@link ErrorType} with the specified code, message, and
+ * severity.
+ *
+ * @param code The unique error number.
+ * @param msg The error message template.
+ * @param severity The error severity.
+ */
ErrorType(int code, String msg, ErrorSeverity severity) {
this.code = code;
this.msg = msg;