namespaces - ANTLR v3 C# 命名空间

标签 namespaces antlr

希望这是一个非常快的 ;) 我已经在 ANTLR3 中编写了一个词法分析器/解析器规范,并且针对 CSharp2 目标。生成的代码工作正常,但我无法让 ANTLR 将 C# 输出放入命名空间。

语法文件的相关部分如下:

grammar MyGrammar;

options
{
    language = CSharp2;
    output = AST;
    ASTLabelType = CommonTree;
}

为了生成正确的命名空间,我尝试过:
@namespace { MyNamespace }


@lexer::namespace { MyNamespace }
@parser::namespace { MyNamespace }

但是这两者都会产生错误,声称该文件没有规则。

任何帮助表示赞赏。

最佳答案

我将它用于组合词法分析器和解析器(并且它正确生成命名空间):

grammar Test;

options
{
    language=CSharp2;
}

@lexer::namespace {
    My.Name.Space
}

@parser::namespace {
    My.Name.Space
}


DIGIT   :   '0'..'9';

simple  :    DIGIT EOF;

所以我想知道为什么你的版本不起作用 - 也许你想试试这个简单的例子,看看它是否适合你。

关于namespaces - ANTLR v3 C# 命名空间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/316341/

相关文章:

javascript - 使用 Javascript 的带有命名空间的 xPath XML 文件

javascript - 将命名空间分配给 src 库文件

javascript - 如何用函数包装 JS 库并将其放入命名空间?

windows - Windows 私有(private)命名空间可以根据完整性级别隔离进程吗?

antlr - 如何在 Antlr 4/c# 中控制错误处理和同步

java - ANTLR4:消耗所有剩余输入直到 EOF

objective-c - 使用 Objective-C/Cocoa 平面命名空间

java - 使用 ANTLR 4.7 : need to parse fragments in string literals 解析 Swift

ANTLR解释器运行错误

java - 我可以指定特定的解析器规则来跳过空格吗?