ниже приведены некоторые изменения, которые я бы попросил изменить для повышения производительности
1) сделать из грамматики левые рекурсивные правила. это лучше с точки зрения выполнения операций уменьшения сдвига, так как анализатор золота является анализатором уменьшения сдвига LR.
SectionList :: = Section
| SectionList Section
PropertyList :: = Недвижимость
| PropertyList Property
2) третье правило в разделе ниже заставляет вас иметь список свойств только перед разделом, но не между разными. убедитесь, что согласно требованию
SectionBody :: = PropertyList
| SectionList
| PropertyList SectionList
я могу помочь вам лучше, если потребуется, и если вы дадите мне знать язык, говорящий «он должен принять это, не следует принимать это», а не образец ввода, который не даст 100% картину вашего языка. или дайте мне знать о найденных вами ошибках, из-за которых мы можем определить описание языка.
С уважением,
В.М. Ракеш (rakesh.vm@gmail.com)