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 ; | NAT { t l = new TypeLiteral (new NAT( ) ) ; } | BOOLEAN { t l = new TypeLiteral (new BOOL( ) ) ; } | CHAR { t l = new TypeLiteral (new CHAR( ) ) ; } | TEXT { t l = new TypeLiteral (new TEXT( ) ) ; } | UNIT { t l = new TypeLiteral (new UNIT( ) ) ; } // Value Expressions value_expr returns [ ValueExpr ve ] { ve = null ; } : ve = infix_expr_pr9 ; value_expr_pair returns [ ValueExprPair vep ] { vep = null ; ValueExpr ve1 = null ; ValueExpr ve2 = null ; } : ve1 = value_expr MAPSTO ve2 = value_expr {vep = new ValueExprPair ( ve1 , ve2 ) ; } ; infix_expr_pr9 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_pr8 ( r i o = infix_op_pr9 ve2 = infix_expr_pr8 { ve3 = ve1 ; ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; } ) ∗ { ve = ve1 ; } ; infix_expr_pr8 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 ; } 490

: ve1 = infix_expr_pr7 ( r i o = infix_op_pr8 ve2 = infix_expr_pr7 { ve3 = ve1 ; ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; } ) ∗ {ve = ve1 ; } ; infix_expr_pr7 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_pr6 ( r i o = infix_op_pr7 ve2 = infix_expr_pr6 { ve3 = ve1 ; ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; } ) ∗ {ve = ve1 ; } ; infix_expr_pr6 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_pr5 ( r i o = infix_op_pr6 ve2 = infix_expr_pr5 { ve3 = ve1 ; ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; } ) ∗ {ve = ve1 ; } ; infix_expr_pr5 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_pr4 ( r i o = infix_op_pr5 ve2 = infix_expr_pr4 491

: ve1 = infix_expr_pr7<br />

(<br />

r i o = infix_op_pr8 ve2 = infix_expr_pr7<br />

{ ve3 = ve1 ;<br />

ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; }<br />

) ∗<br />

{ve = ve1 ; }<br />

;<br />

infix_expr_pr7 returns [ ValueExpr ve ] {<br />

ve = null ;<br />

ValueExpr ve1 = null ;<br />

I n f i x O p e r a t o r r i o = null ;<br />

ValueExpr ve2 = null ;<br />

ValueExpr ve3 = null ; }<br />

: ve1 = infix_expr_pr6<br />

(<br />

r i o = infix_op_pr7 ve2 = infix_expr_pr6<br />

{ ve3 = ve1 ;<br />

ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; }<br />

) ∗<br />

{ve = ve1 ; }<br />

;<br />

infix_expr_pr6 returns [ ValueExpr ve ] {<br />

ve = null ;<br />

ValueExpr ve1 = null ;<br />

I n f i x O p e r a t o r r i o = null ;<br />

ValueExpr ve2 = null ;<br />

ValueExpr ve3 = null ; }<br />

: ve1 = infix_expr_pr5<br />

(<br />

r i o = infix_op_pr6 ve2 = infix_expr_pr5<br />

{ ve3 = ve1 ;<br />

ve1 = new ValueInfixExpr ( ve3 , r i o , ve2 ) ; }<br />

) ∗<br />

{ve = ve1 ; }<br />

;<br />

infix_expr_pr5 returns [ ValueExpr ve ] {<br />

ve = null ;<br />

ValueExpr ve1 = null ;<br />

I n f i x O p e r a t o r r i o = null ;<br />

ValueExpr ve2 = null ;<br />

ValueExpr ve3 = null ;<br />

}<br />

: ve1 = infix_expr_pr4<br />

(<br />

r i o = infix_op_pr5 ve2 = infix_expr_pr4<br />

491

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

Saved successfully!

Ooh no, something went wrong!