本文整理汇总了C#中OpenSim.Region.ScriptEngine.Shared.CodeTools.CSCodeGenerator类的典型用法代码示例。如果您正苦于以下问题:C# CSCodeGenerator类的具体用法?C# CSCodeGenerator怎么用?C# CSCodeGenerator使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
CSCodeGenerator类属于OpenSim.Region.ScriptEngine.Shared.CodeTools命名空间,在下文中一共展示了CSCodeGenerator类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Main
public static void Main(string[] argv) {
StreamReader s = new StreamReader(argv[0]);
string source = s.ReadToEnd();
CSCodeGenerator cscg = new CSCodeGenerator();
string output = cscg.Convert(source);
if (1 < argv.Length && "-t" == argv[1])
{
Parser p = new LSLSyntax();
LSL2CSCodeTransformer codeTransformer = new LSL2CSCodeTransformer(p.Parse(source));
SYMBOL ast = codeTransformer.Transform();
printThisTree(ast);
}
else
Console.Write(output);
}
示例2: TestDefaultState
public void TestDefaultState()
{
string input = @"default
{
state_entry()
{
}
}
";
string expected =
"\n public void default_event_state_entry()" +
"\n {" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例3: TestCastAndConcatString
/// <summary>
/// Test that a string can be cast to string and another string
/// concatenated.
/// </summary>
//[Test]
public void TestCastAndConcatString()
{
TestHelpers.InMethod();
m_compilerParameters.OutputAssembly = Path.Combine(m_testDir, Path.GetRandomFileName() + ".dll");
string input = @"string s = "" a string"";
default
{
state_entry()
{
key gAvatarKey = llDetectedKey(0);
string tmp = (string) gAvatarKey + s;
llSay(0, tmp);
}
}";
CSCodeGenerator cg = new CSCodeGenerator();
string output = "using OpenSim.Region.ScriptEngine.Shared; using System.Collections.Generic;\n" +
"namespace SecondLife { " +
"public class Script : OpenSim.Region.ScriptEngine.Shared.ScriptBase.ScriptBaseClass {\n" +
"public Script() { } " +
cg.Convert(input) +
"} }\n";
m_compilerResults = m_CSCodeProvider.CompileAssemblyFromSource(m_compilerParameters, output);
Assert.AreEqual(0, m_compilerResults.Errors.Count);
}
示例4: TestWhileLoop
public void TestWhileLoop()
{
TestHelpers.InMethod();
string input = @"// let's test while loops
default
{
touch_start(integer num_detected)
{
integer x = 1;
integer y = 0;
while (x) llSay(0, ""To infinity, and beyond!"");
while (0 || (x && 0))
{
llSay(0, ""Never say never."");
return;
}
}
}
";
string expected =
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
"\n {" +
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(1);" +
"\n LSL_Types.LSLInteger y = new LSL_Types.LSLInteger(0);" +
"\n while (x)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"To infinity, and beyond!\"));" +
"\n while (((bool)(new LSL_Types.LSLInteger(0))) | ((bool)((((bool)(x)) & ((bool)(new LSL_Types.LSLInteger(0)))))))" +
"\n {" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"Never say never.\"));" +
"\n return ;" +
"\n }" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例5: TestIfStatement
//.........这里部分代码省略.........
string input = @"// let's test if statements
default
{
touch_start(integer num_detected)
{
integer x = 1;
if (x) llSay(0, ""Hello"");
if (1)
{
llSay(0, ""Hi"");
integer r = 3;
return;
}
if (f(x)) llSay(0, ""f(x) is true"");
else llSay(0, ""f(x) is false"");
if (x + y) llSay(0, ""x + y is true"");
else if (y - x) llSay(0, ""y - x is true"");
else llSay(0, ""Who needs x and y anyway?"");
if (x * y) llSay(0, ""x * y is true"");
else if (y / x)
{
llSay(0, ""uh-oh, y / x is true, exiting"");
return;
}
else llSay(0, ""Who needs x and y anyway?"");
// and now for my last trick
if (x % y) llSay(0, ""x is true"");
else if (y & x) llSay(0, ""y is true"");
else if (z | x) llSay(0, ""z is true"");
else if (a * (b + x)) llSay(0, ""a is true"");
else if (b) llSay(0, ""b is true"");
else if (v) llSay(0, ""v is true"");
else llSay(0, ""Everything is lies!"");
}
}
";
string expected =
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
"\n {" +
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(1);" +
"\n if (x)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"Hello\"));" +
"\n if (new LSL_Types.LSLInteger(1))" +
"\n {" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"Hi\"));" +
"\n LSL_Types.LSLInteger r = new LSL_Types.LSLInteger(3);" +
"\n return ;" +
"\n }" +
"\n if (f(x))" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"f(x) is true\"));" +
"\n else" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"f(x) is false\"));" +
"\n if (x + y)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"x + y is true\"));" +
"\n else" +
"\n if (y - x)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"y - x is true\"));" +
"\n else" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"Who needs x and y anyway?\"));" +
"\n if (x * y)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"x * y is true\"));" +
"\n else" +
"\n if (y / x)" +
"\n {" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"uh-oh, y / x is true, exiting\"));" +
"\n return ;" +
"\n }" +
"\n else" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"Who needs x and y anyway?\"));" +
"\n if (x % y)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"x is true\"));" +
"\n else" +
"\n if (y & x)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"y is true\"));" +
"\n else" +
"\n if (z | x)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"z is true\"));" +
"\n else" +
"\n if (a * (b + x))" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"a is true\"));" +
"\n else" +
"\n if (b)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"b is true\"));" +
"\n else" +
"\n if (v)" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"v is true\"));" +
"\n else" +
"\n llSay(new LSL_Types.LSLInteger(0), new LSL_Types.LSLString(\"Everything is lies!\"));" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例6: TestIncrementDecrementOperator
public void TestIncrementDecrementOperator()
{
TestHelpers.InMethod();
string input = @"// here we'll test the ++ and -- operators
default
{
touch_start(integer num_detected)
{
integer y = -3;
integer x = 14 + 6;
y = 12 +45+20+x++ + (23 + 1) + ++x + -- y;
y = (12 + -45 + -20 + x-- + 23 )+ -1 + x -- + ++y;
}
}
";
string expected =
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
"\n {" +
"\n LSL_Types.LSLInteger y = -new LSL_Types.LSLInteger(3);" +
"\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(45) + new LSL_Types.LSLInteger(20) + x++ + (new LSL_Types.LSLInteger(23) + new LSL_Types.LSLInteger(1)) + ++x + --y;" +
"\n y = (new LSL_Types.LSLInteger(12) + -new LSL_Types.LSLInteger(45) + -new LSL_Types.LSLInteger(20) + x-- + new LSL_Types.LSLInteger(23)) + -new LSL_Types.LSLInteger(1) + x-- + ++y;" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例7: TestCustomState
public void TestCustomState()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
{
}
}
state another_state
{
no_sensor()
{
}
}
";
string expected =
"\n public void default_event_state_entry()" +
"\n {" +
"\n }" +
"\n public void another_state_event_no_sensor()" +
"\n {" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例8: TestVectorConstantNotation
public void TestVectorConstantNotation()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
{
vector y = <1.2, llGetMeAFloat(), 4.4>;
rotation x = <0.1, 0.1, one + 2, 0.9>;
y = <0.1, 0.1, 1.1 - three - two+eight*8>;
}
}
";
string expected =
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
"\n {" +
"\n LSL_Types.Vector3 y = new LSL_Types.Vector3(new LSL_Types.LSLFloat(1.2), llGetMeAFloat(), new LSL_Types.LSLFloat(4.4));" +
"\n LSL_Types.Quaternion x = new LSL_Types.Quaternion(new LSL_Types.LSLFloat(0.1), new LSL_Types.LSLFloat(0.1), one + new LSL_Types.LSLInteger(2), new LSL_Types.LSLFloat(0.9));" +
"\n y = new LSL_Types.Vector3(new LSL_Types.LSLFloat(0.1), new LSL_Types.LSLFloat(0.1), new LSL_Types.LSLFloat(1.1) - three - two + eight * new LSL_Types.LSLInteger(8));" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例9: TestAdditionSubtractionOperator
public void TestAdditionSubtractionOperator()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
{
integer y = -3;
integer x = 14 + 6;
y = 12 +45+20+x + 23 + 1 + x + y;
y = 12 + -45 + - 20 + x + 23 + -1 + x + y;
}
}
";
string expected =
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)\n" +
" {\n" +
" LSL_Types.LSLInteger y = -new LSL_Types.LSLInteger(3);\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(45) + new LSL_Types.LSLInteger(20) + x + new LSL_Types.LSLInteger(23) + new LSL_Types.LSLInteger(1) + x + y;\n" +
" y = new LSL_Types.LSLInteger(12) + -new LSL_Types.LSLInteger(45) + -new LSL_Types.LSLInteger(20) + x + new LSL_Types.LSLInteger(23) + -new LSL_Types.LSLInteger(1) + x + y;\n" +
" }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例10: TestSyntaxErrorDeclaringVariableInForLoop
public void TestSyntaxErrorDeclaringVariableInForLoop()
{
TestHelpers.InMethod();
bool gotException = false;
string input = @"default
{
state_entry()
{
for (integer x = 0; x < 10; x++) llOwnerSay(""x is: "" + (string) x);
}
}
";
try
{
CSCodeGenerator cg = new CSCodeGenerator();
cg.Convert(input);
}
catch (System.Exception e)
{
// The syntax error is on line 4, char 13 (Syntax error)
Assert.AreEqual("(4,13) syntax error", e.Message);
gotException = true;
}
Assert.That(gotException, Is.True);
}
示例11: TestSyntaxError
public void TestSyntaxError()
{
TestHelpers.InMethod();
bool gotException = false;
string input = @"default
{
state_entry()
{
integer y
}
}
";
try
{
CSCodeGenerator cg = new CSCodeGenerator();
cg.Convert(input);
}
catch (System.Exception e)
{
// The syntax error is on line 5, char 4 (expected ';', found
// '}').
Assert.AreEqual("(5,4) syntax error", e.Message);
gotException = true;
}
Assert.That(gotException, Is.True);
}
示例12: TestLSLListHack
public void TestLSLListHack()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
{
list l = [""hello""];
l = (l=[]) + l + ""world"";
}
}";
string expected =
"\n public void default_event_state_entry()" +
"\n {" +
"\n LSL_Types.list l = new LSL_Types.list(new LSL_Types.LSLString(\"hello\"));" +
"\n l = (l = new LSL_Types.list()) + l + new LSL_Types.LSLString(\"world\");" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例13: TestAssignments
public void TestAssignments()
{
TestHelpers.InMethod();
string input = @"default
{
touch_start(integer num_detected)
{
string y;
integer x = 14;
y = ""Hello"";
}
}
";
string expected =
"\n public void default_event_touch_start(LSL_Types.LSLInteger num_detected)" +
"\n {" +
"\n LSL_Types.LSLString y = new LSL_Types.LSLString(\"\");" +
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(14);" +
"\n y = new LSL_Types.LSLString(\"Hello\");" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例14: TestAssignmentInIfWhileDoWhile
public void TestAssignmentInIfWhileDoWhile()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
{
integer x;
while (x = 14) llOwnerSay(""x is: "" + (string) x);
if (x = 24) llOwnerSay(""x is: "" + (string) x);
do
llOwnerSay(""x is: "" + (string) x);
while (x = 44);
}
}";
string expected =
"\n public void default_event_state_entry()" +
"\n {" +
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(0);" +
"\n while (x = new LSL_Types.LSLInteger(14))" +
"\n llOwnerSay(new LSL_Types.LSLString(\"x is: \") + (LSL_Types.LSLString) (x));" +
"\n if (x = new LSL_Types.LSLInteger(24))" +
"\n llOwnerSay(new LSL_Types.LSLString(\"x is: \") + (LSL_Types.LSLString) (x));" +
"\n do" +
"\n llOwnerSay(new LSL_Types.LSLString(\"x is: \") + (LSL_Types.LSLString) (x));" +
"\n while (x = new LSL_Types.LSLInteger(44));" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}
示例15: TestForLoopWithOnlyIdentInAssignment
public void TestForLoopWithOnlyIdentInAssignment()
{
TestHelpers.InMethod();
string input = @"default
{
state_entry()
{
integer x = 4;
for (x; 1<0; x += 2);
}
}";
string expected =
"\n public void default_event_state_entry()" +
"\n {" +
"\n LSL_Types.LSLInteger x = new LSL_Types.LSLInteger(4);" +
"\n for (; new LSL_Types.LSLInteger(1) < new LSL_Types.LSLInteger(0); x += new LSL_Types.LSLInteger(2))" +
"\n ;" +
"\n }\n";
CSCodeGenerator cg = new CSCodeGenerator();
string output = cg.Convert(input);
Assert.AreEqual(expected, output);
}