define java_type_decl
[al_type_decl]
| 'boolean
+ | 'String
end define
define java_expr_stmt
| [id] [repeat java_dot_id]
| [id] [repeat java_dot_id] '( [java_args] ')
| 'new [java_type_decl] [union]
+ | 'new [java_type_decl] '( [java_args] ')
end define
define java_dot_id
| '{ [NL] [IN] [java_statements] [EX] '} [NL]
end define
+redefine cond_action_stmt
+ 'action [id] '{ [al_expr] '} [NL]
+ | 'action [id] '{ [java_expr] '} [NL]
+end redefine
+
+
function clearUnion Type [java_type_decl] Id [id]
replace [opt union]
Union [union]
Result
end function
+function alTermToJava
+ replace [al_term]
+ 'first_token_char
+ by
+ 'data '[tokstart]
+end function
+
function alExprExtendToJava AlExprExtend [repeat al_expr_extend]
deconstruct AlExprExtend
Op [al_expr_op] Term [al_term] Rest [repeat al_expr_extend]
_ [alExprExtendToJava Rest]
replace [repeat java_expr_extend]
by
- Op Term JavaRest
+ Op Term [alTermToJava] JavaRest
end function
function alExprToJava AlExpr [al_expr]
construct JavaExprExtend [repeat java_expr_extend]
_ [alExprExtendToJava AlExprExtend]
construct Result [opt java_expr]
- ALTerm JavaExprExtend
+ ALTerm [alTermToJava] JavaExprExtend
replace [opt java_expr]
by
Result
'System '. 'out '. 'print '( String ');
end function
+function alStmtToJava4c AlStmt [action_lang_stmt]
+ deconstruct AlStmt
+ 'printb Id [id] ';
+ replace [repeat java_lang_stmt]
+ by
+ '_s '= 'new 'String '( Id ', '0 ', 'pos ') ';
+ 'System '. 'out '. 'print '( '_s ');
+end function
+
+function alStmtToJava4d AlStmt [action_lang_stmt]
+ deconstruct AlStmt
+ 'print_token ';
+ replace [repeat java_lang_stmt]
+ by
+ '_s '= 'new 'String '( 'data ', 'tokstart ', 'tokend '- 'tokstart ') ';
+ 'System '. 'out '. 'print '( '_s ');
+end function
+
function alStmtToJava5 AlStmt [action_lang_stmt]
deconstruct AlStmt
'{ AlSubStmts [repeat action_lang_stmt] '}
[alStmtToJava3 FirstStmt]
[alStmtToJava4a FirstStmt]
[alStmtToJava4b FirstStmt]
+ [alStmtToJava4c FirstStmt]
+ [alStmtToJava4d FirstStmt]
[alStmtToJava5 FirstStmt]
[alStmtToJava6 FirstStmt]
construct JavaRest [repeat java_lang_stmt]
'{ JavaStmts '}
end rule
+rule condTransJava
+ replace [cond_action_stmt]
+ 'action Id [id] '{ AlExpr [al_expr] '}
+ construct OptJavaExpr [opt java_expr]
+ _ [alExprToJava AlExpr]
+ deconstruct OptJavaExpr
+ JavaExpr [java_expr]
+ by
+ 'action Id '{ JavaExpr '}
+end rule
+
rule machineName
replace $ [machine_stmt]
'machine _ [id] ';
construct JavaInitializations [repeat java_lang_stmt]
_ [alToJava Initializations]
construct NewRagelDef [ragel_def]
- RagelDef [actionTransJava] [machineName]
+ RagelDef [actionTransJava] [condTransJava] [machineName]
import ArrayInits [java_statements]
ArrayInitStmts [repeat java_lang_stmt]
by