X-Git-Url: http://git.megacz.com/?p=sbp.git;a=blobdiff_plain;f=tests%2Ftibdoc.g;h=b3b107eb01a52e48a89e53ebdef0b148172a7b1c;hp=1c02f111e14568f55fe8e8cdf31b48d64582a793;hb=22a2ca7685dcf29e9ddcc6e26443ea0277385fca;hpb=df76fcb56242a90011500ab89092d2108350a8ab diff --git a/tests/tibdoc.g b/tests/tibdoc.g index 1c02f11..b3b107e 100644 --- a/tests/tibdoc.g +++ b/tests/tibdoc.g @@ -48,59 +48,65 @@ // [c] ... // FIXME: these have to go at the top so they have their dropAll bit set before PreSequence.build... -ws = w** -w = [\r\n\ ] +w = " " | "\n" | "\r" +ws = "()":: w** +// | "()":: w** "#" (~[\n])* "\n" ws nw = ~[\r\n\ ] ////////////////////////////////////////////////////////////////////////////// s = Doc -Doc = head:Header body:Body /ws -Header = H:: { "header" { KeyVal */ ws } /ws } -Body = B:: {Section}*/ws -Section = SectionHeader Paragraph* /ws +Doc = head:Header ws! body:Body +Header = { "\\header" { KeyVal */ ws } /ws } +Body = { Section } */ws +Section = SectionHeader ws! Paragraph* SectionHeader = "==" SectionHeaderBody "==" SectionHeaderBody = "=" SectionHeaderBody "=" - > ws! alphanum++ ws! + > ws! text ws! sp = " "** blank = sp! "\n" sp! "\n" ws! -KeyVal = key:word "=" val:text /ws +KeyVal = key:bareword "=" val:text /ws wp = w++ num = [0-9]++ -Paragraph = Blockquote:: { "\"\" " text } +Paragraph = { Blockquote:: "\"\" " text } > HR:: { "---" "-"* } - > P:: { text } + > { OL:: (text &~ (text! ws! {oli}+)) ws! {oli}+ } + > P:: { text } onums = nums (". "|") ")! any = ~[]* uli = "* " (ws! text &~ any (oli|uli)!) -oli = ("# "|onums)! (ws! text &~ any (oli|uli)!) +oli = onums! (ws! text &~ any (oli|uli)!) text = Item -Itemx = ws! Item - | () -Item = -// "[]":: blockquote Itemx -// > - "[]":: { UL:: uli+/ws } Itemx - | "[]":: { OL:: oli+/ws } Itemx - > "[]":: pre Itemx - > "[]":: link Itemx - > "[]":: structured Itemx - > "[]":: styled Itemx - > "[]":: (Chars:: alphanum++) Itemx - > "[]":: "\"" text "\"" Itemx - > "[]":: (Symbol:: sym++) Itemx - > "[]":: { Block:: text } Itemx +Item*/ws = + blockquote +// > ^"#" ws! { ~[]* } + > Verbatim + > InlineGrammar + > link + > structured + > styled + > (Chars:: alphanum++) + > Quotes:: "\"" text "\"" + > (Symbol:: sym++) + > { Block:: text } + +word = Chars:: bareword + +blockquote = "adsfafewag" //blockquote = Blockquote:: "\"\"" (block | text "\"\"") -pre = Verbatim:: "[verbatim]" { ~[]+ } /ws // FIXME doesn't work +Verbatim = "[verbatim]" ws! { (~[])++ } + +#import meta.g as meta +InlineGrammar = "\grammar" ws! { meta.Grammar } styled = Underline:: "__" text "__" | Footnote:: "((" text "))" @@ -116,18 +122,24 @@ styled = Underline:: "__" text "__" block = { text } -link = LinkText:: text:({ text }) "->" href:(url|email) - > LinkChars:: text:alphanum++ ws! "->" href:(url|email) +link = text:({ text }|word) "->" ws! href:href +href = url | email | {href} structured = command & "\\" ([a-zA-Z0-9]++)! block? > glyph > email > url -glyph = Euro:: "(e)" | "(r)" | "(c)" | "(tm)" | emdash:: "--" | "..." +glyph = euro:: "(e)" + | r:: "(r)" + | c:: "(c)" + | tm:: "(tm)" + | emdash:: "--" + | ellipses:: "..." + | cent:: "\\cent" + +command = "\\" [a-z]++ -command = Today:: "\\today" - | LineBreak:: "\\br" // URLs ////////////////////////////////////////////////////////////////////////////// @@ -135,7 +147,7 @@ command = Today:: "\\today" // subtypes of url (ftp, etc) as conjunctions, but the "master pattern" // only gets parsed once -urlpath = urlchar* +urlpath = urlchar* -> ~urlv // this ~urlv should be handled by url! bug! username = [a-zA-Z0-9;/?:&=$\-_.+]++ password = [a-zA-Z0-9;/?:&=$\-_.+]++ urlc = [a-zA-Z0-9;/?:&=$\-_.+@] @@ -150,7 +162,8 @@ url = Mailto:: "mailto" ":" email -> ~urlv host:host port:(":" nums)? path:("/" urlpath)? - -> ~urlv + ref:("#" urlpath)? + -> ~(urlv|[\#]) url_login = Login:: username:username password:(":" password) "@" method = [+\-.a-z0-9]+ domain = (part +/ ".") -> ~"." @@ -167,7 +180,7 @@ host = IP:: nums "." nums "." nums "." nums // Tokens /////////////////////////////////////////////////////////////////// -word = alphanum++ +bareword = alphanum++ | quoted quoted = "\"" ((~[\"\\] | escaped)+) "\"" @@ -182,5 +195,6 @@ escaped = lf:: "\\n" alpha = [a-zA-Z] alphanum = [a-zA-Z0-9] sym = ~[a-zA-Z0-9\ \r\n=\">] +//sym = [,()]