Как написать лексический анализатор Python? - PullRequest
0 голосов
/ 15 мая 2010

Я пытаюсь написать модуль C для лексического анализа кода Python. Как я могу это сделать?

1 Ответ

8 голосов
/ 15 мая 2010

Полная, подробная спецификация для лексического анализа кода Python: здесь .

Как видите, есть много случаев, которые вам нужно охватить. Одна подсказка состоит в том, что вы всегда сможете наиболее легко проверить, является ли ваш лексический анализатор, реализованный на C, правильным для данного фрагмента Python: он должен будет возвращать именно то, что реализован в Python-модуле tokenize в стандарте Python библиотека делает.

Как вы можете видеть в источниках токена, это несколько сотен строк Python, так что вы можете легко экстраполировать на тысячи строк в C - определенно не проект выходного дня; -)

Конечно, в качестве отправной точки вы можете раскошелиться на собственный Python Parser / tokenizer.c - это менее 2000 строк (удивительно мало того, что он делает!), Но в хорошей части, потому что это полагаясь на довольно много других фрагментов из среды исполнения Python (если ваша реализация должна быть автономной, вам, следовательно, необходимо воспроизвести их).

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

...