Skip to content

Commit ace9c74

Browse files
author
Claudiu Popa
committed
Add build methods for Trap, Labeled and Do statements.
1 parent 409a86f commit ace9c74

File tree

1 file changed

+24
-3
lines changed

1 file changed

+24
-3
lines changed

wispy/builder.py

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -97,11 +97,16 @@ def visit_statement(self, node, parent):
9797
# TODO: add visit_range(self, node, parent)
9898
# TODO: add visit_unary_op(self, node, parent)
9999
# TODO: add visit_bin_op(self, node, parent)
100-
# TODO: add visit_labeled_statement(self, node, parent)
101-
# TODO: add visit_trap_statement(self, node, parent)
102-
# TODO: add visit_do_statement(self, node, parent)
103100
# TODO: add visit_for_statement(self, node, parent)
104101

102+
def visit_trap_statement(self, node, parent):
103+
newnode = tree.TrapStatement()
104+
statements = node.find_all(grammar.Statement)
105+
newnode.body = self.iter_generic_visit(statements, newnode)
106+
if node[2]:
107+
newnode.exception = self.generic_visit(node[2], newnode)
108+
return newnode
109+
105110
def visit_while_statement(self, node, parent):
106111
newnode = tree.WhileStatement()
107112
condition = node.find(grammar.WhileCondition)
@@ -110,6 +115,22 @@ def visit_while_statement(self, node, parent):
110115
newnode.body = self.iter_generic_visit(statements, newnode)
111116
return newnode
112117

118+
def visit_labeled_statement(self, node, parent):
119+
newnode = tree.LabeledStatement()
120+
newnode.stmt = self.generic_visit(node[1], newnode)
121+
newnode.label = tree.Name(value=node[0]) if node[0] else None
122+
return newnode
123+
124+
def visit_do_statement(self, node, parent):
125+
newnode = tree.DoStatement()
126+
condition = node.find(grammar.WhileCondition)
127+
statements = node.find_all(grammar.Statement)
128+
newnode.condition = self.generic_visit(condition, newnode)
129+
newnode.body = self.iter_generic_visit(statements, newnode)
130+
# TODO: Name or simple string?
131+
newnode.type = node[4].string.lower()
132+
return newnode
133+
113134
def visit_inlinescript_statement(self, node, parent):
114135
newnode = tree.InlinescriptStatement()
115136
statements = node.find_all(grammar.Statement)

0 commit comments

Comments
 (0)