Пример #1
0
        public ASTNodeName ParseName(bool needsExplicitParameterSeparator, bool canBeRooted)
        {
            var nameNode = new ASTNodeName();

            nameNode.SetSpan(this.Current().span);

            var pathNode = new ASTNodePath();

            pathNode.SetSpan(this.Current().span);

            if (canBeRooted && this.CurrentIs(TokenKind.Placeholder))
            {
                this.Advance();
                pathNode.SetRooted(true);
                this.Match(TokenKind.DoubleColon, "expected '::'");
            }

            pathNode.AddIdentifierNode(this.ParseIdentifier());

            while (this.CurrentIs(TokenKind.DoubleColon) && this.NextIs(TokenKind.Identifier))
            {
                this.Advance();
                pathNode.AddIdentifierNode(this.ParseIdentifier());
            }
            nameNode.SetPathNode(pathNode);

            return(nameNode);
        }