Files
recentrunes/static/grammars/badpenny.js
2014-08-03 11:04:52 -07:00

51 lines
1.3 KiB
JavaScript

badpenny = rr.Parser({
'container': rr.Node('container',
rr.Save('tagname',
rr.Sequence(
rr.Literal('{{('),
rr.SingleLineText(),
rr.Literal('}}')),
rr.Sequence(
rr.Literal('{{('),
rr.Node('name', rr.SingleLineText()),
rr.Literal('}}'),
rr.MultiLineText(),
rr.Literal('{{)'),
rr.SavedLiteral('tagname'),
rr.Literal('}}')))),
'repeated': rr.Node('repeated',
rr.Save('tagname',
rr.Sequence(
rr.Literal('{{['),
rr.SingleLineText(),
rr.Literal('}}')),
rr.Sequence(
rr.Literal('{{['),
rr.Node('name', rr.SingleLineText()),
rr.Literal('}}'),
rr.MultiLineText(),
rr.Literal('{{]'),
rr.SavedLiteral('tagname'),
rr.Literal('}}')))),
'value': rr.Node('value', rr.Sequence(
rr.Literal('{{'),
rr.Node('name', rr.SingleLineText()),
rr.Literal('}}'))),
'chunk': rr.Or(
rr.Ref('container'),
rr.Ref('repeated'),
rr.Ref('value'),
rr.MultiLineText()),
'main': rr.Node('badpenny', rr.Sequence(
rr.ZeroOrMore(rr.Ref('chunk')),
rr.EndOfText()))
}, [
rr.ChildToAttribute('container', 'name'),
rr.ChildToAttribute('repeated', 'name'),
rr.ChildToAttribute('value', 'name')
]);