예제 #1
0
파일: Parser.cs 프로젝트: achernet/Serpent
        Ast.ListNode ParseList(SeekableStringReader sr)
        {
            // list            = list_empty | list_nonempty .
            // list_empty      = '[]' .
            // list_nonempty   = '[' expr_list ']' .
            sr.Read();                  // [
            sr.SkipWhitespace();
            Ast.ListNode list = new Ast.ListNode();
            if (sr.Peek() == ']')
            {
                sr.Read();
                return(list);                           // empty list
            }

            list.Elements = ParseExprList(sr);
            if (!sr.HasMore())
            {
                throw new ParseException("missing ']'");
            }
            char closechar = sr.Read();

            if (closechar != ']')
            {
                throw new ParseException("expected ']'");
            }
            return(list);
        }
예제 #2
0
        public void Visit(Ast.ListNode list)
        {
            IList <object> obj = new List <object>(list.Elements.Count);

            foreach (Ast.INode node in list.Elements)
            {
                node.Accept(this);
                obj.Add(generated.Pop());
            }
            generated.Push(obj);
        }
예제 #3
0
파일: DebugVisitor.cs 프로젝트: kranack/CAR
 public void Visit(Ast.ListNode list)
 {
     result.AppendLine("(list");
     indent++;
     foreach (Ast.INode node in list.Elements)
     {
         Indent();
         node.Accept(this);
         result.AppendLine(",");
     }
     indent--;
     Indent();
     result.Append(")");
 }