我正在尝试为我的论文实现建筑程序生成的算法。我已经阅读了很多关于形状/分裂语法的内容。这是link到涵盖该主题的最受欢迎论文。{
我设法实现了非常基本的语法,没有属性和保护条件。它可以生成基元,并进行几何变换。我使用flex和bison来解析形状语法文件,并生成以面向对象的方式表示给定语法的对象(符号,规则等),以后可以调用它们来生成几何体。
但现在我坚持使用属性部分。例如:
fac(h) : h > 9; floor(h/3) floor(h/3) floor(h/3)
我无法如何表示语法以包含有关属性的信息,如何将值传递给左侧的符号以及如何评估条件。
有人可以帮帮我吗?我正在使用C ++。
注意:我对语法和解析器有一些了解,并且我知道如何使用递归下降实现具有属性的自上而下解析器,但这种方法在这里没用。我无法为函数生成源代码,因为语法文件的解释将在与应用程序相同的运行时中完成。即使我可以,这不是解析器,而是句子的生成器,还有很多问题,如条件评估和生产选择。