2008-10-05 68 views
11

我正在寻找一个像样的词法扫描生成器的C#/。NET - 东西,支持Unicode字符类别,并生成有点可读&有效的代码。任何人都知道吗?C#/。NET Lexer生成器


编辑:我需要的Unicode类别,不只是Unicode字符支持。目前在Lu(Letter,Uppercase)类别中仅有1421个字符,我需要非常明确地匹配许多不同的类别,而不是手写必要的字符集。

而且,实际的代码是一个必须 - 这排除了的东西产生(即GOLD)的二进制文件,然后与司机使用


编辑:ANTLR不支持Unicode类别呢。尽管如此,它有一个open issue,所以有一天它可能适合我的需求。

回答

8

GPLEX似乎支持您的要求。

1

想到的两个解决方案是ANTLRGold。 ANTLR有一个基于GUI的语法设计器,并且在C#can be found here中是一个很好的示例项目。

+0

黄金不产生/代码/对词法分析器 - 它建立了一个特殊的二进制文件,它的驱动程序,在运行时读取。至于Antlr,我找不到甚至意味着它支持Unicode/classes /的东西(它似乎允许指定的Unicode字符,但不允许全部类) – 2008-10-05 16:43:33

+0

ANTLR不支持Unicode字符类 – artur02 2008-10-05 18:06:15

1

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

附注: ANTLR很棒...我写了一个400多行的语法来生成超过10k或C#代码来有效地解析语言。这包括内置的错误检查功能,用于解析语言时可能出错的所有可能的事情。试着用手去做,而且你永远不会跟上这些错误。