public Interpreter(string filename) { var gmem = KittenVisitor.globalMemory; gmem.Add("print", new DynObj { t = vType.Function, FuncVal = new function { t = function.funcType.Builtin, BuiltinIMP = BI_print } }); gmem.Add("println", new DynObj { t = vType.Function, FuncVal = new function { t = function.funcType.Builtin, BuiltinIMP = BI_println } }); gmem.Add("number", new DynObj { t = vType.Function, FuncVal = new function { t = function.funcType.Builtin, BuiltinIMP = BI_numberCast } }); gmem.Add("input", new DynObj { t = vType.Function, FuncVal = new function { t = function.funcType.Builtin, BuiltinIMP = BI_input } }); input = File.ReadAllText(filename); lexer = new KittenGrammarLexer(new AntlrInputStream(input)); parser = new KittenGrammarParser(new CommonTokenStream(lexer)); tree = parser.compileUnit(); visitor = new KittenVisitor(new Dictionary <string, DynObj>()); }
/// <summary> /// Exit a parse tree produced by <see cref="KittenGrammarParser.compileUnit"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitCompileUnit([NotNull] KittenGrammarParser.CompileUnitContext context) { }
/// <summary> /// Visit a parse tree produced by <see cref="KittenGrammarParser.compileUnit"/>. /// <para> /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/> /// on <paramref name="context"/>. /// </para> /// </summary> /// <param name="context">The parse tree.</param> /// <return>The visitor result.</return> public virtual Result VisitCompileUnit([NotNull] KittenGrammarParser.CompileUnitContext context) { return(VisitChildren(context)); }