Transformation of Applicative Specifications into Imperative ...

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

26.09.2013 Views

APPENDIX F. SOURCE CODE } v a l u e I n f i x E x p r . r i g h t ( ) . accept ( this ) ; public void v i s i t V a l u e P r e f i x E x p r ( ValuePrefixExpr valuePrefixExpr ) { valuePrefixExpr . op ( ) . accept ( this ) ; valuePrefixExpr . operand ( ) . accept ( this ) ; } public void v i s i t A s s i g n E x p r ( AssignExpr assignExpr ) { assignExpr . id ( ) . accept ( this ) ; r e s u l t . append ( " : = " ) ; assignExpr . assign_value_expr ( ) . accept ( this ) ; } public void v i sitSequencingExpr ( SequencingExpr seqExpr ) { seqExpr . f i r s t ( ) . accept ( this ) ; r e s u l t . append ( " ; " ) ; seqExpr . second ( ) . accept ( this ) ; } public void v i s i t L e t E x p r ( LetExpr letExpr ) { r e s u l t . append ( " l e t " ) ; for ( LetDef l e t D e f : letExpr . l e t _ d e f _ l i s t ( ) . g e t L i s t ( ) ) { l e t D e f . accept ( this ) ; r e s u l t . append ( " , " ) ; } i f ( letExpr . l e t _ d e f _ l i s t ( ) . l e n ( ) > 0) { r e s u l t . d e l e t e ( r e s u l t . length ( ) − 2 , r e s u l t . length ( ) ) ; } r e s u l t . append ( " in " ) ; letExpr . let_value_expr ( ) . accept ( this ) ; r e s u l t . append ( " end" ) ; } public void visitMake_IfExpr ( Make_IfExpr makeIfExpr ) { makeIfExpr . if_expr ( ) . accept ( this ) ; } public void visitCaseExpr ( CaseExpr caseExpr ) { r e s u l t . append ( " case " ) ; caseExpr . c o n d i t i o n ( ) . accept ( this ) ; r e s u l t . append ( " o f \n" ) ; for ( CaseBranch cb : caseExpr . case_branch_list ( ) . g e t L i s t ( ) ) { cb . accept ( this ) ; r e s u l t . append ( " ,\ n" ) ; } i f ( caseExpr . case_branch_list ( ) . l e n ( ) > 0) { r e s u l t . d e l e t e ( r e s u l t . length ( ) − 2 , r e s u l t . length ( ) ) ; 542

} } r e s u l t . append ( "\n" ) ; r e s u l t . append ( "end" ) ; F.2. VISITOR MODULES public void v i s i t V a l u e L i t e r a l I n t e g e r ( V a l u e L i t e r a l I n t e g e r v a l u e L i t e r a l I n t e g e r ) { r e s u l t . append ( v a l u e L i t e r a l I n t e g e r . g e t T e x t I n t e g e r ( ) ) ; } public void v i s i t V a l u e L i t e r a l R e a l ( V a l u e L i t e r a l R e a l v a l u e L i t e r a l R e a l ) { r e s u l t . append ( v a l u e L i t e r a l R e a l . getTextReal ( ) ) ; } public void v i s i t V a l u e L i t e r a l B o o l ( V a l u e L i t e r a l B o o l v a l u e L i t e r a l B o o l ) { r e s u l t . append ( v a l u e L i t e r a l B o o l . getTextBool ( ) ) ; } public void v i s i t V a l u e L i t e r a l C h a r ( ValueLiteralChar v a l u e L i t e r a l C h a r ) { r e s u l t . append ( " ’ " ) ; r e s u l t . append ( v a l u e L i t e r a l C h a r . getTextChar ( ) ) ; r e s u l t . append ( " ’ " ) ; } public void v i s i t V a l u e L i t e r a l T e x t ( ValueLiteralText v a l u e L i t e r a l T e x t ) { r e s u l t . append ( "\"" ) ; r e s u l t . append ( v a l u e L i t e r a l T e x t . getTextText ( ) ) ; r e s u l t . append ( "\"" ) ; } public void visitValueOrVariableName ( ValueOrVariableName valueOrVariableName ) { valueOrVariableName . id ( ) . accept ( this ) ; } public void visitCHAOS (CHAOS chaos ) { r e s u l t . append ( " chaos " ) ; } public void visitRangedSetExpr ( RangedSetExpr rangedSetExpr ) { r e s u l t . append ( "{" ) ; rangedSetExpr . f i r s t ( ) . accept ( this ) ; r e s u l t . append ( " . . " ) ; rangedSetExpr . second ( ) . accept ( this ) ; r e s u l t . append ( "}" ) ; 543

APPENDIX F. SOURCE CODE<br />

}<br />

v a l u e I n f i x E x p r . r i g h t ( ) . accept ( this ) ;<br />

public void v i s i t V a l u e P r e f i x E x p r ( ValuePrefixExpr<br />

valuePrefixExpr ) {<br />

valuePrefixExpr . op ( ) . accept ( this ) ;<br />

valuePrefixExpr . operand ( ) . accept ( this ) ;<br />

}<br />

public void v i s i t A s s i g n E x p r ( AssignExpr assignExpr ) {<br />

assignExpr . id ( ) . accept ( this ) ;<br />

r e s u l t . append ( " : = " ) ;<br />

assignExpr . assign_value_expr ( ) . accept ( this ) ;<br />

}<br />

public void v i sitSequencingExpr ( SequencingExpr seqExpr ) {<br />

seqExpr . f i r s t ( ) . accept ( this ) ;<br />

r e s u l t . append ( " ; " ) ;<br />

seqExpr . second ( ) . accept ( this ) ;<br />

}<br />

public void v i s i t L e t E x p r ( LetExpr letExpr ) {<br />

r e s u l t . append ( " l e t " ) ;<br />

for ( LetDef l e t D e f : letExpr . l e t _ d e f _ l i s t ( ) . g e t L i s t ( ) ) {<br />

l e t D e f . accept ( this ) ;<br />

r e s u l t . append ( " , " ) ;<br />

}<br />

i f ( letExpr . l e t _ d e f _ l i s t ( ) . l e n ( ) > 0) {<br />

r e s u l t . d e l e t e ( r e s u l t . length ( ) − 2 , r e s u l t . length ( ) ) ;<br />

}<br />

r e s u l t . append ( " in " ) ;<br />

letExpr . let_value_expr ( ) . accept ( this ) ;<br />

r e s u l t . append ( " end" ) ;<br />

}<br />

public void visitMake_IfExpr ( Make_IfExpr makeIfExpr ) {<br />

makeIfExpr . if_expr ( ) . accept ( this ) ;<br />

}<br />

public void visitCaseExpr ( CaseExpr caseExpr ) {<br />

r e s u l t . append ( " case " ) ;<br />

caseExpr . c o n d i t i o n ( ) . accept ( this ) ;<br />

r e s u l t . append ( " o f \n" ) ;<br />

for ( CaseBranch cb : caseExpr . case_branch_list ( ) . g e t L i s t ( ) ) {<br />

cb . accept ( this ) ;<br />

r e s u l t . append ( " ,\ n" ) ;<br />

}<br />

i f ( caseExpr . case_branch_list ( ) . l e n ( ) > 0) {<br />

r e s u l t . d e l e t e ( r e s u l t . length ( ) − 2 , r e s u l t . length ( ) ) ;<br />

542

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

Saved successfully!

Ooh no, something went wrong!