c# - C# 是否有(直接)flex/yacc 端口?或者人们为 C# 使用什么词法分析器/解析器?

标签 c# .net parsing lexer

<分区>

我可能是错的,但目前看来还没有适用于 C#/.NET 的直接 flex/bison (lex/yacc) 端口。

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

  • 是否有用于 C# 的 flex/bison 的任何直接端口?
  • 人们通常为 C# 使用什么词法分析器/解析器?做出这样的选择有什么理由吗?

最佳答案

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

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

这里是一些链接

Fparsec

Coco/R

Irony.net

Gardens Point Parser Generator

Gardens Point Lex

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

关于c# - C# 是否有(直接)flex/yacc 端口?或者人们为 C# 使用什么词法分析器/解析器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2974630/

相关文章:

java - JSON 字符串使用多个类进行验证

c# - 为什么我们不能在 WCF 中使用抽象类而不是接口(interface)?

c# - 异步触发的事件可以在表单上同步运行吗?

c# - 编译器选择了错误的重载

c# - System.Windows.Forms.DataVisualization 命名空间在一个类中很好,但在另一个类中却不行

.net - 是否有一个函数可以返回特殊字符的根字母?

algorithm - 递归下降优先级解析缺失前缀表达式

parsing - 在斯坦福解析器中添加一种语言

c# - 指定格式时的日期时间转换问题

c# - 如何设置使用 .NET Web 应用程序的子文件夹作为其基础的 IIS 网站?