Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- start = rules:rules { return rules; }
- rules = rule+
- rule =
- n:number? _ rule:parts {
- return {n:n, rule:rule}
- }
- number = "[" n:digits "]" { return n; }
- parts = name:symbol _ "::=" _ expression:expression _r? { return {name:name, expression:expression} }
- symbol = chars:[A-Za-z]+ { return chars.join("") }
- expression = (term _)+
- term = terminal / symbol modifier?
- terminal = quote chars:chars quote { return chars;}
- chars
- = chars:char+ { return chars.join(""); }
- char
- = [^"\\\0-\x1F\x7f]
- quote
- = "'" / '"'
- modifier = op:("+" / "*"/ "?") {return op;}
- digits = chars:[0-9]+ { return chars.join("") }
- _ "whitespace"
- = whitespace*
- whitespace
- = [ \t]
- _r
- = [ \t\r\n]+
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement