public ProcedureNode(VBAParser.SubStmtContext context, string scope, string localScope) : this(context, scope, localScope, VBProcedureKind.Sub, context.visibility(), context.ambiguousIdentifier(), null) { _argsListContext = context.argList(); _staticNode = context.STATIC(); _keyword = context.SUB(); }
public ProcedureNode(VBAParser.PropertyGetStmtContext context, string scope, string localScope) : this(context, scope, localScope, VBProcedureKind.PropertyGet, context.visibility(), context.ambiguousIdentifier(), () => context.asTypeClause()) { _argsListContext = context.argList(); _staticNode = context.STATIC(); _keyword = context.PROPERTY_GET(); _asTypeClauseContext = context.asTypeClause(); }
public ProcedureNode(VBAParser.FunctionStmtContext context, string scope, string localScope) : this(context, scope, localScope, VBProcedureKind.Function, context.visibility(), context.ambiguousIdentifier(), () => context.asTypeClause()) { _argsListContext = context.argList(); _staticNode = context.STATIC(); _keyword = context.FUNCTION(); _asTypeClauseContext = context.asTypeClause(); }
private ProcedureNode GetNode(VBAParser.PropertyGetStmtContext context) { if (context == null) { return null; } var scope = Selection.QualifiedName.ToString(); var localScope = scope + "." + context.ambiguousIdentifier().GetText(); return new ProcedureNode(context, scope, localScope); }
private string DeclareExplicitVariant(VBAParser.ConstSubStmtContext context, out string instruction) { if (context == null) { instruction = null; return null; } var parent = (VBAParser.ConstStmtContext) context.Parent; instruction = parent.GetText(); var constant = context.GetText(); var replacement = context.ambiguousIdentifier().GetText() + ' ' + Tokens.As + ' ' + Tokens.Variant + ' ' + context.EQ().GetText() + ' ' + context.valueStmt().GetText(); var result = instruction.Replace(constant, replacement); return result; }
public override void EnterDeclareStmt(VBAParser.DeclareStmtContext context) { var accessibility = GetMemberAccessibility(context.visibility()); var nameContext = context.ambiguousIdentifier(); if (nameContext == null) { return; } var name = nameContext.GetText(); var hasReturnType = context.FUNCTION() != null; var asTypeClause = context.asTypeClause(); var asTypeName = hasReturnType ? asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText() : null; var selection = nameContext.GetSelection(); var declarationType = hasReturnType ? DeclarationType.LibraryFunction : DeclarationType.LibraryProcedure; var declaration = CreateDeclaration(name, asTypeName, accessibility, declarationType, context, selection); OnNewDeclaration(declaration); SetCurrentScope(declaration, name); // treat like a procedure block, to correctly scope parameters. }
public override void EnterTypeStmt(VBAParser.TypeStmtContext context) { SetCurrentScope(context.ambiguousIdentifier().GetText(), DeclarationType.UserDefinedType); }
public override void EnterEnumerationStmt_Constant(VBAParser.EnumerationStmt_ConstantContext context) { OnNewDeclaration(CreateDeclaration(context.ambiguousIdentifier().GetText(), null, Accessibility.Implicit, DeclarationType.EnumerationMember, context, context.ambiguousIdentifier().GetSelection())); }
public override void EnterTypeStmt_Element(VBAParser.TypeStmt_ElementContext context) { var asTypeClause = context.asTypeClause(); var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); OnNewDeclaration(CreateDeclaration(context.ambiguousIdentifier().GetText(), asTypeName, Accessibility.Implicit, DeclarationType.UserDefinedTypeMember, context, context.ambiguousIdentifier().GetSelection())); }
public override void EnterEnumerationStmt(VBAParser.EnumerationStmtContext context) { var accessibility = GetMemberAccessibility(context.visibility()); var identifier = context.ambiguousIdentifier(); if (identifier == null) { return; } var name = identifier.GetText(); var declaration = CreateDeclaration(name, null, accessibility, DeclarationType.Enumeration, context, context.ambiguousIdentifier().GetSelection()); OnNewDeclaration(declaration); _parentDeclaration = declaration; // treat members as child declarations, but keep them scoped to module }
public override void EnterPropertySetStmt(VBAParser.PropertySetStmtContext context) { _currentScopeAttributes = new Attributes(); _currentScope = Tuple.Create(context.ambiguousIdentifier().GetText(), DeclarationType.PropertySet); }
public override void EnterEnumerationStmt(VBAParser.EnumerationStmtContext context) { SetCurrentScope(context.ambiguousIdentifier().GetText(), DeclarationType.Enumeration); }
public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context) { var accessibility = GetProcedureAccessibility(context.visibility()); var name = context.ambiguousIdentifier().GetText(); var asTypeClause = context.asTypeClause(); var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); var declaration = CreateDeclaration(name, asTypeName, accessibility, DeclarationType.Function, context, context.ambiguousIdentifier().GetSelection()); _declarations.Add(declaration); SetCurrentScope(name); }
public override void EnterFunctionStmt(VBAParser.FunctionStmtContext context) { _resolver.SetCurrentScope(context.ambiguousIdentifier().GetText()); }
public override void EnterEventStmt(VBAParser.EventStmtContext context) { var accessibility = GetMemberAccessibility(context.visibility()); var identifier = context.ambiguousIdentifier(); if (identifier == null) { return; } var name = identifier.GetText(); var declaration = CreateDeclaration(name, null, accessibility, DeclarationType.Event, context, context.ambiguousIdentifier().GetSelection()); OnNewDeclaration(declaration); SetCurrentScope(declaration, name); }
public override void EnterPropertyGetStmt(VBAParser.PropertyGetStmtContext context) { var accessibility = GetProcedureAccessibility(context.visibility()); var identifier = context.ambiguousIdentifier(); if (identifier == null) { return; } var name = identifier.GetText(); var asTypeClause = context.asTypeClause(); var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); var declaration = CreateDeclaration(name, asTypeName, accessibility, DeclarationType.PropertyGet, context, context.ambiguousIdentifier().GetSelection()); OnNewDeclaration(declaration); SetCurrentScope(declaration, name); }
public override void EnterEnumerationStmt(VBAParser.EnumerationStmtContext context) { var accessibility = GetMemberAccessibility(context.visibility()); var name = context.ambiguousIdentifier().GetText(); _declarations.Add(CreateDeclaration(name, null, accessibility, DeclarationType.Enumeration, context, context.ambiguousIdentifier().GetSelection())); //SetCurrentScope(name); }
public override void EnterDeclareStmt(VBAParser.DeclareStmtContext context) { var accessibility = GetMemberAccessibility(context.visibility()); var nameContext = context.ambiguousIdentifier(); var name = nameContext.GetText(); var hasReturnType = context.FUNCTION() != null; var asTypeClause = context.asTypeClause(); var asTypeName = hasReturnType ? asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText() : null; var selection = nameContext.GetSelection(); var declarationType = hasReturnType ? DeclarationType.LibraryFunction : DeclarationType.LibraryProcedure; _declarations.Add(CreateDeclaration(name, asTypeName, accessibility, declarationType, context, selection)); SetCurrentScope(name); }
public override void EnterPropertySetStmt(VBAParser.PropertySetStmtContext context) { var accessibility = GetProcedureAccessibility(context.visibility()); var name = context.ambiguousIdentifier().GetText(); _declarations.Add(CreateDeclaration(name, null, accessibility, DeclarationType.PropertySet, context, context.ambiguousIdentifier().GetSelection())); SetCurrentScope(name); }
public override void EnterLineLabel(VBAParser.LineLabelContext context) { OnNewDeclaration(CreateDeclaration(context.ambiguousIdentifier().GetText(), null, Accessibility.Private, DeclarationType.LineLabel, context, context.ambiguousIdentifier().GetSelection(), true)); }
public override void EnterVariableSubStmt(VBAParser.VariableSubStmtContext context) { var parent = (VBAParser.VariableStmtContext)context.Parent.Parent; var accessibility = GetMemberAccessibility(parent.visibility()); var identifier = context.ambiguousIdentifier(); if (identifier == null) { return; } var name = identifier.GetText(); var asTypeClause = context.asTypeClause(); var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); var withEvents = parent.WITHEVENTS() != null; var selfAssigned = asTypeClause != null && asTypeClause.NEW() != null; OnNewDeclaration(CreateDeclaration(name, asTypeName, accessibility, DeclarationType.Variable, context, context.ambiguousIdentifier().GetSelection(), selfAssigned, withEvents)); }
public override void EnterPropertySetStmt(VBAParser.PropertySetStmtContext context) { _resolver.SetCurrentScope(context.ambiguousIdentifier().GetText(), DeclarationType.PropertySet); }
public override void EnterConstSubStmt(VBAParser.ConstSubStmtContext context) { var parent = (VBAParser.ConstStmtContext)context.Parent; var accessibility = GetMemberAccessibility(parent.visibility()); var asTypeClause = context.asTypeClause(); var asTypeName = asTypeClause == null ? Tokens.Variant : asTypeClause.type().GetText(); var identifier = context.ambiguousIdentifier(); if (identifier == null) { return; } var name = identifier.GetText(); var value = context.valueStmt().GetText(); var declaration = new ValuedDeclaration(new QualifiedMemberName(_qualifiedName, name), _parentDeclaration, _currentScope, asTypeName, accessibility, DeclarationType.Constant, value, context, identifier.GetSelection()); OnNewDeclaration(declaration); }
public override void ExitModuleConfigElement(VBAParser.ModuleConfigElementContext context) { var name = context.ambiguousIdentifier().GetText(); var literal = context.literal(); var values = new[] { literal == null ? string.Empty : literal.GetText()}; _currentScopeAttributes.Add(name, values); }
public override void EnterSubStmt(VBAParser.SubStmtContext context) { SetCurrentScope(context.ambiguousIdentifier().GetText(), DeclarationType.Procedure); }