Esempio n. 1
0
        private EbnfBlockSetting VisitSettingNode(IInternalTreeNode node)
        {
            EbnfSettingIdentifier   settingIdentifier   = null;
            EbnfQualifiedIdentifier 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.Id == nameof(settingIdentifier))
                    {
                        settingIdentifier = new EbnfSettingIdentifier(token.Value);
                    }
                    break;

                case TreeNodeType.Internal:
                    var internalNode = child as IInternalTreeNode;
                    var symbolValue  = internalNode.Symbol.Value;
                    if (EbnfGrammar.QualifiedIdentifier == symbolValue)
                    {
                        qualifiedIdentifier = VisitQualifiedIdentifierNode(internalNode);
                    }
                    break;
                }
            }
            return(new EbnfBlockSetting(
                       new EbnfSetting(settingIdentifier, qualifiedIdentifier)));
        }
Esempio n. 2
0
        private EbnfBlockSetting VisitSettingNode(IInternalTreeNode node)
        {
            EbnfSettingIdentifier   settingIdentifier = null;
            EbnfQualifiedIdentifier qualifiedEbnfQualifiedIdentifier = null;

            foreach (var child in node.Children)
            {
                switch (child)
                {
                case IInternalTreeNode internalNode:
                    if (internalNode.Is(EbnfGrammar.QualifiedIdentifier))
                    {
                        qualifiedEbnfQualifiedIdentifier = VisitQualifiedIdentifierNode(internalNode);
                    }

                    break;

                case ITokenTreeNode tokenNode:
                    var token = tokenNode.Token;
                    if (token.TokenName.Equals(EbnfGrammar.TokenClasses.SettingIdentifier))
                    {
                        settingIdentifier = new EbnfSettingIdentifier(token.Value);
                    }

                    break;
                }
            }

            return(new EbnfBlockSetting(new EbnfSetting(settingIdentifier, qualifiedEbnfQualifiedIdentifier)));
        }
Esempio n. 3
0
 public EbnfSetting(EbnfSettingIdentifier settingIdentifier, EbnfQualifiedIdentifier identifier)
 {
     SettingIdentifier = settingIdentifier;
     Identifier        = identifier;
 }
Esempio n. 4
0
        private EbnfBlockSetting VisitSettingNode(IInternalTreeNode node)
        {
            EbnfSettingIdentifier settingIdentifier = null;
            EbnfQualifiedIdentifier 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.Id == nameof(settingIdentifier))
                            settingIdentifier = new EbnfSettingIdentifier(token.Value);
                        break;

                    case TreeNodeType.Internal:
                        var internalNode = child as IInternalTreeNode;
                        var symbolValue = internalNode.Symbol.Value;
                        if (EbnfGrammar.QualifiedIdentifier == symbolValue)
                            qualifiedIdentifier = VisitQualifiedIdentifierNode(internalNode);
                        break;
                }
            }
            return new EbnfBlockSetting(
                new EbnfSetting(settingIdentifier, qualifiedIdentifier));
        }
Esempio n. 5
0
 public EbnfSetting(EbnfSettingIdentifier settingIdentifier, EbnfQualifiedIdentifier qualifiedIdentifier)
 {
     SettingIdentifier   = settingIdentifier;
     QualifiedIdentifier = qualifiedIdentifier;
     _hashCode           = ComputeHashCode();
 }
Esempio n. 6
0
 public EbnfSetting(EbnfSettingIdentifier settingIdentifier, EbnfQualifiedIdentifier qualifiedIdentifier)
 {
     SettingIdentifier = settingIdentifier;
     QualifiedIdentifier = qualifiedIdentifier;
     _hashCode = ComputeHashCode();
 }