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 StringRSLAstVisitor.java package t r a n s l a t o r . l i b ; import t r a n s l a t o r . r s l a s t . ∗ ; public class StringRSLAstVisitor extends RSLAstVisitor { private S t r i n g B u f f e r r e s u l t ; public StringRSLAstVisitor ( ) { this . r e s u l t = new S t r i n g B u f f e r ( ) ; } public S t r i n g g e t R e s u l t ( ) { return r e s u l t . t o S t r i n g ( ) ; } public void visitRSLAst ( RSLAst r s l a s t ) { r s l a s t . libmodule ( ) . accept ( this ) ; } public void visitLibModule ( LibModule module ) { for ( Id id : module . c o n t e x t _ l i s t ( ) . g e t L i s t ( ) ) { id . accept ( this ) ; r e s u l t . append ( " , " ) ; } i f ( module . c o n t e x t _ 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 ( "\n" ) ; module . schemedef ( ) . accept ( this ) ; } public void visitSchemeDef ( SchemeDef scheme ) { r e s u l t . append ( "scheme " ) ; scheme . id ( ) . accept ( this ) ; r e s u l t . append ( " = " ) ; scheme . class_expr ( ) . accept ( this ) ; } public void v i s i t B a s i c C l a s s E x p r ( BasicClassExpr basicClassExpr ) { r e s u l t . append ( " c l a s s \n" ) ; for ( Decl d e c l : basicClassExpr . d e c l a r a t i o n _ l i s t ( ) . g e t L i s t ( ) ) { d e c l . accept ( this ) ; } r e s u l t . append ( "end" ) ; 530

} F.2. VISITOR MODULES public void visitExtendingClassExpr ( ExtendingClassExpr extendingClassExpr ) { r e s u l t . append ( " extend " ) ; extendingClassExpr . base_class ( ) . accept ( this ) ; r e s u l t . append ( " with " ) ; extendingClassExpr . e x t e n s i o n _ c l a s s ( ) . accept ( this ) ; } public void v i s i t S c h e m e I n s t a n t i a t i o n ( SchemeInstantiation s c h e m e I n s t a n t i a t i o n ) { s c h e m e I n s t a n t i a t i o n . id ( ) . accept ( this ) ; } /∗Type D e c l a r a t i o n s ∗/ public void visitTypeDecl ( TypeDecl typeDecl ) { r e s u l t . append ( " type \n" ) ; for ( TypeDef typeDef : typeDecl . type_def_list ( ) . g e t L i s t ( ) ) { typeDef . accept ( this ) ; r e s u l t . append ( " ,\ n" ) ; } i f ( typeDecl . type_def_list ( ) . l e n ( ) > 0) { r e s u l t . d e l e t e ( r e s u l t . l ength ( ) − 2 , r e s u l t . length ( ) ) ; } r e s u l t . append ( "\n" ) ; } public void v i s i t S o r t D e f ( SortDef s o r t D e f ) { s o r t D e f . sd_id ( ) . accept ( this ) ; } public void v i s i t V a r i a n t D e f ( VariantDef variantDef ) { variantDef . id ( ) . accept ( this ) ; r e s u l t . append ( " == " ) ; for ( Variant v a r i a n t : variantDef . v a r i a n t _ l i s t ( ) . g e t L i s t ( ) ) { v a r i a n t . accept ( this ) ; r e s u l t . append ( " | " ) ; } i f ( variantDef . v a r i a n t _ 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 . l ength ( ) − 3 , r e s u l t . length ( ) ) ; } } public void v i s i t U n i o n D e f ( UnionDef unionDef ) { unionDef . ud_id ( ) . accept ( this ) ; r e s u l t . append ( " = " ) ; for ( NameOrWildcard nameOrWildcard : unionDef . name_or_wildcard_list ( ) . g e t L i s t ( ) ) { 531

}<br />

F.2. VISITOR MODULES<br />

public void visitExtendingClassExpr ( ExtendingClassExpr<br />

extendingClassExpr ) {<br />

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

extendingClassExpr . base_class ( ) . accept ( this ) ;<br />

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

extendingClassExpr . e x t e n s i o n _ c l a s s ( ) . accept ( this ) ;<br />

}<br />

public void v i s i t S c h e m e I n s t a n t i a t i o n ( SchemeInstantiation<br />

s c h e m e I n s t a n t i a t i o n ) {<br />

s c h e m e I n s t a n t i a t i o n . id ( ) . accept ( this ) ;<br />

}<br />

/∗Type D e c l a r a t i o n s ∗/<br />

public void visitTypeDecl ( TypeDecl typeDecl ) {<br />

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

for ( TypeDef typeDef : typeDecl . type_def_list ( ) . g e t L i s t ( ) ) {<br />

typeDef . accept ( this ) ;<br />

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

}<br />

i f ( typeDecl . type_def_list ( ) . l e n ( ) > 0) {<br />

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

}<br />

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

}<br />

public void v i s i t S o r t D e f ( SortDef s o r t D e f ) {<br />

s o r t D e f . sd_id ( ) . accept ( this ) ;<br />

}<br />

public void v i s i t V a r i a n t D e f ( VariantDef variantDef ) {<br />

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

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

for ( Variant v a r i a n t : variantDef . v a r i a n t _ l i s t ( ) . g e t L i s t ( ) ) {<br />

v a r i a n t . accept ( this ) ;<br />

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

}<br />

i f ( variantDef . v a r i a n t _ 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 . l ength ( ) − 3 , r e s u l t . length ( ) ) ;<br />

}<br />

}<br />

public void v i s i t U n i o n D e f ( UnionDef unionDef ) {<br />

unionDef . ud_id ( ) . accept ( this ) ;<br />

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

for ( NameOrWildcard nameOrWildcard :<br />

unionDef . name_or_wildcard_list ( ) . g e t L i s t ( ) ) {<br />

531

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

Saved successfully!

Ooh no, something went wrong!