EBNF语法分析器modu

2024-06-26 13:42:12 发布

您现在位置:Python中文网/ 问答频道 /正文

你知道有一个语法分析器模块(用Ruby、Python、Javascript等编写)在给定一个标记列表和一个类似于EBNF的语法(作为简单字符串传递)时,它会返回解析后的树吗?我发现的与此最接近的是SimpleParse,这是一个不错的库,但不幸的是它使用了一步解析(没有标记化)。如果可能的话,我宁愿不使用实现与语言本身纠缠在一起的库(pyparsingtreetop,…)。在

我不担心lexing/tokenization,因为有很多库可用(甚至编写自己的库也很容易),但是实现ENBF解析器并不是一项简单的任务。我检查了pythonwiki LanguageParsing并测试了其中一些,但没有任何效果(可能我忽略了我正在寻找的那个,有太多了…)


Tags: 模块字符串标记语言列表语法pyparsingjavascript
2条回答

如果您完全熟悉Clojure,我发现Instaparse很棒。您可以在“vanilla”EBNF中以多行字符串的形式编写(或者在一个单独的文件中,它甚至将EBNF从上下文无关的语法扩展到上下文相关的语法中(尽管我没有用过那么多)。在

经过更多的搜索之后,我决定采用典型的lex/yacc方法,使用Jison表示{a2}。在

相关问题 更多 >