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 ;
- //////////////////////////TEST CODE ???????????????????????????
- //LEGAL STATEMENTS SECTION
- print "hello"
- print testVariable
- // ignore this statement
- a == b
- var myVar : Int
- var myVar: String = "hello"
- if (myVar) {print "hello"}
- if thing {print "hello"} else {print "goodbye"}
- func myMethod() {print "stuff"}
- func myMethod() -> Int {return 1}
- func myMethod(garbage : Int) -> String
- {
- return "garbage out"
- }
- //TEST PROGRAM:
- func countdown(from: Int, message: String) {
- var current : Int = from
- while 0 < current {
- current = displayCount(current)
- }
- print message + "\n"
- }
- func displayCount(c: Int) -> Int {
- print c
- print "\n"
- c = c - 1
- if c == 3 {
- print "Get ready!\n"
- }
- return c
- }
- var announce: String = "Liftoff"
- countdown(10, announce)
- //ILLEGAL MOVE SECTION
- print print hello
- if myVar : print "hello"
- var myVar : int
- var myVar = "stuff"
- if thing {print "hello"} elif {print "goodbye"}
- func badProgram(input) : return output
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement