ключевое слово andthen Oz - PullRequest
       20

ключевое слово andthen Oz

2 голосов
/ 07 сентября 2010

Я пытаюсь написать токенизатор, но получаю ошибку разбора:


%*************************** parse error ************************
%**
%** syntax error, unexpected T_DEFAULT, expecting T_then
%**
%** in file "/Users/xxx/Programmering/Oz/Oving1/Oz_oving1_task8.oz", line 15, column 36
%** ------------------ rejected (1 error)

Вот код, я пометил строку 15 и столбец 36 с% = ERROR =%

declare
fun {Tokenize L} 
   Keys Ops Token
in
   Keys = ["local", "in", "if", "then", "else", "end"]
   Ops = ["+", "-", "*", "/"]

   case Tokenize of Head|Tail then
      if {Member Head Keys} then
  Token = key(Head)
      elseif {Member Head Ops} then
  Token = op(Head)
      else
  case Head of Forste|_ then
     if Forste >= &a andthen Forste <= &z then % THIS IS LINE 15, COLUMN 36 = ..andthen [here]Forste..
        Token = atom(Forste)
     elseif
        Forste >= &A andthen Forste <= &Z then
        Token = id(Forste)
     end
  end
  Token | {Tokenize Tail}
      end
   else
      nil
   end
end

Есть идеи, что я делаю не так?

1 Ответ

2 голосов
/ 07 сентября 2010

Я уже нашел решение:

  • В моих списках должен быть пробел вместо запятой (,) между каждым элементом.

  • В Оз вы пишете >= andthen =<, а не >= andthen <=, как я (> на неправильной стороне =).

  • Я сделал case на Tokenize, case должно быть на входе L.

Ура!

...