diff options
author | Charles Krinke | 2008-06-04 14:40:17 +0000 |
---|---|---|
committer | Charles Krinke | 2008-06-04 14:40:17 +0000 |
commit | 687090f79a3e5499ffb36a57a14f968325e62497 (patch) | |
tree | b89d3202bb10c536c73a2f240702dd0a0027fd35 /OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL | |
parent | Mantis#1440. Thank you kindly, Melanie for a patch that (diff) | |
download | opensim-SC-687090f79a3e5499ffb36a57a14f968325e62497.zip opensim-SC-687090f79a3e5499ffb36a57a14f968325e62497.tar.gz opensim-SC-687090f79a3e5499ffb36a57a14f968325e62497.tar.bz2 opensim-SC-687090f79a3e5499ffb36a57a14f968325e62497.tar.xz |
Mantis#1441. Thank you kindly, Kinoc for a patch that:
This patch adds the prolog interperter helper object ONLY for YP code,
and not every script compiled.
Mirrors the other languages like JS and VB more closely.
Diffstat (limited to 'OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL')
-rw-r--r-- | OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs index 7113f1a..3f53456 100644 --- a/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs +++ b/OpenSim/Region/ScriptEngine/DotNetEngine/Compiler/LSL/Compiler.cs | |||
@@ -76,6 +76,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
76 | private static CSharpCodeProvider CScodeProvider = new CSharpCodeProvider(); | 76 | private static CSharpCodeProvider CScodeProvider = new CSharpCodeProvider(); |
77 | private static VBCodeProvider VBcodeProvider = new VBCodeProvider(); | 77 | private static VBCodeProvider VBcodeProvider = new VBCodeProvider(); |
78 | private static JScriptCodeProvider JScodeProvider = new JScriptCodeProvider(); | 78 | private static JScriptCodeProvider JScodeProvider = new JScriptCodeProvider(); |
79 | private static CSharpCodeProvider YPcodeProvider = new CSharpCodeProvider(); // YP is translated into CSharp | ||
79 | private static YP2CSConverter YP_Converter = new YP2CSConverter(); | 80 | private static YP2CSConverter YP_Converter = new YP2CSConverter(); |
80 | 81 | ||
81 | private static int instanceID = new Random().Next(0, int.MaxValue); // Unique number to use on our compiled files | 82 | private static int instanceID = new Random().Next(0, int.MaxValue); // Unique number to use on our compiled files |
@@ -118,7 +119,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
118 | LanguageMapping.Add(enumCompileType.yp.ToString(), enumCompileType.yp); | 119 | LanguageMapping.Add(enumCompileType.yp.ToString(), enumCompileType.yp); |
119 | 120 | ||
120 | // Allowed compilers | 121 | // Allowed compilers |
121 | string allowComp = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl,cs,vb,js"); | 122 | string allowComp = m_scriptEngine.ScriptConfigSource.GetString("AllowedCompilers", "lsl,cs,vb,js,yp"); |
122 | AllowedCompilers.Clear(); | 123 | AllowedCompilers.Clear(); |
123 | 124 | ||
124 | #if DEBUG | 125 | #if DEBUG |
@@ -279,9 +280,10 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
279 | 280 | ||
280 | if (l == enumCompileType.yp) | 281 | if (l == enumCompileType.yp) |
281 | { | 282 | { |
282 | // Its LSL, convert it to C# | 283 | // Its YP, convert it to C# |
283 | compileScript = YP_Converter.Convert(Script); | 284 | compileScript = YP_Converter.Convert(Script); |
284 | l = enumCompileType.cs; | 285 | // We have our own processor now |
286 | //l = enumCompileType.cs; | ||
285 | } | 287 | } |
286 | 288 | ||
287 | // Insert additional assemblies here | 289 | // Insert additional assemblies here |
@@ -289,7 +291,7 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
289 | //ADAM: Disabled for the moment until it's working right. | 291 | //ADAM: Disabled for the moment until it's working right. |
290 | bool enableCommanderLSL = false; | 292 | bool enableCommanderLSL = false; |
291 | 293 | ||
292 | if (enableCommanderLSL == true && l == enumCompileType.cs) | 294 | if (enableCommanderLSL == true && ((l == enumCompileType.cs) || (l == enumCompileType.yp))) |
293 | { | 295 | { |
294 | foreach (KeyValuePair<string, | 296 | foreach (KeyValuePair<string, |
295 | ICommander> com | 297 | ICommander> com |
@@ -313,6 +315,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
313 | case enumCompileType.js: | 315 | case enumCompileType.js: |
314 | compileScript = CreateJSCompilerScript(compileScript); | 316 | compileScript = CreateJSCompilerScript(compileScript); |
315 | break; | 317 | break; |
318 | case enumCompileType.yp: | ||
319 | compileScript = CreateYPCompilerScript(compileScript); | ||
320 | break; | ||
316 | } | 321 | } |
317 | 322 | ||
318 | m_log.Debug("[ScriptEngine.DotNetEngine]: Preparing to compile the following LSL to C# translated code"); | 323 | m_log.Debug("[ScriptEngine.DotNetEngine]: Preparing to compile the following LSL to C# translated code"); |
@@ -345,6 +350,24 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
345 | return compileScript; | 350 | return compileScript; |
346 | } | 351 | } |
347 | 352 | ||
353 | private static string CreateYPCompilerScript(string compileScript) | ||
354 | { | ||
355 | |||
356 | |||
357 | compileScript = String.Empty + | ||
358 | "using OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.YieldProlog; " + | ||
359 | "using OpenSim.Region.ScriptEngine.Common; using System.Collections.Generic;\r\n" + | ||
360 | String.Empty + "namespace SecondLife { " + | ||
361 | String.Empty + "public class Script : OpenSim.Region.ScriptEngine.Common.BuiltIn_Commands_BaseClass { \r\n" + | ||
362 | //@"public Script() { } " + | ||
363 | @"static OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.YieldProlog.YP YP=null; " + | ||
364 | @"public Script() { YP= new OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.YieldProlog.YP(); } "+ | ||
365 | |||
366 | compileScript + | ||
367 | "} }\r\n"; | ||
368 | return compileScript; | ||
369 | } | ||
370 | |||
348 | private static string CreateVBCompilerScript(string compileScript) | 371 | private static string CreateVBCompilerScript(string compileScript) |
349 | { | 372 | { |
350 | compileScript = String.Empty + | 373 | compileScript = String.Empty + |
@@ -438,6 +461,9 @@ namespace OpenSim.Region.ScriptEngine.DotNetEngine.Compiler.LSL | |||
438 | case enumCompileType.js: | 461 | case enumCompileType.js: |
439 | results = JScodeProvider.CompileAssemblyFromSource(parameters, Script); | 462 | results = JScodeProvider.CompileAssemblyFromSource(parameters, Script); |
440 | break; | 463 | break; |
464 | case enumCompileType.yp: | ||
465 | results = YPcodeProvider.CompileAssemblyFromSource(parameters, Script); | ||
466 | break; | ||
441 | default: | 467 | default: |
442 | throw new Exception("Compiler is not able to recongnize language type \"" + lang.ToString() + "\""); | 468 | throw new Exception("Compiler is not able to recongnize language type \"" + lang.ToString() + "\""); |
443 | } | 469 | } |