public override void ExitClassDefine([NotNull] ClassDefineContext context) { base.ExitClassDefine(context); Log("ExitClassDefine"); if (phase == Phase.Building) { symbolTableCreator.ExitClassDefine(context); } else { symbolTableTraverser.ExitClassDefine(context); semanticErrorChecker.ExitClassDefine(context); } }
public override ASTN VisitClassDefine([NotNull] ClassDefineContext context) { ClassNode node = new ClassNode(context) { features = new List <FeatureNode>(), Inherit = context.TYPE(1) == null ? TypeNode.OBJECT : new TypeNode(context.TYPE(1).Symbol.Line, context.TYPE(1).Symbol.Column, context.TYPE(1).GetText()), type = new TypeNode(context.TYPE(0).Symbol.Line, context.TYPE(0).Symbol.Column, context.TYPE(0).GetText()) }; foreach (var feat in context.feature()) { node.features.Add(VisitFeature(feat) as FeatureNode); } return(node); }
void Visit(ClassDefineContext cdcontext) { }