C#有(直接)flex/yacc端口吗?或者lexer/parser用于C#的是什么?

pro*_*eek 18 .net c# parsing lexer

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

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

  • 对于C#,有没有直接的flex/bison端口?
  • 人们通常使用哪些词法分析器/解析器来进行C#?这个选择有什么理由吗?

And*_*tus 17

我认为你最好的选择是GPLEX/GPPG,这是我所知道的最接近Yacc/Lex的C#,你需要将你的行动移植到C#中.

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

这是一些链接

Fparsec

椰油/ R

Irony.net

Gardens Point Parser Generator

Gardens Point Lex

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