Trong một PEG bình thường (phân tích biểu ngữ pháp) này là một ngữ pháp hợp lệ:Tạo một LPeg mẫu đệ quy
values <- number (comma values)*
number <- [0-9]+
comma <- ','
Tuy nhiên, nếu tôi cố gắng viết này sử dụng LPeg bản chất đệ quy của quy tắc mà vẫn thất bại:
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)
Mặc dù trong ví dụ đơn giản này tôi có thể viết lại quy tắc để không sử dụng đệ quy, tôi có một số ngữ pháp hiện có mà tôi không muốn viết lại.
Tôi làm cách nào để viết quy tắc tự tham chiếu trong LPeg?
Chắc chắn là câu trả lời đúng; nhưng tôi có thể thực sự chấp nhận câu trả lời là bản sao/dán từ hướng dẫn sử dụng, mà không cần cố gắng định dạng? : p – Phrogz
@Phrogz Nếu bạn thực sự đã đặt câu hỏi trực tiếp được giải quyết bằng hướng dẫn đó?=) Và đó là "định dạng", hãy thử dán trích dẫn đó từ hướng dẫn trực tiếp vào câu trả lời và sau đó chỉ chặn trích dẫn tất cả những gì bạn không nhận được ở trên. =) –
Tôi không nên có, nhưng tôi đã không nhận ra phần này của hướng dẫn sử dụng như áp dụng lúc đầu tiên. My ': p' phải là một':) '. Bạn đã làm tốt, cảm ơn bạn. – Phrogz