次のコードは、期待どおりにコンパイルおよび実行されます。
fun {Tokenize Lexemes}
case Lexemes of
Head|Tail then
case Head of
"+" then
operator(type:plus)|{Tokenize Tail}
else
if {String.isFloat Head} then
number(Head)|{Tokenize Tail}
else
nil
end
end
else
nil
end
end
ただし、次のコードのように別の case 句を追加すると、コンパイル時に「end」ステートメントの欠落に関するエラーが発生します。
fun {Tokenize Lexemes}
case Lexemes of
Head|Tail then
case Head of
"+" then
operator(type:plus)|{Tokenize Tail}
"*" then
operator(type:multiply)|{Tokenize Tail}
else
if {String.isFloat Head} then
number(Head)|{Tokenize Tail}
else
nil
end
end
else
nil
end
end
エラー:
** expected 'end'
** inside case phrase (at the line of the "*")
何を与える?