예제 #1
0
파일: Generator.cs 프로젝트: adbrowne/abcm
 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));
 }
예제 #2
0
파일: Generator.cs 프로젝트: adbrowne/abcm
        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;
        }
예제 #3
0
파일: Generator.cs 프로젝트: adbrowne/abcm
 public void Relation(Token op, OsgItem x, OsgItem y)
 {
     throw new NotImplementedException();
 }
예제 #4
0
파일: Generator.cs 프로젝트: adbrowne/abcm
 public void Parameter(OsgItem x, TypeDesc type, OsgClassMode @class)
 {
     throw new NotImplementedException();
 }
예제 #5
0
파일: Parser.cs 프로젝트: adbrowne/abcm
 private void selector(OsgItem x)
 {
 }
예제 #6
0
파일: Parser.cs 프로젝트: adbrowne/abcm
        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);
            }
        }