Лексический анализ языка программирования Python - PullRequest
7 голосов
/ 14 ноября 2009

Кто-нибудь знает, где существует файл спецификации FLEX или LEX для Python? Например, это спецификация lex для языка программирования ANSI C: http://www.quut.com/c/ANSI-C-grammar-l-1998.html

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

Ответы [ 3 ]

6 голосов
/ 14 ноября 2009

Lex обычно используется только для токенизации, а не для полного разбора. Проекты, использующие flex / lex для токенизации, обычно используют yacc / bison для фактического анализа.

Возможно, вы захотите взглянуть на ANTLR , более "современную" альтернативу lexx & yacc.

В проекте ANTLR есть репозиторий Github, содержащий много грамматик ANTLR 4 , включая как минимум одну для Python 3 .

3 голосов
/ 14 ноября 2009

grammar.txt является официальной, полной грамматикой Python - не совместима напрямую lex, но вы должны иметь возможность преобразовать ее в подходящую форму.

0 голосов
/ 14 ноября 2009

Рассматривали ли вы использование одного из существующих маркеров кода, например Pygments ?

...