public PdlQualifiedIdentifierConcatenation( string identifier, PdlQualifiedIdentifier qualifiedIdentifier) : this(identifier.AsCapture(), qualifiedIdentifier) { }
private PdlBlockRule VisitRuleNode(IInternalTreeNode node) { PdlQualifiedIdentifier qualifiedIdentifier = null; PdlExpression expression = null; for (int c = 0; c < node.Children.Count; c++) { var child = node.Children[c]; switch (child.NodeType) { case TreeNodeType.Internal: var internalNode = child as IInternalTreeNode; var symbolValue = internalNode.Symbol.Value; if (PdlGrammar.QualifiedIdentifier == symbolValue) { qualifiedIdentifier = VisitQualifiedIdentifierNode(internalNode); } else if (PdlGrammar.Expression == symbolValue) { expression = VisitExpressionNode(internalNode); } break; case TreeNodeType.Token: break; } } return(new PdlBlockRule( new PdlRule(qualifiedIdentifier, expression))); }
private PdlBlockLexerRule VisitLexerRuleNode(IInternalTreeNode node) { PdlQualifiedIdentifier qualifiedIdentifier = null; PdlLexerRuleExpression expression = null; for (int c = 0; c < node.Children.Count; c++) { var child = node.Children[c]; if (child.NodeType != TreeNodeType.Internal) { continue; } var internalNode = child as IInternalTreeNode; var symbolValue = internalNode.Symbol.Value; if (PdlGrammar.QualifiedIdentifier == symbolValue) { qualifiedIdentifier = VisitQualifiedIdentifierNode(internalNode); } else if (PdlGrammar.LexerRuleExpression == symbolValue) { expression = VisitLexerRuleExpressionNode(internalNode); } } return(new PdlBlockLexerRule( new PdlLexerRule(qualifiedIdentifier, expression))); }
private PdlBlockSetting VisitSettingNode(IInternalTreeNode node) { PdlSettingIdentifier settingIdentifier = null; PdlQualifiedIdentifier qualifiedIdentifier = null; for (int c = 0; c < node.Children.Count; c++) { var child = node.Children[c]; switch (child.NodeType) { case TreeNodeType.Token: var tokenNode = child as ITokenTreeNode; var token = tokenNode.Token; if (token.TokenType.Equals(PdlGrammar.TokenTypes.SettingIdentifier)) { settingIdentifier = new PdlSettingIdentifier(token.Capture); } break; case TreeNodeType.Internal: var internalNode = child as IInternalTreeNode; var symbolValue = internalNode.Symbol.Value; if (PdlGrammar.QualifiedIdentifier == symbolValue) { qualifiedIdentifier = VisitQualifiedIdentifierNode(internalNode); } break; } } return(new PdlBlockSetting( new PdlSetting(settingIdentifier, qualifiedIdentifier))); }
public PdlQualifiedIdentifierConcatenation( ICapture <char> identifier, PdlQualifiedIdentifier qualifiedIdentifier) : base(identifier) { QualifiedIdentifier = qualifiedIdentifier; _hashCode = ComputeHashCode(); }
private PdlQualifiedIdentifier VisitQualifiedIdentifierNode(IInternalTreeNode node) { PdlQualifiedIdentifier repetitionIdentifier = null; ICapture <char> identifier = null; for (int c = 0; c < node.Children.Count; c++) { var child = node.Children[c]; switch (child.NodeType) { case TreeNodeType.Internal: var internalNode = child as IInternalTreeNode; var symbolValue = internalNode.Symbol.Value; if (PdlGrammar.QualifiedIdentifier == symbolValue) { repetitionIdentifier = VisitQualifiedIdentifierNode(internalNode); } break; case TreeNodeType.Token: var tokenNode = child as ITokenTreeNode; var token = tokenNode.Token; if (token.TokenType.Equals(PdlGrammar.TokenTypes.Identifier)) { identifier = token.Capture; } break; } } if (repetitionIdentifier is null) { return(new PdlQualifiedIdentifier(identifier)); } return(new PdlQualifiedIdentifierConcatenation(identifier, repetitionIdentifier)); }
public PdlFactorIdentifier(PdlQualifiedIdentifier qualifiedIdentifier) { QualifiedIdentifier = qualifiedIdentifier; _hashCode = ComputeHashCode(); }
public PdlRule(PdlQualifiedIdentifier qualifiedIdentifier, PdlExpression expression) { QualifiedIdentifier = qualifiedIdentifier; Expression = expression; _hashCode = ComputeHashCode(); }
public PdlSetting(PdlSettingIdentifier settingIdentifier, PdlQualifiedIdentifier qualifiedIdentifier) { SettingIdentifier = settingIdentifier; QualifiedIdentifier = qualifiedIdentifier; _hashCode = ComputeHashCode(); }
private static FullyQualifiedName GetFullyQualifiedNameFromQualifiedIdentifier(PdlQualifiedIdentifier qualifiedIdentifier) { var @namespace = new StringBuilder(); var currentQualifiedIdentifier = qualifiedIdentifier; var index = 0; while (currentQualifiedIdentifier.NodeType == PdlNodeType.PdlQualifiedIdentifierConcatenation) { if (index > 0) { @namespace.Append("."); } @namespace.Append(currentQualifiedIdentifier.Identifier); currentQualifiedIdentifier = (currentQualifiedIdentifier as PdlQualifiedIdentifierConcatenation).QualifiedIdentifier; index++; } return(new FullyQualifiedName(@namespace.ToString(), currentQualifiedIdentifier.Identifier.ToString())); }