17

我可能错了,但到目前为止,C#/.NET 似乎没有直接的 flex/bison (lex/yacc) 端口。

对于 LALR 解析器,我找到了 GPPG/GPLEX,对于 LL 解析器,有著名的 ANTLR。但是,我想尽可能地重用我的 flex/bison 语法。

  • C# 有没有直接的 flex/bison 端口?
  • 人们通常在 C# 中使用什么词法分析器/解析器?这样的选择有什么理由吗?
4

3 回答 3

18

我认为你最好的选择是 GPLEX/GPPG,这是我所知道的最接近 C# 的 Yacc/Lex 的东西,无论如何你都需要将你的操作移植到 C# 中。

我还使用过 Coco/R、ANTLR(当然),最近玩过 Irony.net、fslex/fsyacc (F#) 和 fparsec (F#)。

这里有一些链接

帧秒

可可/R

讽刺网

花园点解析器生成器

花园点 Lex

我没有使用一个与另一个的技术原因:我玩这些主要是为了好玩。几年前我确实为工作项目创建了一些 DSL,但我在这些上手动滚动了扫描仪/解析器(当时我主要在 Pascal 中工作,我发现 TP Lex/Yacc 不适合我的口味,并且DSL 很简单)。我发现 FParsec 和 Irony 最适合我的口味,因为我发现另一个有点“凌乱”(缺乏优雅)。

于 2010-06-04T17:17:41.780 回答
2

ANTLR是一个非常成熟(并且很棒)的解析器/词法分析器生成器。它最初生成 Java 代码,但现在可以针对多种语言,包括 C#

于 2010-06-09T16:15:19.703 回答
1

看看“Managed babel”扩展,有相当经典的 lex 和 yacc 移植。

http://msdn.microsoft.com/en-us/library/bb165037(VS.80).aspx

于 2010-06-05T10:19:10.430 回答