diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-05-26 22:56:12 +0300 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-05-26 22:56:12 +0300 |
commit | 17ba9bccd0e32fb85df924dc7d2b87b6ec0691c0 (patch) | |
tree | 167b32fbc318cb977b302518cb1790e8a40c0961 | |
parent | 371e747ca455851ae4597e0071abc90f040ae448 (diff) | |
download | meson-17ba9bccd0e32fb85df924dc7d2b87b6ec0691c0.zip meson-17ba9bccd0e32fb85df924dc7d2b87b6ec0691c0.tar.gz meson-17ba9bccd0e32fb85df924dc7d2b87b6ec0691c0.tar.bz2 |
Parse function and method calls properly.
-rw-r--r-- | interpreter.py | 1 | ||||
-rw-r--r-- | mparser.py | 8 |
2 files changed, 5 insertions, 4 deletions
diff --git a/interpreter.py b/interpreter.py index 03ee59d..517335f 100644 --- a/interpreter.py +++ b/interpreter.py @@ -1379,6 +1379,7 @@ class Interpreter(): for i in node.ifs: result = self.evaluate_statement(i.condition) if not(isinstance(result, bool)): + print(result) raise InvalidCode('If clause does not evaluate to true or false.') if result: self.evaluate_codeblock(i.block) @@ -343,15 +343,15 @@ class Parser: def e6(self): left = self.e7() - if self.accept('dot'): - return self.method_call(left) - elif self.accept('lparen'): + if self.accept('lparen'): args = self.args() self.expect('rparen') if not isinstance(left, IdNode): raise ParseException('Function call must be applied to plain id', left.lineno, left.colno) - return FunctionNode(left.lineno, left.colno, left.value, args) + left = FunctionNode(left.lineno, left.colno, left.value, args) + while self.accept('dot'): + left = self.method_call(left) return left def e7(self): |