[jsinterp] Parentheses fix (test and parser)
This commit is contained in:
parent
599b9db878
commit
70a5e31014
@ -209,33 +209,71 @@ class TestJSInterpreterParser(unittest.TestCase):
|
|||||||
]
|
]
|
||||||
self.assertEqual(list(jsi.statements()), ast)
|
self.assertEqual(list(jsi.statements()), ast)
|
||||||
|
|
||||||
@unittest.skip('Expression parsed as call argument!')
|
|
||||||
def test_parens(self):
|
def test_parens(self):
|
||||||
jsi = JSInterpreter('return (1) + (2) * ((( (( (((((3)))))) )) ));')
|
jsi = JSInterpreter('return (1 + 2) * 3;')
|
||||||
ast = [(Token.RETURN, (Token.EXPR, [
|
ast = [
|
||||||
|
(Token.RETURN, (Token.EXPR, [
|
||||||
(Token.ASSIGN, None,
|
(Token.ASSIGN, None,
|
||||||
(Token.OPEXPR, [
|
(Token.OPEXPR, [
|
||||||
(Token.EXPR, [
|
(Token.MEMBER, (Token.EXPR, [
|
||||||
(Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 1), None, None)]), None)
|
(Token.ASSIGN, None,
|
||||||
]),
|
(Token.OPEXPR, [
|
||||||
(Token.EXPR, [
|
(Token.MEMBER, (Token.INT, 1), None, None),
|
||||||
(Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 2), None, None)]), None)
|
(Token.MEMBER, (Token.INT, 2), None, None),
|
||||||
]),
|
(Token.OP, _OPERATORS['+'][1])
|
||||||
(Token.EXPR, [(Token.EXPR, [(Token.EXPR, [
|
]), None)
|
||||||
(Token.EXPR, [(Token.EXPR, [
|
]), None, None),
|
||||||
(Token.EXPR, [(Token.EXPR, [(Token.EXPR, [(Token.EXPR, [(Token.EXPR, [
|
(Token.MEMBER, (Token.INT, 3), None, None),
|
||||||
(Token.ASSIGN, None, (Token.OPEXPR, [(Token.MEMBER, (Token.INT, 3), None, None)]), None)
|
(Token.OP, _OPERATORS['*'][1])
|
||||||
])])])])])
|
|
||||||
])])
|
|
||||||
])])])
|
|
||||||
]), None)
|
]), None)
|
||||||
]))
|
]))
|
||||||
|
|
||||||
]
|
]
|
||||||
self.assertEqual(list(jsi.statements()), ast)
|
self.assertEqual(list(jsi.statements()), ast)
|
||||||
|
|
||||||
jsi = JSInterpreter('return (1 + 2) * 3;')
|
jsi = JSInterpreter('return (1) + (2) * ((( (( (((((3)))))) )) ));')
|
||||||
ast = []
|
ast = [
|
||||||
|
(Token.RETURN, (Token.EXPR, [
|
||||||
|
(Token.ASSIGN, None,
|
||||||
|
(Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.INT, 1), None, None)
|
||||||
|
]), None),]), None, None),
|
||||||
|
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.INT, 2), None, None)
|
||||||
|
]), None)]), None, None),
|
||||||
|
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.EXPR, [(Token.ASSIGN, None, (Token.OPEXPR, [
|
||||||
|
(Token.MEMBER, (Token.INT, 3), None, None)
|
||||||
|
]), None)]), None, None)
|
||||||
|
]), None)]), None, None)
|
||||||
|
]), None)]), None, None)
|
||||||
|
]), None)]), None, None)
|
||||||
|
]), None)]), None, None)
|
||||||
|
|
||||||
|
]), None)]), None, None)
|
||||||
|
]), None)]), None, None)
|
||||||
|
|
||||||
|
]), None)]), None, None)
|
||||||
|
]), None)]), None, None)
|
||||||
|
]), None)]), None, None),
|
||||||
|
|
||||||
|
(Token.OP, _OPERATORS['*'][1]),
|
||||||
|
(Token.OP, _OPERATORS['+'][1])
|
||||||
|
]), None)
|
||||||
|
]))
|
||||||
|
]
|
||||||
self.assertEqual(list(jsi.statements()), ast)
|
self.assertEqual(list(jsi.statements()), ast)
|
||||||
|
|
||||||
@unittest.skip('Incomplete test case')
|
@unittest.skip('Incomplete test case')
|
||||||
|
@ -257,7 +257,7 @@ class JSInterpreter(object):
|
|||||||
if peek_id is not Token.PCLOSE:
|
if peek_id is not Token.PCLOSE:
|
||||||
raise ExtractorError('Unbalanced parentheses at %d' % open_pos)
|
raise ExtractorError('Unbalanced parentheses at %d' % open_pos)
|
||||||
token_stream.pop()
|
token_stream.pop()
|
||||||
return (Token.EXPR, expr)
|
return expr
|
||||||
# empty (probably)
|
# empty (probably)
|
||||||
else:
|
else:
|
||||||
return None
|
return None
|
||||||
|
Loading…
x
Reference in New Issue
Block a user