компилятор: я должен прочитать весь файл для сканирования - PullRequest
0 голосов
/ 14 февраля 2010

Я нахожусь в фазе сканирования для сборки компилятора.Интересно, должен ли я прочитать весь файл перед обработкой?Я думаю, что это должно быть лучше, так как моему компилятору может потребоваться выполнить некоторую оптимизацию позже (поэтому мне не нужно перечитывать файл).Но что, если программа ввода довольно большая, для хранения содержимого файла может потребоваться много памяти.

Нужны еще идеи и обсуждение.

Спасибо.

Ответы [ 3 ]

1 голос
/ 14 февраля 2010

Обычно первое, что вы делаете, - это лексический анализ, в котором вы разбиваете входной файл на токены. Затем вы строите таблицу символов и абстрактное синтаксическое дерево. Любая оптимизация или генерация кода затем работает с этими промежуточными структурами данных, а не с исходным входным файлом. Следовательно, я не вижу смысла полностью читать и буферизовать входной файл.

1 голос
/ 14 февраля 2010

Оптимизация будет происходить в абстрактном синтаксическом дереве или в более позднем промежуточном представлении, а не в исходном коде.И AST определенно должен полностью уместиться в памяти.Исходный код этого не делает, потому что он может быть преобразован в AST на лету.

1 голос
/ 14 февраля 2010

Оптимизация обычно не требует второго прохода над исходным кодом - первое, что вы должны сделать, - это токенизировать его, а затем работать с токенизированной версией. Единственная причина, по которой вы держитесь за источник, заключается в том, что вам нужно точно воспроизвести его в сообщениях об ошибках, чего, вероятно, нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...