Need help to understand LPeg and PEGs
The following pattern (from this page) matches only strings with balanced parentheses:
b = lpeg.P{ "(" * ((1 - lpeg.S"()") + lpeg.V(1))^0 * ")" }
 What does 1- in 1 - lpeg.S"()" mean?  
function gsub (s, patt, repl)
  patt = lpeg.P(patt)
  patt = lpeg.Cs((patt / repl + 1)^0)
  return lpeg.match(patt, s)
end
 What does the +1 in patt / repl + 1 mean?  
 And I still not quite get the function of prioritized choice operator / very well from this paper  
Any help will be appreciated!
 The 1 in 1 - lpeg.S"()" means any character.  The whole statement can be read as, match any character while not matching a character in the set "()" .  
 The +1 is the same idea, if repl is a string then patt / repl + 1 matches pattern patt and then replaces it's capture with the string repl or skips a character.  
上一篇: java.lang.OutOfMemoryError:超出了Excel阅读器的GC开销限制
下一篇: 需要帮助来理解LPeg和PEG
