#python #compiler-construction #lexer #ply
#python #компилятор-конструкция #лексер #ply
Вопрос:
Я пишу компилятор как часть лабораторного занятия и решил сделать это на Python с использованием PLY. Я потратил некоторое время, пытаясь решить эту конкретную проблему, и зашел в тупик, как и мои помощники в лаборатории.
На языке, который я должен написать, деклараторы указываются двумя словами «был». Например:
x was a number and x became 5.
равно
int x; x = 5;
При синтаксическом анализе с помощью PLY я поместил ‘was a’ в качестве зарезервированного слова
reserved = {
...
'was a' : 'DECLARATOR',
...
}
Но когда я выполняю синтаксический анализ с помощью лексера PLY, он обрабатывает ‘was’ и ‘a’ как отдельные токены
Как я могу анализировать was a
как токен типа ‘DECLARATOR’ без разделения его лексером PLY?
Если что-то из этого неясно, дайте мне знать, и я постараюсь ответить на любые вопросы как можно лучше
Спасибо,
Пит
Комментарии:
1. Почему бы просто не сделать его двумя токенами?
2. В конце концов, это то, что я сделал. Мне сказали, что он должен быть способен обрабатывать два слова, но затем это было исправлено другим профессором. Вам никогда не нужно использовать два слова в токене.
Ответ №1:
Вам никогда не придется использовать два слова в токене. Вместо этого разделите их на два отдельных токена и убедитесь, что ваш язык обеспечивает, чтобы за одним всегда следовал другой.
например, реализовать 'was' : 'DECLARATOR_WAS'
токен и 'a' : 'DECLARATOR_A'
токен.