<分区>
我可能是错的,但目前看来还没有适用于 C#/.NET 的直接 flex/bison (lex/yacc) 端口。
对于LALR解析器,我找到了GPPG/GPLEX,对于LL解析器,有著名的ANTLR。但是,我想尽可能多地重用我的 flex/bison 语法。
- 是否有用于 C# 的 flex/bison 的任何直接端口?
- 人们通常为 C# 使用什么词法分析器/解析器?做出这样的选择有什么理由吗?
<分区>
我可能是错的,但目前看来还没有适用于 C#/.NET 的直接 flex/bison (lex/yacc) 端口。
对于LALR解析器,我找到了GPPG/GPLEX,对于LL解析器,有著名的ANTLR。但是,我想尽可能多地重用我的 flex/bison 语法。
最佳答案
我认为你最好的选择是 GPLEX/GPPG,这是我所知道的最接近用于 C# 的 Yacc/Lex 的东西,无论如何你都需要将你的操作移植到 C# 中。
我还使用过 Coco/R、ANTLR(当然),最近还玩过 Irony.net、fslex/fsyacc (F#) 和 fparsec (F#)。
这里是一些链接
Gardens Point Parser Generator
我没有使用一个与另一个的技术原因:我玩这些主要是为了好玩。很多年前我确实为工作项目创建了一些 DSL,但我在这些项目上手动滚动了扫描器/解析器(那时我主要在 Pascal 工作,我发现 TP Lex/Yacc 不适合我的口味,并且DSL 很简单)。我发现 FParsec 和 Irony 最适合我的口味,因为我发现另一个有点“凌乱”(缺乏优雅)。
关于c# - C# 是否有(直接)flex/yacc 端口?或者人们为 C# 使用什么词法分析器/解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2974630/