yacc_inf.py
来自「M5,一个功能强大的多处理器系统模拟器.很多针对处理器架构,性能的研究都使用它作」· Python 代码 · 共 58 行
PY
58 行
# -----------------------------------------------------------------------------# yacc_inf.py## Infinite recursion# -----------------------------------------------------------------------------import syssys.tracebacklimit = 0sys.path.insert(0,"..")import ply.yacc as yaccfrom 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 p_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_error(t): print "Syntax error at '%s'" % t.valueyacc.yacc()
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?