|
1
2
为什么称此为“XML样式”标记?-对我来说,这看起来很像标准/基本的XML。 尝试elementtree或lxml。不要编写解析器,而是使用已经存在的稳定的、很好地加固的库之一。 |
|
|
2
1
你不能用(n e)bnf语法来构建一个解析器,更不用说整个编译器了,它只是语法,也就是语法(一些语法,比如python的基于缩进的块规则,根本不能用它来建模),而不是语义。要么使用分离的工具来支持这些方面,要么使用一个更先进的框架(如Booost:C++中的灵魂或Haskell中的Parsec)来统一这两个框架。 javacc(像yacc)负责生成一个解析器,即能够理解从源代码中读取的令牌的子程序。为此,他们将(E)BNF类符号与语言编写的代码混合在一起,生成的解析器将在(例如,构建解析树)-在这种情况下,Java。当然,有可能组成另一种语言——但由于现有的语言可以相对较好地处理这些任务,所以这将是毫无意义的。由于编译器的其他部分可能是用同一种语言手工编写的,所以留下“我得到了Ze令牌,我该怎么处理它们?”写这些其他部分的人的一部分;) 我从来没有听说过“pythoncc”,谷歌也没有(好吧,谷歌代码上有一个“pythoncc”项目,但它的描述只是说“pythoncc是一个试图为python脚本生成优化机器代码的程序。”而且自3月份以来没有提交过)。你是说 any of these python parsing libraries/tools? 但是我不认为有一种方法可以自动将javacc代码转换成与python等效的代码——但是整个过程看起来相当简单,因此如果您深入学习一下如何通过javacc和[python library/tool of your choice]进行解析,您可能能够翻译它…… |