private GdlList ParseList(Lexer lexer) { var arr = new List<GdlExpression>(); int token; while ((token = lexer.Token()) != ')') { if (token == Lexer.Eof) { ReportError("Unexpected end of file in parseList"); } // put this token back, and parse the expression lexer.Unget(token); arr.Add(ParseExpression(lexer)); } // Convert the ArrayList to an array, and return a new GdlList object. return new GdlList(_symbolTable, arr.ToArray()); }
public GdlList Parse(TextReader input) { var lexer = new Lexer(input, _symbolTable); // Top-level is a list of expressions. var exprs = new List<GdlExpression>(); while (true) { int t = lexer.Token(); if (t == -1) break; lexer.Unget(t); exprs.Add(ParseExpression(lexer)); } return new GdlList(_symbolTable, exprs.ToArray()); }