Example #1
0
        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());
        }
Example #2
0
        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());
        }