我可能错了,但是到目前为止,C#/.NET没有直接的flex/bison (lex/yacc)端口。
对于LALR解析器,我找到了GPPG/GPLEX,对于LL解析器,有著名的ANTLR。但是,我想尽可能地重用我的flex/bison语法。
发布于 2010-06-04 17:17:41
我认为您最好的选择是GPLEX/GPPG,这是我所知道的C#中最接近于Yacc/Lex的东西,您需要将您的操作移植到C#中。
我还使用了Coco/R、ANTLR (当然),最近还使用了Irony.net、fslex/fsyacc (F#)和fparsec (F#)。
这里有一些链接
法尔塞特
Coco/R
花园点分析器发生器
花园点莱克斯
我没有一个技术上的理由来使用一种对另一种:我玩这些主要是为了好玩。很多年前,我确实为工作项目创建了一些DSL,但是我把扫描仪/解析器放在上面(当时我主要是在Pascal上工作,我发现TP Lex/Yacc不适合我的口味,而且DSLs已经足够简单了)。我发现FParsec和讽刺最适合我的口味,因为我发现另一个有点“凌乱”(缺乏优雅)。
发布于 2010-06-09 16:15:19
反是一个非常成熟(也非常棒)的解析器/词法生成器。它最初生成了Java代码,但现在可以针对几种语言,即包括C#。
发布于 2010-06-05 10:19:10
看看"Managed“扩展,这里有一个非常经典的lex和yacc端口。
http://msdn.microsoft.com/en-us/library/bb165037(VS.80).aspx
https://stackoverflow.com/questions/2974630
复制相似问题