Parsing 哪一个解析器生成器对操作产品本身有用?

Parsing 哪一个解析器生成器对操作产品本身有用?,parsing,parser-generator,Parsing,Parser Generator,类似于,我想从语法中随机生成句子 哪种解析器生成器能够很好地处理实际的语法生成?我希望解析器生成器实际允许我访问产品(产品对象?) 如果我的语法类似于: start_symbol ::= foo foo ::= bar | baz 好的解析器生成器用于什么: 给我开始生产的标志 允许我从开始符号的RHS中选择一个产品(foo) 给我foo的生产选项 显然,每个解析器都有产品的内部表示以及将产品与其RHS关联的方法,但是哪个解析器更容易操作这些内部 注意:我提到的另一个SO问题链接到的博客有

类似于,我想从语法中随机生成句子

哪种解析器生成器能够很好地处理实际的语法生成?我希望解析器生成器实际允许我访问产品(产品对象?)

如果我的语法类似于:

start_symbol ::= foo
foo ::= bar | baz
好的解析器生成器用于什么:

  • 给我开始生产的标志
  • 允许我从开始符号的RHS中选择一个产品(
    foo
  • 给我
    foo的生产选项
显然,每个解析器都有产品的内部表示以及将产品与其RHS关联的方法,但是哪个解析器更容易操作这些内部


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

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


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

在自动生成短语时要小心:使用自己的语法生成器可能比依赖解析器生成器的内部结构容易得多。唯一困难的部分是为语法文件编写语法分析器。@larsmans,我想那将是一场噩梦,这就是我写这个问题的原因。我希望将语法作为实际语法加倍到实际解析器(不用于解析语言,也不用于解析硬件事务)。所以语法本身将有嵌入的代码,我不得不跳过。如果有人有一些干净的内部结构,我宁愿不要重新创建语法分析器。