public override object VisitClassDeclaration(ClassDeclarationContext context) { if (_ignoreOfPragma) { return(null); } var namespaceBaseClass = _currentClass; _currentClass = Get <Class>(context.type()); var isStructReal = context.classOrStruct().GetText() == "struct"; _currentClass.SourceFile = _currentFile; _currentClass.SourceLine = context.Start.Line; _currentClass.IsImplemented = true; _currentClass.IsTemplate = context.FoundChild <TemplateDefineContext>(); _currentClass.IsFinal = context.FoundChild <IsFinalContext>(); _currentClass.UMeta = _currentUMeta ?? _currentClass.UMeta; _currentClass.Description = _currentComment; switch (_currentClass.Name.First()) { case 'U': _currentClass.IsStructure = false; break; case 'F': _currentClass.IsStructure = true; break; default: _currentClass.IsStructure = isStructReal; break; } _accessModifier = isStructReal ? AccessModifier.Public : AccessModifier.Private; _ignoreOfAccessModifier = _accessModifier == AccessModifier.Private; var parentClassName = context.Child <ClassParentListContext>()?.type(); if (parentClassName != null) { _currentClass.BaseClass = Get <Class>(parentClassName); } _currentUMeta = null; _currentComment = ""; VisitClassBody(context.Child <ClassBodyContext>()); _currentClass.NamespaceBaseType = namespaceBaseClass; _currentClass = namespaceBaseClass; return(null); }
protected virtual bool VisitClassDeclaration(ClassDeclarationContext ctx) { var className = ctx.children[1]; if (className.GetText() == "PaintCodeColor") { var styleKitPaintCodeColorClassVisitor = new StyleKitPaintCodeColorClassVisitor(this); styleKitPaintCodeColorClassVisitor.Visit(ctx); return(false); } return(true); }
protected override bool VisitClassDeclaration(ClassDeclarationContext ctx) { var className = ctx.children[1]; if (className.GetText() == "PaintCodeColor") { var extendsToken = (TerminalNodeImpl)ctx.children[2]; var colorClass = (TypeTypeContext)ctx.children[3]; _rewriter.Delete(extendsToken.Symbol); _rewriter.Delete(colorClass.Start); } return(true); }
/// <summary> /// Fill Class from ClassDeclarationContext /// </summary> /// <param name="inClass"></param> /// <param name="inClassContext"></param> internal static void FillClassContext(ClassContainer inClass, ClassDeclarationContext inClassContext) { if (inClassContext.typeList() != null) { inClass.InterfaceList.AddRange(inClassContext.typeList().typeType() .Select(inItem => GetTypeContainer(inItem))); } inClass.ModifierList.Add("class"); var tmpComment = ""; if (inClassContext.typeType() != null) { inClass.InterfaceList.Insert(0, GetTypeContainer(inClassContext.typeType())); } var tmpClassBoy = inClassContext.classBody(); tmpComment = ManageClassBodyContext(inClass, tmpComment, tmpClassBoy); }
public ClassDeclarationContext classDeclaration() { ClassDeclarationContext _localctx = new ClassDeclarationContext(Context, State); EnterRule(_localctx, 0, RULE_classDeclaration); int _la; try { EnterOuterAlt(_localctx, 1); { State = 10; Match(T__0); State = 11; className(); State = 12; Match(T__1); State = 16; ErrorHandler.Sync(this); _la = TokenStream.LA(1); while (_la == ID) { { { State = 13; method(); } } State = 18; ErrorHandler.Sync(this); _la = TokenStream.LA(1); } State = 19; Match(T__2); } } catch (RecognitionException re) { _localctx.exception = re; ErrorHandler.ReportError(this, re); ErrorHandler.Recover(this, re); } finally { ExitRule(); } return(_localctx); }
private void ParseNode(IParseTree node) { if (node is PackageDeclarationContext packageContext) { string name = this.GetNodeName(packageContext); this.WriteKeyValue("Package", name); } else if (node is ImportDeclarationContext importContext) { string name = this.GetNodeName(importContext); this.WriteKeyValue("Import", name); } else if (node is TypeDeclarationContext typeContext) { foreach (var child in typeContext.children) { if (child is InterfaceDeclarationContext) { InterfaceDeclarationContext interfaceContext = child as InterfaceDeclarationContext; string name = interfaceContext.IDENTIFIER().GetText(); this.WriteLine(); this.WriteKeyValue("Interface", name); this.WriteBeginBrace(); var members = interfaceContext.interfaceBody().interfaceBodyDeclaration().Select(item => item.interfaceMemberDeclaration()); foreach (InterfaceMemberDeclarationContext member in members) { var constContext = member.constDeclaration(); if (constContext != null) { string constName = constContext.constantDeclarator(0).IDENTIFIER().GetText(); this.WriteLine($"Const field:{constName}"); } InterfaceMethodDeclarationContext method = member.interfaceMethodDeclaration(); if (method != null) { string methodName = method.IDENTIFIER().GetText(); this.WriteKeyValue("Method", methodName); } } this.WriteEndBrace(); } else if (child is ClassDeclarationContext) { ClassDeclarationContext classContext = child as ClassDeclarationContext; string name = this.GetNodeName(classContext); this.WriteLine(); this.WriteLine($"Class:{name}"); this.WriteBeginBrace(); var members = classContext.classBody().classBodyDeclaration().Select(item => item.memberDeclaration()); foreach (MemberDeclarationContext member in members) { FieldDeclarationContext field = member.fieldDeclaration(); if (field != null) { string fieldName = field.variableDeclarators().GetText(); this.WriteKeyValue("Field", fieldName); } MethodDeclarationContext method = member.methodDeclaration(); if (method != null) { string methodName = method.IDENTIFIER().GetText(); this.WriteKeyValue("Method", methodName); } } this.WriteEndBrace(); } } } }
public static ClassDeclaration ToAst(this ClassDeclarationContext classDeclarationContext) { return(new ClassDeclaration(classDeclarationContext.Identifier()[0].GetText(), classDeclarationContext.Identifier().Length > 1 ? classDeclarationContext.Identifier()[1].GetText() : null, classDeclarationContext.varDeclaration().Select(varContext => varContext.ToAst()).ToArray(), classDeclarationContext.methodDeclaration().Select(methodContext => methodContext.ToAst()).ToArray())); }