diff --git a/examples/EBNF/EBNF.ebnf b/examples/EBNF/EBNF.ebnf index a98929665110c68998342aefdbfb0d87cd6437cc..c6562edd17f936a9ff2f2585640e7e22c9d84741 100644 --- a/examples/EBNF/EBNF.ebnf +++ b/examples/EBNF/EBNF.ebnf @@ -14,7 +14,6 @@ factor = [flowmarker] [retrieveop] symbol !"=" # negative lookahead to be | [flowmarker] literal | [flowmarker] regexp | [flowmarker] group - | [flowmarker] regexchain | [flowmarker] oneormore | repetition | option @@ -24,7 +23,6 @@ flowmarker = "!" | "&" | "§" | # '!' negative lookahead, '&' retrieveop = "::" | ":" # '::' pop, ':' retrieve group = "(" expression §")" -regexchain = ">" expression §"<" # compiles "expression" into a singular regular expression oneormore = "{" expression "}+" repetition = "{" expression §"}" option = "[" expression §"]" diff --git a/examples/Tutorial/Lyrik.ebnf b/examples/Tutorial/Lyrik.ebnf index e5ac9a284ac40f11b43f628b2d7cc1e56c1a9ea6..70cbfa1f6143b6c9f0646a3d98d761002e2b2549 100644 --- a/examples/Tutorial/Lyrik.ebnf +++ b/examples/Tutorial/Lyrik.ebnf @@ -7,23 +7,23 @@ untertitel = wortfolge [verknüpfung] ort = wortfolge [verknüpfung] jahr = JAHRESZAHL +wortfolge = { WORT }+ +namenfolge = { NAME }+ +verknüpfung = "<" ziel ">" +ziel = ZEICHENFOLGE + serie = !(titel vers NZ vers) { NZ zeile }+ { LEERZEILE }+ -titel = NZ zeile { LEERZEILE }+ + +titel = { NZ zeile}+ { LEERZEILE }+ zeile = { ZEICHENFOLGE }+ text = { strophe {LEERZEILE} }+ strophe = { NZ vers }+ vers = { ZEICHENFOLGE }+ -wortfolge = { WORT }+ -namenfolge = { NAME }+ -verknüpfung = "<" ziel ">" -ziel = ZEICHENFOLGE - WORT = /\w+/~ NAME = /\w+\.?/~ ZEICHENFOLGE = /[^ \n<>]+/~ -LEER = /[ \t]+/ NZ = /\n/~ LEERZEILE = /\n[ \t]*(?=\n)/~ JAHRESZAHL = /\d\d\d\d/~ diff --git a/examples/Tutorial/LyrikCompiler.py b/examples/Tutorial/LyrikCompiler.py index 6004ad550114a5eb6eb163e8c5d46446464dbe48..503ab2491693051674fe1eda4ddb153716642433 100644 --- a/examples/Tutorial/LyrikCompiler.py +++ b/examples/Tutorial/LyrikCompiler.py @@ -54,29 +54,29 @@ class LyrikGrammar(Grammar): ort = wortfolge [verknüpfung] jahr = JAHRESZAHL + wortfolge = { WORT }+ + namenfolge = { NAME }+ + verknüpfung = "<" ziel ">" + ziel = ZEICHENFOLGE + serie = !(titel vers NZ vers) { NZ zeile }+ { LEERZEILE }+ - titel = NZ zeile { LEERZEILE }+ + + titel = { NZ zeile}+ { LEERZEILE }+ zeile = { ZEICHENFOLGE }+ text = { strophe {LEERZEILE} }+ strophe = { NZ vers }+ vers = { ZEICHENFOLGE }+ - wortfolge = { WORT }+ - namenfolge = { NAME }+ - verknüpfung = "<" ziel ">" - ziel = ZEICHENFOLGE - WORT = /\w+/~ NAME = /\w+\.?/~ ZEICHENFOLGE = /[^ \n<>]+/~ - LEER = /[ \t]+/ NZ = /\n/~ LEERZEILE = /\n[ \t]*(?=\n)/~ JAHRESZAHL = /\d\d\d\d/~ ENDE = !/./ """ - source_hash__ = "28d8514ebe2ab4ebc985f22b7fa968d4" + source_hash__ = "7a99fa77a7d2b81976293d54696eb4f3" parser_initialization__ = "upon instatiation" COMMENT__ = r'' WSP__ = mixin_comment(whitespace=r'[\t ]*', comment=r'') @@ -86,20 +86,19 @@ class LyrikGrammar(Grammar): JAHRESZAHL = RE('\\d\\d\\d\\d') LEERZEILE = RE('\\n[ \\t]*(?=\\n)') NZ = RE('\\n') - LEER = RE('[ \\t]+', wR='') ZEICHENFOLGE = RE('[^ \\n<>]+') NAME = RE('\\w+\\.?') WORT = RE('\\w+') - ziel = ZEICHENFOLGE - verknüpfung = Sequence(Token("<"), ziel, Token(">")) - namenfolge = OneOrMore(NAME) - wortfolge = OneOrMore(WORT) vers = OneOrMore(ZEICHENFOLGE) strophe = OneOrMore(Sequence(NZ, vers)) text = OneOrMore(Sequence(strophe, ZeroOrMore(LEERZEILE))) zeile = OneOrMore(ZEICHENFOLGE) - titel = Sequence(NZ, zeile, OneOrMore(LEERZEILE)) + titel = Sequence(OneOrMore(Sequence(NZ, zeile)), OneOrMore(LEERZEILE)) serie = Sequence(NegativeLookahead(Sequence(titel, vers, NZ, vers)), OneOrMore(Sequence(NZ, zeile)), OneOrMore(LEERZEILE)) + ziel = ZEICHENFOLGE + verknüpfung = Sequence(Token("<"), ziel, Token(">")) + namenfolge = OneOrMore(NAME) + wortfolge = OneOrMore(WORT) jahr = JAHRESZAHL ort = Sequence(wortfolge, Optional(verknüpfung)) untertitel = Sequence(wortfolge, Optional(verknüpfung))