[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