[antlr-interest] a grammar problem

Fırat KÜÇÜK firatkucuk at gmail.com
Fri May 18 12:04:56 PDT 2007


This is a sample programming language grammar in v3 format

-----------------------------------------------------------------------

grammar Sample;

start
    :   statement*
    ;


statement
    :   PRINT expressionList? SEMICOLON
    ;


expressionList
    :   expression (COMMA expression)* COMMA?
    ;


expression
    :   operation ((PLUS | MINUS) operation)*
    ;


operation
    :   inParens ((ASTERISK | SLASH) inParens)*
    ;


inParens
    :   LEFT_PARENTHESIS expression RIGHT_PARENTHESIS
    |   literal
    ;


literal
    :   NUMBER
    |   STRING
    // SHOULD BE ARRAY
    |   LEFT_PARENTHESIS expressionList? RIGHT_PARENTHESIS
    ;


WHITESPACE        :   (' ' | '\t')+  {$channel = HIDDEN;} ;
NUMBER            :   ('0' .. '9')+                       ;
STRING            :   '"' (.)* '"'                        ;
LEFT_PARENTHESIS  :   '('                                 ;
RIGHT_PARENTHESIS :   ')'                                 ;
PLUS              :   '+'                                 ;
MINUS             :   '-'                                 ;
ASTERISK          :   '*'                                 ;
SLASH             :   '/'                                 ;
PRINT             :   'print'                             ;
COMMA             :   ','                                 ;
SEMICOLON         :   ';'                                 ;


-----------------------------------------------------------------------

the problem is inParens rule and Array literals.

how can i fix this problem without using syntactic predicate?


-- 
Öğr. Gör. Fırat KÜÇÜK
ADAMYO Distance Learning
SAKARYA University / TURKEY


More information about the antlr-interest mailing list