diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/YP2CSConverter.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/YP2CSConverter.cs | 165 |
1 files changed, 80 insertions, 85 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/YP2CSConverter.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/YP2CSConverter.cs index 3fc9e00..557c1c9 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/YP2CSConverter.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/YP2CSConverter.cs | |||
@@ -26,88 +26,83 @@ | |||
26 | * | 26 | * |
27 | */ | 27 | */ |
28 | 28 | ||
29 | using System; | 29 | using System; |
30 | using System.IO; | 30 | using System.IO; |
31 | using System.Collections.Generic; | 31 | using System.Collections.Generic; |
32 | using System.Text; | 32 | using System.Text; |
33 | using System.Text.RegularExpressions; | 33 | using System.Text.RegularExpressions; |
34 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.YieldProlog; | 34 | using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.YieldProlog; |
35 | 35 | ||
36 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | 36 | namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL |
37 | { | 37 | { |
38 | public class YP2CSConverter | 38 | public class YP2CSConverter |
39 | { | 39 | { |
40 | public YP2CSConverter() | 40 | public YP2CSConverter() |
41 | { | 41 | { |
42 | } | 42 | } |
43 | 43 | ||
44 | public string Convert(string Script) | 44 | public string Convert(string Script) |
45 | { | 45 | { |
46 | string CS_code = GenCode(Script); | 46 | string CS_code = GenCode(Script); |
47 | return CS_code; | 47 | return CS_code; |
48 | } | 48 | } |
49 | 49 | ||
50 | 50 | static string GenCode(string myCode) | |
51 | static string GenCode(string myCode) | 51 | { |
52 | { | 52 | Variable TermList = new Variable(); |
53 | Variable TermList = new Variable(); | 53 | Variable FunctionCode = new Variable(); |
54 | Variable FunctionCode = new Variable(); | 54 | |
55 | 55 | string CS_code = ""; | |
56 | string CS_code = ""; | 56 | |
57 | 57 | int cs_pointer = myCode.IndexOf("\n//cs"); | |
58 | int cs_pointer = myCode.IndexOf("\n//cs"); | 58 | if (cs_pointer > 0) |
59 | if (cs_pointer > 0) | 59 | { |
60 | { | 60 | CS_code = myCode.Substring(cs_pointer); // CS code comes after |
61 | CS_code = myCode.Substring(cs_pointer); // CS code comes after | 61 | myCode = myCode.Substring(0, cs_pointer); |
62 | myCode = myCode.Substring(0, cs_pointer); | 62 | } |
63 | } | 63 | myCode.Replace("//yp", "%YPCode"); |
64 | myCode.Replace("//yp", "%YPCode"); | 64 | |
65 | 65 | StringWriter myCS_SW = new StringWriter(); | |
66 | 66 | StringReader myCode_SR = new StringReader(" yp_nop_header_nop. \n "+myCode + "\n"); | |
67 | StringWriter myCS_SW = new StringWriter(); | 67 | |
68 | StringReader myCode_SR = new StringReader(" yp_nop_header_nop. \n "+myCode + "\n"); | 68 | YP.see(myCode_SR); |
69 | 69 | YP.tell(myCS_SW); | |
70 | YP.see(myCode_SR); | 70 | |
71 | YP.tell(myCS_SW); | 71 | //Console.WriteLine("Mycode\n ===================================\n" + myCode+"\n"); |
72 | 72 | foreach (bool l1 in Parser.parseInput(TermList)) | |
73 | //Console.WriteLine("Mycode\n ===================================\n" + myCode+"\n"); | 73 | { |
74 | foreach (bool l1 in Parser.parseInput(TermList)) | 74 | foreach (bool l2 in YPCompiler.makeFunctionPseudoCode(TermList, FunctionCode)) |
75 | { | 75 | { |
76 | foreach (bool l2 in YPCompiler.makeFunctionPseudoCode(TermList, FunctionCode)) | 76 | ListPair VFC = new ListPair(FunctionCode, new Variable()); |
77 | { | 77 | //Console.WriteLine("-------------------------") |
78 | ListPair VFC = new ListPair(FunctionCode, new Variable()); | 78 | //Console.WriteLine( FunctionCode.ToString()) |
79 | //Console.WriteLine("-------------------------") | 79 | //Console.WriteLine("-------------------------") |
80 | //Console.WriteLine( FunctionCode.ToString()) | 80 | YPCompiler.convertFunctionCSharp(FunctionCode); |
81 | //Console.WriteLine("-------------------------") | 81 | //YPCompiler.convertStringCodesCSharp(VFC); |
82 | YPCompiler.convertFunctionCSharp(FunctionCode); | 82 | } |
83 | //YPCompiler.convertStringCodesCSharp(VFC); | 83 | } |
84 | 84 | YP.seen(); | |
85 | } | 85 | myCS_SW.Close(); |
86 | } | 86 | YP.told(); |
87 | YP.seen(); | 87 | StringBuilder bu = myCS_SW.GetStringBuilder(); |
88 | myCS_SW.Close(); | 88 | string finalcode = "//YPEncoded\n" + bu.ToString(); |
89 | YP.told(); | 89 | // FIX script events (we're in the same script) |
90 | StringBuilder bu = myCS_SW.GetStringBuilder(); | 90 | // 'YP.script_event(Atom.a(@"sayit"),' ==> 'sayit(' |
91 | string finalcode = "//YPEncoded\n" + bu.ToString(); | 91 | finalcode = Regex.Replace(finalcode, |
92 | // FIX script events (we're in the same script) | 92 | @"YP.script_event\(Atom.a\(\@\""(.*?)""\)\,", |
93 | // 'YP.script_event(Atom.a(@"sayit"),' ==> 'sayit(' | 93 | @"this.$1(", |
94 | finalcode = Regex.Replace(finalcode, | 94 | RegexOptions.Compiled | RegexOptions.Singleline); |
95 | @"YP.script_event\(Atom.a\(\@\""(.*?)""\)\,", | 95 | finalcode = Regex.Replace(finalcode, |
96 | @"this.$1(", | 96 | @" static ", |
97 | RegexOptions.Compiled | RegexOptions.Singleline); | 97 | @" ", |
98 | finalcode = Regex.Replace(finalcode, | 98 | RegexOptions.Compiled | RegexOptions.Singleline); |
99 | @" static ", | 99 | |
100 | @" ", | 100 | finalcode = CS_code+"\n\r"+ finalcode; |
101 | RegexOptions.Compiled | RegexOptions.Singleline); | 101 | finalcode = Regex.Replace(finalcode, |
102 | 102 | @"PrologCallback", | |
103 | finalcode = CS_code+"\n\r"+ finalcode; | 103 | @"public IEnumerable<bool> ", |
104 | finalcode = Regex.Replace(finalcode, | 104 | RegexOptions.Compiled | RegexOptions.Singleline); |
105 | @"PrologCallback", | 105 | return finalcode; |
106 | @"public IEnumerable<bool> ", | 106 | } |
107 | RegexOptions.Compiled | RegexOptions.Singleline); | 107 | } |
108 | return finalcode; | 108 | } |
109 | } | ||
110 | |||
111 | |||
112 | } | ||
113 | } | ||