我正在尝试使用JSQLParser开发一个SQL查询求值器,我真的很困惑于如何决定求值顺序,例如,如果我有一个以下形式的查询
Select *
From A,B,C
Where A.id=B.id
And B.id=C.id
And A.id=C.id
问题是如何构建解析树或表达式树。我需要一些指针来解决这个问题。另外,我正在考虑使用两个堆栈来解决这个问题,这两个堆栈是一个运算符栈和一个操作数栈。我需要一些确认,这是否是理解这个问题的一种可能的方式?
我已经定义了F#树和栈类型,在栈上有一个pop成员。我不能在pop的结果上得到正确的类型签名。下面是我的代码,直到我尝试使用pop:
type Tree<'a> =
| Tree of 'a * 'a Tree * Tree<'a>
| Node of 'a
| None
type 'a Stack =
| EmptyStack
| Stack of 'a * 'a Stack
member x.pop = function
| Emp