Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- %token <Ast.expr> NUMERIC
- %token <Ast.expr> STRING
- %token <string> ID
- %token COMMA EQ FUNCTION LBRACE RBRACE
- %token LPAREN RPAREN LBRACKET RBRACKET EOF SEMI LEFTARROW
- %type <Ast.expr> expr
- %start expr
- %%
- expr:
- | LBRACE expr SEMI expr RBRACE {CompoundExpression($2, $4)}
- | ID LBRACKET LBRACKET expr RBRACKET RBRACKET {ArrayAccess(Symbol($1), $4)}
- | FUNCTION LPAREN sublist RPAREN expr {FunctionDeclaration($3,$5)}
- | ID LPAREN subarg RPAREN {Application(Symbol($1),$3)}
- | ID LEFTARROW expr {AssignExpression(Symbol($1),$3)}
- | ID LBRACKET LBRACKET expr RBRACKET RBRACKET LEFTARROW expr {ArrayAssignWithIndex(Symbol($1),$4,$8)}
- | term {$1}
- term:
- | ID {Symbol($1)}
- | NUMERIC {$1}
- | STRING {$1}
- sublist :
- | subF {$1}
- | subF COMMA sublist {$1@$3}
- | {[]}
- subarg :
- | subA {$1}
- | subA COMMA subarg {$1@$3}
- | {[]}
- subF :
- | ID {[Identifier($1)]}
- | ID EQ expr {[AssignParam($1,$3)]}
- subA:
- | expr {[Expr($1)]}
- | ID EQ expr {[AssignArg($1,$3)]}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement