I have the following grammar file. When I was running it in Java using ANTLR
works, it compiles without any problem. However, when I was using the Python
target:
# java -cp antlr-3.1.2.jar org.antlr.Tool bibtex.g
It prompts the error:
warning(200): bibtex.g:42:35: Decision can match input such as "'{'" using
multiple alternatives: 1, 2
As a result, alternative(s) 2 were disabled for that input
The grammar file is (I've labeled line 42 below). What's happening?
grammar bibtex;
options {
language=Python;
}
/*------------------------------------------------------------------
* Parser rules
*------------------------------------------------------------------*/
bibtex_file
: bibtex_object*
;
bibtex_object
: '@' ID '{' (ID | LITERAL)? assignment_list '}'
| '@' ID '(' (ID | LITERAL)? assignment_list ')'
;
assignment_list
: assignment (',' assignment)*
;
assignment
: ID '=' value
;
value
: simple_value ('#' simple_value)*
;
simple_value
: ID
| LITERAL
| STRING
| value_braced
;
// matches {...} while allowing nested braces.
value_braced
: '{' ( value_braced | ~'}' )* '}' *<--------------- this
is line 42*
;
/*------------------------------------------------------------------
* Lexer rules
*------------------------------------------------------------------*/
ID : ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*
;
LITERAL
: ('a'..'z'|'A'..'Z'|'0'..'9'|'_'|'-'|'/')+
;
COMMENT
: '%%' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
;
WS : ( ' '
| '\t'
| '\r'
| '\n'
) {$channel=HIDDEN;}
;
STRING
: '"' ( ESC_SEQ | ~('\\'|'"') )* '"'
;
CHAR: '\'' ( ESC_SEQ | ~('\''|'\\') ) '\''
;
fragment
HEX_DIGIT : ('0'..'9'|'a'..'f'|'A'..'F') ;
fragment
ESC_SEQ
: '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
| UNICODE_ESC
| OCTAL_ESC
;
fragment
OCTAL_ESC
: '\\' ('0'..'3') ('0'..'7') ('0'..'7')
| '\\' ('0'..'7') ('0'..'7')
| '\\' ('0'..'7')
;
fragment
UNICODE_ESC
: '\\' 'u' HEX_DIGIT HEX_DIGIT HEX_DIGIT HEX_DIGIT
;
DO_NOT_DELETE_THIS_RULE
: '!' | '>' | '<' | '*' | '&' | '.' | ';'
;
--
Reynold Xin
List: http://www.antlr.org/mailman/listinfo/antlr-interest
Unsubscribe:
http://www.antlr.org/mailman/options/antlr-interest/your-email-address
--
You received this message because you are subscribed to the Google Groups
"il-antlr-interest" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/il-antlr-interest?hl=en.