Exemple #1
0
        public void InitHash()
        {
            ArrayList  param;
            LibFunc    lfunc;
            MethodInfo minfo;

            tokens = new Hashtable();
            param  = new ArrayList();
            minfo  = typeof(Console).GetMethod("WriteLine", new Type[] { typeof(Int32) });

            param.Add(Tok.TOK_FIXED);
            lfunc = new LibFunc("PRINT_I",
                                "[mscorlib]System.Console::WriteLine(int32)",
                                param,
                                Tok.TOK_VOID,
                                minfo
                                );
            add_tok(lfunc, "PRINT_I");
        }
Exemple #2
0
        public void InitHash()
        {
            ArrayList	param;
            LibFunc		lfunc;
            MethodInfo	minfo;

            tokens = new Hashtable();
            param = new ArrayList();
            minfo = typeof(Console).GetMethod("WriteLine", new Type[] { typeof(Int32) });

            param.Add(Tok.TOK_FIXED);
            lfunc = new LibFunc("PRINT_I",
                                "[mscorlib]System.Console::WriteLine(int32)",
                                param,
                                Tok.TOK_VOID,
                                minfo
                                );
            add_tok(lfunc,		"PRINT_I");
        }
Exemple #3
0
        public void parse_and_compile()
        {
            prolog();

            tree = new VarList();

            IDictionaryEnumerator libEnum = lib.get_enum();

            while (libEnum.MoveNext())
            {
                Var     procvar = new Var();
                LibFunc lfunc   = (LibFunc)libEnum.Value;

                procvar.setName(lfunc.nameShort);
                procvar.setType(Var.VAR_BLOCK);
                procvar.setTypeId(Tok.TOK_VOID);
                procvar.nodes = new VarList();

                for (int i = 0; i < lfunc.typeParams.Count; i++)
                {
                    Var param = new Var();
                    param.setName("PAR_" + i);
                    param.setType(Var.VAR_PARAM);
                    param.setTypeId((int)lfunc.typeParams[i]);
                    procvar.nodes.add(param);
                }

                tree.add(procvar);
            }

            io.ReadChar();
            tok.scan();
            declarations(tree);
            while (tok.NotEOF())
            {
                stmt(tree, null, null);
            }
            io.Message("compiled successfuly");
            io.TreeDraw(tree);
            epilog();
        }
Exemple #4
0
        public void Call(IAsm a)
        {
            Var    func = a.getVar();
            Object o    = func.getMethodBuilder();

            LibFunc lfunc = lib.lookup_func(a.getVar().getName());

            if (lfunc != null)
            {
                il.Emit(OpCodes.Call, lfunc.methodInfo);
            }
            else
            {
                if (o == null)
                {
                    io.ICE("no previous extern for (" + func.getName() + ")");
                }
                MethodBuilder mb = (MethodBuilder)o;
                il.Emit(OpCodes.Call, mb);
            }
        }
Exemple #5
0
 public static void add_tok(LibFunc i, string s)
 {
     tokens.Add(s, i);
 }
Exemple #6
0
 public static void add_tok(LibFunc i, string s)
 {
     tokens.Add(s, i);
 }