[antlr-interest] ArrayIndexOutOfBoundsException while generating code in v3

John Goering johnstephi at googlemail.com
Sun Sep 24 23:23:59 PDT 2006


Hi there,
Thanks, here's the grammar (as far as I got when I noticed I could generate
code with it). Please note that I'm still extremely wet behind the ears in
regards to the whole thing. ;)

Thanks in advance for any help...

John
--------------------------

grammar mygrammar;

formula    :    (statement (SEMI | EOF))*
    ;

statement
    :
    'if' parExpression 'then' statement
    | 'for' forInit 'to' expression ('step' expression)? 'do' statement
    | 'while' parExpression statement
    | 'do' statement 'while' parExpression ';'
    | ';'
    | statementExpression ';'
    ;
block
    :    '(' (statement)* ')'
    ;

forInit
    :    variableDeclarator
    ;

variableDeclarator
    :    Identifier assignmentOperator expression
    ;

localVariableDeclaration
    :    variableDeclarator ';'
    ;

forUpdate
    :    expressionList
    ;

expression
    :    conditionalOrExpression (assignmentOperator
conditionalOrExpression)?
    ;

type
    :    primitiveType ('array' | 'range')*
    ;

primitiveType
    :   'booleanvar'
    |    'numbervar'
    |    'stringvar'
    |    'datevar'
    |    'datetimevar'
    ;

assignmentOperator
    :    ':='
    ;

conditionalOrExpression
    :   conditionalAndExpression ( 'or' conditionalAndExpression )*
    ;

conditionalAndExpression
    :   relationalExpression ( 'and' relationalExpression )*
    ;

relationalExpression
    :   additiveExpression ( relationalOp additiveExpression )*
    ;

relationalOp
    :    ('<' '=' | '>' '=' | '<' | '>' | '=')
    ;

additiveExpression
    :   multiplicativeExpression ( ('+' | '-') multiplicativeExpression )*
    ;

multiplicativeExpression
    :   unaryExpression ( ( '*' | '/' ) unaryExpression )*
    ;

unaryExpression
    :   '+' unaryExpression
    |    '-' unaryExpression
    |   primary
    ;

primary
    :    Identifier (arguments)?
    |   primitiveType Identifier
    |   parExpression
    |   literal
    |   field
    ;
field    :    '{' (~'}')+ '}'
    ;

parExpression
    :    '(' expression ')'
    ;

literal
    :   DecimalLiteral
    |   FloatingPointLiteral
    |   CharacterLiteral
    |   StringLiteral
    |   booleanLiteral
    |   'null'
    ;

booleanLiteral
    :   'true'
    |   'false'
    ;
stringliteral
    :    '"' (~'"')* '"'
    ;

expressionList
    :   expression (',' expression)*
    ;

statementExpression
    :    expression
    ;

constantExpression
    :    expression
    ;


arguments
    :    '(' expressionList? ')'
    ;

ID    :    ('a'..'z' | 'A'..'Z')+
    ;

CharacterLiteral
    :   '\'' ( EscapeSequence | ~('\''|'\\') ) '\''
    ;

DecimalLiteral : ('0' | '1'..'9' '0'..'9'*);

FloatingPointLiteral
    :   ('0'..'9')+ '.' ('0'..'9')*
    |   '.' ('0'..'9')+
    ;

StringLiteral
    :  '"' ( EscapeSequence | ~('\\'|'"') )* '"'
    ;


fragment
EscapeSequence
    :   '\\' ('b'|'t'|'n'|'f'|'r'|'\"'|'\''|'\\')
    |   UnicodeEscape
    |   OctalEscape
    ;

fragment
OctalEscape
    :   '\\' ('0'..'3') ('0'..'7') ('0'..'7')
    |   '\\' ('0'..'7') ('0'..'7')
    |   '\\' ('0'..'7')
    ;

fragment
UnicodeEscape
    :   '\\' 'u' HexDigit HexDigit HexDigit HexDigit
    ;

Identifier
    :   Letter (Letter|JavaIDDigit)*
    ;

fragment
HexDigit : ('0'..'9'|'a'..'f'|'A'..'F') ;
fragment
Letter
    :  'A'..'Z'|'a'..'z'
    ;

fragment
JavaIDDigit
    :  '0'..'9'
   ;

SEMI    :    ';';
WS  :   (   ' '
        |   '\t'
        |   '\r'
        |   '\n'
        )+
        { channel=99; }
    ;


On 9/24/06, Kay Roepke <kroepke at classdump.org> wrote:
>
> Hi John!
>
> On 22. Sep 2006, at 16:42 Uhr, John Goering wrote:
>
> > Should I send the grammar as well, am I doing something wrong, or
> > is this a
> > known problem?
>
> I don't think it is a known problem. Please send the grammar, there
> seems to be deeper issue somewhere.
>
> cheers,
> -k
>
>
>
>
>


-- 
"I love deadlines. I like the whooshing sound they make as they fly by." -
Douglas Adams
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://www.antlr.org/pipermail/antlr-interest/attachments/20060925/ce7107f5/attachment.html 


More information about the antlr-interest mailing list