FSLex Неизвестная ошибка

У меня возникла проблема с FSLex, которую я не могу решить... Все, что я знаю, это то, что fslex.exe завершился с кодом 1...

Код F# вверху был протестирован в F# Interactive, поэтому проблема не существует (я не понимаю, как).

Лексер: http://pastebin.com/qnDnUh59

И Parser.fsi: http://pastebin.com/sGyLqZbN

Спасибо, Рамон.

1 ответ

Решение

Ненулевая ошибка означает, что лексер вышел из строя, обычно он также описывает ошибку. Когда я компилирую, я получаю exited with code 1 Наряду с этим:

Unexpected character '\'

let id = [\w'.']+ 
----------^

Лексеру не нравятся символьные литералы вне кавычек, и он не понимает значения \w или. Согласно исходному коду FsLex, FsLex понимает только следующие escape-последовательности:

let escape c =
 match c with
 | '\\' -> '\\'
 | '\'' -> '\''
 | 'n' -> '\n'
 | 't' -> '\t'
 | 'b' -> '\b'
 | 'r' -> '\r'
 | c -> c

Эта исправленная версия вашего лексера прекрасно мне подходит: http://pastebin.com/QGNk3VKD

Другие вопросы по тегам