Changed API of Parser in all chapters to be consistent with the new one in 6
This commit is contained in:
parent
f11cd1aecc
commit
b65b1c0c73
4 changed files with 55 additions and 25 deletions
17
chapter5.py
17
chapter5.py
|
|
@ -225,13 +225,22 @@ class ParseError(Exception): pass
|
|||
|
||||
|
||||
class Parser(object):
|
||||
def __init__(self, buf):
|
||||
"""Parser for the Kaleidoscope language.
|
||||
|
||||
After the parser is created, invoke parse_toplevel multiple times to parse
|
||||
Kaleidoscope source into an AST.
|
||||
"""
|
||||
def __init__(self):
|
||||
self.token_generator = None
|
||||
self.cur_tok = None
|
||||
|
||||
# toplevel ::= definition | external | expression | ';'
|
||||
def parse_toplevel(self, buf):
|
||||
"""Given a string, returns an AST node representing it."""
|
||||
self.token_generator = Lexer(buf).tokens()
|
||||
self.cur_tok = None
|
||||
self._get_next_token()
|
||||
|
||||
# toplevel ::= definition | external | expression | ';'
|
||||
def parse_toplevel(self):
|
||||
if self.cur_tok.kind == TokenKind.EXTERN:
|
||||
return self._parse_external()
|
||||
elif self.cur_tok.kind == TokenKind.DEF:
|
||||
|
|
@ -674,7 +683,7 @@ class KaleidoscopeEvaluator(object):
|
|||
value for toplevel expressions.
|
||||
"""
|
||||
# Parse the given code and generate code from it
|
||||
ast = Parser(codestr).parse_toplevel()
|
||||
ast = Parser().parse_toplevel(codestr)
|
||||
self.codegen.generate_code(ast)
|
||||
|
||||
if llvmdump:
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue