用于C#和CLSCompliant属性的ANTLR

Ido*_*Ran 7 cls-compliant antlr3

我正在使用ANTLR V3为DSL语言生成C#代码.

生成的代码在laxer和parser类上都包含属性CLSCompliant,这会导致生成警告,因为我的项目不符合CLS.

  1. 如何在没有CLSCompliant属性的情况下使ANTLR生成代码?
  2. 是否可以更改C#3语法的字符串模板?

小智 11

我想你现在已经找到了简单的解决方法,其中包括禁用相应的警告(并使您免于摆弄模板).

只需将以下内容添加到语法文件中即可

@parser::header {#pragma warning disable 3021}
@lexer::header {#pragma warning disable 3021}
Run Code Online (Sandbox Code Playgroud)

HTH Gabriel

  • 我相信`@header {#pragma warning disable 3021}` 会将编译指示添加到解析器和词法分析器文件中,而不是需要两个单独的行。 (3认同)

Ale*_*sov 6

使用 in 中的属性明确声明程序集不符合 CLS 是正确的,而不是取消警告AssemblyInfo.cs

[assembly: CLSCompliant(false)]
Run Code Online (Sandbox Code Playgroud)

这也将删除编译时的警告。