Inheritance: Pliant.Languages.Pdl.PdlNode
Exemplo n.º 1
0
        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)));
        }
Exemplo n.º 2
0
 public PdlSetting(PdlSettingIdentifier settingIdentifier, PdlQualifiedIdentifier qualifiedIdentifier)
 {
     SettingIdentifier   = settingIdentifier;
     QualifiedIdentifier = qualifiedIdentifier;
     _hashCode           = ComputeHashCode();
 }