Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

ANTLR for C# and CLSCompliant attribute

I'm using ANTLR V3 to produce C# code for DSL language.

The produced code contain the attribute CLSCompliant on both laxer and parser classes which cause a warning to be generated because my project is not CLS compliant.

  1. How can I make ANTLR produce code without the CLSCompliant attribute?
  2. Is it possible to change the string template of C# 3 grammar?
like image 722
Ido Ran Avatar asked Dec 21 '11 13:12

Ido Ran


2 Answers

I guess you've figured out the easy workaround by now which consists in disabling the corresponding warning (and saves you from fiddling with the templates).

Simply add the following to your grammar file

@parser::header {#pragma warning disable 3021}
@lexer::header {#pragma warning disable 3021}

HTH Gabriel

like image 104
Gabriel Avatar answered Oct 07 '22 20:10

Gabriel


Instead of suppressing the warnings, it's correct to explicitly state that the assembly is not CLS compliant using an attribute in AssemblyInfo.cs:

[assembly: CLSCompliant(false)]

This will remove the warnings at compilation as well.

like image 32
Alexei Matrosov Avatar answered Oct 07 '22 19:10

Alexei Matrosov