diff options
author | Jussi Pakkanen <jpakkane@gmail.com> | 2014-03-12 22:53:18 +0200 |
---|---|---|
committer | Jussi Pakkanen <jpakkane@gmail.com> | 2014-03-12 22:53:18 +0200 |
commit | 0bf431c84468bf143f1e68c582f420732632fdbe (patch) | |
tree | 7eda5925a695588a6af7b1fc3d57dd5e01d84043 /parsertest.py | |
parent | eae1e44e0f6d6217900f2d987a4ff125b0a67084 (diff) | |
download | meson-0bf431c84468bf143f1e68c582f420732632fdbe.zip meson-0bf431c84468bf143f1e68c582f420732632fdbe.tar.gz meson-0bf431c84468bf143f1e68c582f420732632fdbe.tar.bz2 |
Parses small file.
Diffstat (limited to 'parsertest.py')
-rwxr-xr-x | parsertest.py | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/parsertest.py b/parsertest.py index 0bb9710..a3f3a68 100755 --- a/parsertest.py +++ b/parsertest.py @@ -127,18 +127,21 @@ class Parser: self.getsym() def getsym(self): - self.current = next(self.stream) + try: + self.current = next(self.stream) + except StopIteration: + self.current = Token('eof', 0, 0) def accept(self, s): if self.current.tid == s: self.getsym() return True return False - + def expect(self, s): if self.accept(s): return True - raise ParseException('Unknown token ' + self.current.tid, self.current.lineno, self.current.colno) + raise ParseException('Expecting %s got %s.' % (s, self.current.tid), self.current.lineno, self.current.colno) def parse(self): self.codeblock() @@ -210,10 +213,6 @@ class Parser: if self.accept('comma'): self.args() - def rest_statement(self): - if self.accept('.'): - self.method_call() - def method_call(self): self.e8() self.expect('lparen') @@ -243,7 +242,7 @@ class Parser: self.expect('rparen') def ifelseblock(self): - if self.accept('elif'): + while self.accept('elif'): self.statement() self.expect('eol') self.codeblock() @@ -268,7 +267,9 @@ class Parser: cond = True while cond: self.line() - cond = self.expect('eol') or self.current == 'elif' or self.current == 'else' + cond = self.accept('eol') + if self.current == 'elif' or self.current == 'else': + cond = False if __name__ == '__main__': code = open(sys.argv[1]).read() |