示例#1
0
文件: Parser.cs 项目: Silica/CsPSL
 public bool Parse(Variable v)
 {
     var c = new Code();
     c.PushCode(new PushVariable("arg"));
     c.PushCode(new Argument());
     while (t.checkNext() != "")
         ParseStatement(v, c);
     v.setCode(c);
     return error != 0;
 }
示例#2
0
 public Variable GetVariable(string s)
 {
     var v = scope.GetVariable(s);
     if (v != null)
         return v;
     if (global.Exist(s))
         return global[s];
     v = new Variable();
     scope.AddLocal(s, v);
     return v;
 }
示例#3
0
文件: PSL.cs 项目: Silica/CsPSL
 public bool LoadString(string str)
 {
     var t = new Tokenizer(str);
     var p = new Parser(t);
     var v = new Variable();
     if (p.Parse(v))
         return true;
     v.prepare(env);
     v["print"] = new Variable(print);
     env.Set(v);
     return false;
 }
示例#4
0
文件: Variable.cs 项目: Silica/CsPSL
 public override vBase substitution(Variable v)
 {
     x = v.toString(); return this;
 }
示例#5
0
文件: Variable.cs 项目: Silica/CsPSL
 public override bool eq(Variable v)
 {
     return x == v.toString();
 }
示例#6
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void setchild(string s, Variable v)
 {
     if (!table.ContainsKey(s))
         table.Add(s, v);
     else
         table[s] = v;
 }
示例#7
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void xor(Variable v)
 {
     x ^= v.toInt();
 }
示例#8
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void or(Variable v)
 {
     x |= v.toInt();
 }
示例#9
0
文件: Variable.cs 项目: Silica/CsPSL
 public override Variable call(Environment env, Variable arg)
 {
     return x(arg);
 }
示例#10
0
文件: Variable.cs 项目: Silica/CsPSL
 public virtual void xor(Variable v)
 {
 }
示例#11
0
文件: Variable.cs 项目: Silica/CsPSL
 public virtual vBase substitution(Variable v)
 {
     return v.x.clone();
 }
示例#12
0
文件: Variable.cs 项目: Silica/CsPSL
 public virtual void sub(Variable v)
 {
 }
示例#13
0
文件: Variable.cs 项目: Silica/CsPSL
 public virtual void shr(Variable v)
 {
 }
示例#14
0
文件: Variable.cs 项目: Silica/CsPSL
 public virtual void setchild(string s, Variable v)
 {
     substitution(v);
 }
示例#15
0
文件: Variable.cs 项目: Silica/CsPSL
 public virtual bool ne(Variable v)
 {
     return false;
 }
示例#16
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void mul(Variable v)
 {
     x *= v.toInt();
 }
示例#17
0
文件: Variable.cs 项目: Silica/CsPSL
 public override bool ne(Variable v)
 {
     return x != v.toInt();
 }
示例#18
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void add(Variable v)
 {
     x += v.toInt();
 }
示例#19
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void sub(Variable v)
 {
     x -= v.toInt();
 }
示例#20
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void and(Variable v)
 {
     x &= v.toInt();
 }
示例#21
0
文件: Variable.cs 项目: Silica/CsPSL
 public override Variable call(Environment env, Variable arg)
 {
     if (code == null)
         return arg;
     env.AddScope(new FunctionScope(code));
     env.Push(arg);
     env.Run();
     return env.Pop();
 }
示例#22
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void div(Variable v)
 {
     x /= v.toInt();
 }
示例#23
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void add(Variable v)
 {
     x += v.toString();
 }
示例#24
0
文件: Variable.cs 项目: Silica/CsPSL
 public override bool eq(Variable v)
 {
     return x == v.toInt();
 }
示例#25
0
文件: Variable.cs 项目: Silica/CsPSL
 public override bool ne(Variable v)
 {
     return x != v.toString();
 }
示例#26
0
文件: Variable.cs 项目: Silica/CsPSL
 public override bool gt(Variable v)
 {
     return x > v.toInt();
 }
示例#27
0
文件: PSL.cs 项目: Silica/CsPSL
 public static Variable print(Variable v)
 {
     Console.WriteLine(v.toString());
     return v;
 }
示例#28
0
文件: Variable.cs 项目: Silica/CsPSL
 public override bool lt(Variable v)
 {
     return x < v.toInt();
 }
示例#29
0
文件: PSL.cs 项目: Silica/CsPSL
 public Variable Run(Variable v)
 {
     env.Push(v);
     env.Run();
     return env.Pop();
 }
示例#30
0
文件: Variable.cs 项目: Silica/CsPSL
 public override void mod(Variable v)
 {
     x %= v.toInt();
 }