用 ply 制作计算器
来源:互联网 发布:js中怎样定义一个数组 编辑:程序博客网 时间:2024/05/18 18:54
import ply.leximport ply.yacctokens = ( "NAME", "NUMBER" )literals = [ "=", "+", "-", "*", "/", "(", ")" ]t_NAME = r"[a-zA-Z_][a-zA-Z0-9_]*"def t_NUMBER( t ): r"\d+" t.value = int( t.value ) return tt_ignore = " \t"def t_newline( t ): r"\n+" t.lexer.lineno += t.value.count( "\n" )def t_error( t ): print( "Illegal character '%s'" % t.value[0] ) t.lexer.skip( 1 )lexer = ply.lex.lex()names = {}def p_Statement( p ): """Statement : Experssion | NAME '=' Experssion""" if len( p ) == 2: print p[1] else: names[p[1]] = p[3]def p_exp_Experssion( p ): """Experssion : Experssion '+' Term | Experssion '-' Term | Term""" if len( p ) == 2: p[0] = p[1] else: if p[2] == "+": p[0] = p[1] + p[3] else: p[0] = p[1] - p[3]def p_exp_Term( p ): """Term : Term '/' Factor | Term '*' Factor | Factor""" if len( p ) == 2: p[0] = p[1] else: if p[2] == "/": p[0] = p[1] / p[3] else: p[0] = p[1] * p[3]def p_exp_Factor( p ): """Factor : '(' Experssion ')' | NUMBER""" if len( p ) == 2: p[0] = p[1] else: p[0] = p[2]def p_exp_Name( p ): """Factor : NAME""" p[0] = names[p[1]]def p_error(p): if p: print( "Syntax error at '%s'" % p.value ) else: print( "Syntax error at EOF" )ply.yacc.yacc()while True: try: s = raw_input( "cal> " ) except EOFError: break if not s: continue ply.yacc.parse( s )
0 0
- 用 ply 制作计算器
- java用制作小计算器
- 用Java swing制作简单的计算器
- 计算器制作中
- 网页计算器制作源代码
- 计算器的制作
- VC++制作整数计算器
- 简单的计算器制作
- JavaScript制作标准计算器
- html制作简易计算器
- java 制作小计算器
- javascript制作简易计算器
- javascript制作简易计算器
- 视频教程:计算器制作--MFC
- jquery制作简单计算器
- 制作简易计算器
- 制作简易的计算器
- 制作简易计算器配置文件
- WebM: 一个开放、免费的媒体文件格式
- JDK、JRE、JVM三者间的关系
- 欧拉函数之HDU1286 找新朋友
- lua中table如何安全移除元素
- oracle获取存储过程脚本
- 用 ply 制作计算器
- WinForm(C#)中跨线程访问控件的解决方法
- 动画特效十三:自定义过度动画之基本使用
- hdu 1231&1003 -最大连续子序列-动态规划
- NSStringEncoding关于文字编码问题的解决方法
- 从网上找的Android实用代码,记录备用
- 0131 Eclipse远程调试(远程服务器端监听)
- Python字符串
- PHP发送短信