[英]javascript split string on multiple fields using regex
我正在尝试在我的JavaScript中建立方便的dsl-ish查询功能。
给出:
var query = "lastName = 'smith' and firstName = 'jack' or city = 'vancouver'";
将此sql-esque字符串解析为可用对象的最优雅方法是什么,例如:
[
{
field:'lastName',
operator:'=',
value:'smith',
join:'and'
},
{
field:'firstName',
operator:'=',
value:'jack',
join:'or'
},
{
field:'city',
operator:'=',
value:'vancouver'
}
]
在我开始无可救药地循环之前,我认为会有一些正则表达式主目录具有单线。
创建一个语法(EBNF或BNF),然后为其编写一个解析器。 您不仅会留下更多的头发(如果尝试使用正则表达式,最终将把头发拉出来!),您还将学到一些新奇而有趣的方法:)。
如果编写递归下降解析器,则可以轻松地将查询表示为树。
这是一个EBNF,可以帮助您入门:
query ::= criterion { criterion }
criterion ::= boolean-operator { filter }
boolean-operator ::= "not" | "or" | "and"
filter ::= variable, "=", value
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.