public static void Setup(TestContext context) { TypeInfoProvider.GetGlobal().AddFunction("print", (a) => { context.WriteLine((string)a[0]); return(null); }, null, new Type[] { typeof(string) }); }
public void Parsing() { Enviroment enviroment = new Enviroment(TypeInfoProvider.GetGlobal()); var block = TokenParser.Parse("\"Comment\" .\nprint IN string 25 . .\nprint IN add \"Hello\" \"world\" . .\n mul 5 10 , string , add \" = 25\" , print .", enviroment, CodePosition.GetExternal()); var statements = block.GetSyntaxNodes(); Assert.AreEqual(statements.Count, 4); }
public void VariableTypeSafetyInCode() { Enviroment enviroment = new Enviroment(TypeInfoProvider.GetGlobal()); enviroment.StartBlock(CodePosition.GetExternal()); enviroment.DefineVariable("x", typeof(string), CodePosition.GetExternal()); TokenParser.Parse("x= 0 .", enviroment, CodePosition.GetExternal()); enviroment.EndBlock(); }
public void VariableRedefinitionFail() { Enviroment enviroment = new Enviroment(TypeInfoProvider.GetGlobal()); enviroment.StartBlock(CodePosition.GetExternal()); enviroment.DefineVariable("x", typeof(int), CodePosition.GetExternal()); enviroment.DefineVariable("x", typeof(int), CodePosition.GetExternal()); enviroment.EndBlock(); }
public void RunTheExampleFile() { var text = System.IO.File.ReadAllText("../../../Examples/example.ws"); Enviroment enviroment = new Enviroment(TypeInfoProvider.GetGlobal()); var block = TokenParser.Parse(text, enviroment, CodePosition.GetExternal()); block.Validate(enviroment); Assert.AreEqual(typeof(string), block.ReturnType); Assert.AreEqual("aaaab", block.Evaluate()); }
public void VariableDefinition() { Enviroment enviroment = new Enviroment(TypeInfoProvider.GetGlobal()); enviroment.StartBlock(CodePosition.GetExternal()); Assert.IsNull(enviroment.GetVariable("y")); enviroment.DefineVariable("x", typeof(int), CodePosition.GetExternal()); Assert.IsNotNull(enviroment.GetVariable("x")); enviroment.EndBlock(); }
public void VariablesInCode() { Enviroment enviroment = new Enviroment(TypeInfoProvider.GetGlobal()); enviroment.StartBlock(CodePosition.GetExternal()); enviroment.DefineVariable("x", typeof(int), CodePosition.GetExternal()); TokenParser.Parse("DEFINE:y:int . &y . y= 0 . &x . x= &y .", enviroment, CodePosition.GetExternal(), true); Assert.IsNotNull(enviroment.GetVariable("y")); Assert.AreEqual(enviroment.GetVariable("y").Type, typeof(int)); enviroment.EndBlock(); }
public void VariableInheritance() { Enviroment enviroment = new Enviroment(TypeInfoProvider.GetGlobal()); enviroment.StartBlock(CodePosition.GetExternal()); var xOut = enviroment.DefineVariable("x", typeof(string), CodePosition.GetExternal()); var yOut = enviroment.DefineVariable("y", typeof(int), CodePosition.GetExternal()); enviroment.StartBlock(CodePosition.GetExternal()); Assert.AreEqual(yOut, enviroment.GetVariable("y")); Assert.AreEqual(xOut, enviroment.GetVariable("x")); var yInner = enviroment.DefineVariable("y", typeof(string), CodePosition.GetExternal()); var zInner = enviroment.DefineVariable("z", typeof(string), CodePosition.GetExternal()); Assert.AreNotEqual(yOut, enviroment.GetVariable("y")); enviroment.EndBlock(); Assert.AreEqual(yOut, enviroment.GetVariable("y")); Assert.IsNull(enviroment.GetVariable("z")); enviroment.EndBlock(); }
static void Main(string[] args) { enviroment = new Enviroment(TypeInfoProvider.GetGlobal()); enviroment.provider.MapType(typeof(Console)); if (args.Length == 0 || args[0][0] == '#') { Console.WriteLine("WordScript REPL\nCopyright (C) Branislav Trstenský 2019\n"); while (true) { Console.Write("> "); var input = Console.ReadLine(); Run(input); } } else { file = Path.GetFileName(args[0]); Run(File.ReadAllText(args[0])); Console.Read(); } }