我需要一些实现以下内容的想法:
我必须创建一个UI,允许用户在抽象级别定义SELECT语句。用户指定其选择的列,订单依次为......
现在我对WHERE有点问题。 用户应该只能选择有效的表达式/运算符。这意味着我需要一些东西,它解析当前的陈述并告诉我下一个可能的项目。
一个例子: 用户即将配置where子句,并从选择数字字段开始。下一步是定义运算符(+, - ,*,/)或比较运算符(>,<,<>,=)。 如果用户选择比较运算符,则下一个属性必须是静态数字或其他数字字段。 在此之后,数字字段可以再次由操作符,比较运算符,连接符(AND,OR),... 这意味着语法类似于以下内容:
(<Value>|<Field>) <Operator> (<Value>|<Field>)+ (<Connector> <Field> <Operator> (<Value>|<Operator>)+)*
因此,我正在寻找的是一个解析器/词法分析器/语法,它允许我定义语法,并能告诉我下一个元素是什么。当然,我可以自己实现这个,但我认为使用语法/解析器/词法分析器来做它会更酷。
因为我不是真的,所以我希望你知道使用什么工具。并给我一点指导搜索的内容。
亲切的问候,
SyLuS