[antlr-interest] Current antlr bugs [b7]
Ilia Kantor
ilia at obnovlenie.ru
Fri Apr 27 06:51:55 PDT 2007
And more bugs to go.... I guess such exception is not normal:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at org.antlr.runtime.DFA.predict(DFA.java:43)
at GetScopeValueCleanParser.rule_long_def_part(GetScopeValueCleanParser.java:554)
at GetScopeValueCleanParser.synpred1_fragment(GetScopeValueCleanParser.java:1352)
at GetScopeValueCleanParser.synpred1(GetScopeValueCleanParser.java:1392)
at GetScopeValueCleanParser.rule_call(GetScopeValueCleanParser.java:182)
at GetScopeValueCleanParser.expr_simple(GetScopeValueCleanParser.java:1307)
at GetScopeValueCleanParser.expr_no_semi(GetScopeValueCleanParser.java:1137)
at GetScopeValueCleanParser.expr(GetScopeValueCleanParser.java:946)
at GetScopeValueCleanParser.exprs(GetScopeValueCleanParser.java:862)
at GetScopeValueCleanParser.document(GetScopeValueCleanParser.java:76)
at GrammarScopeValueCleanTest.main(GrammarScopeValueCleanTest.java:39)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90)
=============== grammar =============
grammar GetScopeValueClean;
options {
output=AST;
}
tokens {
TEXT;
GET_PROPERTY_VALUE;
GET_PROPERTY_ARGUMENTS;
EVAL;
}
LCURL : '{';
RCURL : '}';
GET_SCOPE_VALUE
: '#';
CONTROL
: '~';
SEMI: ';';
DOT : '.';
MINUS
: '-';
GT : '>';
SPECIAL_CHAR
: '`' | '!' | '@' | '$' | '%' | '^' | '&' | '*' | '(' | ')' |
'+' | '=' | '[' | ']' | ':' | '\'' | '"' | '\\' | '|' | ',' | '<' |
'/' | '?';
fragment WS_CHAR :
(' '|'\r'|'\t'|'\u000C'|'\n' )
;
WS : WS_CHAR+;
// not SPECIAL_CHAR not WS_CHAR
WORD:
(~ ('`' | '!' | '@' | '$' | '%' | '^' | '&' | '*' | '(' | ')' |
'+' | '=' | '[' | ']' | ':' | '\'' | '"' | '\\' | '|' | ',' | '<' | '/' | '?'
| '{'
| '~'
| '}'
| '#'
| ';'
| '.'
| '-'
| '>'
| ' '|'\r'|'\t'|'\u000C'|'\n' ) )+
;
document
: exprs;
rule_call: GET_SCOPE_VALUE WORD ((rule_long_def_part)=>rule_long_def_part)* -> ^(GET_SCOPE_VALUE WORD rule_long_def_part*) |
GET_SCOPE_VALUE LCURL WORD rule_long_def_part* RCURL -> ^(GET_SCOPE_VALUE WORD rule_long_def_part*)
;
get_property_arguments
:
LCURL exprs? RCURL -> ^(GET_PROPERTY_ARGUMENTS exprs?)
;
rule_long_def_part
: MINUS GT WORD ((get_property_arguments)=>get_property_arguments)* -> ^(GET_PROPERTY_VALUE WORD get_property_arguments*) |
DOT WORD -> ^(GET_SCOPE_VALUE WORD)
;
text:
DOT | MINUS | WORD | WS | GT | SPECIAL_CHAR
;
curly_block
:
LCURL exprs? RCURL -> LCURL exprs? RCURL
;
exprs:
(expr)+
;
expr:
(
expr_no_semi -> expr_no_semi |
SEMI -> TEXT[$SEMI]
)
;
exprs_no_semi
: (expr_no_semi)+
;
expr_no_semi
:
(expr_simple) | (curly_block)
;
exprs_simple
: (expr_simple)+
;
/* expression without curl at start and ; */
expr_simple
:
rule_call
| text
;
============== input ================
cdsd #rere->a{#c+1}{2 2} kljkl
Hope this bug is simple one!
Happy fixing
V/R
Ilia Kantor
More information about the antlr-interest
mailing list