Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- grammar Nimble;
- program : funcdec* vardec* statement* ;
- statement
- : 'print' expr # print
- | 'while' expr statementblock # while
- | ('if' expr statementblock | 'if' expr statementblock 'else' statementblock) # if
- | 'return' expr? # return
- | ID '(' ((expr ',')* expr)? ')' # funccall
- | ID '=' expr # assign
- ;
- funcdec : 'func' ID '(' ((pramtr ',')* pramtr)? ')' ('->' TYPE)? '{' vardec* statement* '}';
- pramtr : ID ':' TYPE ;
- vardec : 'var' ID ':' TYPE ('=' expr)? ;
- statementblock : '{' statement* '}' ;
- expr
- : '(' expr ')' #bracexpr
- | op=('!' | '-') expr #unary
- | expr op=('*' | '/') expr #muldiv
- | expr op=('+' | '-') expr #addsub
- | expr op=('==' | '<' | '<=') expr #compare
- | ID '(' ((expr ',')* expr)? ')' #funccall
- | STRING #string
- | NUMBER #number
- | BOOL #bool
- | ID #id
- ;
- BOOL : ('true' | 'false') ;
- STRING : ["]~["\r\n]*["] ;
- // https://github.com/antlr/grammars-v4/blob/master/c/C.g4
- TYPE : ('Int' | 'String' | 'Bool') ;
- ID : [a-zA-Z_][a-zA-Z_0-9]* ;
- NUMBER : [0-9]+ ;
- COMMENT : '//' ~[\r\n]* -> skip ;
- WS : [ \t\r\n]+ -> skip ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement