From 154d3d14563a3145ba13583d29cab6dff3e9c037 Mon Sep 17 00:00:00 2001 From: ptmcg Date: Wed, 8 Sep 2021 07:44:31 -0500 Subject: Fix parsing ambiguity in railroad_diagram_demo.py so that parser can actually parse a valid input string --- examples/railroad_diagram_demo.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/examples/railroad_diagram_demo.py b/examples/railroad_diagram_demo.py index b07153e..8995bdc 100644 --- a/examples/railroad_diagram_demo.py +++ b/examples/railroad_diagram_demo.py @@ -6,12 +6,14 @@ integer = pp.Word(pp.nums).setName("integer") plus_minus = pp.Char("+-") mult_div = pp.Char("*/") street_address = pp.Group(integer("house_number") + word[1, ...]("street_name")).setName("street_address") +time = pp.Regex(r"\d\d:\d\d") -grammar = (integer[1, ...] - + (ppc.ipv4_address & word & pp.Optional(integer)).setName("header with various elements")("header") +grammar = (pp.Group(integer[1, ...]) + + (ppc.ipv4_address & word("header_word") & pp.Optional(time)).setName("header with various elements")("header") + street_address("address") + pp.Group(pp.counted_array(word)) + pp.Group(integer * 8)("data") + + pp.Group(pp.Word("abc") + pp.Word("def")*3) + pp.infix_notation(integer, [ (plus_minus().setName("leading sign"), 1, pp.opAssoc.RIGHT), @@ -24,3 +26,6 @@ grammar = (integer[1, ...] grammar.create_diagram("railroad_diagram_demo.html", vertical=6, show_results_names=True) + +test = """1 2 3 ABC 1.2.3.4 12:45 123 Main St 4 abc def ghi jkl 5 5 5 5 5 5 5 5 a d d d 2+2 bob 5.6.7.8""" +result = grammar.runTests([test]) -- cgit v1.2.1