public AnalyzeFromFile ( string fileName ) : Kecaknoah.Analyze.KecaknoahLexResult | ||
fileName | string | ファイル名 |
리턴 | Kecaknoah.Analyze.KecaknoahLexResult |
private void ProcessUseDirective(KecaknoahSource src) { var cur = Directory.GetCurrentDirectory(); var asm = Path.GetDirectoryName(typeof(KecaknoahModule).Assembly.Location); var lex = new KecaknoahLexer(); var par = new KecaknoahParser(); var prc = new KecaknoahPrecompiler(); foreach (var text in src.Uses) { var arg = text.Split(new[] { ';' }, StringSplitOptions.RemoveEmptyEntries); switch (arg[0]) { case "import": var it = Path.Combine(cur, arg[1]); Directory.SetCurrentDirectory(Path.GetDirectoryName(it)); var s = prc.PrecompileAll(par.Parse(lex.AnalyzeFromFile(it))); RegisterSource(s); Directory.SetCurrentDirectory(cur); break; case "stdlib": var lt = Path.Combine(asm, "lib"); Directory.SetCurrentDirectory(Path.GetDirectoryName(lt)); var s2 = prc.PrecompileAll(par.Parse(lex.AnalyzeFromFile(lt))); RegisterSource(s2); Directory.SetCurrentDirectory(cur); break; } } }