X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=tests%2Ftibdoc.g;h=38104af6e63207de89d49b8c275fc076bf046ee5;hp=592619476cced71e7fa9f09b1757c78f42861b65;hb=9ded11559a1b6f817e99355b1c9e2c88042e91d4;hpb=3885d0596c6f13f432ecd2c46f87d6477cb773b0 diff --git a/tests/tibdoc.g b/tests/tibdoc.g index 5926194..38104af 100644 --- a/tests/tibdoc.g +++ b/tests/tibdoc.g @@ -1,4 +1,5 @@ x::="x" +// interactions between !=> and &~ mean that I need to rethink the chartage // indentation styling... // literal blocks [[need to ignore bracing]] double-colon style? // definition -- by prior line indentation, like headings in the original structured text @@ -6,26 +7,10 @@ x::="x" // dropcap // output formats: latex, contex, ps, pdf, html, man, txt, rfc -// URGENT: why does swapping [a-zA-Z0-9] for alphanum in "item" cause severe breakage? -// URGENT: why does enabling "url" cause severe breakage? (probably same cause) -// ... something to do with unit productions - -// output formats: latex, contex, ps, pdf, html, man, txt, rfc -// bullet list -// numbered list -// horizontal rule -// dropcap -// smallcap -// strikethrough -// link +// escapification +// comment // math // image -// today's date, last edit date -// blockquote -// superscript -// subscript -// citations/references -// typewriter-text // figures // FIXME: these have to go at the top so they have their dropAll bit set before PreSequence.build... @@ -35,9 +20,9 @@ nw ::= ~[\r\n\ ] ////////////////////////////////////////////////////////////////////////////// -s ::= { Doc } => "top" +s ::= {Doc} => top -Doc ::= Header Body /ws => doc +Doc ::= Header Body /ws => doc Header ::= "header" { kv */ ws } /ws => header Body ::= Section*/ws => body Section ::= SectionHeader Paragraph*/ws /ws => section @@ -47,7 +32,7 @@ SectionHeaderBody ::= "=" SectionHeaderBody "=" kv ::= word "=" text /ws => kv1 -num !::= [0-9]++ => "stringify" +num !::= [0-9]++ Paragraph ::= { "\"\"" ws text } => "blockquote" > { "*" " " ws text } => "ul" > { "#" " " ws text } => "ol" @@ -55,31 +40,49 @@ Paragraph ::= { "\"\"" ws text } => "blockquote" > { "---" "-"* } => "hr" > { text } => "p" -text ::= item */ ws +text ::= item => "t" +itemx ::= ws item => "w" | () +item ::= blockquote => "b" + > pre itemx => "a" + > structured itemx => "1" + > structuredx itemx => "2" + > styled itemx => "3" + > qtext itemx => "4" + > alphanum++ itemx => "5" + > symbol itemx => "6" +// > sym++ itemx => [] + > Paragraph itemx => "7" + +symbol ::= sym++ + +blockquote ::= "\"\"" text "\"\"" => "blockquote" + | "\"\"" block => "blockquote" + +qtext ::= "\"" text "\"" => "quoted" pre ::= "[verbatim]" { ~[]+ } /ws => "verbatim" // FIXME doesn't work -item ::= pre - > email - > structured - > styled - > "\"" text "\"" => quoted - > alphanum++ => "stringify" - > symbol - -symbol ::= symbolx & sym++ -symbolx ::= "--" => emdash - | "," - | ":" - | ";" - -styled ::= "**" text "**" => bold - | "__" text "__" => ul - | "~~" text "~~" => it // hard to type - | "((" text "))" => footnote - -structured ::= glyph -// | url -glyph ::= "(r)" | "(c)" | "(tm)" // euro symbol? +styled ::= "__" text "__" => ul + | "((" text "))" => footnote + | ( "[[" text "]]" => tt + > "[" word "]" => citation + ) + | "!!" text "!!" => strikethrough + | "^^" (word|block) => superscript + | ",," (word|block) => subscript + | "\\sc" block => smallcap + | "**" text "**" => bold + | "!" (word|block) => keyword + > "*" text "*" => it + +block ::= { text } +structured ::= { text } "->" (url|email) => link + //> alphanum++ "->" (url|email) => link +structuredx ::= glyph + > email + > url + +glyph ::= "(r)" | "(c)" | "(tm)" | "--" // euro symbol? + | "\\today" -> ~[a-z] => today // URLs ////////////////////////////////////////////////////////////////////////////// @@ -89,8 +92,8 @@ glyph ::= "(r)" | "(c)" | "(tm)" // euro symbol? // only gets parsed once urlpath ::= urlchar* -username ::= [a-zA-Z0-9;/?:&=$\-_.+]++ => "stringify" -password ::= [a-zA-Z0-9;/?:&=$\-_.+]++ => "stringify" +username ::= [a-zA-Z0-9;/?:&=$\-_.+]++ +password ::= [a-zA-Z0-9;/?:&=$\-_.+]++ urlchar ::= [a-zA-Z0-9;/?:&=$\-_.+@] | "%" [0-9] [0-9] => "%" url ::= "mailto" ":" email @@ -99,11 +102,11 @@ url_login ::= username (":" password) "@" => "login" method ::= [+\-.a-z0-9]+ port ::= [0-9]+ -domain ::= part +/ "." -part ::= [a-zA-Z0-9\-]++ => "stringify" // interesting use of boolean grammars +domain ::= (part +/ ".") -> ~"." +part ::= [a-zA-Z0-9\-]++ // interesting use of boolean grammars // &~ ([\-0-9] ~[]* | ~[]* [\-0-9]) -email ::= username "@" host => email +email ::= username "@" host -> ~[.] => emailaddr host ::= [0-9]+ "." [0-9]+ "." [0-9]+ "." [0-9]+ => "ip" | domain @@ -111,7 +114,7 @@ host ::= [0-9]+ "." [0-9]+ "." [0-9]+ "." [0-9]+ => "ip" // Tokens /////////////////////////////////////////////////////////////////// -word ::= alphanum++ => "stringify" +word ::= alphanum++ | quoted quoted ::= "\"" ((~[\"\\] | escaped)+) "\"" @@ -124,8 +127,8 @@ escaped ::= "\\n" => "\n" // Chars /////////////////////////////////////////////////////////////// alpha ::= [a-zA-Z] -num ::= [0-9] +//num ::= [0-9] alphanum ::= [a-zA-Z0-9] -sym ::= ~[a-zA-Z0-9\ \r\n] +sym ::= ~[a-zA-Z0-9\ \r\n=\">]