分配在冷却时引发错误

时间:2016-01-09 11:24:19

标签: syntax

此程序的编译抛出

编译器@compilers-vm:〜/ cool / jim $ coolc list.cl
“list.cl”,第7行:'或'附近的语法错误;' 由于lex和解析错误,编译暂停

class List{
    item : String;
    next : List;

    init(i: String, n: List) : List 
    {
        item <- i;
        next <- n;

        self
    };

    flattn(): String 
    {
        if( isvoid next )
            then 
                item
            else
                item.concat( next.flattn())
            fi
    };
};

class Main inherits IO {

    main() : Object{
            let hello : String <- "Hello ",
                wold : String <- "world ",
                newLine : String <- "\n",
                unfedined : List,
                l : List <- (new List).init(hello,
                                (new List).init(wold, 
                                    (new List).init(newLine, unfedined ) ) )

            in 
                out_string( l.flattn() )

    };
};

1 个答案:

答案 0 :(得分:0)

必须有一个块返回init方法的值。
这里

      item <- i;
      next <- n;
      self;

..必须包裹在一个区块中;

init(i: String, n: List) : List 
        {
            {
              item <- i;
              next <- n;

            self;
            }     
   };