我正在尝试使用lpeg lua 解析器将一个字符串转换'a?(b?c:d):e'
为另一个字符串。我正在慢慢学习如何使用 lpeg,但我仍然找不到合适的解决方案来执行此操作。有任何想法吗?'ifthenelse(a,ifthenelse(b,c,d),e)'
这是我到目前为止所做的。
local lpeg = require("lpeg")
local S, P, R = lpeg.S, lpeg.P, lpeg.R
local C, Cc, Ct = lpeg.C, lpeg.Cc, lpeg.Ct
local Cf, Cg, Cs = lpeg.Cf, lpeg.Cg, lpeg.Cs
local V = lpeg.V
local thenop = P("?")
local elseop = P(":")
local openpar = P("(")
local closepar = P(")")
local digit = R("09")
local letter = R("az") + R("AZ")
local parser =
P({
"F",
F = V("E") * (thenop * V("E") * elseop * V("E"))^0,
E = (letter + digit)^1 + (openpar * V("F") * closepar)
}) -- * -1 -- Is it needed?
print(lpeg.match(parser,"a?(b?c:d):e"))
print(lpeg.match(parser,"a"))