此程序的编译抛出
编译器@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() )
};
};
答案 0 :(得分:0)
必须有一个块返回init方法的值。
这里
item <- i;
next <- n;
self;
..必须包裹在一个区块中;
init(i: String, n: List) : List
{
{
item <- i;
next <- n;
self;
}
};