|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.ph.pr.parser.ReflectiveVisitor
com.ph.pr.parser.vbs2java.VBSVisitor
public class VBSVisitor
Translates a VBScript script into a Java class.
Notice that this was
generated with the first draft of ASTBuilder
,
which had a little issue due to the silliness of the author. As a result,
getters and setters for non-terminals in each implementation of
ASTNode
are still used (whereas the fix is to
use ASTNode.getNodes()
). The ambiguous cases here have been fixed
manually (such as visit(expr_7_AST)
and similar ones).
A given
VBScript script is translated into a Java class. Sample usage is:
ASTNode start = ASTBuilder.singleton().parse(null, "com.sun.foo", "XXX.vbs");
VBSVisitor visitor = new VBSVisitor();
start.accept(visitor);
String code = visitor.getCode();
After which the code variable will contain the body of the
class, without the class signature, package statements or
imports. It currently the job of the caller (in our case,
com.ph.pr.parser.vb2java.achapps.VBS2Java
) to fill that out.
However, the resulting class must import everything in this package, and
extend com.ph.pr.parser.vb2java.VBS2JavaBase
(or a subclass
thereof).
Also, since we're only concerned with cases that appear in our
VBScript files, some functionality of VBScript is not handled; the
corresponding branches of its visit() methods throw
UnsupportedOperationException
.
ASTBuilder
-- auto-generation, Greg Golberg -- post-processingASTBuilder
,
ASTNode
Field Summary | |
---|---|
private java.util.Map |
ast2Comments
|
private boolean |
caseFirst
|
private java.lang.String |
code
|
private java.util.Stack |
downUse
|
private static java.lang.String |
EOL
|
private java.lang.String |
funcName
|
static java.lang.String |
INDENT
|
private int |
indentLevel
Current indent level. |
private java.util.Map |
methods
|
private int |
pass
|
Fields inherited from class com.ph.pr.parser.ReflectiveVisitor |
---|
VISIT_METHOD_NAME, VISIT_METHOD_NAME_BRITISH |
Constructor Summary | |
---|---|
VBSVisitor(java.util.Map ast2Comments,
java.util.Collection allAsts)
|
Methods inherited from class com.ph.pr.parser.ReflectiveVisitor |
---|
visit |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private java.util.Map methods
private int pass
public static final java.lang.String INDENT
private java.util.Map ast2Comments
private int indentLevel
private java.lang.String code
private boolean caseFirst
private java.util.Stack downUse
private java.lang.String funcName
private static final java.lang.String EOL
Constructor Detail |
---|
public VBSVisitor(java.util.Map ast2Comments, java.util.Collection allAsts)
Method Detail |
---|
private java.lang.String endStatement()
EOL
, followed
by a result of indent()
.private java.lang.String openBrace()
indentLevel
, and returns
{, followed by EOL
, followed by result of a
call to indent()
, then decrements indentLevel.public void defaultVisit(java.lang.Object o)
ReflectiveVisitor
defaultVisit
in class ReflectiveVisitor
o
- say, can you see?private final java.lang.String indent()
indentLevel
number of INDENT
s.public java.lang.String getCode()
public void visit(expr_16_AST node)
public void visit(formal_list_opt2_AST node)
public void visit(start_AST node)
public void visit(dim_decl_list_AST node)
public void visit(ext_statement_AST node)
public void visit(expr_17_AST node)
public void visit(sub_list2_AST node)
public void visit(redim_decl_AST node)
public void visit(const_decl_list_AST node)
public void visit(statement_AST node)
public void visit(formal_list_opt_AST node)
public void visit(expr_9_AST node)
public void visit(by_opt_AST node)
public void visit(exit_kind_AST node)
public void visit(on_error_AST node)
public void visit(on_target_AST node)
public void visit(case_list_AST node)
public void visit(formal_declarator_AST node)
public void visit(for_AST node)
public void visit(as_type_AST node)
public void visit(expr_list_2_AST node)
public void visit(expr_opt_AST node)
public void visit(expr_6_AST node)
public void visit(formal_list_AST node)
public void visit(case_item_AST node)
public void visit(no_paren_call_AST node)
public void visit(expr_5_AST node)
public void visit(const_AST node)
public void visit(postfix_expr_AST node)
public void visit(select_AST node)
public void visit(tkNameList_AST node)
public void visit(expr_AST node)
public void visit(ext_statement_list_AST node)
public void visit(ASTNode node)
public void visit(expr_14_AST node)
public void visit(set_expr_AST node)
public void visit(if_then_AST node)
public void visit(simple_statement_list_AST node)
public void visit(formal_list_2_AST node)
public void visit(dim_decl_list_2_AST node)
public void visit(dim_AST node)
public void visit(sub_AST node)
public void visit(dim_decl_AST node)
private void undoNewline()
code
by truncating everything after the last
EOL
.
private void finishBlock()
undoNewline()
, and then appends a EOL
, a result
of indent()
, a }, another two EOLs, and
another result of indent()
to code
public void visit(func_AST node)
public void visit(expr_2_AST node)
public void visit(redim_decl_list_2_AST node)
public void visit(statement_list_AST node)
public void visit(expr_10_AST node)
public void visit(const_decl_AST node)
public void visit(assign_opt_AST node)
public void visit(option_explicit_AST node)
public void visit(name_opt_AST node)
public void visit(redim_AST node)
public void visit(parens_opt_AST node)
public void visit(redim_decl_list_AST node)
public void visit(expr_15_AST node)
public void visit(condition_opt_AST node)
public void visit(comment_list_AST node)
public void visit(expr_3_AST node)
public void visit(if_then_else_AST node)
public void visit(expr_list_AST node)
public void visit(simple_statement_AST node)
public void visit(elseif_list_AST node)
public void visit(assignment_AST node)
public void visit(expr_12_AST node)
public void visit(while_AST node)
public void visit(as_opt_AST node)
public void visit(else_opt_AST node)
public void visit(expr_8_AST node)
public void visit(expr_13_AST node)
public void visit(const_decl_list_2_AST node)
public void visit(expr_7_AST node)
public void visit(set_AST node)
public void visit(expr_4_AST node)
public void visit(sub_list2_2_AST node)
public void visit(primary_expr_AST node)
public void visit(caseelse_opt_AST node)
public void visit(step_opt_AST node)
public void visit(preserve_opt_AST node)
public void visit(type_decl_list_AST node)
public void visit(elseif_item_AST node)
public void visit(func_call_AST node)
public void visit(expr_11_AST node)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES All Classes | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |