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