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 | { optional_value_expr_list . g e t L i s t ( ) . add ( ve1 ) ; } ( COMMA ve1 = value_expr { optional_value_expr_list . g e t L i s t ( ) . add ( ve1 ) ; } ) ∗ RLIST { l e = new EnumeratedListExpr ( new ValueExprList ( optional_value_expr_list ) ) ; } | BAR b = binding IN ve2 = value_expr (FORWHICH ve3 = value_expr ) ? RLIST { i f ( ve3 == null ) { or = new NoRestriction ( ) ; } else { or = new R e s t r i c t i o n ( ve3 ) ; }} { l e = new ComprehendedListExpr ( ve1 , b , ve2 , or ) ; } ) | RLIST { l e = new EnumeratedListExpr (new NoValueExprList ( ) ) ; } ) { ve = new Make_ListExpr ( l e ) ; } | LBRACKET ( vep1 = value_expr_pair ( { optional_value_expr_pair_list . g e t L i s t ( ) . add ( vep1 ) ; } ( COMMA vep1 = value_expr_pair { optional_value_expr_pair_list . g e t L i s t ( ) . add ( vep1 ) ; } ) ∗ RBRACKET {me = new EnumeratedMapExpr ( new ValueExprPairList ( optional_value_expr_pair_list ) ) ; } | BAR ( ty = typing { t y p i n g _ l i s t . g e t L i s t ( ) . add ( ty ) ; } )+ (FORWHICH ve2 = value_expr ) ? RBRACKET { i f ( ve2 == null ) { or = new NoRestriction ( ) ; } 496

; else { or = new R e s t r i c t i o n ( ve2 ) ; }} {me = new ComprehendedMapExpr ( vep1 , ) | RBRACKET {me = t y p i n g _ l i s t , or ) ; } new EnumeratedMapExpr (new NoValueExprPairList ( ) ) ; } ) {ve = new Make_MapExpr(me) ; } | CASE ve1 = value_expr OF p = pattern TOTALARROW ve2 = value_expr { caseBranchList . g e t L i s t ( ) . add (new CaseBranch (p , ( ve2 ) ) ; } COMMA p = pattern TOTALARROW ve2 = value_expr { caseBranchList . g e t L i s t ( ) . add (new CaseBranch (p , ve2 ) ) ; } ) ∗ END { ve = new CaseExpr ( ve1 , | LET ld = l et_def caseBranchList ) ; } { l e t D e f L i s t . g e t L i s t ( ) . add ( ld ) ; } ( COMMA ld = let_def { l e t D e f L i s t . g e t L i s t ( ) . add ( ld ) ; } ) ∗ IN ve1 = value_expr END { ve = new LetExpr ( l e t D e f L i s t , ve1 ) ; } l et_def returns [ LetDef ld ] { ld = null ; LetBinding b = null ; ValueExpr ve = null ; } : b = let_binding EQUAL ve = value_expr { ld = new LetDef (b , ve ) ; } ; let_binding returns [ LetBinding lb ] { lb = null ; Binding b = null ; Id i d e n t i f i e r = null ; Make_ValueOrVariableName vovn = null ; Pattern p = null ; Pattern ip = null ; RSLListDefault p a t t e r n L i s t = 497

;<br />

else {<br />

or = new R e s t r i c t i o n ( ve2 ) ;<br />

}}<br />

{me =<br />

new ComprehendedMapExpr ( vep1 ,<br />

)<br />

|<br />

RBRACKET<br />

{me =<br />

t y p i n g _ l i s t , or ) ; }<br />

new EnumeratedMapExpr (new NoValueExprPairList ( ) ) ; }<br />

)<br />

{ve = new Make_MapExpr(me) ; }<br />

|<br />

CASE ve1 = value_expr OF<br />

p = pattern TOTALARROW ve2 = value_expr<br />

{ caseBranchList . g e t L i s t ( ) . add (new CaseBranch (p ,<br />

(<br />

ve2 ) ) ; }<br />

COMMA p = pattern TOTALARROW ve2 = value_expr<br />

{ caseBranchList . g e t L i s t ( ) . add (new CaseBranch (p , ve2 ) ) ; }<br />

) ∗<br />

END { ve = new CaseExpr ( ve1 ,<br />

|<br />

LET ld = l et_def<br />

caseBranchList ) ; }<br />

{ l e t D e f L i s t . g e t L i s t ( ) . add ( ld ) ; }<br />

(<br />

COMMA ld = let_def<br />

{ l e t D e f L i s t . g e t L i s t ( ) . add ( ld ) ; }<br />

) ∗<br />

IN ve1 = value_expr<br />

END { ve = new LetExpr ( l e t D e f L i s t , ve1 ) ; }<br />

l et_def returns [ LetDef ld ] {<br />

ld = null ;<br />

LetBinding b = null ;<br />

ValueExpr ve = null ;<br />

}<br />

: b = let_binding EQUAL ve = value_expr<br />

{ ld = new LetDef (b , ve ) ; }<br />

;<br />

let_binding returns [ LetBinding lb ] {<br />

lb = null ;<br />

Binding b = null ;<br />

Id i d e n t i f i e r = null ;<br />

Make_ValueOrVariableName vovn = null ;<br />

Pattern p = null ;<br />

Pattern ip = null ;<br />

RSLListDefault p a t t e r n L i s t =<br />

497

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

Saved successfully!

Ooh no, something went wrong!