[antlr-interest] C# Target: Problems with Mono
Felix Natter
felix.natter at smail.inf.fh-brs.de
Tue Mar 1 13:00:33 PST 2011
hello,
I am trying to generate C# code from my grammar for use with Mono2
(v1.9).
I tried to use the C# runtime binaries (ANTLR-3.1-2009-06-28.7z):
$ cd ANTLR-binary/
$ mono Antlr3.exe
** (Antlr3.exe:4230): WARNING **: Missing method System.Reflection.Emit.DynamicMethod::.ctor(string,Type,Type[]) in assembly /usr/lib/mono/2.0/mscorlib.dll, referenced in assembly /home/felix/doks/CSMath/ANTLR/ANTLR-binary/Antlr3.StringTemplate.dll
Unhandled Exception: System.TypeInitializationException: An exception was thrown by the type initializer for Antlr3.Tool.ErrorManager ---> System.TypeInitializationException: An exception was thrown by the type initializer for Antlr3.ST.StringTemplateGroup ---> System.MissingMethodException: Method not found: 'System.Reflection.Emit.DynamicMethod..ctor'.
at Antlr3.ST.StringTemplateGroup..cctor () [0x00000] --- End of inner exception stack trace ---
[...]
I also tried to recompile the Runtime:
----------------------
$ cd antlr-3.3/runtime/CSharp2/
$ nant clean
NAnt 0.85 (Build 0.85.2478.0; release; 14.10.2006)
Copyright (C) 2001-2006 Gerry Shaw
http://nant.sourceforge.net
Buildfile: file:///home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/all.antlr3.runtime.net.build
Target framework: Mono 2.0 Profile
Target(s) specified: clean
clean:
[delete] Deleting directory '/home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/bin'.
[delete] Deleting directory '/home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/build/mono-2.0'.
BUILD SUCCEEDED
Total time: 0.1 seconds.
----------------------
----------------------
$ $ nant build
NAnt 0.85 (Build 0.85.2478.0; release; 14.10.2006)
Copyright (C) 2001-2006 Gerry Shaw
http://nant.sourceforge.net
Buildfile: file:///home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/all.antlr3.runtime.net.build
Target framework: Mono 2.0 Profile
Target(s) specified: build
clean:
init:
[mkdir] Creating directory '/home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/bin'.
[mkdir] Creating directory '/home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/build/mono-2.0'.
copy_build_dependencies:
[copy] Copying 3 files to '/home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/build/mono-2.0'.
build.v3.runtime:
[nant] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/default.build build
Buildfile: file:///home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/default.build
Target framework: Mono 2.0 Profile
Target(s) specified: build
[tstamp] 1. März 2011 21:05:34.
[echo] Building project: 'Antlr3.Runtime' version 3.1b1 ==> 'Antlr3.Runtime.dll'
clean:
copy_build_dependencies:
[copy] Copying 3 files to '/home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/bin'.
init:
[mkdir] Creating directory '/home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/bin/tests'.
compile:
[csc] Compiling 105 files to '/home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/bin/Antlr3.Runtime.dll'.
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime/CommonToken.cs(115,0): warning CS1587: XML comment is not placed on a valid language element
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime/Lexer.cs(61,0): warning CS1587: XML comment is not placed on a valid language element
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime/Lexer.cs(68,0): warning CS1587: XML comment is not placed on a valid language element
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime/Lexer.cs(161,0): warning CS1587: XML comment is not placed on a valid language element
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime/Lexer.cs(266,0): warning CS1587: XML comment is not placed on a valid language element
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/ITreeNodeStream.cs(44,9): warning CS1587: XML comment is not placed on a valid language element
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(40,21): error CS0246: The type or namespace name `IAstRuleReturnScope`1' could not be found. Are you missing a using directive or an assembly reference?
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(40,16): error CS0234: The type or namespace name `Func`1' does not exist in the namespace `System'. Are you missing an assembly reference?
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(41,21): error CS0246: The type or namespace name `IAstRuleReturnScope`1' could not be found. Are you missing a using directive or an assembly reference?
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(41,16): error CS0234: The type or namespace name `Func`1' does not exist in the namespace `System'. Are you missing an assembly reference?
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(54,63): error CS0246: The type or namespace name `IAstRuleReturnScope`1' could not be found. Are you missing a using directive or an assembly reference?
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(54,58): error CS0234: The type or namespace name `Func`1' does not exist in the namespace `System'. Are you missing an assembly reference?
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(86,69): error CS0246: The type or namespace name `IAstRuleReturnScope`1' could not be found. Are you missing a using directive or an assembly reference?
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(86,64): error CS0234: The type or namespace name `Func`1' does not exist in the namespace `System'. Are you missing an assembly reference?
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(105,24): error CS0246: The type or namespace name `IAstRuleReturnScope`1' could not be found. Are you missing a using directive or an assembly reference?
[csc] Compilation failed: 10 error(s), 6 warnings
[csc] /home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/Antlr.Runtime.Tree/TreeRewriter.cs(109,24): error CS0246: The type or namespace name `IAstRuleReturnScope`1' could not be found. Are you missing a using directive or an assembly reference?
BUILD FAILED - 0 non-fatal error(s), 16 warning(s)
/home/felix/doks/CSMath/ANTLR/antlr-3.3/runtime/CSharp2/Sources/Antlr3.Runtime/default.build(83,4):
External Program Failed: /usr/lib/mono/2.0/gmcs.exe (return code was 1)
Total time: 0.7 seconds.
BUILD FAILED
----------------------
Next I tried to copy over the generated Lexer + Parser (with options
{language=CSharp2;}) to a C# Project (using Monodevelop) and reference
Antlr3.Runtime.dll in the solution. But then I get these errors
(I guess this is because the c#-runtime-binaries are for antlr 3.1):
----------------------
/home/felix/doks/CSMath/CSAnalysis/simpleexprLexer.cs(1136,40): error CS0115: `simpleexprLexer.DFA10.Description' is marked as an override but no suitable property found to override
/home/felix/doks/CSMath/CSAnalysis/simpleexprLexer.cs(1220,40): error
CS0115: `simpleexprLexer.DFA13.Description' is marked as an override but
no suitable property found to override
/home/felix/doks/CSMath/CSAnalysis/simpleexprLexer.cs(18,22): warning CS3021: `simpleexprLexer' does not need a CLSCompliant attribute because the assembly is not marked as CLS-compliant
/home/felix/doks/CSMath/CSAnalysis/simpleexprLexer.cs(68,6): error CS0246: The type or namespace name `GrammarRule' could not be found. Are you missing a using directive or an assembly reference?
/home/felix/doks/CSMath/CSAnalysis/simpleexprLexer.cs(77,17): error CS0103: The name `DebugEnterAlt' does not exist in the current context
/home/felix/doks/CSMath/CSAnalysis/simpleexprLexer.cs(80,17): error CS0103: The name `DebugLocation' does not exist in the current context
/home/felix/doks/CSMath/CSAnalysis/simpleexprLexer.cs(98,6): error CS0246: The type or namespace name `GrammarRule' could not be found. Are you missing a using directive or an assembly reference?
/home/felix/doks/CSMath/CSAnalysis/simpleexprLexer.cs(107,17): error CS0103: The name `DebugEnterAlt' does not exist in the current context
/home/felix/doks/CSMath/CSAnalysis/simpleexprLexer.cs(110,17): error CS0103: The name `DebugLocation' does not exist in the current context
[...]
----------------------
Note that there is
using Antlr.Runtime;
at the top of simpleexprLexer.cs.
Previous postings suggest that the C# Target should work out of the box
with Mono. I am using Mono 1.9 (Debian Lenny).
Sorry for the verbosity and thanks in Advance!
--
Felix Natter
More information about the antlr-interest
mailing list