parsing - 哪个解析器生成器对于操作产生式本身很有用?

标签 parsing parser-generator

类似于Generating n statements from context-free grammars ,我想从语法中随机生成句子。

什么是一个好的解析器生成器来操作实际语法产生式本身?我希望解析器生成器能够真正让我访问产品(生产对象?)。

如果我有类似于以下的语法:

start_symbol ::= foo
foo ::= bar | baz

什么是一个好的解析器生成器:

  • 给我起始生产符号
  • 允许我从起始符号的 RHS 中选择一个产生式(在本例中为 foo)
  • 给我 foo 的生产选项

显然,每个解析器都有产生式的内部表示以及将产生式与其 RHS 相关联的方法,但是哪个解析器可以轻松操纵这些内部结构?

注:博客entry我提到的另一个 SO 问题链接到有某种自定义 CFG 解析器。我想为真正的解析器使用实际语法,而不是生成我自己的语法解析器。

最佳答案

编写与解析器生成器接受的语法相匹配的语法应该很容易。 (使用开源解析器生成器,您应该能够从解析器生成器源代码中获取这样的语法;然后它们都具有自语法)。这样,您就可以解析解析器生成器接受的任何语法。

如果您想操作已解析的语法,您将需要一个相同的抽象语法树。您可以通过使用内置机制或您添加的临时代码,使大多数解析器生成器构建树。

关于parsing - 哪个解析器生成器对于操作产生式本身很有用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7589849/

相关文章:

java - 如何从字符串中解析时间?

PHP - 使用正则表达式解析字符串

grammar - 如何解决这个选择冲突 - JavaCC

ruby - ruby解析/静态代码分析框架

JavaCC 问题 - 生成的代码没有找到所有解析错误

ANTLR : no viable alternative error

javascript - 检查字符串是否为 Spotify URL

c# - 将 TimeSpan 解析或转换为字符串

parsing - 我可以让 Bison 使yytname在外部可见吗?

java - 试图理解解析器