diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/CommonWalker.cs b/CSharpTranslator/antlr3/src/cs2j/CSharp/CommonWalker.cs new file mode 100644 index 0000000..5382d6e --- /dev/null +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/CommonWalker.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using Antlr.Runtime.Tree; +using Antlr.Runtime; + +namespace RusticiSoftware.Translator.CSharp +{ + public class CommonWalker : TreeParser + { + protected CommonWalker(ITreeNodeStream input, RecognizerSharedState state) + : base(input, state) + { } + + + protected void Debug(String s) + { + Console.Out.WriteLine(s); + } + } +} diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/SignatureExtracter.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/SignatureExtracter.g new file mode 100644 index 0000000..1fbbbc8 --- /dev/null +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/SignatureExtracter.g @@ -0,0 +1,63 @@ +// SignatureExtracter.g +// +// Crawler that extracts the signatures (typereptemplates) from a CSharp AST +// +// Kevin Glynn +// kevin.glynn@twigletsoftware.com +// June 2010 + +tree grammar SignatureExtracter; + +options { + tokenVocab=cs; + ASTLabelType=CommonTree; + language=CSharp2; + superClass='RusticiSoftware.Translator.CSharp.CommonWalker'; + //backtrack=true; +} + +@namespace { RusticiSoftware.Translator.CSharp } + +@header +{ + using System.Text; + using RusticiSoftware.Translator.CLR; +} + +@members +{ + // As we scan the AST we collect these features until + // we reach the end, then calculate the TypeRep and insert it into + // the TypeEnv + private IList Properties = new List(); + private IList Methods = new List(); + private IList Constructors = new List(); + private IList Fields = new List(); + private IList Casts = new List(); +} + +/******************************************************************************************** + Parser section +*********************************************************************************************/ + +/////////////////////////////////////////////////////// +compilation_unit: + { Debug("Debug: start"); } using_directives + ; + +using_directives: + ^(USING_DIRECTIVE 'using' { Console.Out.WriteLine("Debug: using"); } namespace_name ';') + ; + +namespace_name: + ^(NAMESPACE_OR_TYPE_NAME namespace_component) + ; + +namespace_component: + ^(NSTN identifier) + ; + +identifier: + ^(ID id=IDENTIFIER { Console.Out.WriteLine("Identifier: " + id.Text);}) + ; + diff --git a/CSharpTranslator/antlr3/src/cs2j/CSharp/csCrawl.g b/CSharpTranslator/antlr3/src/cs2j/CSharp/csCrawl.g index d109429..ad44ff7 100644 --- a/CSharpTranslator/antlr3/src/cs2j/CSharp/csCrawl.g +++ b/CSharpTranslator/antlr3/src/cs2j/CSharp/csCrawl.g @@ -44,7 +44,7 @@ namespace_component2: ; identifier2: - ^(ID id=IDENTIFIER { Console.Out.WriteLine("Identifier: " + id.Text);}) + ^(ID IDENTIFIER { Console.Out.WriteLine("Identifier: " + $IDENTIFIER.Text);}) ; compilation_unit: diff --git a/CSharpTranslator/antlr3/src/cs2j/cs2j.csproj b/CSharpTranslator/antlr3/src/cs2j/cs2j.csproj index 3cd6af7..4597719 100644 --- a/CSharpTranslator/antlr3/src/cs2j/cs2j.csproj +++ b/CSharpTranslator/antlr3/src/cs2j/cs2j.csproj @@ -57,6 +57,7 @@ + @@ -64,10 +65,12 @@ + +