Exemplo n.º 1
0
        /// <summary>
        /// 解析映射函数脚本
        /// </summary>
        /// <param name="code"></param>
        /// <param name="filename"></param>
        /// <returns></returns>
        public IOJMethod ParseRemapCode(string code, string filename)
        {
            parser = new TokenParser(data);
            var tokens = DoTokenize.Tokenize(code, filename);

            parser.Compile(tokens);
            var blocks = parser.blocks;

            if (blocks == null || blocks.Count != 1)
            {
                return(null);
            }
            List <Block> args = new List <Block>();

            for (int i = 0; i < 10; i++)
            {
                if (parser.lasyBlocks.ContainsKey(i))
                {
                    args.Add(parser.lasyBlocks[i]);
                }
            }

            Stmt stmt = new Stmt(new OJMethods(blocks), args);

            stmt.SetRemaped(filename);
            return(stmt);
        }
Exemplo n.º 2
0
        /// <summary>
        /// 解析脚本,返回可执行函数IOJMethod
        /// </summary>
        /// <param name="code"></param>
        /// <param name="filename"></param>
        /// <returns></returns>
        public IOJMethod Parse(string code, string filename)
        {
            parser = new TokenParser(data);
            var tokens = DoTokenize.Tokenize(code, filename);

            parser.Compile(tokens);
            var blocks = parser.blocks;

            if (blocks == null || !blocks.Any())
            {
                return(null);
            }
            return(new OJMethods(blocks));
        }