public void Call(OsgItem x) { if(x.mode == OsgClassMode.Proc) { var methodIlGen = currentMethodBuilder.GetILGenerator(); x.osgObject.ILGen(methodIlGen); //methodIlGen.Emit(OpCodes.Call, x.osgObject.MethodBuilder); } Debug.WriteLine(String.Format("Call: Call({0})", x.type)); }
public OsgItem MakeItem(OsgObject y) { var x = new OsgItem(); x.mode = y.@class; x.type = y.type; x.lev = y.lev; x.a = y.val; x.b = 0; x.osgObject = y; // TODO: Work out x.r if(y.@class == OsgClassMode.Par) { x.mode = OsgClassMode.Var; x.a = 0; } Debug.WriteLine(String.Format("Generator: MakeItem({0})", y.name)); return x; }
public void Relation(Token op, OsgItem x, OsgItem y) { throw new NotImplementedException(); }
public void Parameter(OsgItem x, TypeDesc type, OsgClassMode @class) { throw new NotImplementedException(); }
private void selector(OsgItem x) { }
internal void factor(ref OsgItem x) { OsgObject obj; if (sym.Value < Token.Lparen.Value) { scanner.Mark("ident?"); while(sym.Value < Token.Lparen.Value) { NextToken(); } } if(sym == Token.Ident) { obj = find(); NextToken(); generator.MakeItem(x, obj); selector(x); } }