本文整理汇总了Python中Lexer.Lexer.reset方法的典型用法代码示例。如果您正苦于以下问题:Python Lexer.reset方法的具体用法?Python Lexer.reset怎么用?Python Lexer.reset使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Lexer.Lexer
的用法示例。
在下文中一共展示了Lexer.reset方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: Parser
# 需要导入模块: from Lexer import Lexer [as 别名]
# 或者: from Lexer.Lexer import reset [as 别名]
class Parser(object):
def __init__(self):
self.lexer = Lexer(error_callback=self._lexer_error)
self.tokens = self.lexer.tokens
self.parser = yacc.yacc(module=self)
def parse(self, text):
self.lexer.reset()
return self.parser.parse(text + "\n", lexer=self.lexer)
def _lexer_error(self, errorMsg):
raise ParseError(errorMsg)
#Grammar
def p_asm_file(self, p):
''' asm_file : asm_line
| asm_file asm_line
'''
# skip empty lines
if len(p) >= 3:
p[0] = p[1] + [p[2]] if p[2] else p[1]
else:
p[0] = [p[1]] if p[1] else []
def p_asm_line_1(self, p):
''' asm_line : empty_line
| directive NEWLINE
| instruction NEWLINE
'''
p[0] = p[1]
def p_asm_line_2(self, p):
''' asm_line : label_def NEWLINE '''
p[0] = Instruction(
label=p[1].label,
name=None,
args=[],
lineno=p[1].lineno)
def p_empty_line(self, p):
''' empty_line : NEWLINE '''
p[0] = None
def p_directive_1(self, p):
''' directive : label_def DIRECTIVE arguments_opt '''
p[0] = Directive(
label=p[1].label,
name=p[2],
args=p[3],
lineno=p.lineno(2))
def p_directive_2(self, p):
''' directive : DIRECTIVE arguments_opt '''
p[0] = Directive(
label=None,
name=p[1],
args=p[2],
lineno=p.lineno(1))
def p_instruction_1(self, p):
''' instruction : label_def ID arguments_opt '''
p[0] = Instruction(
label=p[1].label,
name=p[2],
args=p[3],
lineno=p.lineno(2))
def p_instruction_2(self, p):
''' instruction : ID arguments_opt '''
p[0] = Instruction(
label=None,
name=p[1],
args=p[2],
lineno=p.lineno(1))
def p_label_def(self, p):
''' label_def : ID COLON '''
p[0] = LabelDef(p[1], p.lineno(1))
def p_arguments_opt(self, p):
''' arguments_opt : arguments
|
'''
p[0] = p[1] if len(p) >= 2 else []
def p_arguments_1(self, p):
''' arguments : argument '''
p[0] = [p[1]]
def p_arguments_2(self, p):
''' arguments : arguments COMMA argument '''
p[0] = p[1] + [(p[3])]
def p_argument_1(self, p):
''' argument : REGISTER '''
p[0] = Register(p[1])
def p_argument_2(self, p):
''' argument : ID '''
#.........这里部分代码省略.........