blob: b03ae83ea72a8b0529227848d1eb7ebf1b284870 [file] [log] [blame]
%token line "\-\-\-\- (\-*)";
%token tabletitleitem "\|\|";
%token tablecolumnitem "\|";
%token titleitem "!!!";
%token subtitleitem "!!";
%token subsubtitleitem "!";
%token emitem "''";
%token codeopenitem "\{\{";
%token codecloseitem "\}\}";
%token strongitem "__";
%token source "\{\{\{ (\}{0,2}[^\}])* \}\}\}";
%token anchor "\[( [^\[\|\]]* \| )? # [^\[\|\]]* \]";
%token link "\[( [^\[\|\]]* \| )? [^\[\|\]]* \]";
%token text "([^\ \t\n\r\[\{\}\|\*\\\-_!#'] | _[^_\n\r] | \{[^\{\n\r] | \}[^\}\n\r] | '[^'\n\r]
| \[\[ | \\[^\\\n\r] | \-{1,3}[^\-\n\r]?)
([^ \n\r\[\{\}\|\\\-_'] | _[^_\n\r] | \{[^\{\n\r] | \}[^\}\n\r] | '[^'\n\r]
| \[\[ | \\[^\\\n\r] | \-{1,3}[^\-\n\r]? | \|[^\|\ \t])*";
%right softbreak "\r(\n?) | \n";
%right break "\\\\";
%right hardbreak "(\r(\n?) | \n) (\r(\n?) | \n)+";
%token bulleteditem "\*+";
%token numbered1item "#";
%token numbered2item "##";
%token numbered3item "###";
%ignore "[\ \t]+";
%start document;
%%
document
: document section
| section
| paragraphs
;
section
: title paragraphs
| title hardbreak paragraphs
;
title
: titleitem textsequence
;
paragraphs
: paragraphs paragraph hardbreak
| paragraphs paragraph
| paragraph hardbreak
| paragraph
| paragraphs subsection hardbreak
| paragraphs subsection
| subsection hardbreak
| subsection
;
subsection
: subtitle subparagraphs
| subtitle hardbreak subparagraphs
;
subtitle
: subtitleitem textsequence
;
subparagraphs
: subparagraphs paragraph hardbreak
| subparagraphs paragraph
| paragraph hardbreak
| paragraph
| subparagraphs subsubsection hardbreak
| subparagraphs subsubsection
| subsubsection hardbreak
| subsubsection
;
subsubsection
: subsubtitle subsubparagraphs
| subsubtitle hardbreak subsubparagraphs
;
subsubtitle
: subsubtitleitem textsequence
;
subsubparagraphs
: subsubparagraphs paragraph hardbreak
| subsubparagraphs paragraph
| paragraph hardbreak
| paragraph
;
paragraph
: bulletedlist
| numberedlist1
| textsequence
| line
| source %prec softbreak
| source softbreak
| table
;
bulletedlist
: bulletedlist bulletedlistitem
| bulletedlistitem
;
bulletedlistitem
: bulleteditem textsequence
;
numberedlist1
: numberedlist1 numberedlistitem1
| numberedlistitem1
| numberedlist1 numberedlist2
| numberedlist2
;
numberedlistitem1
: numbered1item textsequence
;
numberedlist2
: numberedlist2 numberedlistitem2
| numberedlistitem2
| numberedlist2 numberedlist3
| numberedlist3
;
numberedlistitem2
: numbered2item textsequence
;
numberedlist3
: numberedlist3 numberedlistitem3
| numberedlistitem3
;
numberedlistitem3
: numbered3item textsequence
;
table
: tablehead softbreak tablerows
| tablehead softbreak tablerows softbreak
;
tablehead
: tablehead tabletitle
| tabletitle
;
tabletitle
: tabletitleitem textblock
;
tablerows
: tablerows softbreak tablecolumns
| tablecolumns
;
tablecolumns
: tablecolumns tablecolumn
| tablecolumn
;
tablecolumn
: tablecolumnitem textblock
;
textsequence
: textsequence textblock softbreak
| textsequence textblock
| textblock softbreak
| textblock
| textsequence textblock break
| textblock break
;
textblock
: link
| anchor
| strongblock
| emblock
| text
| codeblock
;
emblock
: emitem text emitem
;
strongblock
: strongitem text strongitem
;
codeblock
: codeopenitem text codecloseitem
;