diff --git a/grammars/mediawiki.js b/grammars/mediawiki.js
index 7edc361..3bac935 100644
--- a/grammars/mediawiki.js
+++ b/grammars/mediawiki.js
@@ -1,68 +1,266 @@
var mediawiki = {
- 'b': rr.Node('b', rr.Sequence(
- rr.Literal("'''"),
- rr.Ref('wikichunk'),
- rr.Literal("'''"))),
- 'del': rr.Node('del', rr.Sequence(
- rr.Literal(''),
- rr.Ref('wikichunk'),
- rr.Literal(''))),
- 'h2': rr.Node('h2', rr.Sequence(
+ 'list-blockquote1': rr.Node('blockquote', rr.Sequence(
+ rr.StartOfLine(),
+ rr.Literal(': '),
+ rr.Ref('singleline-wikichunk'),
+ rr.EndOfLine())),
+ 'list-blockquote2': rr.Node('blockquote2', rr.Sequence(
+ rr.StartOfLine(),
+ rr.Literal(':: '),
+ 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.Literal('== '),
- rr.SingleLineText(),
+ rr.Ref('singleline-wikichunk'),
rr.Literal(' =='),
rr.EndOfLine())),
- 'h3': rr.Node('h3', rr.Sequence(
+ 'list-h3': rr.Node('h3', rr.Sequence(
rr.StartOfLine(),
rr.Literal('=== '),
- rr.SingleLineText(),
+ rr.Ref('singleline-wikichunk'),
rr.Literal(' ==='),
rr.EndOfLine())),
- 'h4': rr.Node('h4', rr.Sequence(
+ 'list-h4': rr.Node('h4', rr.Sequence(
rr.StartOfLine(),
rr.Literal('==== '),
- rr.SingleLineText(),
+ rr.Ref('singleline-wikichunk'),
rr.Literal(' ===='),
rr.EndOfLine())),
- 'h5': rr.Node('h5', rr.Sequence(
+ 'list-h5': rr.Node('h5', rr.Sequence(
rr.StartOfLine(),
rr.Literal('===== '),
- rr.SingleLineText(),
+ rr.Ref('singleline-wikichunk'),
rr.Literal(' ====='),
rr.EndOfLine())),
- 'h6': rr.Node('h6', rr.Sequence(
+ 'list-h6': rr.Node('h6', rr.Sequence(
rr.StartOfLine(),
rr.Literal('====== '),
- rr.SingleLineText(),
+ rr.Ref('singleline-wikichunk'),
rr.Literal(' ======'),
rr.EndOfLine())),
- 'hr': rr.Node('hr', rr.Sequence(
+ 'list-hr': rr.Node('hr', rr.Sequence(
rr.StartOfLine(),
rr.Literal('----'),
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("
"), + rr.Ref('multiline-wikichunk'), + rr.Literal(""))), + 'multiline-code': rr.Node('code', rr.Sequence( + rr.Literal("
"),
+ rr.Ref('multiline-wikichunk'),
+ rr.Literal(""))),
+ 'multiline-comment': rr.Node('comment', rr.Sequence(
+ rr.Literal(""))),
+ 'multiline-del1': rr.Node('del', rr.Sequence(
+ rr.Literal('"),
+ rr.MultiLineText(),
+ rr.Literal(""))),
+ 'multiline-tt': rr.Node('tt', rr.Sequence(
+ rr.Literal(''),
+ rr.Ref('multiline-wikichunk'),
+ rr.Literal(''))),
+ 'multiline-u1': rr.Node('u', rr.Sequence(
+ rr.Literal(''),
+ rr.Ref('multiline-wikichunk'),
+ rr.Literal(''))),
+ 'multiline-u2': rr.Node('u', rr.Sequence(
+ rr.Literal(''),
+ rr.Ref('multiline-wikichunk'),
+ rr.Literal(''))),
+
+ '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(""),
+ rr.Ref('singleline-wikichunk'),
+ rr.Literal(""))),
+ 'singleline-comment': rr.Node('comment', rr.Sequence(
+ rr.Literal(""))),
+ 'singleline-del1': rr.Node('del', rr.Sequence(
+ rr.Literal('"),
+ rr.SingleLineText(),
+ rr.Literal(""))),
+ 'singleline-tt': rr.Node('tt', rr.Sequence(
+ rr.Literal(''),
+ rr.Ref('singleline-wikichunk'),
+ rr.Literal(''))),
+ 'singleline-u1': rr.Node('u', rr.Sequence(
+ rr.Literal(''),
+ rr.Ref('singleline-wikichunk'),
+ rr.Literal(''))),
+ 'singleline-u2': rr.Node('u', rr.Sequence(
+ rr.Literal(''),
+ rr.Ref('singleline-wikichunk'),
+ rr.Literal(''))),
+
+ 'special-nowikisingle': rr.Literal('