public static List <Type> GetImports(BRAQParser.ProgramContext context) { var visitor = new ImportVisitor(); context.Accept(visitor); return(visitor._imported_names); }
solveTypes(BRAQParser.ProgramContext context, Dictionary <BRAQParser.Function_def_stmtContext, AssignCheckVisitor.AssignCheckResult> step1_result, List <Type> imported_names) { var answ = new Dictionary <BRAQParser.Function_def_stmtContext, TyperResult>(); var user_functions = new List <OwnMethodInfo>(); //function signatures foreach (var fdef in step1_result) { var tr = new TyperResult(fdef.Value.token_to_def, fdef.Value.token_to_arg.Keys.ToList()); tr.methodInfo = new OwnMethodInfo( fdef.Key.id_name.Text, fdef.Key.typed_id().Select(x => new Pair <string, Type>(x.id_name.Text, string_to_type(x.type_name.Text, imported_names))).ToList(), fdef.Key.of_type != null ? string_to_type(fdef.Key.of_type.Text, imported_names): typeof(void), fdef.Key ); user_functions.Add(tr.methodInfo); tr.argtypes = tr.methodInfo.arguments.ToDictionary(x => x.a, x => x.b); tr.argvars = fdef.Value.token_to_arg.Keys.ToList(); answ[fdef.Key] = tr; } foreach (var fdef in step1_result) { var v = new TyperVisitor(answ[fdef.Key], fdef.Value.def_to_assign, user_functions); v.imported_names = imported_names; fdef.Key.Accept(v); } return(answ); }
/// <summary> /// Visit a parse tree produced by <see cref="BRAQParser.program"/>. /// <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 VisitProgram([NotNull] BRAQParser.ProgramContext context) { return(VisitChildren(context)); }
public override int VisitProgram(BRAQParser.ProgramContext context) { context.imports().ToList().ForEach(x => x.Accept(this)); return(0); }
public static void runChecks(BRAQParser.ProgramContext context) { context.Accept(new BreakContinueChecker()); }
/// <summary> /// Exit a parse tree produced by <see cref="BRAQParser.program"/>. /// <para>The default implementation does nothing.</para> /// </summary> /// <param name="context">The parse tree.</param> public virtual void ExitProgram([NotNull] BRAQParser.ProgramContext context) { }