Lua 需要帮助了解LPeg和PEGs吗

Lua 需要帮助了解LPeg和PEGs吗,lua,peg,lpeg,Lua,Peg,Lpeg,以下模式(从)仅匹配带平衡圆括号的字符串: b = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" } 1-lpeg.S“()”中的1-是什么意思 function gsub (s, patt, repl) patt = lpeg.P(patt) patt = lpeg.Cs((patt / repl + 1)^0) return lpeg.match(patt, s) end patt/repl+1中的+1是什么意思 f

以下模式(从)仅匹配带平衡圆括号的字符串:

b = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" }
1-lpeg.S“()”
中的
1-
是什么意思

function gsub (s, patt, repl)
  patt = lpeg.P(patt)
  patt = lpeg.Cs((patt / repl + 1)^0)
  return lpeg.match(patt, s)
end
patt/repl+1
中的
+1
是什么意思

function gsub (s, patt, repl)
  patt = lpeg.P(patt)
  patt = lpeg.Cs((patt / repl + 1)^0)
  return lpeg.match(patt, s)
end
而且我仍然不能很好地从中获得优先选择操作符
/
的功能


任何帮助都将不胜感激

1-lpeg.S“()”
中的
1
表示任何字符。整个语句可以理解为,匹配任何字符,而不匹配集合
“()”
中的字符


+1
的思想是相同的,如果
repl
是一个字符串,那么
patt/repl+1
匹配模式
patt
,然后用字符串
repl
替换它的捕获,或者跳过一个字符。

通常,每当LPEG接受一个模式作为参数时,它也可以接受一个普通数字(或字符串、布尔值等),并将使用lpeg.P()将其隐式转换为模式,lpeg.P(1)表示“任何字符”。