Рефакторинг, рефакторинг, рефакторинг

Сложно назвать точную цифру, но навскидку — сложность разбора синтаксиса C++ где-то в три раза выше сложности разбора обычного Си. В этом сообщении не будет новых примеров, показывающих чему научился синтаксический анализатор за прошедшую неделю. Эта неделя ушла на рефакторинг кода, в результате которого анализатор научился делать то, что умел и неделю назад. Видимые изменения коснулись разбора статических членов класса — теперь они распознаются корректно. Помимо этого пришлось отказаться от точного воспроизведения исходного кода. Например, исходная конструкция

typedef struct { int a; int b } newtype, *pnewtype;

выродится в такой код

struct anon_struct_1 { int a; int b };

typedef struct anon_struct_1 newtype;

typedef struct anon_struct_1 * pnewtype;

В результате рефакторинга была значительно перестроена иерархия классов синтаксического анализатора и, как результат,  исходный  код «похудел» приблизительно в два раза. Посмотрим, каких результатов удастся достичь за следующую неделю.


Оставить комментарий