Форум сайта python.su
0
Уважаемое сообщество!
Знает ли кто-нибудь из вас ресурсы, посвящённые адекватному разбору и критике чужого кода? (ибо неконструктивно критиковать у нас все горазды)
Вообще говоря вопрос вылился из решения задачи — написать код LR(k) - анализатора(см. прикреплённый файл). В коде скорее больше математики, поэтому возникает второй вопрос — можно код такого типа писать правильнее?
Собственно, буду рад услышать комментарии и по не-математической части при беглом взгляде.
Прикреплённый файлы:
lrk.py (9,2 KБ)
Офлайн
16
Знает ли кто-нибудь из вас ресурсы, посвящённые адекватному разбору и критике чужого кода?
Отредактировано GaiveR (Янв. 2, 2013 23:18:00)
Офлайн
43
оформление да, если и нарушать pep-8 то нужно хотя бы сделать все это в едином стиле. Таким циклам
for i in range(len(ls))
for i,e in enumerate(ls)
Офлайн
0
Нашел вот генератор __UpdateFirst возращающий одно значение, если нет ошибки с отступом. Когда Вы его там на создаете, то сразу вызываете следующее и единственное значение, мне, кажется, это бессмысленно и его можно просто заменить на функцию.Полностью согласен с замечанием, благодарю.
Это же вроде бы парсер, да? Для какого языка это? Он действительно работает? Я писал когда-то парсер для питона, но там у меня были громадные регэкспы и я плохо представляю как можно без них обойтись. Начинал как-то читать про вот эти анализаторы, но, встретив много непонятных слов забил на это.Это анализатор, который принимает на вход произвольную LR(k)-грамматику и строит для неё так называемые таблицы Action и Goto, по которым впоследствии можно осуществлять синтаксический разбор (построение дерева вывода) любого слова, принадлежащего данной грамматике.
Офлайн
0
Плюс в том, что этот алгоритм, придуманный Кнутом, если мне не изменяет память, —
а) Доказан.
б) Работает за линейное время.
Офлайн