C#/.NET词法分析器生成器

11

我正在寻找一个适用于C#/.NET的良好的词法扫描器生成器--它需要支持Unicode字符类别,并且能够生成相对易读和高效的代码。 有谁知道这样的工具吗?


编辑:我需要支持Unicode类别,而不仅仅是Unicode字符。 目前只有Lu(大写字母)类别中就有1421个字符,我需要非常精确地匹配许多不同的类别,并且不想手动编写所需的字符集。

另外,实际的代码是必须的--这排除了生成二进制文件然后使用驱动程序的工具(即GOLD)。


编辑:ANTLR目前尚不支持Unicode类别。 不过,有一个开放问题,所以它可能在未来符合我的需求。

4个回答

8

GPLEX似乎支持您的需求。


我怎么从来不知道GPPG? - Alex Lyman
我已经使用它多年了 :) 只有最近(去年)开始使用GPLEX。 - leppie

1
脑海中浮现出的两个解决方案是ANTLRGold。ANTLR拥有基于GUI的语法设计器,并且在C#中有一个优秀的示例项目可以在这里找到

Gold不会为词法分析器生成代码,而是构建一个特殊的二进制文件,由驱动程序在运行时读取。至于Antlr,我找不到任何暗示它支持Unicode类的东西(它似乎允许指定Unicode字符,但不是整个类)。 - Alex Lyman

1

我同意@David Robbins的看法,ANTLR可能是您最好的选择。但是,生成的ANTLR代码确实需要一个单独的运行库才能使用生成的代码,因为生成的代码依赖于一些字符串解析和其他常规库。ANTLR生成了一个词法分析器和一个解析器。

另外注意一下: ANTLR很棒...我编写了一个400多行的语法,生成了超过10,000行的C#代码,以有效地解析一种语言。这包括内置的错误检查,针对语言解析中可能出现的所有问题。手动完成这些工作,你永远无法跟上错误。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接