通常の PEG (構文解析式文法) では、これは有効な文法です。
values <- number (comma values)*
number <- [0-9]+
comma <- ','
ただし、LPeg を使用してこれを記述しようとすると、そのルールの再帰的な性質が失敗します。
local lpeg = require'lpeg'
local comma = lpeg.P(',')
local number = lpeg.R('09')^1
local values = number * (comma * values)^-1
--> bad argument #2 to '?' (lpeg-pattern expected, got nil)
この単純な例では、再帰を使用しないようにルールを書き直すことができますが、書き直したくない既存の文法がいくつかあります。
LPeg で自己参照ルールを作成するにはどうすればよいですか?