
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
05.10.2012, 22:01
|
|||
|---|---|---|---|
OCaml, Lexer |
|||
|
#18+
Ну вот я добрался до Lexer'а. И опять напоролся на странности и непонятности. На сейчас у меня есть код: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Этот код корректно читает все токены в список. Но есть два вопроса: 1) Когда Lexer натыкается на плохое слово, он корректно ругается на первую букву этого слова. Но вот как выдать на экран это самое слово? Lexing.lexem lexbuf пуст, попытался взять текст напрямую из lexbuf.Lexing.lex_buffer, но я не знаю где конец плохого слова - не знаю что давать третьим параметром в String.sub. В общем: КАК это сделать? Или есть более удобные методы обработки ошибок лексера? 2) Меня смущает вот этот copy-paste: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Судя по документации, в OCaml нету "finally" блоков, так что вынести туда закрытие файла не получается. В нормальном языке я бы завел булеву переменную и задавал бы ей true на входе в try, и false после поимки исключения. А потому же возвращал бы эту переменную. Но OCaml ненавидит изменяемые переменные... Как объявить mutable переменную внутри метода? На все попытки я получаю Syntax error. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
06.10.2012, 09:01
|
|||
|---|---|---|---|
OCaml, Lexer |
|||
|
#18+
White Owl2) Меня смущает вот этот copy-paste: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. Судя по документации, в OCaml нету "finally" блоков, так что вынести туда закрытие файла не получается. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. White OwlВ нормальном языке я бы завел булеву переменную и задавал бы ей true на входе в try, и false после поимки исключения. А потому же возвращал бы эту переменную. Но OCaml ненавидит изменяемые переменные... Как объявить mutable переменную внутри метода? На все попытки я получаю Syntax error. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=16&mobile=1&tid=1342107]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
134ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
26ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 395ms |

| 0 / 0 |
