コード例 #1
0
ファイル: Reader.cs プロジェクト: peterlindsten/Lisp
        private static AstList ParseList(Queue <Token> tokens)
        {
            var ret = new AstList();

            tokens.Dequeue();
            while (tokens.Count > 0)
            {
                if (tokens.Peek().Text.Equals(")"))
                {
                    tokens.Dequeue();
                    return(ret);
                }

                ret.Add(Parse(tokens));
            }

            throw new Exception("Couldn't find end of list");
        }
コード例 #2
0
ファイル: Printer.cs プロジェクト: peterlindsten/Lisp
        private static string PrintList(AstList al)
        {
            var ret = new StringBuilder();

            ret.Append('(');
            var list = new Queue <AstObject>(al.Objects);

            while (list.Count > 0)
            {
                ret.Append(Print(list.Dequeue()));
                if (list.Count != 0)
                {
                    ret.Append(' ');
                }
            }

            ret.Append(')');
            return(ret.ToString());
        }