【发布时间】:2011-12-21 13:16:05
【问题描述】:
我正在使用 ANTLR V3 为 DSL 语言生成 C# 代码。
生成的代码在 laxer 和 parser 类中都包含属性 CLSCompliant,这会导致生成警告,因为我的项目不符合 CLS。
- 如何让 ANTLR 生成没有 CLSCompliant 属性的代码?
- 是否可以更改C# 3 语法的字符串模板?
【问题讨论】:
标签: antlr3 cls-compliant
我正在使用 ANTLR V3 为 DSL 语言生成 C# 代码。
生成的代码在 laxer 和 parser 类中都包含属性 CLSCompliant,这会导致生成警告,因为我的项目不符合 CLS。
【问题讨论】:
标签: antlr3 cls-compliant
我猜你现在已经找到了一个简单的解决方法,它包括禁用相应的警告(并且让你免于摆弄模板)。
只需将以下内容添加到您的语法文件中
@parser::header {#pragma warning disable 3021}
@lexer::header {#pragma warning disable 3021}
HTH 加布里埃尔
【讨论】:
@header {#pragma warning disable 3021} 会将编译指示添加到解析器和词法分析器文件中,而不是需要两个单独的行。
使用AssemblyInfo.cs 中的属性明确声明程序集不符合 CLS 是正确的:
[assembly: CLSCompliant(false)]
这也将删除编译时的警告。
【讨论】: