我有ANTLR语法规则来解析像这样的表达式:
1+2*3 = 100
或age+2*3 = 100
我的UI如下表所示:
年龄+2
* 3 = 100
<500
重点是将完整的表达式分为标题和行(例如age + 2 * 3 = 100,其中age + 2在标题中,* 3 = 100在第一行中)。
我想将部分AST保留在数据库中,以便可以轻松地在UI中显示标题和行的内容。
使用这种方法存在两个问题:
1)解析标头中的不完整表达式(例如age + 2)->一种解决方案是引入可以完成表达式的虚假变量节点(例如age + 2 = var)
2)如何合并标头和单元中的部分AST以进行消费。这里的主要问题是,由于运算符的优先级不同,最终的AST可能与标头和单元的原始AST完全不同。