/// <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); }
/// <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)); }