2016-09-14 8 views
0

예상대로 실행 :예상 '끝'다음 코드는 컴파일

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 

을 그러나, 나는 아래의 코드처럼 다른 경우 절을 추가하는 경우 누락에 대해 컴파일 할 때, 나는 오류가 발생 ' 끝 '진술.

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 "*") 

?

답변

1

사례 명세서에 여러 개의 분기가있는 경우 []으로 구분해야합니다. 예 :

case Head of "+" then 
    operator(type:plus)|{Tokenize Tail} 
[] "*" then 
    operator(type:multiply)|{Tokenize Tail} 
end