как включить импорт в flex / bison - PullRequest
0 голосов
/ 08 ноября 2011

Я делаю конвертер языка программирования и, и он имеет импорт и включает.

Например:

 import com.nanana.MyClassFile
 include "myfile.any"

Я новичок, что означает, что я потерял в том, какмогу я сделать этоМне интересно, возможно ли анализировать другой файл, пока он выполняется?

И как я могу это сделать?

РЕДАКТИРОВАТЬ:

Код, который я использую для анализа файловв основной функции это:

yyin = fopen( argv[1], "r" ); 
return yyparse();

Могу ли я использовать этот же код или есть другой?

1 Ответ

1 голос
/ 09 ноября 2011

Лексер использует макрос YY_INPUT для получения своих данных. Внутри синтаксического анализатора после анализа команды include "myfile.any" анализатору потребуется открыть новый файл и договориться о том, что его данные будут возвращены из YY_INPUT вместо исходного файла. Как только EOF достигнут, YY_INPUT необходимо продолжить чтение из исходного файла. Возможно, вы захотите сохранить эти открытые файлы в стеке, чтобы включаемые файлы могли, в свою очередь, включать другие файлы, но следите за бесконечным циклом включения.

...