Два слова токен с использованием PLY в Python - PullRequest
2 голосов
/ 25 октября 2011

Я пишу компилятор как часть лабораторного упражнения и решил сделать это на Python, используя PLY.Я потратил некоторое время, пытаясь решить эту конкретную проблему, и зашел в тупик, как и мои помощники в лаборатории.

На языке, который я должен написать, деклараторы задаются двумя словами «был».Например:

x was a number and x became 5.

равно

int x; x = 5;

При разборе с PLY я поставил «был» какзарезервированное слово

reserved = {
    ...
    'was a'       : 'DECLARATOR',
    ...
}

Но когда я анализирую с лексером PLY, он обрабатывает 'was' и 'a' как отдельные токены

Как я могу проанализировать was a как токен типа«ДЕКЛАРАТОР» без разделительного лексера PLY?

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

Спасибо,

Пит

1 Ответ

3 голосов
/ 25 октября 2011

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

например. реализовать токен 'was' : 'DECLARATOR_WAS' и токен 'a' : 'DECLARATOR_A'.

...