Я пытаюсь написать небольшой лексический анализатор и у меня есть небольшой вопросC++ лексический анализатор
Рассмотрим следующую строку
cout << "hello world ;
Обратите внимание, что он не имеет к "
в конце. Если я считаю, все после начальной "
строковой и говорю, что недостающее "
в конце или игнорировать начальный "
(говорят, что это не заканчивается с другой "
) и procede для анализа маркеров hello
, world
до конца линии?
Извините, если это кажется немного неоднозначным.
Как вы думаете? Считаете ли вы, что вам необходимо обозначить «привет», «мир» и т. Д.? Зачем вам их требовать? –
Если бы я разбирал строку, я бы сделал то, что делают другие компиляторы: сгенерируйте ошибку, в которой говорится «unterminated string constant» –
Поскольку неизвестно, было ли намерение «hello world»; ',' "hello world;"; ' , или любая другая возможность, я считаю, что вы должны обработать начальное '' 'и потреблять все, что следует, до тех пор, пока не закончится завершающий' '' (и в этом случае он никогда не встречался). –