【问题标题】:C#/.NET Lexer GeneratorsC#/.NET 词法分析器生成器
【发布时间】:2010-09-15 09:22:52
【问题描述】:

我正在为 C#/.NET 寻找一个不错的词法扫描器生成器——它支持 Unicode 字符类别,并生成一些可读且高效的代码。有人知道吗?


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

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


编辑:ANTLR 还不支持 Unicode 类别。不过,它有一个 open issue,所以有一天它可能会满足我的需求。

【问题讨论】:

    标签: c# .net parsing generator lexical-analysis


    【解决方案1】:

    想到的两个解决方案是ANTLRGold。 ANTLR 有一个基于 GUI 的语法设计器,以及一个优秀的 C# 示例项目can be found here

    【讨论】:

    • Gold 不会为词法分析器生成 /code/ - 它会构建一个特殊的二进制文件,然后驱动程序在运行时读取该文件。至于 Antlr,我找不到任何暗示它支持 Unicode /classes/ 的东西(它似乎允许指定的 unicode 字符,但不是整个类)
    【解决方案2】:

    GPLEX 似乎支持您的要求。

    【讨论】:

    • 我怎么从来不知道 GPPG?
    • 我已经使用它多年了 :) GPLEX 只是最近(去年)。
    【解决方案3】:

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

    附带说明: ANTLR 很棒……我写了一个 400 多行的语法来生成超过 10k 或 C# 代码来有效地解析一种语言。这包括内置的错误检查,以检查语言解析中可能出错的每一个可能的事情。尝试手动执行此操作,您将永远跟不上错误。

    【讨论】:

      【解决方案4】:

      我刚刚发现了这个

      http://www.seclab.tuwien.ac.at/projects/cuplex/lex.htm

      它说它的可配置性足以支持 unicode ;-)。

      赫伯

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-03-19
        • 1970-01-01
        • 1970-01-01
        • 2022-10-22
        • 2017-09-06
        • 2023-03-26
        • 1970-01-01
        相关资源
        最近更新 更多