public static IDLMemberAnnotationArray ToAnnotationArray(this IDLParserToken p) { var a = new IDLMemberAnnotationArray(); a.Symbols.Item1 = p.AssertSymbol("["); // multiple constructors a.Symbols.Item2 = p.UntilSelected( pp => { if (pp.Text == "]") { return(pp); } if (a.Items.Count > 0) { pp = pp.AssertSymbol(","); } var Constructor = new IDLMemberAnnotation { Keyword = pp.SkipTo(), //.AssertName("Constructor"), }; Constructor.Keyword.SkipTo().With( Item1 => { if (Item1.Text != "(") { return; } Constructor.ParameterSymbols.Item1 = Item1; ToParameters(Constructor.Parameters, Constructor.ParameterSymbols); } ); a.Items.Add(Constructor); return(Constructor.Terminator.SkipTo()); } ).AssertSymbol("]"); return(a); }
public static IDLMemberAnnotationArray ToAnnotationArray(this IDLParserToken p) { var a = new IDLMemberAnnotationArray(); a.Symbols.Item1 = p.AssertSymbol("["); // multiple constructors a.Symbols.Item2 = p.UntilSelected( pp => { if (pp.Text == "]") return pp; if (a.Items.Count > 0) { pp = pp.AssertSymbol(","); } var Constructor = new IDLMemberAnnotation { Keyword = pp.SkipTo(), //.AssertName("Constructor"), }; Constructor.Keyword.SkipTo().With( Item1 => { if (Item1.Text != "(") return; Constructor.ParameterSymbols.Item1 = Item1; ToParameters(Constructor.Parameters, Constructor.ParameterSymbols); } ); a.Items.Add(Constructor); return Constructor.Terminator.SkipTo(); } ).AssertSymbol("]"); return a; }