Refactor XEngine parser as per suggestions from mikem
parent
aef2afd3be
commit
d95794d05c
|
@ -726,19 +726,20 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
|
||||||
if ("LSL_Types.LSLFloat" == c.Type)
|
if ("LSL_Types.LSLFloat" == c.Type)
|
||||||
{
|
{
|
||||||
int dotIndex = c.Value.IndexOf('.') + 1;
|
int dotIndex = c.Value.IndexOf('.') + 1;
|
||||||
// Skip first dot (in type name)
|
|
||||||
dotIndex = c.Value.IndexOf('.', dotIndex) + 1;
|
|
||||||
if (0 < dotIndex && (dotIndex == c.Value.Length || !Char.IsDigit(c.Value[dotIndex])))
|
if (0 < dotIndex && (dotIndex == c.Value.Length || !Char.IsDigit(c.Value[dotIndex])))
|
||||||
c.Value = c.Value.Insert(dotIndex, "0");
|
c.Value = c.Value.Insert(dotIndex, "0");
|
||||||
|
c.Value = "new LSL_Types.LSLFloat("+c.Value+")";
|
||||||
|
}
|
||||||
|
else if("LSL_Types.LSLInteger" == c.Type)
|
||||||
|
{
|
||||||
|
c.Value = "new LSL_Types.LSLInteger("+c.Value+")";
|
||||||
|
}
|
||||||
|
else if("LSL_Types.LSLString" == c.Type)
|
||||||
|
{
|
||||||
|
c.Value = "new LSL_Types.LSLString(\""+c.Value+"\")";
|
||||||
}
|
}
|
||||||
|
|
||||||
// commented because the parser does it now
|
|
||||||
// need to quote strings
|
|
||||||
// if ("LSL_Types.LSLString" == c.Type)
|
|
||||||
// retstr += Generate("\"");
|
|
||||||
retstr += Generate(c.Value, c);
|
retstr += Generate(c.Value, c);
|
||||||
// if ("LSL_Types.LSLString" == c.Type)
|
|
||||||
// retstr += Generate("\"");
|
|
||||||
|
|
||||||
return retstr;
|
return retstr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -153,7 +153,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.CodeTools
|
||||||
return new Constant(p, constantType, "0.0");
|
return new Constant(p, constantType, "0.0");
|
||||||
case "string":
|
case "string":
|
||||||
case "key":
|
case "key":
|
||||||
return new Constant(p, constantType, "\"\"");
|
return new Constant(p, constantType, "");
|
||||||
case "list":
|
case "list":
|
||||||
ArgumentList al = new ArgumentList(p);
|
ArgumentList al = new ArgumentList(p);
|
||||||
return new ListConstant(p, al);
|
return new ListConstant(p, al);
|
||||||
|
|
|
@ -124,7 +124,7 @@ state another_state
|
||||||
string expected =
|
string expected =
|
||||||
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
||||||
"\n {" +
|
"\n {" +
|
||||||
"\n LSL_Types.LSLInteger x = 0;" +
|
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(0);" +
|
||||||
"\n }\n";
|
"\n }\n";
|
||||||
|
|
||||||
CSCodeGenerator cg = new CSCodeGenerator();
|
CSCodeGenerator cg = new CSCodeGenerator();
|
||||||
|
@ -148,7 +148,7 @@ state another_state
|
||||||
string expected =
|
string expected =
|
||||||
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
||||||
"\n {" +
|
"\n {" +
|
||||||
"\n LSL_Types.LSLString y = \"\";" +
|
"\n LSL_Types.LSLString y = new LSL_Types.LSLString(\"\");" +
|
||||||
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(14);" +
|
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(14);" +
|
||||||
"\n y = new LSL_Types.LSLString(\"Hello\");" +
|
"\n y = new LSL_Types.LSLString(\"Hello\");" +
|
||||||
"\n }\n";
|
"\n }\n";
|
||||||
|
@ -235,7 +235,7 @@ state another_state
|
||||||
string expected =
|
string expected =
|
||||||
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
||||||
"\n {" +
|
"\n {" +
|
||||||
"\n LSL_Types.LSLInteger y = 0;" +
|
"\n LSL_Types.LSLInteger y = new LSL_Types.LSLInteger(0);" +
|
||||||
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(14) + new LSL_Types.LSLInteger(6);" +
|
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(14) + new LSL_Types.LSLInteger(6);" +
|
||||||
"\n y = new LSL_Types.LSLInteger(12) - new LSL_Types.LSLInteger(3);" +
|
"\n y = new LSL_Types.LSLInteger(12) - new LSL_Types.LSLInteger(3);" +
|
||||||
"\n y = new LSL_Types.LSLInteger(12) * new LSL_Types.LSLInteger(3);" +
|
"\n y = new LSL_Types.LSLInteger(12) * new LSL_Types.LSLInteger(3);" +
|
||||||
|
@ -440,7 +440,7 @@ default
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
string expected =
|
string expected =
|
||||||
"\n LSL_Types.LSLString globalString = \"\";" +
|
"\n LSL_Types.LSLString globalString = new LSL_Types.LSLString(\"\");" +
|
||||||
"\n LSL_Types.LSLInteger globalInt = new LSL_Types.LSLInteger(14);" +
|
"\n LSL_Types.LSLInteger globalInt = new LSL_Types.LSLInteger(14);" +
|
||||||
"\n LSL_Types.LSLInteger anotherGlobal = new LSL_Types.LSLInteger(20) * globalInt;" +
|
"\n LSL_Types.LSLInteger anotherGlobal = new LSL_Types.LSLInteger(20) * globalInt;" +
|
||||||
"\n LSL_Types.LSLString onefunc()" +
|
"\n LSL_Types.LSLString onefunc()" +
|
||||||
|
@ -495,7 +495,7 @@ default
|
||||||
}
|
}
|
||||||
";
|
";
|
||||||
string expected =
|
string expected =
|
||||||
"\n LSL_Types.LSLString globalString = \"\";" +
|
"\n LSL_Types.LSLString globalString = new LSL_Types.LSLString(\"\");" +
|
||||||
"\n LSL_Types.LSLInteger globalInt = new LSL_Types.LSLInteger(14);" +
|
"\n LSL_Types.LSLInteger globalInt = new LSL_Types.LSLInteger(14);" +
|
||||||
"\n LSL_Types.LSLString onefunc(LSL_Types.LSLString addition)" +
|
"\n LSL_Types.LSLString onefunc(LSL_Types.LSLString addition)" +
|
||||||
"\n {" +
|
"\n {" +
|
||||||
|
@ -1251,19 +1251,19 @@ default
|
||||||
string expected =
|
string expected =
|
||||||
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
||||||
"\n {" +
|
"\n {" +
|
||||||
"\n LSL_Types.LSLInteger i = 0;" +
|
"\n LSL_Types.LSLInteger i = new LSL_Types.LSLInteger(0);" +
|
||||||
"\n LSL_Types.LSLInteger j = new LSL_Types.LSLInteger(14);" +
|
"\n LSL_Types.LSLInteger j = new LSL_Types.LSLInteger(14);" +
|
||||||
"\n LSL_Types.LSLFloat f = 0.0;" +
|
"\n LSL_Types.LSLFloat f = new LSL_Types.LSLFloat(0.0);" +
|
||||||
"\n LSL_Types.LSLFloat g = new LSL_Types.LSLFloat(14.0);" +
|
"\n LSL_Types.LSLFloat g = new LSL_Types.LSLFloat(14.0);" +
|
||||||
"\n LSL_Types.LSLString s = \"\";" +
|
"\n LSL_Types.LSLString s = new LSL_Types.LSLString(\"\");" +
|
||||||
"\n LSL_Types.LSLString t = new LSL_Types.LSLString(\"Hi there\");" +
|
"\n LSL_Types.LSLString t = new LSL_Types.LSLString(\"Hi there\");" +
|
||||||
"\n LSL_Types.list l = new LSL_Types.list();" +
|
"\n LSL_Types.list l = new LSL_Types.list();" +
|
||||||
"\n LSL_Types.list m = new LSL_Types.list(new LSL_Types.LSLInteger(1), new LSL_Types.LSLInteger(2), new LSL_Types.LSLInteger(3));" +
|
"\n LSL_Types.list m = new LSL_Types.list(new LSL_Types.LSLInteger(1), new LSL_Types.LSLInteger(2), new LSL_Types.LSLInteger(3));" +
|
||||||
"\n LSL_Types.Vector3 v = new LSL_Types.Vector3(0.0, 0.0, 0.0);" +
|
"\n LSL_Types.Vector3 v = new LSL_Types.Vector3(new LSL_Types.LSLFloat(0.0), new LSL_Types.LSLFloat(0.0), new LSL_Types.LSLFloat(0.0));" +
|
||||||
"\n LSL_Types.Vector3 w = new LSL_Types.Vector3(new LSL_Types.LSLFloat(1.0), new LSL_Types.LSLFloat(0.1), new LSL_Types.LSLFloat(0.5));" +
|
"\n LSL_Types.Vector3 w = new LSL_Types.Vector3(new LSL_Types.LSLFloat(1.0), new LSL_Types.LSLFloat(0.1), new LSL_Types.LSLFloat(0.5));" +
|
||||||
"\n LSL_Types.Quaternion r = new LSL_Types.Quaternion(0.0, 0.0, 0.0, 0.0);" +
|
"\n LSL_Types.Quaternion r = new LSL_Types.Quaternion(new LSL_Types.LSLFloat(0.0), new LSL_Types.LSLFloat(0.0), new LSL_Types.LSLFloat(0.0), new LSL_Types.LSLFloat(0.0));" +
|
||||||
"\n LSL_Types.Quaternion u = new LSL_Types.Quaternion(new LSL_Types.LSLFloat(0.8), new LSL_Types.LSLFloat(0.7), new LSL_Types.LSLFloat(0.6), llSomeFunc());" +
|
"\n LSL_Types.Quaternion u = new LSL_Types.Quaternion(new LSL_Types.LSLFloat(0.8), new LSL_Types.LSLFloat(0.7), new LSL_Types.LSLFloat(0.6), llSomeFunc());" +
|
||||||
"\n LSL_Types.LSLString k = \"\";" +
|
"\n LSL_Types.LSLString k = new LSL_Types.LSLString(\"\");" +
|
||||||
"\n LSL_Types.LSLString n = new LSL_Types.LSLString(\"ping\");" +
|
"\n LSL_Types.LSLString n = new LSL_Types.LSLString(\"ping\");" +
|
||||||
"\n }\n";
|
"\n }\n";
|
||||||
|
|
||||||
|
@ -1292,8 +1292,8 @@ default
|
||||||
string expected =
|
string expected =
|
||||||
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
|
||||||
"\n {" +
|
"\n {" +
|
||||||
"\n LSL_Types.LSLInteger x = 0;" +
|
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(0);" +
|
||||||
"\n LSL_Types.LSLInteger y = 0;" +
|
"\n LSL_Types.LSLInteger y = new LSL_Types.LSLInteger(0);" +
|
||||||
"\n x = y = new LSL_Types.LSLInteger(5);" +
|
"\n x = y = new LSL_Types.LSLInteger(5);" +
|
||||||
"\n x += y -= new LSL_Types.LSLInteger(5);" +
|
"\n x += y -= new LSL_Types.LSLInteger(5);" +
|
||||||
"\n llOwnerSay(new LSL_Types.LSLString(\"x is: \") + (LSL_Types.LSLString) (x) + new LSL_Types.LSLString(\", y is: \") + (LSL_Types.LSLString) (y));" +
|
"\n llOwnerSay(new LSL_Types.LSLString(\"x is: \") + (LSL_Types.LSLString) (x) + new LSL_Types.LSLString(\", y is: \") + (LSL_Types.LSLString) (y));" +
|
||||||
|
@ -1504,7 +1504,7 @@ default
|
||||||
string expected =
|
string expected =
|
||||||
"\n public void default_event_state_entry()" +
|
"\n public void default_event_state_entry()" +
|
||||||
"\n {" +
|
"\n {" +
|
||||||
"\n LSL_Types.LSLInteger x = 0;" +
|
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(0);" +
|
||||||
"\n while (x = new LSL_Types.LSLInteger(14))" +
|
"\n while (x = new LSL_Types.LSLInteger(14))" +
|
||||||
"\n llOwnerSay(new LSL_Types.LSLString(\"x is: \") + (LSL_Types.LSLString) (x));" +
|
"\n llOwnerSay(new LSL_Types.LSLString(\"x is: \") + (LSL_Types.LSLString) (x));" +
|
||||||
"\n if (x = new LSL_Types.LSLInteger(24))" +
|
"\n if (x = new LSL_Types.LSLInteger(24))" +
|
||||||
|
|
|
@ -1,30 +1,3 @@
|
||||||
/*
|
|
||||||
* Copyright (c) Contributors, http://opensimulator.org/
|
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* * Neither the name of the OpenSim Project nor the
|
|
||||||
* names of its contributors may be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System;using Tools;
|
using System;using Tools;
|
||||||
namespace OpenSim.Region.ScriptEngine.Shared.CodeTools {
|
namespace OpenSim.Region.ScriptEngine.Shared.CodeTools {
|
||||||
//%+STRING_CONSTANT+3
|
//%+STRING_CONSTANT+3
|
||||||
|
|
|
@ -1,30 +1,3 @@
|
||||||
/*
|
|
||||||
* Copyright (c) Contributors, http://opensimulator.org/
|
|
||||||
* See CONTRIBUTORS.TXT for a full list of copyright holders.
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
* * Neither the name of the OpenSim Project nor the
|
|
||||||
* names of its contributors may be used to endorse or promote products
|
|
||||||
* derived from this software without specific prior written permission.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``AS IS'' AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
|
||||||
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
|
||||||
* DISCLAIMED. IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY
|
|
||||||
* DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
|
||||||
* (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
|
||||||
* LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
|
|
||||||
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
|
||||||
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
using System;using Tools;
|
using System;using Tools;
|
||||||
namespace OpenSim.Region.ScriptEngine.Shared.CodeTools {
|
namespace OpenSim.Region.ScriptEngine.Shared.CodeTools {
|
||||||
//%+LSLProgramRoot+95
|
//%+LSLProgramRoot+95
|
||||||
|
@ -1304,24 +1277,24 @@ public class ReturnStatement_2 : ReturnStatement {
|
||||||
public ReturnStatement_2(Parser yyq):base(yyq){}}
|
public ReturnStatement_2(Parser yyq):base(yyq){}}
|
||||||
|
|
||||||
public class Constant_1 : Constant {
|
public class Constant_1 : Constant {
|
||||||
public Constant_1(Parser yyq):base(yyq,"integer", "new LSL_Types.LSLInteger("+
|
public Constant_1(Parser yyq):base(yyq,"integer",
|
||||||
((INTEGER_CONSTANT)(yyq.StackAt(0).m_value))
|
((INTEGER_CONSTANT)(yyq.StackAt(0).m_value))
|
||||||
.yytext+")"){}}
|
.yytext){}}
|
||||||
|
|
||||||
public class Constant_2 : Constant {
|
public class Constant_2 : Constant {
|
||||||
public Constant_2(Parser yyq):base(yyq,"integer", "new LSL_Types.LSLInteger("+
|
public Constant_2(Parser yyq):base(yyq,"integer",
|
||||||
((HEX_INTEGER_CONSTANT)(yyq.StackAt(0).m_value))
|
((HEX_INTEGER_CONSTANT)(yyq.StackAt(0).m_value))
|
||||||
.yytext+")"){}}
|
.yytext){}}
|
||||||
|
|
||||||
public class Constant_3 : Constant {
|
public class Constant_3 : Constant {
|
||||||
public Constant_3(Parser yyq):base(yyq,"float", "new LSL_Types.LSLFloat("+
|
public Constant_3(Parser yyq):base(yyq,"float",
|
||||||
((FLOAT_CONSTANT)(yyq.StackAt(0).m_value))
|
((FLOAT_CONSTANT)(yyq.StackAt(0).m_value))
|
||||||
.yytext+")"){}}
|
.yytext){}}
|
||||||
|
|
||||||
public class Constant_4 : Constant {
|
public class Constant_4 : Constant {
|
||||||
public Constant_4(Parser yyq):base(yyq,"string", "new LSL_Types.LSLString(\""+
|
public Constant_4(Parser yyq):base(yyq,"string",
|
||||||
((STRING_CONSTANT)(yyq.StackAt(0).m_value))
|
((STRING_CONSTANT)(yyq.StackAt(0).m_value))
|
||||||
.yytext+"\")"){}}
|
.yytext){}}
|
||||||
|
|
||||||
public class ListConstant_1 : ListConstant {
|
public class ListConstant_1 : ListConstant {
|
||||||
public ListConstant_1(Parser yyq):base(yyq,
|
public ListConstant_1(Parser yyq):base(yyq,
|
||||||
|
|
Loading…
Reference in New Issue