Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- tree grammar func;
- options {
- language = Java;
- tokenVocab = hhl;
- ASTLabelType = CommonTree;
- }
- @header {
- package haven.hhl;
- import java.util.HashMap;
- import java.util.Vector;
- import java.util.Map;
- import java.io.*;
- }
- program :
- ^(INCLUDELIST include*) ^(PROGRAM ^(VARIABLES .*) ^(FUNCTIONS functionDecl*) .) EOF
- ;
- include
- : EMPTY
- | ^(INCLUDE include_name = IDENT) {hhl_main.IncludeScript($include_name.text);}
- ;
- functionDecl
- @init{
- Vector params=new Vector();
- }
- @after{
- CommonTree blockNode = (CommonTree)$functionDecl.start.getChild(3);
- hhl_main.symbols.declare_function($name.text,$t.text,params,blockNode);
- }
- : ^(FUNCTION t=TYPE name=IDENT ^(PARAMATERS (par=paramDecl {if ($par.p != null) params.add($par.p);})*) .)
- ;
- paramDecl returns[FunctionParam p]
- : EMPTY {p = null;}
- | ^(VARPARAM TYPE IDENT) {$p=new FunctionParam($IDENT.text,$TYPE.text, "scalar");}
- | ^(ARRAYPARAM TYPE IDENT) {$p=new FunctionParam($IDENT.text,$TYPE.text,"array");}
- ;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement