[英]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.