class
#include <slang/syntax/SyntaxNode.h>
SyntaxNode Base class for all syntax nodes.
Derived classes
- struct ActionBlockSyntax
- Concrete syntax definition for an ActionBlock.
- struct ArgumentListSyntax
- Concrete syntax definition for an ArgumentList.
- struct ArgumentSyntax
- Concrete syntax definition for an Argument.
- struct AssertionItemPortListSyntax
- Concrete syntax definition for an AssertionItemPortList.
- struct AssertionItemPortSyntax
- Concrete syntax definition for an AssertionItemPort.
- struct AssignmentPatternItemSyntax
- Concrete syntax definition for an AssignmentPatternItem.
- struct AssignmentPatternSyntax
- Concrete syntax definition for an AssignmentPattern.
- struct AttributeInstanceSyntax
- Concrete syntax definition for an AttributeInstance.
- struct AttributeSpecSyntax
- Concrete syntax definition for an AttributeSpec.
- struct BindTargetListSyntax
- Concrete syntax definition for a BindTargetList.
- struct BinsSelectExpressionSyntax
- Concrete syntax definition for a BinsSelectExpression.
- struct BlockCoverageEventSyntax
- Concrete syntax definition for a BlockCoverageEvent.
- struct BlockEventExpressionSyntax
- Concrete syntax definition for a BlockEventExpression.
- struct CaseItemSyntax
- Concrete syntax definition for a CaseItem.
- struct ClassSpecifierSyntax
- Concrete syntax definition for a ClassSpecifier.
- struct ClockingDirectionSyntax
- Concrete syntax definition for a ClockingDirection.
- struct ClockingSkewSyntax
- Concrete syntax definition for a ClockingSkew.
- struct ColonExpressionClauseSyntax
- Concrete syntax definition for a ColonExpressionClause.
- struct CompilationUnitSyntax
- Concrete syntax definition for a CompilationUnit.
- struct ConditionalDirectiveExpressionSyntax
- Concrete syntax definition for a ConditionalDirectiveExpression.
- struct ConditionalPatternSyntax
- Concrete syntax definition for a ConditionalPattern.
- struct ConditionalPredicateSyntax
- Concrete syntax definition for a ConditionalPredicate.
- struct ConfigCellIdentifierSyntax
- Concrete syntax definition for a ConfigCellIdentifier.
- struct ConfigInstanceIdentifierSyntax
- Concrete syntax definition for a ConfigInstanceIdentifier.
- struct ConfigRuleClauseSyntax
- Concrete syntax definition for a ConfigRuleClause.
- struct ConfigRuleSyntax
- Concrete syntax definition for a ConfigRule.
- struct ConstraintItemSyntax
- Concrete syntax definition for a ConstraintItem.
- struct CoverageBinInitializerSyntax
- Concrete syntax definition for a CoverageBinInitializer.
- struct CoverageBinsArraySizeSyntax
- Concrete syntax definition for a CoverageBinsArraySize.
- struct CoverageIffClauseSyntax
- Concrete syntax definition for a CoverageIffClause.
- struct DeclaratorSyntax
- Concrete syntax definition for a Declarator.
- struct DefParamAssignmentSyntax
- Concrete syntax definition for a DefParamAssignment.
- struct DefaultExtendsClauseArgSyntax
- Concrete syntax definition for a DefaultExtendsClauseArg.
- struct DeferredAssertionSyntax
- Concrete syntax definition for a DeferredAssertion.
- struct DelayedSequenceElementSyntax
- Concrete syntax definition for a DelayedSequenceElement.
- struct DimensionSpecifierSyntax
- Concrete syntax definition for a DimensionSpecifier.
- struct DirectiveSyntax
- Concrete syntax definition for a Directive.
- struct DisableIffSyntax
- Concrete syntax definition for a DisableIff.
- struct DistConstraintListSyntax
- Concrete syntax definition for a DistConstraintList.
- struct DistItemBaseSyntax
- Concrete syntax definition for a DistItemBase.
- struct DistWeightSyntax
- Concrete syntax definition for a DistWeight.
- struct DividerClauseSyntax
- Concrete syntax definition for a DividerClause.
- struct DotMemberClauseSyntax
- Concrete syntax definition for a DotMemberClause.
- struct EdgeControlSpecifierSyntax
- Concrete syntax definition for an EdgeControlSpecifier.
- struct EdgeDescriptorSyntax
- Concrete syntax definition for an EdgeDescriptor.
- struct ElementSelectSyntax
- Concrete syntax definition for an ElementSelect.
- struct ElseClauseSyntax
- Concrete syntax definition for an ElseClause.
- struct ElseConstraintClauseSyntax
- Concrete syntax definition for an ElseConstraintClause.
- struct ElsePropertyClauseSyntax
- Concrete syntax definition for an ElsePropertyClause.
- struct EqualsAssertionArgClauseSyntax
- Concrete syntax definition for an EqualsAssertionArgClause.
- struct EqualsTypeClauseSyntax
- Concrete syntax definition for an EqualsTypeClause.
- struct EqualsValueClauseSyntax
- Concrete syntax definition for an EqualsValueClause.
- struct ExpressionSyntax
- Concrete syntax definition for an Expression.
- struct ExtendsClauseSyntax
- Concrete syntax definition for an ExtendsClause.
- struct FilePathSpecSyntax
- Concrete syntax definition for a FilePathSpec.
- struct ForVariableDeclarationSyntax
- Concrete syntax definition for a ForVariableDeclaration.
- struct ForeachLoopListSyntax
- Concrete syntax definition for a ForeachLoopList.
- struct ForwardTypeRestrictionSyntax
- Concrete syntax definition for a ForwardTypeRestriction.
- struct FunctionPortBaseSyntax
- Concrete syntax definition for a FunctionPortBase.
- struct FunctionPortListSyntax
- Concrete syntax definition for a FunctionPortList.
- struct FunctionPrototypeSyntax
- Concrete syntax definition for a FunctionPrototype.
- struct HierarchicalInstanceSyntax
- Concrete syntax definition for a HierarchicalInstance.
- struct IffEventClauseSyntax
- Concrete syntax definition for an IffEventClause.
- struct ImplementsClauseSyntax
- Concrete syntax definition for an ImplementsClause.
- struct InstanceNameSyntax
- Concrete syntax definition for an InstanceName.
- struct IntersectClauseSyntax
- Concrete syntax definition for an IntersectClause.
- struct LibraryIncDirClauseSyntax
- Concrete syntax definition for a LibraryIncDirClause.
- struct LibraryMapSyntax
- Concrete syntax definition for a LibraryMap.
- struct MacroActualArgumentListSyntax
- Concrete syntax definition for a MacroActualArgumentList.
- struct MacroActualArgumentSyntax
- Concrete syntax definition for a MacroActualArgument.
- struct MacroArgumentDefaultSyntax
- Concrete syntax definition for a MacroArgumentDefault.
- struct MacroFormalArgumentListSyntax
- Concrete syntax definition for a MacroFormalArgumentList.
- struct MacroFormalArgumentSyntax
- Concrete syntax definition for a MacroFormalArgument.
- struct MatchesClauseSyntax
- Concrete syntax definition for a MatchesClause.
- struct MemberSyntax
- Concrete syntax definition for a Member.
- struct ModportItemSyntax
- Concrete syntax definition for a ModportItem.
- struct ModportPortSyntax
- Concrete syntax definition for a ModportPort.
- struct ModuleHeaderSyntax
- Concrete syntax definition for a ModuleHeader.
- struct NamedBlockClauseSyntax
- Concrete syntax definition for a NamedBlockClause.
- struct NamedLabelSyntax
- Concrete syntax definition for a NamedLabel.
- struct NetStrengthSyntax
- Concrete syntax definition for a NetStrength.
- struct NonAnsiPortSyntax
- Concrete syntax definition for a NonAnsiPort.
- struct PackageImportItemSyntax
- Concrete syntax definition for a PackageImportItem.
- struct ParamAssignmentSyntax
- Concrete syntax definition for a ParamAssignment.
- struct ParameterDeclarationBaseSyntax
- Concrete syntax definition for a ParameterDeclarationBase.
- struct ParameterPortListSyntax
- Concrete syntax definition for a ParameterPortList.
- struct ParameterValueAssignmentSyntax
- Concrete syntax definition for a ParameterValueAssignment.
- struct ParenExpressionListSyntax
- Concrete syntax definition for a ParenExpressionList.
- struct PathDescriptionSyntax
- Concrete syntax definition for a PathDescription.
- struct PathSuffixSyntax
- Concrete syntax definition for a PathSuffix.
- struct PatternSyntax
- Concrete syntax definition for a Pattern.
- struct PortConnectionSyntax
- Concrete syntax definition for a PortConnection.
- struct PortExpressionSyntax
- Concrete syntax definition for a PortExpression.
- struct PortHeaderSyntax
- Concrete syntax definition for a PortHeader.
- struct PortListSyntax
- Concrete syntax definition for a PortList.
- struct PragmaExpressionSyntax
- Concrete syntax definition for a PragmaExpression.
- struct ProductionSyntax
- Concrete syntax definition for a Production.
- struct PropertyCaseItemSyntax
- Concrete syntax definition for a PropertyCaseItem.
- struct PropertyExprSyntax
- Concrete syntax definition for a PropertyExpr.
- struct PropertySpecSyntax
- Concrete syntax definition for a PropertySpec.
- struct RandCaseItemSyntax
- Concrete syntax definition for a RandCaseItem.
- struct RandJoinClauseSyntax
- Concrete syntax definition for a RandJoinClause.
- struct RangeListSyntax
- Concrete syntax definition for a RangeList.
- struct RsCaseItemSyntax
- Concrete syntax definition for a RsCaseItem.
- struct RsElseClauseSyntax
- Concrete syntax definition for a RsElseClause.
- struct RsProdSyntax
- Concrete syntax definition for a RsProd.
- struct RsRuleSyntax
- Concrete syntax definition for a RsRule.
- struct RsWeightClauseSyntax
- Concrete syntax definition for a RsWeightClause.
- struct SelectorSyntax
- Concrete syntax definition for a Selector.
- struct SequenceExprSyntax
- Concrete syntax definition for a SequenceExpr.
- struct SequenceMatchListSyntax
- Concrete syntax definition for a SequenceMatchList.
- struct SequenceRepetitionSyntax
- Concrete syntax definition for a SequenceRepetition.
- struct SpecparamDeclaratorSyntax
- Concrete syntax definition for a SpecparamDeclarator.
- struct StatementSyntax
- Concrete syntax definition for a Statement.
- struct StreamExpressionSyntax
- Concrete syntax definition for a StreamExpression.
- struct StreamExpressionWithRangeSyntax
- Concrete syntax definition for a StreamExpressionWithRange.
- struct StructUnionMemberSyntax
- Concrete syntax definition for a StructUnionMember.
- struct StructurePatternMemberSyntax
- Concrete syntax definition for a StructurePatternMember.
- class SyntaxListBase
- A base class for syntax nodes that represent a list of items.
- struct TimingCheckArgSyntax
- Concrete syntax definition for a TimingCheckArg.
- struct TimingCheckEventConditionSyntax
- Concrete syntax definition for a TimingCheckEventCondition.
- struct TimingControlSyntax
- Concrete syntax definition for a TimingControl.
- struct TransRangeSyntax
- Concrete syntax definition for a TransRange.
- struct TransRepeatRangeSyntax
- Concrete syntax definition for a TransRepeatRange.
- struct TransSetSyntax
- Concrete syntax definition for a TransSet.
- struct TypeAssignmentSyntax
- Concrete syntax definition for a TypeAssignment.
- struct UdpBodySyntax
- Concrete syntax definition for an UdpBody.
- struct UdpEntrySyntax
- Concrete syntax definition for an UdpEntry.
- struct UdpFieldBaseSyntax
- Concrete syntax definition for an UdpFieldBase.
- struct UdpInitialStmtSyntax
- Concrete syntax definition for an UdpInitialStmt.
- struct UdpPortDeclSyntax
- Concrete syntax definition for an UdpPortDecl.
- struct UdpPortListSyntax
- Concrete syntax definition for an UdpPortList.
- struct VariableDimensionSyntax
- Concrete syntax definition for a VariableDimension.
- struct WithClauseSyntax
- Concrete syntax definition for a WithClause.
- struct WithFunctionClauseSyntax
- Concrete syntax definition for a WithFunctionClause.
- struct WithFunctionSampleSyntax
- Concrete syntax definition for a WithFunctionSample.
Public static functions
- static auto isKind(SyntaxKind) -> bool
- A base implemention of the method that checks correctness of dynamic casting.
-
static auto isChildOptional(size_
t) -> bool - Derived nodes should implement this and return true if child at provided index is pointer not wrapped in not_null.
Public functions
-
auto toString() const -> std::
string - Print the node and all of its children to a string.
- auto getFirstToken() const -> Token
- Get the first leaf token in this subtree.
- auto getLastToken() const -> Token
- Get the last leaf token in this subtree.
- auto getFirstTokenPtr() -> Token*
- Get the first leaf token as a mutable pointer in this subtree.
- auto getLastTokenPtr() -> Token*
- Get the last leaf token a mutable pointer in this subtree.
- auto sourceRange() const -> SourceRange
- Get the source range of the node.
-
auto childNode(size_
t index) const -> const SyntaxNode* - Gets the child syntax node at the specified index.
-
auto childNode(size_
t index) -> SyntaxNode* - Gets the child syntax node at the specified index.
-
auto childToken(size_
t index) const -> Token - Gets the child token at the specified index.
-
auto childTokenPtr(size_
t index) -> Token* - Gets a pointer to the child token at the specified index.
-
auto getChildCount() const -> size_
t - Gets the number of (direct) children underneath this node in the tree.
- auto isEquivalentTo(const SyntaxNode& other) const -> bool
- Returns true if this syntax node is "equivalent" to the other provided syntax node.
-
template<typename T>auto as() -> T&
- Reinterprets this node as being of type T.
-
template<typename T>auto as() const -> const T&
- Reinterprets this node as being of type T.
-
template<typename TVisitor, typename... Args>auto visit(TVisitor& visitor, Args && ... args) -> decltype(auto)
- Applies a visitor object to this node by dispatching based on the dynamic kind.
-
template<typename TVisitor, typename... Args>auto visit(TVisitor& visitor, Args && ... args) const -> decltype(auto)
- Applies a visitor object to this node by dispatching based on the dynamic kind.
Public variables
- SyntaxKind kind
- The kind of syntax node.
- SyntaxNode* parent
- The parent node of this syntax node.
- const SyntaxNode* previewNode
- An potional pointer to a syntax node tha can be useful to know ahead of time when visiting this node.
Function documentation
static bool slang:: syntax:: SyntaxNode:: isKind(SyntaxKind)
A base implemention of the method that checks correctness of dynamic casting.
Derived nodes should reimplement this and return true if the provided syntax kind is compatible with the static type of the object.
const SyntaxNode* slang:: syntax:: SyntaxNode:: childNode(size_ t index) const
Gets the child syntax node at the specified index.
If the child at the given index is not a node (probably a token) then this returns null.
SyntaxNode* slang:: syntax:: SyntaxNode:: childNode(size_ t index)
Gets the child syntax node at the specified index.
If the child at the given index is not a node (probably a token) then this returns null.
Token slang:: syntax:: SyntaxNode:: childToken(size_ t index) const
Gets the child token at the specified index.
If the child at the given index is not a token (probably a node) then this returns an empty Token.
Token* slang:: syntax:: SyntaxNode:: childTokenPtr(size_ t index)
Gets a pointer to the child token at the specified index.
If the child at the given index is not a token (probably a node) then this returns null.
bool slang:: syntax:: SyntaxNode:: isEquivalentTo(const SyntaxNode& other) const
Returns true if this syntax node is "equivalent" to the other provided syntax node.
Equivalence here is determined by the entire subtrees having the same kinds of syntax nodes in the same order and all leaf tokens having the same kinds and value text.
template<typename T>
T& slang:: syntax:: SyntaxNode:: as()
Reinterprets this node as being of type T.
In debug this will assert that the dynamic kind is appropriate for the specified static type.
template<typename T>
const T& slang:: syntax:: SyntaxNode:: as() const
Reinterprets this node as being of type T.
In debug this will assert that the dynamic kind is appropriate for the specified static type.
template<typename TVisitor, typename... Args>
decltype(auto) slang:: syntax:: SyntaxNode:: visit(TVisitor& visitor,
Args && ... args)
Applies a visitor object to this node by dispatching based on the dynamic kind.
The given args are forwarded to the visitor.
template<typename TVisitor, typename... Args>
decltype(auto) slang:: syntax:: SyntaxNode:: visit(TVisitor& visitor,
Args && ... args) const
Applies a visitor object to this node by dispatching based on the dynamic kind.
The given args are forwarded to the visitor.
Variable documentation
SyntaxNode* slang:: syntax:: SyntaxNode:: parent
The parent node of this syntax node.
The root of the syntax tree does not have a parent (will be nullptr).
const SyntaxNode* slang:: syntax:: SyntaxNode:: previewNode
An potional pointer to a syntax node tha can be useful to know ahead of time when visiting this node.
The node, if set, is underneath this node in the syntax tree.
For example, an enum declaration deep inside an expression tree needs to be known up front to add its members to its parent scope.