Loyc.Ecs.Parser.EcsParser.AttributeContents C# (CSharp) Method

AttributeContents() private method

private AttributeContents ( VList &attrs ) : void
attrs VList
return void
		void AttributeContents(ref VList<LNode> attrs)
		{
			TokenType la0, la1;
			// line 913
			Token attrTarget = default(Token);
			// Line 914: ((TT.ContextualKeyword|TT.Id|TT.Return) TT.Colon ExprList / ExprList)
			la0 = LA0;
			if (la0 == TT.ContextualKeyword || la0 == TT.Id || la0 == TT.Return) {
				la1 = LA(1);
				if (la1 == TT.Colon) {
					attrTarget = MatchAny();
					Skip();
					// line 915
					VList<LNode> newAttrs = new VList<LNode>();
					ExprList(ref newAttrs, allowTrailingComma: true, allowUnassignedVarDecl: true);
					// line 918
					var attrTargetId = F.Id(attrTarget);
					for (int i = 0; i < newAttrs.Count; i++) {
						var attr = newAttrs[i];
						if ((!IsNamedArg(attr))) {
							attr = SetOperatorStyle(F.Call(S.NamedArg, attrTargetId, attr, i == 0 ? attrTarget.StartIndex : attr.Range.StartIndex, attr.Range.EndIndex));
						} else {
							Error(attrTargetId = attrs[i].Args[0], "Syntax error: only one attribute target is allowed");
						}
						attrs.Add(attr);
					}
				} else
					ExprList(ref attrs, allowTrailingComma: true, allowUnassignedVarDecl: true);
			} else
				ExprList(ref attrs, allowTrailingComma: true, allowUnassignedVarDecl: true);
		}
	
EcsParser