Как часть курса Compiler Principles, который я беру в своем университете, мы пишем компилятор, который реализован в OCaml, который компилирует код схемы в CISC-подобную сборку (которая это просто макросы C). основная работа компилятора такова:Ограничение длины строки OCaml при чтении из stdin file
- Почитаю
*.scm
файл и преобразовать его в OCamlstring
. - Разберите строку и выполните различные анализы.
- Запустите генератор кода на выходе AST из семантического анализатора, который выводит текст в файл
*.c
. - Скомпилируйте этот файл с помощью GCC и запустите его в терминале.
Ну, все хорошо и хорошо, кроме этого: Я пытаюсь прочитать файл ввода, который длинно около 4000 строк, и в основном один огромный выражения, что это смесь схемы if
& and
. Я выполняю компилятор через utop
. Когда я пытаюсь прочитать входной файл, я сразу получаю сообщение об ошибке переполнения стека. Поначалу я предполагаю, что для OCaml этот файл просто для больших, но я не смог найти документацию, которая бы поддерживала эту теорию.
Любые предложения?
Вы могли бы предоставить только кусок кода, который читает файл? вы пытались уменьшить свой код, чтобы показать проблему? –
см. Http: // stackoverflow.com/questions/5774934/how-do-i-read-in-lines-from-a-text-file-in-ocaml; Мне удалось прочитать файл размером 2 МБ с 4000 л в utop без каких-либо проблем. –
Я угадываю, но у этого есть все симптомы использования функции без хвоста-рекурсии для чтения файла. Однако, без реального кода, это невозможно сказать. –