Transformation of Applicative Specifications into Imperative ...

Transformation of Applicative Specifications into Imperative ... Transformation of Applicative Specifications into Imperative ...

26.09.2013 Views

APPENDIX E. ANTLR GRAMMAR ; { ve3 = ve1 ; ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; } ) ∗ { ve = ve1 ; } infix_expr_pr4 returns [ ValueExpr ve ] { ve = null ; ValueExpr ve1 = null ; I n f i x O p e r a t o r r i o = null ; ValueExpr ve2 = null ; ValueExpr ve3 = null ; } : ve1 = infix_expr_pr3 ( r i o = infix_op_pr4 ve2 = infix_expr_pr3 { ve3 = ve1 ; ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; } ) ∗ { ve = ve1 ; } ; infix_expr_pr3 returns [ ValueExpr ve ] { ve = null ; ValueExpr ve1 = null ; I n f i x O p e r a t o r r i o = null ; ValueExpr ve2 = null ; ValueExpr ve3 = null ; } : ve1 = disamb_expr ( r i o = infix_op_pr3 ve2 = disamb_expr { ve3 = ve1 ; ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; } ) ∗ { ve = ve1 ; } ; disamb_expr returns [ ValueExpr ve ] { ve = null ; ValueExpr ve1 = null ; TypeExpr te = null ; } : ve1 = prefix_expr (COLON te = type_expr ) ? { i f ( te ! = null ) { ve = new DisambiguationExpr ( ve1 , te ) ; } else { ve = ve1 ; } 492

; } prefix_expr returns [ ValueExpr ve ] { ve = null ; PrefixOperator po = null ; ValueExpr pe = null ; } : po = prefix_op pe = prefix_expr {ve = new ValuePrefixExpr ( po , pe ) ; } | ve = primary_value_expr ; primary_value_expr returns [ ValueExpr ve ] { ve = null ; ValueExpr c o n d i t i o n = null ; ValueExpr c o n d i t i o n 2 = null ; RSLListDefault e l s i f _ b r a n c h _ l i s t = new RSLListDefault() ; RSLListDefault optional_value_expr_list = new RSLListDefault() ; RSLListDefault optional_value_expr_pair_list = new RSLListDefault() ; RSLListDefault product_value_expr_list = new RSLListDefault() ; RSLListDefault caseBranchList = new RSLListDefault() ; RSLListDefault t y p i n g _ l i s t = new RSLListDefault() ; ValueExpr ve1 = null ; ValueExpr ve2 = null ; ValueExpr ve3 = null ; ValueExprPair vep1 = null ; ValueExprPair vep2 = null ; SetExpr se = null ; ListExpr l e = null ; MapExpr me = null ; Binding b = null ; O p t i o n a l R e s t r i c t i o n or = null ; Typing ty = null ; Pattern p = null ; LetDef ld = null ; RSLListDefault l e t D e f L i s t = new RSLListDefault() ; V a l u e L i t e r a l v l = null ; BasicExpr be = null ; } : LPAREN ve1 = value_expr 493

;<br />

}<br />

prefix_expr returns [ ValueExpr ve ] {<br />

ve = null ;<br />

PrefixOperator po = null ;<br />

ValueExpr pe = null ; }<br />

: po = prefix_op pe = prefix_expr<br />

{ve = new ValuePrefixExpr ( po , pe ) ; }<br />

|<br />

ve = primary_value_expr<br />

;<br />

primary_value_expr returns [ ValueExpr ve ] {<br />

ve = null ;<br />

ValueExpr c o n d i t i o n = null ;<br />

ValueExpr c o n d i t i o n 2 = null ;<br />

RSLListDefault e l s i f _ b r a n c h _ l i s t =<br />

new RSLListDefault() ;<br />

RSLListDefault optional_value_expr_list =<br />

new RSLListDefault() ;<br />

RSLListDefault<br />

optional_value_expr_pair_list =<br />

new RSLListDefault() ;<br />

RSLListDefault product_value_expr_list =<br />

new RSLListDefault() ;<br />

RSLListDefault caseBranchList =<br />

new RSLListDefault() ;<br />

RSLListDefault t y p i n g _ l i s t =<br />

new RSLListDefault() ;<br />

ValueExpr ve1 = null ;<br />

ValueExpr ve2 = null ;<br />

ValueExpr ve3 = null ;<br />

ValueExprPair vep1 = null ;<br />

ValueExprPair vep2 = null ;<br />

SetExpr se = null ;<br />

ListExpr l e = null ;<br />

MapExpr me = null ;<br />

Binding b = null ;<br />

O p t i o n a l R e s t r i c t i o n or = null ;<br />

Typing ty = null ;<br />

Pattern p = null ;<br />

LetDef ld = null ;<br />

RSLListDefault l e t D e f L i s t =<br />

new RSLListDefault() ;<br />

V a l u e L i t e r a l v l = null ;<br />

BasicExpr be = null ;<br />

}<br />

: LPAREN ve1 = value_expr<br />

493

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!