[jsinterp] Adding ast to while parser test
This commit is contained in:
parent
a2e42ed416
commit
4b8754c6b0
@ -882,19 +882,44 @@ class TestJSInterpreterParser(unittest.TestCase):
|
||||
]
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
|
||||
@unittest.skip('Test not yet implemented: missing ast')
|
||||
def test_while(self):
|
||||
# ASAP while statement test
|
||||
jsi = JSInterpreter('''
|
||||
function f(x){
|
||||
i = 1
|
||||
i = 1;
|
||||
while (i < x) {
|
||||
i++;
|
||||
}
|
||||
return i;
|
||||
}
|
||||
''')
|
||||
ast = []
|
||||
ast = [
|
||||
(Token.FUNC, 'f', ['x'],
|
||||
(Token.BLOCK, [
|
||||
(Token.EXPR, [
|
||||
(Token.ASSIGN, _ASSIGN_OPERATORS['='][1],
|
||||
(Token.OPEXPR, [(Token.MEMBER, (Token.ID, 'i'), None, None)]),
|
||||
(Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 1), None, None)]), None))
|
||||
]),
|
||||
(Token.WHILE,
|
||||
(Token.EXPR, [
|
||||
(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.ID, 'i'), None, None),
|
||||
(Token.MEMBER, (Token.ID, 'x'), None, None),
|
||||
(Token.REL, _RELATIONS['<'][1])
|
||||
]), None)
|
||||
]),
|
||||
(Token.BLOCK, [
|
||||
(Token.EXPR, [
|
||||
(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.ID, 'i'), None, None),
|
||||
(Token.UOP, _UNARY_OPERATORS['++'][1])
|
||||
]), None)
|
||||
])
|
||||
])),
|
||||
(Token.RETURN, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||
(Token.MEMBER, (Token.ID, 'i'), None, None)]), None)]))
|
||||
]))
|
||||
]
|
||||
self.assertEqual(list(jsi.statements()), ast)
|
||||
|
||||
@unittest.skip('Test not yet implemented: missing code and ast')
|
||||
|
@ -307,7 +307,7 @@ class JSInterpreter(object):
|
||||
if token_id is not Token.PCLOSE:
|
||||
raise ExtractorError('''Expected ')' at %d''' % token_pos)
|
||||
body = self._statement(token_stream, stack_top)
|
||||
return (Token.DO, expr, body)
|
||||
return (Token.WHILE, expr, body)
|
||||
|
||||
def _return_statement(self, token_stream, stack_top):
|
||||
token_stream.pop()
|
||||
|
Loading…
x
Reference in New Issue
Block a user