Big grammar expansion.

This commit is contained in:
Ian Gulliver
2014-06-29 22:23:06 -07:00
parent 3bc51e27a6
commit e401d1e77b

View File

@@ -1,68 +1,266 @@
var mediawiki = { var mediawiki = {
'b': rr.Node('b', rr.Sequence( 'list-blockquote1': rr.Node('blockquote', rr.Sequence(
rr.Literal("'''"), rr.StartOfLine(),
rr.Ref('wikichunk'), rr.Literal(': '),
rr.Literal("'''"))), rr.Ref('singleline-wikichunk'),
'del': rr.Node('del', rr.Sequence( rr.EndOfLine())),
rr.Literal('<strike>'), 'list-blockquote2': rr.Node('blockquote2', rr.Sequence(
rr.Ref('wikichunk'), rr.StartOfLine(),
rr.Literal('</strike>'))), rr.Literal(':: '),
'h2': rr.Node('h2', rr.Sequence( rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-blockquote3': rr.Node('blockquote3', rr.Sequence(
rr.StartOfLine(),
rr.Literal('::: '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-blockquote4': rr.Node('blockquote4', rr.Sequence(
rr.StartOfLine(),
rr.Literal(':::: '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-blockquote5': rr.Node('blockquote5', rr.Sequence(
rr.StartOfLine(),
rr.Literal('::::: '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-def': rr.Node('def', rr.Sequence(
rr.StartOfLine(),
rr.Literal(';'),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-h2': rr.Node('h2', rr.Sequence(
rr.StartOfLine(), rr.StartOfLine(),
rr.Literal('== '), rr.Literal('== '),
rr.SingleLineText(), rr.Ref('singleline-wikichunk'),
rr.Literal(' =='), rr.Literal(' =='),
rr.EndOfLine())), rr.EndOfLine())),
'h3': rr.Node('h3', rr.Sequence( 'list-h3': rr.Node('h3', rr.Sequence(
rr.StartOfLine(), rr.StartOfLine(),
rr.Literal('=== '), rr.Literal('=== '),
rr.SingleLineText(), rr.Ref('singleline-wikichunk'),
rr.Literal(' ==='), rr.Literal(' ==='),
rr.EndOfLine())), rr.EndOfLine())),
'h4': rr.Node('h4', rr.Sequence( 'list-h4': rr.Node('h4', rr.Sequence(
rr.StartOfLine(), rr.StartOfLine(),
rr.Literal('==== '), rr.Literal('==== '),
rr.SingleLineText(), rr.Ref('singleline-wikichunk'),
rr.Literal(' ===='), rr.Literal(' ===='),
rr.EndOfLine())), rr.EndOfLine())),
'h5': rr.Node('h5', rr.Sequence( 'list-h5': rr.Node('h5', rr.Sequence(
rr.StartOfLine(), rr.StartOfLine(),
rr.Literal('===== '), rr.Literal('===== '),
rr.SingleLineText(), rr.Ref('singleline-wikichunk'),
rr.Literal(' ====='), rr.Literal(' ====='),
rr.EndOfLine())), rr.EndOfLine())),
'h6': rr.Node('h6', rr.Sequence( 'list-h6': rr.Node('h6', rr.Sequence(
rr.StartOfLine(), rr.StartOfLine(),
rr.Literal('====== '), rr.Literal('====== '),
rr.SingleLineText(), rr.Ref('singleline-wikichunk'),
rr.Literal(' ======'), rr.Literal(' ======'),
rr.EndOfLine())), rr.EndOfLine())),
'hr': rr.Node('hr', rr.Sequence( 'list-hr': rr.Node('hr', rr.Sequence(
rr.StartOfLine(), rr.StartOfLine(),
rr.Literal('----'), rr.Literal('----'),
rr.EndOfLine())), rr.EndOfLine())),
'i': rr.Node('i', rr.Sequence( 'list-olli1': rr.Node('olli1', rr.Sequence(
rr.StartOfLine(),
rr.Literal('# '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-olli2': rr.Node('olli2', rr.Sequence(
rr.StartOfLine(),
rr.Literal('## '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-olli3': rr.Node('olli3', rr.Sequence(
rr.StartOfLine(),
rr.Literal('### '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-pre': rr.Node('pre', rr.Sequence(
rr.StartOfLine(),
rr.Literal(' '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-ulli1': rr.Node('ulli1', rr.Sequence(
rr.StartOfLine(),
rr.Literal('* '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-ulli2': rr.Node('ulli2', rr.Sequence(
rr.StartOfLine(),
rr.Literal('** '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'list-ulli3': rr.Node('ulli3', rr.Sequence(
rr.StartOfLine(),
rr.Literal('*** '),
rr.Ref('singleline-wikichunk'),
rr.EndOfLine())),
'multiline-b': rr.Node('b', rr.Sequence(
rr.Literal("'''"),
rr.Ref('multiline-wikichunk'),
rr.Literal("'''"))),
'multiline-bi': rr.Node('bi', rr.Sequence(
rr.Literal("'''''"),
rr.Ref('multiline-wikichunk'),
rr.Literal("'''''"))),
'multiline-blockquote': rr.Node('blockquote', rr.Sequence(
rr.Literal("<blockquote>"),
rr.Ref('multiline-wikichunk'),
rr.Literal("</blockquote>"))),
'multiline-code': rr.Node('code', rr.Sequence(
rr.Literal("<code>"),
rr.Ref('multiline-wikichunk'),
rr.Literal("</code>"))),
'multiline-comment': rr.Node('comment', rr.Sequence(
rr.Literal("<!-- "),
rr.MultiLineText(),
rr.Literal(" -->"))),
'multiline-del1': rr.Node('del', rr.Sequence(
rr.Literal('<del>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</del>'))),
'multiline-del2': rr.Node('del', rr.Sequence(
rr.Literal('<strike>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</strike>'))),
'multiline-i': rr.Node('i', rr.Sequence(
rr.Literal("''"), rr.Literal("''"),
rr.Ref('wikichunk'), rr.Ref('multiline-wikichunk'),
rr.Literal("''"))), rr.Literal("''"))),
'nowiki': rr.Sequence( 'multiline-nowiki': rr.Sequence(
rr.Literal('<nowiki>'), rr.Literal('<nowiki>'),
rr.MultiLineText(), rr.MultiLineText(),
rr.Literal('</nowiki>')), rr.Literal('</nowiki>')),
'text': rr.MultiLineText(), 'multiline-pre': rr.Node('pre', rr.Sequence(
'wikichunk': rr.Or( rr.Literal("<pre>"),
rr.Ref('b'), rr.MultiLineText(),
rr.Ref('del'), rr.Literal("</pre>"))),
rr.Ref('h2'), 'multiline-tt': rr.Node('tt', rr.Sequence(
rr.Ref('h3'), rr.Literal('<tt>'),
rr.Ref('h4'), rr.Ref('multiline-wikichunk'),
rr.Ref('h5'), rr.Literal('</tt>'))),
rr.Ref('h6'), 'multiline-u1': rr.Node('u', rr.Sequence(
rr.Ref('hr'), rr.Literal('<u>'),
rr.Ref('i'), rr.Ref('multiline-wikichunk'),
rr.Ref('nowiki'), rr.Literal('</u>'))),
rr.Ref('text')), 'multiline-u2': rr.Node('u', rr.Sequence(
rr.Literal('<ins>'),
rr.Ref('multiline-wikichunk'),
rr.Literal('</ins>'))),
'singleline-b': rr.Node('b', rr.Sequence(
rr.Literal("'''"),
rr.Ref('singleline-wikichunk'),
rr.Literal("'''"))),
'singleline-bi': rr.Node('bi', rr.Sequence(
rr.Literal("'''''"),
rr.Ref('singleline-wikichunk'),
rr.Literal("'''''"))),
'singleline-code': rr.Node('code', rr.Sequence(
rr.Literal("<code>"),
rr.Ref('singleline-wikichunk'),
rr.Literal("</code>"))),
'singleline-comment': rr.Node('comment', rr.Sequence(
rr.Literal("<!-- "),
rr.SingleLineText(),
rr.Literal(" -->"))),
'singleline-del1': rr.Node('del', rr.Sequence(
rr.Literal('<del>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</del>'))),
'singleline-del2': rr.Node('del', rr.Sequence(
rr.Literal('<strike>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</strike>'))),
'singleline-i': rr.Node('i', rr.Sequence(
rr.Literal("''"),
rr.Ref('singleline-wikichunk'),
rr.Literal("''"))),
'singleline-nowiki': rr.Sequence(
rr.Literal('<nowiki>'),
rr.MultiLineText(),
rr.Literal('</nowiki>')),
'singleline-pre': rr.Node('pre', rr.Sequence(
rr.Literal("<pre>"),
rr.SingleLineText(),
rr.Literal("</pre>"))),
'singleline-tt': rr.Node('tt', rr.Sequence(
rr.Literal('<tt>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</tt>'))),
'singleline-u1': rr.Node('u', rr.Sequence(
rr.Literal('<u>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</u>'))),
'singleline-u2': rr.Node('u', rr.Sequence(
rr.Literal('<ins>'),
rr.Ref('singleline-wikichunk'),
rr.Literal('</ins>'))),
'special-nowikisingle': rr.Literal('<nowiki/>'),
'multiline-wikichunk': rr.Or(
rr.Ref('list-blockquote1'),
rr.Ref('list-blockquote2'),
rr.Ref('list-blockquote3'),
rr.Ref('list-blockquote4'),
rr.Ref('list-blockquote5'),
rr.Ref('list-def'),
rr.Ref('list-h2'),
rr.Ref('list-h3'),
rr.Ref('list-h4'),
rr.Ref('list-h5'),
rr.Ref('list-h6'),
rr.Ref('list-hr'),
rr.Ref('list-olli1'),
rr.Ref('list-olli2'),
rr.Ref('list-olli3'),
rr.Ref('list-pre'),
rr.Ref('list-ulli1'),
rr.Ref('list-ulli2'),
rr.Ref('list-ulli3'),
rr.Ref('multiline-b'),
rr.Ref('multiline-bi'),
rr.Ref('multiline-blockquote'),
rr.Ref('multiline-code'),
rr.Ref('multiline-comment'),
rr.Ref('multiline-del1'),
rr.Ref('multiline-del2'),
rr.Ref('multiline-i'),
rr.Ref('multiline-nowiki'),
rr.Ref('multiline-pre'),
rr.Ref('multiline-tt'),
rr.Ref('multiline-u1'),
rr.Ref('multiline-u2'),
rr.Ref('special-nowikisingle'),
rr.MultiLineText()),
'singleline-wikichunk': rr.Or(
rr.Ref('singleline-b'),
rr.Ref('singleline-bi'),
rr.Ref('singleline-code'),
rr.Ref('singleline-comment'),
rr.Ref('singleline-del1'),
rr.Ref('singleline-del2'),
rr.Ref('singleline-i'),
rr.Ref('singleline-nowiki'),
rr.Ref('singleline-pre'),
rr.Ref('singleline-tt'),
rr.Ref('singleline-u1'),
rr.Ref('singleline-u2'),
rr.Ref('special-nowikisingle'),
rr.SingleLineText()),
'wikidoc': rr.Node('wikidoc', rr.Sequence( 'wikidoc': rr.Node('wikidoc', rr.Sequence(
rr.ZeroOrMore(rr.Ref('wikichunk')), rr.ZeroOrMore(rr.Ref('multiline-wikichunk')),
rr.EndOfText())) rr.EndOfText()))
}; };