Example #1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="module"></param>
        /// <param name="previouslyParsedAttribute"></param>
        /// <param name="RequireDeclDef">If no colon and no open curly brace is given as lookahead, a DeclDef may be parsed otherwise, if parameter is true.</param>
        /// <returns></returns>
        IMetaDeclaration AttributeTrail(DBlockNode module, DAttribute previouslyParsedAttribute, bool RequireDeclDef = false)
        {
            if (laKind == Colon)
            {
                Step();
                PushAttribute(previouslyParsedAttribute, true);

                AttributeMetaDeclarationSection metaDecl = null;
                //TODO: Put all remaining block/decl(?) attributes into the section definition..
                if(module!=null)
                    module.Add(metaDecl = new AttributeMetaDeclarationSection(previouslyParsedAttribute) { EndLocation = t.EndLocation });
                return metaDecl;
            }
            else
                PushAttribute(previouslyParsedAttribute, false);

            if (laKind == OpenCurlyBrace)
                return AttributeBlock(module);
            else
            {
                if (IsEOF && module != null && previouslyParsedAttribute != null) // To enable attribute completion, add dummy node
                    module.Add (new DVariable{ Attributes = new List<DAttribute>{ previouslyParsedAttribute } });

                if (RequireDeclDef)
                    DeclDef(module);
                return new AttributeMetaDeclaration(previouslyParsedAttribute) { EndLocation = previouslyParsedAttribute.EndLocation };
            }
        }
		public virtual void Visit(AttributeMetaDeclarationSection attributeMetaDeclarationSection)
		{
			Visit((AttributeMetaDeclaration)attributeMetaDeclarationSection);
		}
 public virtual void VisitAttributeMetaDeclarationSection(AttributeMetaDeclarationSection m)
 {
     VisitAttributeMetaDeclaration(m);
 }
		public override void Visit(AttributeMetaDeclarationSection attributeMetaDeclarationSection)
		{
			base.Visit(attributeMetaDeclarationSection);
		}
Example #5
0
		/// <summary>
		/// 
		/// </summary>
		/// <param name="module"></param>
		/// <param name="previouslyParsedAttribute"></param>
		/// <param name="RequireDeclDef">If no colon and no open curly brace is given as lookahead, a DeclDef may be parsed otherwise, if parameter is true.</param>
		/// <returns></returns>
		IMetaDeclaration AttributeSpecifier(DBlockNode module, DAttribute previouslyParsedAttribute, bool RequireDeclDef = false)
		{
			DAttribute[] attrs;

			if (laKind == Colon)
			{
				Step();
				PushAttribute(previouslyParsedAttribute, true);

				attrs = new DAttribute[1 + DeclarationAttributes.Count];
				DeclarationAttributes.CopyTo(attrs, 0);
				DeclarationAttributes.Clear();
				attrs[attrs.Length - 1] = previouslyParsedAttribute;

				AttributeMetaDeclarationSection metaDecl = null;
				//TODO: Put all remaining block/decl(?) attributes into the section definition..
				if(module!=null)
					module.Add(metaDecl = new AttributeMetaDeclarationSection(attrs) { EndLocation = t.EndLocation });
				return metaDecl;
			}
			else 
				PushAttribute(previouslyParsedAttribute, false);

			if (laKind == OpenCurlyBrace)
				return AttributeBlock(module);
			else
			{
				if (IsEOF && module != null && previouslyParsedAttribute != null) // To enable attribute completion, add dummy node
					module.Add (new DVariable{ Attributes = new List<DAttribute>{ previouslyParsedAttribute } });

				if (RequireDeclDef)
				{
					DeclDef(module);

					attrs = new DAttribute[1 + DeclarationAttributes.Count];
					DeclarationAttributes.CopyTo(attrs, 0);
					DeclarationAttributes.Clear();
					attrs[attrs.Length - 1] = previouslyParsedAttribute;

					return new AttributeMetaDeclaration(attrs) { EndLocation = previouslyParsedAttribute.EndLocation };
				}
			}

			return null;
		}
 public ulong VisitAttributeMetaDeclarationSection(AttributeMetaDeclarationSection m)
 {
     return(1002061);
 }
 public override void Visit(AttributeMetaDeclarationSection attributeMetaDeclarationSection)
 {
     base.Visit(attributeMetaDeclarationSection);
 }