百科问答小站 logo
百科问答小站 font logo



如何使用 python 写一个简单的表达式解释器? 第1页

  

user avatar   liu-ji-27-94 网友的相关建议: 
      

eval只支持解析Python的表达式语法,并且存在注入式攻击漏洞。如果想要快速构建任意表达式语法的解释器,推荐使用pyparsing库。下面摘自它的GitHub Wiki

Combined with a fear/dismay at using regular expressions, I wanted an object-assembly model for building up parsers. Since then, tools of this style have come to be called PEG's, orParsing Expression Grammars. I also related to Python's operator overloading features, and so pyparsing has become an embedded DSL within Python, making heavy use of operators for grammar construction and call syntax for grammar element naming.

翻译过来就是:「由于使用正则表达式让我恐惧/沮丧,我希望能有一个用于构建解释器的面向对象的框架。从那时起,这种类型的工具逐渐被称做PEG(Parsing Expression Grammars,即解析表达式语法)。PyParasing已经成为嵌入在Python语法中的领域专用语言,并且引入了Python的运算符重载特性。通过它,你可以方便地使用运算符进行语法构造,并可以为可调用的语法产生式符号进行命名。」可以参考一下我的这篇文章:




  

相关话题

  为什么现在国内各大高校仍选用谭浩强的《C 程序设计》为教材? 
  为什么那么多程序员、本科生等非中医药专业的人在很坚决地否定中医药的医学价值,甚至也否定阴阳的科学性? 
  为什么同样是解决一个问题,别人就能想出算法,而我却绞尽脑汁,百般尝试也不得其法? 
  你是因为什么而喜欢上编程的? 
  C 语言是否需要改进,甚至重新设计一门语言取代 C 语言? 
  通俗地讲为何要有返回值? 
  江湖上流传着哪些关于R大RednaxelaFX的黑暗传说? 
  有什么高质量的现代 C++ 风格的开源代码? 
  参加ICPC国际编程竞赛的大学生到底有多厉害,在校生该如何准备? 
  在C#中 String.Empty和 "" 有什么区别? 

前一个讨论
《失控玩家》中的游戏有可能实现出来吗?
下一个讨论
读硕/博期间你积累了哪些重要的科研经验?





© 2025-05-29 - tinynew.org. All Rights Reserved.
© 2025-05-29 - tinynew.org. 保留所有权利