sourceDoc: surface+. surface: (surfaceN; surfaceNros), extraInfo, comment, newline, (note; dumbHash; line)*. @surfaceNros: lab, "f", "R", "o", "s", rab. @surfaceN: lab, "f", [N]+, ["r";"v"], [N]*, rab. -extraInfo: (space; AnyNotSpace)*. note: -"#", space, noteBody, newline. -noteBody: noteChar*. -noteChar: ~[#d;#a]. line: (lineN; lineNros), rendition, lineBody, newline. @lineNros: -lab, -"f", -"R", -"o", -"s", -".", [N]+, -",". @lineN: -lab, -"f", -[N]+, -["r";"v"], -[N]*, -".", [N]+, -",". @rendition: (at;ad;as;aq;an;am;al;ax), +"#", ["A"-"Z"], ["0";"1";"a"-"z"], -rab. -lineBody: (space; comment; figure; milestone-start; milestone-end; ligature; choice; unclear; plainChar)+. comment: -"<", -"!", commentChar*, -">". -commentChar: ~[#d;#a;">"]. figure: -"<", (-"-"; -"~"), -">". ligature: -"{", plainChar+, -"}". milestone-start: -"<", -"%", -">". milestone-end:-"<", -"$", -">". unclear: "?". choice: -"[", unclearAlt, ( -":", unclearAlt)+, -"]". unclearAlt: (ligature; choiceChar)+. -choiceChar: ~[#d;#a;#20;"<";"[";"]";":";"{";"}"]. -dumbHand: -"<", -"@", -"H", -"=", -[N], -">". -at: -"@",+"#At ". -ad: -"+",+"#Ad ". -as: -"*",+"#As ". -aq: -"=",+"#Aq ". -an: -"&",+"#An ". -am: -"~",+"#Am ". -al: -"/",+"#Al ". -ax: -"!",+"#Ax ". -lab: -["<"]. -rab: -[">"]. -space: -[#20]. -keepSpace: [#20]. -newline: -#d?, -#a. -AnyNotSpace: ~[#d;#a;#20]. -NotSpace: ~[#d;#a;#20;"<"]. -plainChar: ~[#d;#a;#20;"<";"{";"}";"[";"]";":";"?"]. -dumbHash: -"#", -newline.