Checkpoint: working parsing

This commit is contained in:
Ian Gulliver
2014-06-26 22:48:03 -07:00
parent 8d445df2c4
commit 3bee8b9acf
4 changed files with 270 additions and 248 deletions

View File

@@ -1,27 +1,27 @@
var mediawiki = {
'b': [rr.Literal("'''"), rr.Ref('wikichunk'), rr.Literal("'''")],
'del': [rr.Literal('<strike>'), rr.Ref('wikichunk'), rr.Literal('</strike>')],
'h2': [rr.StartOfLine(), rr.Literal('== '), rr.SingleLineText(), rr.Literal(' =='), rr.EndOfLine()],
'h3': [rr.StartOfLine(), rr.Literal('=== '), rr.SingleLineText(), rr.Literal(' ==='), rr.EndOfLine()],
'h4': [rr.StartOfLine(), rr.Literal('==== '), rr.SingleLineText(), rr.Literal(' ===='), rr.EndOfLine()],
'h5': [rr.StartOfLine(), rr.Literal('===== '), rr.SingleLineText(), rr.Literal(' ====='), rr.EndOfLine()],
'h6': [rr.StartOfLine(), rr.Literal('====== '), rr.SingleLineText(), rr.Literal(' ======'), rr.EndOfLine()],
'hr': [rr.StartOfLine(), rr.Literal('----'), rr.EndOfLine()],
'i': [rr.Literal("''"), rr.Ref('wikichunk'), rr.Literal("''")],
'nowiki': [rr.Literal('<nowiki>'), rr.MultiLineText(), rr.Literal('</nowiki>')],
'text': [rr.MultiLineText()],
'wikichunk': [rr.Or(
// 'b',
// 'del',
// 'h2',
'h3',
// 'h4',
// 'h5',
// 'h6',
// 'hr',
// 'i',
// 'nowiki',
'text'
)],
'wikidoc': [rr.ZeroOrMore('wikichunk')],
'b': rr.Node('b', rr.Sequence(rr.Literal("'''"), rr.Ref('wikichunk'), rr.Literal("'''"))),
'del': rr.Sequence(rr.Literal('<strike>'), rr.Ref('wikichunk'), rr.Literal('</strike>')),
'h2': rr.Sequence(rr.StartOfLine(), rr.Literal('== '), rr.SingleLineText(), rr.Literal(' =='), rr.EndOfLine()),
'h3': rr.Node('h3', rr.Sequence(rr.StartOfLine(), rr.Literal('=== '), rr.SingleLineText(), rr.Literal(' ==='), rr.EndOfLine())),
'h4': rr.Sequence(rr.StartOfLine(), rr.Literal('==== '), rr.SingleLineText(), rr.Literal(' ===='), rr.EndOfLine()),
'h5': rr.Sequence(rr.StartOfLine(), rr.Literal('===== '), rr.SingleLineText(), rr.Literal(' ====='), rr.EndOfLine()),
'h6': rr.Sequence(rr.StartOfLine(), rr.Literal('====== '), rr.SingleLineText(), rr.Literal(' ======'), rr.EndOfLine()),
'hr': rr.Sequence(rr.StartOfLine(), rr.Literal('----'), rr.EndOfLine()),
'i': rr.Sequence(rr.Literal("''"), rr.Ref('wikichunk'), rr.Literal("''")),
'nowiki': rr.Sequence(rr.Literal('<nowiki>'), rr.MultiLineText(), rr.Literal('</nowiki>')),
'text': rr.MultiLineText(),
'wikichunk': rr.Or(
rr.Ref('b'),
rr.Ref('del'),
rr.Ref('h2'),
rr.Ref('h3'),
rr.Ref('h4'),
rr.Ref('h5'),
rr.Ref('h6'),
rr.Ref('hr'),
rr.Ref('i'),
rr.Ref('nowiki'),
rr.Ref('text')
),
'wikidoc': rr.Node('wikidoc', rr.ZeroOrMore(rr.Ref('wikichunk'))),
};