有谁知道Python的FLEX或LEX规范文件的存在位置吗?例如,这是ANSI C编程语言的lex规范:http://www.quut.com/c/ANSI-C-grammar-l-1998.htmlPython编程语言的词法分析
仅供参考,我试图在Cocoa应用程序中编写代码突出显示。正则表达式不会这样做,因为我也想要语法分析来折叠代码并识别块。
有谁知道Python的FLEX或LEX规范文件的存在位置吗?例如,这是ANSI C编程语言的lex规范:http://www.quut.com/c/ANSI-C-grammar-l-1998.htmlPython编程语言的词法分析
仅供参考,我试图在Cocoa应用程序中编写代码突出显示。正则表达式不会这样做,因为我也想要语法分析来折叠代码并识别块。
Lex通常只用于标记,而不是完整的解析。使用flex/lex进行标记化的项目通常使用yacc/bison进行实际解析。
你可能想看看ANTLR,这是一个更“现代”的替代lexx & yacc。
的ANTLR项目有a Github repo containing many ANTLR 4 grammars包括至少one for Python 3。
grammar.txt是官方的,完整的Python语法 - 不是直接lex
兼容,但你应该能够将它按摩到合适的形式。
我已经看到了,但我注意到它与我所见过的lex语法有很大不同。我并不偏向flex/lex,只是寻找一些适用于语法分析器的东西。你有使用该语法文件的词法分析器的建议吗? – pokstad 2009-11-14 00:57:54
所以这会同时扫描和解析?太棒了,我听说过这个,但不确定它是多么成熟。除了吐出C代码之外,你知道它和Objective-C的搭配有多好吗?生成图表的任何选项(如铁路图或有限状态机图)? – pokstad 2009-11-14 01:03:42
是的,ANTLR同时进行扫描和解析。自从我上次使用它以来已经有一段时间了,但我记得喜欢扫描和解析语法非常相似的事实。它显然甚至有对Objective-C的明确支持(除了C,C++,Java,C#和Python)。我从来没有使用它,但你可能想尝试ANTLRWorks(http://antlr.org/works/index.html)的图表。 – 2009-11-14 01:32:44
我会给它一个镜头,谢谢! – pokstad 2009-11-14 02:50:22