Tôi cố gắng để viết một ngữ pháp đơn giản cho PEG.js rằng sẽ phù hợp với một cái gì đó như thế này:Rắc rối với PEG.js cuối đầu vào
some text;
arbitrary other text that can also have µnicode; different expression;
let's escape the \; semicolon, and \not recognized escapes are not a problem;
possibly last expression not ending with semicolon
Vì vậy, về cơ bản đây là một số văn bản phân cách bằng dấu chấm phẩy. ngữ pháp đơn giản của tôi trông như thế này:
start
= flow:Flow
Flow
= instructions:Instruction*
Instruction
= Empty/Text
TextCharacter
= "\\;"/
.
Text
= text:TextCharacter+ ';' {return text.join('')}
Empty
= Semicolon
Semicolon "semicolon"
= ';'
Vấn đề là rằng nếu tôi đặt bất cứ điều gì khác hơn là một dấu chấm phẩy trong đầu vào, tôi nhận được:
SyntaxError: Expected ";", "\\;" or any character but end of input found.
Làm thế nào để giải quyết này? Tôi đã đọc rằng PEG.js không thể khớp với kết thúc của đầu vào.
FWIW, bạn có thể kết thúc đầu vào bằng '! .' – ebohlman