[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