public override IAstNode VisitClass_definition(FifthParser.Class_definitionContext context) { var name = context.name.Text; var properties = context._properties .Select(fctx => VisitProperty_declaration(fctx)) .Cast <PropertyDefinition>() .ToList(); var classDefinition = new ClassDefinition(name, properties, new List <IFunctionDefinition>()).CaptureLocation(context.Start); TypeRegistry.DefaultRegistry.RegisterType(new UserDefinedType(classDefinition)); return(classDefinition); }
/// <summary> /// Visit a parse tree produced by <see cref="FifthParser.class_definition"/>. /// <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 VisitClass_definition([NotNull] FifthParser.Class_definitionContext context) { return(VisitChildren(context)); }