Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 2, 2013 22:15:18

meleodr
Зарегистрирован: 2013-01-02
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Критический взгляд на код со стороны

Уважаемое сообщество!
Знает ли кто-нибудь из вас ресурсы, посвящённые адекватному разбору и критике чужого кода? (ибо неконструктивно критиковать у нас все горазды)

Вообще говоря вопрос вылился из решения задачи — написать код LR(k) - анализатора(см. прикреплённый файл). В коде скорее больше математики, поэтому возникает второй вопрос — можно код такого типа писать правильнее?

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

Прикреплённый файлы:
attachment lrk.py (9,2 KБ)

Офлайн

#2 Янв. 2, 2013 23:12:20

GaiveR
От:
Зарегистрирован: 2011-08-13
Сообщения: 122
Репутация: +  16  -
Профиль   Отправить e-mail  

Критический взгляд на код со стороны

Знает ли кто-нибудь из вас ресурсы, посвящённые адекватному разбору и критике чужого кода?

http://codereview.stackexchange.com/


При совсем беглом взгляде бросается в глаза разный стиль именования функций и отсутствие докстрингов - читать код становится не очень приятно.



Отредактировано GaiveR (Янв. 2, 2013 23:18:00)

Офлайн

#3 Янв. 3, 2013 08:33:51

sergeek
Зарегистрирован: 2012-06-26
Сообщения: 470
Репутация: +  43  -
Профиль   Отправить e-mail  

Критический взгляд на код со стороны

оформление да, если и нарушать pep-8 то нужно хотя бы сделать все это в едином стиле. Таким циклам

for i in range(len(ls))
вроде бы предпочитают
for i,e in enumerate(ls)
Нашел вот генератор __UpdateFirst возращающий одно значение, если нет ошибки с отступом. Когда Вы его там на создаете, то сразу вызываете следующее и единственное значение, мне, кажется, это бессмысленно и его можно просто заменить на функцию.
Это же вроде бы парсер, да? Для какого языка это? Он действительно работает? Я писал когда-то парсер для питона, но там у меня были громадные регэкспы и я плохо представляю как можно без них обойтись. Начинал как-то читать про вот эти анализаторы, но, встретив много непонятных слов забил на это.

Офлайн

#4 Янв. 3, 2013 12:13:14

meleodr
Зарегистрирован: 2013-01-02
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Критический взгляд на код со стороны

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

Это же вроде бы парсер, да? Для какого языка это? Он действительно работает? Я писал когда-то парсер для питона, но там у меня были громадные регэкспы и я плохо представляю как можно без них обойтись. Начинал как-то читать про вот эти анализаторы, но, встретив много непонятных слов забил на это.
Это анализатор, который принимает на вход произвольную LR(k)-грамматику и строит для неё так называемые таблицы Action и Goto, по которым впоследствии можно осуществлять синтаксический разбор (построение дерева вывода) любого слова, принадлежащего данной грамматике.
Ну и заодно это мой зачёт по ТРЯПу2

Офлайн

#5 Янв. 3, 2013 12:19:15

meleodr
Зарегистрирован: 2013-01-02
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Критический взгляд на код со стороны

Плюс в том, что этот алгоритм, придуманный Кнутом, если мне не изменяет память, —
а) Доказан.
б) Работает за линейное время.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version