LPeg 自参照模式

LPeg 自参照模式

我正在尝试在 lua/lpeg 中创建一个自引用模式

local group = lpeg.P(sep1 * (1 - sep2)^0 * group^0 * sep2)

请注意,group 引用了自身。这是不可能的,因为 group 未定义。lpeg.V 在语法定义之外不起作用。有什么方法可以解决这个先有鸡还是先有蛋的问题吗?

答案1

明显的问题是,在定义中

local group = lpeg.P(sep1 * (1 - sep2)^0 * group^0 * sep2)

group尚不清楚。您必须借助语法。

lpeg.P{
  "group",
  group = lpeg.P(sep1 * (1-sep2)^0 * lpeg.V"group"^0 * sep2
}

(未经测试)。这是因为引用团体现在是一个字符串,因此在定义时可以不定义。一旦表完成,它就必须是表的一个条目。

相关内容