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 public void visitBracketedTypeExpr ( BracketedTypeExpr bracketedExpr ) { r e s u l t . append ( " ( " ) ; bracketedExpr . b_type_expr ( ) . accept ( this ) ; r e s u l t . append ( " ) " ) ; } public void visitUNIT (UNIT r s l _ u n i t ) { r e s u l t . append ( " Unit " ) ; } public void visitINT (INT tm_rsl_int ) { r e s u l t . append ( " Int " ) ; } public void visitNAT (NAT rsl_nat ) { r e s u l t . append ( "Nat" ) ; } public void visitREAL (REAL r s l _ r e a l ) { r e s u l t . append ( " Real " ) ; } public void visitBOOL (BOOL rsl_bool ) { r e s u l t . append ( " Bool " ) ; } public void visitCHAR (CHAR rsl_char ) { r e s u l t . append ( "Char" ) ; } public void visitTEXT (TEXT r s l _ t e x t ) { r e s u l t . append ( "Text" ) ; } public void v i s i t F i n i t e S e t T y p e E x p r ( FiniteSetTypeExpr finiteSetTypeExpr ) { finiteSetTypeExpr . type_expr ( ) . accept ( this ) ; r e s u l t . append ( "−s e t " ) ; } public void v i s i t I n f i n i t e S e t T y p e E x p r ( InfiniteSetTypeExpr i n f i n i t e S e t T y p e E x p r ) { i n f i n i t e S e t T y p e E x p r . i_type_expr ( ) . accept ( this ) ; r e s u l t . append ( "−i n f s e t " ) ; } public void v i s i t F i n i t e L i s t T y p e E x p r ( FiniteListTypeExpr 538

} F.2. VISITOR MODULES f i n i t e L i s t T y p e E x p r ) { f i n i t e L i s t T y p e E x p r . type_expr ( ) . accept ( this ) ; r e s u l t . append ( "− l i s t " ) ; public void v i s i t I n f i n i t e L i s t T y p e E x p r ( I n f i n i t e L i s t T y p e E x p r i n f i n i t e L i s t T y p e E x p r ) { i n f i n i t e L i s t T y p e E x p r . i_type_expr ( ) . accept ( this ) ; r e s u l t . append ( "− i n f l i s t " ) ; } public void visitFiniteMapTypeExpr ( FiniteMapTypeExpr finiteMapTypeExpr ) { finiteMapTypeExpr . type_expr_dom ( ) . accept ( this ) ; r e s u l t . append ( " −m−> " ) ; finiteMapTypeExpr . type_expr_range ( ) . accept ( this ) ; } public void visitInfiniteMapTypeExpr ( InfiniteMapTypeExpr infiniteMapTypeExpr ) { infiniteMapTypeExpr . i_type_expr_dom ( ) . accept ( this ) ; r e s u l t . append ( " −~m−> " ) ; infiniteMapTypeExpr . i_type_expr_range ( ) . accept ( this ) ; } public void visitTOTAL_FUNCTION_ARROW(TOTAL_FUNCTION_ARROW totalFunctionArrow ) { r e s u l t . append ( "−>" ) ; } public void visitPARTIAL_FUNCTION_ARROW(PARTIAL_FUNCTION_ARROW partialFunctionArrow ) { r e s u l t . append ( "−~−>" ) ; } public void v i s i t R e s u l t D e s c ( ResultDesc r e s u l t D e s c ) { r e s u l t D e s c . read_access_desc ( ) . accept ( this ) ; r e s u l t D e s c . write_access_desc ( ) . accept ( this ) ; r e s u l t D e s c . type_expr ( ) . accept ( this ) ; } public void visitReadAccessDesc ( ReadAccessDesc readAccessDesc ) { r e s u l t . append ( " read " ) ; for ( Access ac : readAccessDesc . a c c e s s _ l i s t ( ) . g e t L i s t ( ) ) { ac . accept ( this ) ; r e s u l t . append ( " , " ) ; } i f ( readAccessDesc . a c c e s s _ 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 ( ) − 2 , r e s u l t . length ( ) − 1) ; 539

}<br />

F.2. VISITOR MODULES<br />

f i n i t e L i s t T y p e E x p r ) {<br />

f i n i t e L i s t T y p e E x p r . type_expr ( ) . accept ( this ) ;<br />

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

public void v i s i t I n f i n i t e L i s t T y p e E x p r ( I n f i n i t e L i s t T y p e E x p r<br />

i n f i n i t e L i s t T y p e E x p r ) {<br />

i n f i n i t e L i s t T y p e E x p r . i_type_expr ( ) . accept ( this ) ;<br />

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

}<br />

public void visitFiniteMapTypeExpr ( FiniteMapTypeExpr<br />

finiteMapTypeExpr ) {<br />

finiteMapTypeExpr . type_expr_dom ( ) . accept ( this ) ;<br />

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

finiteMapTypeExpr . type_expr_range ( ) . accept ( this ) ;<br />

}<br />

public void visitInfiniteMapTypeExpr ( InfiniteMapTypeExpr<br />

infiniteMapTypeExpr ) {<br />

infiniteMapTypeExpr . i_type_expr_dom ( ) . accept ( this ) ;<br />

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

infiniteMapTypeExpr . i_type_expr_range ( ) . accept ( this ) ;<br />

}<br />

public void visitTOTAL_FUNCTION_ARROW(TOTAL_FUNCTION_ARROW<br />

totalFunctionArrow ) {<br />

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

}<br />

public void visitPARTIAL_FUNCTION_ARROW(PARTIAL_FUNCTION_ARROW<br />

partialFunctionArrow ) {<br />

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

}<br />

public void v i s i t R e s u l t D e s c ( ResultDesc r e s u l t D e s c ) {<br />

r e s u l t D e s c . read_access_desc ( ) . accept ( this ) ;<br />

r e s u l t D e s c . write_access_desc ( ) . accept ( this ) ;<br />

r e s u l t D e s c . type_expr ( ) . accept ( this ) ;<br />

}<br />

public void visitReadAccessDesc ( ReadAccessDesc readAccessDesc ) {<br />

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

for ( Access ac : readAccessDesc . a c c e s s _ l i s t ( ) . g e t L i s t ( ) ) {<br />

ac . accept ( this ) ;<br />

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

}<br />

i f ( readAccessDesc . a c c e s s _ 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 ( ) − 2 , r e s u l t . length ( ) − 1) ;<br />

539

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

Saved successfully!

Ooh no, something went wrong!