表达式解析器执行时的上下文重定向

时间:2015-04-04 18:52:10

标签: algorithm parsing compiler-construction

在我的业务引擎中(我用来制作屏幕,表单等等)我有一个小的脚本语言,其形式为“parameter = value”,为了给它更多的灵活性,价值部分是一个可以使用内部引擎变量和函数的标准数学表达式 现在我使用一种通过将字符串更改为标记来解析它的标准方法,然后做一个sintactical analisis然后使用分流algorythm将其转换为postfix表示法,因此在引擎运行时我可以使用表达式的当前值而不是常量值。
问题出在这里,有表达式上下文这样的东西,假设一个表达式在graph1上运行,所以maxValue变量或_average(“row1”)函数依赖于该图,但是需要获取数据的必要性从其他的ocntext,让我们说graph1表达式中的graph2;类似于图1中的代码:
color = maxValue> graph2->包括maxValue
因此graph1的颜色会根据graph2的maxvalue是否小于graph1的值而改变 正如它暗示的那样,我通过使用 - >部分地解决了它。运算符,运算符的左边部分是一个上下文引用,所以当使用这个操作符时我将上下文更改为左参数然后返回正确参数的值,但这是一个表达式解析器,一旦它到达操作符,值已经预先计算过,因此最大值已经返回了graph1的maxvalue,部分解决方案将左右变量名称传递给运算符,所以我可以用新的上下文“重新获取”变量的值,但是仍然没有解决功能。
我的问题是,如果我使用重定向作为二元运算符的方法是最好的方法,作为一个开始,或者如果还有其他方法,我可以在评估分流算法结果时使用它来获得正确的函数值。

1 个答案:

答案 0 :(得分:1)

对重定向表达式进行编码一个一元的后缀运算符以最简单的方式修复了问题