Lectures‎ > ‎

Week05

Introduction to ANTLR v4 by Terence Parr

The main ANTLR website:


ANTLRWorks 2:


Here is a version of the Mini Triangle grammar in ANTRL:

grammar Triangle;

program            :  Command;

command            :  singleCommand (';' singleCommand)* ;

singleCommand      :  vname ':=' expression
                   |  Identifier '(' expression ')'
                   |  'if' expression 'then' singleCommand
                      'else' singleCommand
                   |  'while' expression 'do' singleCommand
                   |  'let' declaration 'in' singleCommand
                   |  'begin' command 'end'
                   ;

expression         :  primaryexpression
                   |  expression operator primaryexpression
                   ;

primaryexpression  :  IntegerLiteral
                   |  vname
                   |  operator primaryexpression
                   |  '(' expression ')'
                   ;

operator           :  '+'| '-'| '*'| '/'| '<'| '>'| '='| '\'' ;

vname              :  Identifier ;

declaration        :  singleDeclaration (';' singleDeclaration)* ;

singleDeclaration  :  'const' Identifier '~' expression
                   |  'var' Identifier ':' typeDenoter
                   ;

typeDenoter        :  Identifier ;

Identifier         :  [a-zA-Z] [0-9a-zA-Z]* ;

IntegerLiteral     :  [0-9]+ ;

Comment            :  '!' .*? '\r'? '\n' ;

Separator          :  [ \n\r] -> skip ;

Comments