public PropertyDeclarationNode(Token token,
                                ParseNodeList attributes,
                                Modifiers modifiers,
                                ParseNode type,
                                NameNode interfaceType,
                                AtomicNameNode name,
                                AccessorNode getOrRemove,
                                AccessorNode setOrAdd)
     : this(ParseNodeType.PropertyDeclaration, token, attributes, modifiers, type, interfaceType, getOrRemove, setOrAdd) {
     _name = (AtomicNameNode)GetParentedNode(name);
 }
 public IndexerDeclarationNode(Token token,
                               ParseNodeList attributes,
                               Modifiers modifiers,
                               ParseNode type,
                               NameNode interfaceType,
                               ParseNodeList parameters,
                               AccessorNode get,
                               AccessorNode set)
     : base(ParseNodeType.IndexerDeclaration, token, attributes, modifiers, type, interfaceType, get, set)
 {
     _parameters = GetParentedNodeList(parameters);
 }
Exemple #3
0
 public PropertyDeclarationNode(Token token,
                                ParseNodeList attributes,
                                Modifiers modifiers,
                                ParseNode type,
                                NameNode interfaceType,
                                AtomicNameNode name,
                                AccessorNode getOrRemove,
                                AccessorNode setOrAdd)
     : this(ParseNodeType.PropertyDeclaration, token, attributes, modifiers, type, interfaceType, getOrRemove, setOrAdd)
 {
     _name = (AtomicNameNode)GetParentedNode(name);
 }
Exemple #4
0
 public IndexerDeclarationNode(Token token,
                               ParseNodeList attributes,
                               Modifiers modifiers,
                               ParseNode type,
                               NameNode interfaceType,
                               ParseNodeList parameters,
                               AccessorNode get,
                               AccessorNode set)
     : base(ParseNodeType.IndexerDeclaration, token, attributes, modifiers, type, interfaceType, get, set)
 {
     _parameters = GetParentedNodeList(parameters);
 }
 protected PropertyDeclarationNode(ParseNodeType nodeType, Token token,
                                   ParseNodeList attributes,
                                   Modifiers modifiers,
                                   ParseNode type,
                                   NameNode interfaceType,
                                   AccessorNode getOrRemove,
                                   AccessorNode setOrAdd)
     : base(nodeType, token) {
     _attributes = GetParentedNodeList(AttributeNode.GetAttributeList(attributes));
     _modifiers = modifiers;
     _type = GetParentedNode(type);
     _interfaceType = (NameNode)GetParentedNode(interfaceType);
     _getOrRemove = (AccessorNode)GetParentedNode(getOrRemove);
     _setOrAdd = (AccessorNode)GetParentedNode(setOrAdd);
 }
Exemple #6
0
 protected PropertyDeclarationNode(ParseNodeType nodeType, Token token,
                                   ParseNodeList attributes,
                                   Modifiers modifiers,
                                   ParseNode type,
                                   NameNode interfaceType,
                                   AccessorNode getOrRemove,
                                   AccessorNode setOrAdd)
     : base(nodeType, token)
 {
     _attributes    = GetParentedNodeList(AttributeNode.GetAttributeList(attributes));
     _modifiers     = modifiers;
     _type          = GetParentedNode(type);
     _interfaceType = (NameNode)GetParentedNode(interfaceType);
     _getOrRemove   = (AccessorNode)GetParentedNode(getOrRemove);
     _setOrAdd      = (AccessorNode)GetParentedNode(setOrAdd);
 }
Exemple #7
0
        private void ParseAccessors(bool isEvent, out AccessorNode get, out AccessorNode set) {
            get = null;
            set = null;

            Eat(TokenType.OpenCurly);

            // first accessor
            Token token = PeekToken();
            ParseNodeList attributes = ParseAttributes();
            while (attributes.Count != 0 || PeekType() == TokenType.Identifier || (!isEvent && PeekModifier())) {
                Modifiers modifiers = 0;
                if (!isEvent) {
                    modifiers = ParseModifiers();
                }
                AtomicNameNode name = ParseIdentifier();
                BlockStatementNode body = ParseBlockOpt();
                if ((name.Identifier.Symbol == getName && !isEvent) ||
                    (name.Identifier.Symbol == removeName && isEvent)) {
                    if (get != null) {
                        ReportError(ParseError.DuplicateAccessor, name.Identifier.Symbol);
                    }
                    else {
                        get = new AccessorNode(token, attributes, name, body, modifiers);
                    }
                }
                else if ((name.Identifier.Symbol == setName && !isEvent) ||
                         (name.Identifier.Symbol == addName && isEvent)) {
                    if (set != null) {
                        ReportError(ParseError.DuplicateAccessor, name.Identifier.Symbol, modifiers);
                    }
                    else {
                        set = new AccessorNode(token, attributes, name, body, modifiers);
                    }
                }
                else {
                    if (!isEvent)
                        ReportError(ParseError.GetOrSetExpected);
                    else
                        ReportError(ParseError.AddOrRemoveExpected);
                }

                // next accessor
                token = PeekToken();
                attributes = ParseAttributes();
            }

            if (get == null && set == null) {
                ReportError(ParseError.NeedAtLeastOneAccessor);
            }
            else if (isEvent && (get == null || set == null)) {
                ReportError(ParseError.EventMissingAcessor);
            }
            Eat(TokenType.CloseCurly);
        }