Example #1
0
                public static FTL.AST.MemberList Parse(CharStream cs)
                {
                    // starts with a newline and optional newline
                    NewLine.Parse(cs);
                    WhiteSpace.Parse(cs);

                    FTL.AST.MemberList memberList = new FTL.AST.MemberList();
                    // parse first required member, as we always need at least 1
                    memberList.AddMember(Member.Parse(cs));

                    char next;
                    int  bufferPos;

                    do
                    {
                        next = cs.PeekNext();
                        if (CharStream.IsEOF(next) || !CharStream.IsNL(next))
                        {
                            break;
                        }

                        bufferPos = cs.Position;
                        NewLine.Parse(cs);
                        WhiteSpace.Parse(cs);

                        if (!Member.Peek(cs))
                        {
                            cs.Rewind(bufferPos);
                            break;
                        }

                        memberList.AddMember(Member.Parse(cs));
                    } while(true);

                    return(memberList);
                }