yacc_nop.py
来自「linux下基于c++的处理器仿真平台。具有处理器流水线」· Python 代码 · 共 68 行
PY
68 行
# -----------------------------------------------------------------------------# yacc_nop.py## Possible grammar rule defined without p_ prefix# -----------------------------------------------------------------------------import syssys.tracebacklimit = 0from calclex import tokens# Parsing rulesprecedence = ( ('left','PLUS','MINUS'), ('left','TIMES','DIVIDE'), ('right','UMINUS'), )# dictionary of namesnames = { }def p_statement_assign(t): 'statement : NAME EQUALS expression' names[t[1]] = t[3]def statement_expr(t): 'statement : expression' print t[1]def p_expression_binop(t): '''expression : expression PLUS expression | expression MINUS expression | expression TIMES expression | expression DIVIDE expression''' if t[2] == '+' : t[0] = t[1] + t[3] elif t[2] == '-': t[0] = t[1] - t[3] elif t[2] == '*': t[0] = t[1] * t[3] elif t[3] == '/': t[0] = t[1] / t[3]def p_expression_uminus(t): 'expression : MINUS expression %prec UMINUS' t[0] = -t[2]def p_expression_group(t): 'expression : LPAREN expression RPAREN' t[0] = t[2]def p_expression_number(t): 'expression : NUMBER' t[0] = t[1]def p_expression_name(t): 'expression : NAME' try: t[0] = names[t[1]] except LookupError: print "Undefined name '%s'" % t[1] t[0] = 0def p_error(t): print "Syntax error at '%s'" % t.valueimport yaccyacc.yacc()
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?