mirror of
https://github.com/twiglet/cs2j.git
synced 2025-01-18 13:15:17 +01:00
Add extra translation steps to the pipeline to (eventually) produce Java
This commit is contained in:
parent
e4bd86900b
commit
e914af9031
@ -5,6 +5,9 @@ set -e
|
||||
cd src/cs2j/CSharp
|
||||
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make cs.g
|
||||
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make TemplateExtracter.g
|
||||
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make JavaMaker.g
|
||||
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make NetMaker.g
|
||||
java -Xmx512m -jar ../../../jar/antlr-3.3.jar -make JavaPrettyPrint.g
|
||||
cd ../../../
|
||||
xbuild
|
||||
echo 'All Done'
|
||||
|
@ -236,6 +236,7 @@ namespace RusticiSoftware.Translator.CSharp
|
||||
// Here's where we do the real work...
|
||||
public static void addAppSigTranslation(string fullName)
|
||||
{
|
||||
|
||||
if (cfg.DebugLevel > 3) Console.Out.WriteLine("Extracting type info from file {0}", fullName);
|
||||
ITreeNodeStream csTree = parseFile(fullName);
|
||||
if (csTree != null)
|
||||
@ -252,9 +253,41 @@ namespace RusticiSoftware.Translator.CSharp
|
||||
// Here's where we do the real work...
|
||||
public static void translateFile(string fullName)
|
||||
{
|
||||
long startTime = DateTime.Now.Ticks;
|
||||
if (cfg.DebugLevel > 3) Console.Out.WriteLine("Translating file {0}", fullName);
|
||||
CommonTreeNodeStream csTree = parseFile(fullName);
|
||||
if (cfg.DumpCSharp && csTree != null) AntlrUtils.AntlrUtils.DumpNodes(csTree);
|
||||
ITreeNodeStream csTree = parseFile(fullName);
|
||||
if (cfg.DumpCSharp && csTree != null) AntlrUtils.AntlrUtils.DumpNodes((CommonTreeNodeStream)csTree);
|
||||
|
||||
if (csTree != null)
|
||||
{
|
||||
Dictionary<string, CommonTree> cus = new Dictionary<string, CommonTree>();
|
||||
JavaMaker javaMaker = new JavaMaker(csTree);
|
||||
javaMaker.Filename = fullName;
|
||||
javaMaker.TraceDestination = Console.Error;
|
||||
|
||||
JavaMaker.compilation_unit_return java = javaMaker.compilation_unit(cfg, cus);
|
||||
foreach (KeyValuePair<string, CommonTree> package in cus) {
|
||||
|
||||
CommonTreeNodeStream javaSyntaxNodes = new CommonTreeNodeStream(package.Value);
|
||||
javaSyntaxNodes.TokenStream = csTree.TokenStream;
|
||||
|
||||
NetMaker netMaker = new NetMaker(javaSyntaxNodes);
|
||||
netMaker.Filename = fullName;
|
||||
netMaker.TraceDestination = Console.Error;
|
||||
|
||||
NetMaker.type_declaration_return javaCompilationUnit = netMaker.type_declaration();
|
||||
|
||||
CommonTreeNodeStream javaCompilationUnitNodes = new CommonTreeNodeStream(javaCompilationUnit.Tree);
|
||||
javaCompilationUnitNodes.TokenStream = csTree.TokenStream;
|
||||
|
||||
JavaPrettyPrint outputMaker = new JavaPrettyPrint(javaCompilationUnitNodes);
|
||||
outputMaker.Filename = fullName;
|
||||
outputMaker.TraceDestination = Console.Error;
|
||||
|
||||
outputMaker.type_declaration();
|
||||
}
|
||||
// ITreeNodeStream javaTree = java.Tree;
|
||||
}
|
||||
|
||||
// ASTNode t = parseFile(f, s);
|
||||
// if (t != null)
|
||||
@ -354,12 +387,11 @@ namespace RusticiSoftware.Translator.CSharp
|
||||
|
||||
// }
|
||||
|
||||
// double elapsedTime = ((DateTime.Now.Ticks - startTime) / TimeSpan.TicksPerMillisecond) / 1000.0;
|
||||
// //System.Console.Out.WriteLine(writer.ToString());
|
||||
// System.Console.Out.WriteLine("");
|
||||
// System.Console.Out.WriteLine("");
|
||||
// System.Console.Out.WriteLine("Pretty-printed {0} in: {1} seconds.", f, elapsedTime);
|
||||
// }
|
||||
double elapsedTime = ((DateTime.Now.Ticks - startTime) / TimeSpan.TicksPerMillisecond) / 1000.0;
|
||||
//System.Console.Out.WriteLine(writer.ToString());
|
||||
System.Console.Out.WriteLine("");
|
||||
System.Console.Out.WriteLine("");
|
||||
System.Console.Out.WriteLine("Pretty-printed {0} in: {1} seconds.", fullName, elapsedTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -3,3 +3,9 @@ csLexer.cs
|
||||
csParser.cs
|
||||
TemplateExtracter.cs
|
||||
TemplateExtracter.tokens
|
||||
NetMaker.cs
|
||||
NetMaker.tokens
|
||||
JavaMaker.cs
|
||||
JavaMaker.tokens
|
||||
JavaPrettyPrint.cs
|
||||
JavaPrettyPrint.tokens
|
||||
|
@ -45,5 +45,25 @@ namespace RusticiSoftware.Translator.CSharp
|
||||
Console.Out.WriteLine(s);
|
||||
}
|
||||
}
|
||||
|
||||
// distinguish classes with same name, but differing numbers of type arguments
|
||||
protected string mkTypeName (string name, List<String> tyargs) {
|
||||
return name + (tyargs.Count > 0 ? "'" + tyargs.Count.ToString() : "");
|
||||
}
|
||||
|
||||
protected string formatTyargs(List<string> tyargs) {
|
||||
|
||||
if (tyargs.Count == 0) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder buf = new StringBuilder();
|
||||
buf.Append("<");
|
||||
foreach (string t in tyargs) {
|
||||
buf.Append(t + ",");
|
||||
}
|
||||
buf.Remove(buf.Length-1,1);
|
||||
buf.Append(">");
|
||||
return buf.ToString();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
1093
CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g
Normal file
1093
CSharpTranslator/antlr3/src/cs2j/CSharp/JavaMaker.g
Normal file
File diff suppressed because it is too large
Load Diff
1046
CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g
Normal file
1046
CSharpTranslator/antlr3/src/cs2j/CSharp/JavaPrettyPrint.g
Normal file
File diff suppressed because it is too large
Load Diff
1041
CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g
Normal file
1041
CSharpTranslator/antlr3/src/cs2j/CSharp/NetMaker.g
Normal file
File diff suppressed because it is too large
Load Diff
@ -69,20 +69,6 @@ scope NSContext {
|
||||
}
|
||||
}
|
||||
|
||||
protected string formatTyargs(List<string> tyargs) {
|
||||
|
||||
if (tyargs.Count == 0) {
|
||||
return "";
|
||||
}
|
||||
StringBuilder buf = new StringBuilder();
|
||||
buf.Append("<");
|
||||
foreach (string t in tyargs) {
|
||||
buf.Append(t + ",");
|
||||
}
|
||||
buf.Remove(buf.Length-1,1);
|
||||
buf.Append(">");
|
||||
return buf.ToString();
|
||||
}
|
||||
}
|
||||
|
||||
/********************************************************************************************
|
||||
@ -672,10 +658,8 @@ scope NSContext;
|
||||
{
|
||||
Debug("Processing class: " + $type_or_generic.type);
|
||||
klass.Uses = this.NameSpaceContext;
|
||||
klass.TypeName = this.ParentNameSpace + "." + $type_or_generic.type;
|
||||
klass.TypeName = this.ParentNameSpace + "." + mkTypeName($type_or_generic.type, $type_or_generic.generic_arguments);
|
||||
if ($type_or_generic.generic_arguments.Count > 0) {
|
||||
// distinguish classes with same name, but differing numbers of type arguments
|
||||
klass.TypeName+= "'" + $type_or_generic.generic_arguments.Count.ToString();
|
||||
klass.TypeParams = $type_or_generic.generic_arguments.ToArray();
|
||||
}
|
||||
// Nested types can see things in this space
|
||||
@ -848,10 +832,8 @@ scope NSContext;
|
||||
{
|
||||
Debug("Processing delegate: " + $identifier.text);
|
||||
dlegate.Uses = this.NameSpaceContext;
|
||||
dlegate.TypeName = this.ParentNameSpace + "." + $identifier.text;
|
||||
dlegate.TypeName = this.ParentNameSpace + "." + mkTypeName($identifier.text, $variant_generic_parameter_list.tyargs);
|
||||
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
|
||||
// distinguish classes with same name, but differing numbers of type arguments
|
||||
dlegate.TypeName+= "'" + $variant_generic_parameter_list.tyargs.Count.ToString();
|
||||
dlegate.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
|
||||
}
|
||||
dlegate.Return=$return_type.thetext;
|
||||
@ -938,10 +920,8 @@ scope NSContext;
|
||||
{
|
||||
Debug("Processing interface: " + $identifier.text);
|
||||
iface.Uses = this.NameSpaceContext;
|
||||
iface.TypeName = this.ParentNameSpace + "." + $identifier.text;
|
||||
iface.TypeName = this.ParentNameSpace + "." + mkTypeName($identifier.text, $variant_generic_parameter_list.tyargs);
|
||||
if ($variant_generic_parameter_list.tyargs != null && $variant_generic_parameter_list.tyargs.Count > 0) {
|
||||
// distinguish classes with same name, but differing numbers of type arguments
|
||||
iface.TypeName+= "'" + $variant_generic_parameter_list.tyargs.Count.ToString();
|
||||
iface.TypeParams = $variant_generic_parameter_list.tyargs.ToArray();
|
||||
}
|
||||
// Nested types can see things in this space
|
||||
@ -1024,10 +1004,8 @@ scope NSContext;
|
||||
{
|
||||
Debug("Processing struct: " + $type_or_generic.type);
|
||||
strukt.Uses = this.NameSpaceContext;
|
||||
strukt.TypeName = this.ParentNameSpace + "." + $type_or_generic.type;
|
||||
strukt.TypeName = this.ParentNameSpace + "." + mkTypeName($type_or_generic.type, $type_or_generic.generic_arguments);
|
||||
if ($type_or_generic.generic_arguments.Count > 0) {
|
||||
// distinguish structs with same name, but differing numbers of type arguments
|
||||
strukt.TypeName+= "'" + $type_or_generic.generic_arguments.Count.ToString();
|
||||
strukt.TypeParams = $type_or_generic.generic_arguments.ToArray();
|
||||
}
|
||||
// Nested types can see things in this space
|
||||
|
@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003" ToolsVersion="4.0">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
@ -66,11 +66,17 @@
|
||||
<Compile Include="Utils\TypeHelper.cs" />
|
||||
<Compile Include="CSharp\TemplateExtracter.cs" />
|
||||
<Compile Include="CLR\CS2JSettings.cs" />
|
||||
<Compile Include="CSharp\JavaMaker.cs" />
|
||||
<Compile Include="CSharp\JavaPrettyPrint.cs" />
|
||||
<Compile Include="CSharp\NetMaker.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="CSharp\csCrawl.g" />
|
||||
<None Include="CSharp\cs.g" />
|
||||
<None Include="CSharp\TemplateExtracter.g" />
|
||||
<None Include="CSharp\JavaMaker.g" />
|
||||
<None Include="CSharp\JavaPrettyPrint.g" />
|
||||
<None Include="CSharp\NetMaker.g" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="README.txt" />
|
||||
|
Loading…
x
Reference in New Issue
Block a user