Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
修訂 | bdf28f2a5e322c51758d4cd2a1439e3f82b1f7d0 (tree) |
---|---|
時間 | 2021-11-28 08:06:06 |
作者 | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
UNDO show_dot and show parms -- useless
@@ -4,11 +4,9 @@ | ||
4 | 4 | import arpeggio |
5 | 5 | RE, S = arpeggio.RegExMatch, arpeggio.StrMatch # shortcut |
6 | 6 | |
7 | -show_dot=True | |
8 | - | |
9 | 7 | def parse_regex(txt, pattern=None): |
10 | 8 | #print(f'\nXXX >>{txt}<<') |
11 | - parser = ParserPython(regex_term, comment, debug=show_dot) | |
9 | + parser = ParserPython(regex_term, comment) # DoNot use debug/dot_exporter as it will re-use-same-file | |
12 | 10 | tree = parser.parse(txt) |
13 | 11 | assert tree.position_end == len(txt) , f"Not parsed whole input; Only: >>{txt[tree.position: tree.position_end]}<<; Not: >>{txt[tree.position_end:]}<<." |
14 | 12 |
@@ -4,11 +4,10 @@ | ||
4 | 4 | import arpeggio |
5 | 5 | RE, S = arpeggio.RegExMatch, arpeggio.StrMatch # shortcut |
6 | 6 | |
7 | -show_dot=True | |
8 | 7 | |
9 | 8 | def parse_str(str, pattern=[S, RE, S]): |
10 | 9 | #print(f'\nXXX >>{str}<<') |
11 | - parser = ParserPython(str_term, comment, debug=show_dot) | |
10 | + parser = ParserPython(str_term, comment) | |
12 | 11 | tree = parser.parse(str) |
13 | 12 | assert tree.position_end == len(str) , f"Not parsed whole input; Only: >>{str[tree.position: tree.position_end]}<<; Not: >>{str[tree.position_end:]}<<." |
14 | 13 |
@@ -5,31 +5,26 @@ | ||
5 | 5 | |
6 | 6 | R, S, X = regex_term.__name__, str_term.__name__, rule_crossref.__name__ # shortcut in grammar |
7 | 7 | |
8 | -show_dot=True | |
9 | -def parse_sequence(txt, pattern=None, show=False): | |
10 | - parser = ParserPython(sequence, comment, debug=show_dot) | |
8 | +def parse_sequence(txt, pattern=None): | |
9 | + parser = ParserPython(sequence, comment) | |
11 | 10 | tree = parser.parse(txt) |
12 | - if show : print(f'\nPARSE_SEQEUENCE >>{txt}<<\n{tree.tree_str()}') | |
13 | 11 | |
14 | 12 | assert tree.position_end == len(txt) , f"Not parsed whole input; Only: >>{txt[tree.position: tree.position_end]}<<; Not: >>{txt[tree.position_end:]}<<." |
15 | 13 | assert isinstance(tree.rule, arpeggio.ZeroOrMore) and tree.rule_name == "sequence" |
16 | 14 | |
17 | - if pattern: validate_pattern(tree,pattern=pattern, show=show) | |
15 | + if pattern: validate_pattern(tree,pattern=pattern) | |
18 | 16 | return tree |
19 | 17 | |
20 | -def validate_pattern(tree, pattern=None, sub=0, show=False): | |
21 | - if show: print(f'\nVALIDATE_PATTERN pattern={pattern} sublevel={sub}\n{tree.tree_str()}') | |
18 | +def validate_pattern(tree, pattern=None): | |
22 | 19 | assert len(tree) == len(pattern), f"Not correct number-of-element at sublevel={sub}" |
23 | 20 | |
24 | 21 | exs=tree.prefix.suffix.expression |
25 | - #if show: print("EXS", type(exs), "\n"+exs.tree_str()) | |
26 | 22 | for ex,p in zip(exs, pattern): |
27 | 23 | if p is not None: |
28 | 24 | if not isinstance(p, (tuple, list)): |
29 | 25 | assert ex[0].rule_name == p, f"{ex} doesn't match given {p} sublevel={sub}" |
30 | 26 | else: |
31 | - #print('XXX1\n', ex[1][0].tree_str()) | |
32 | - validate_pattern(tree=ex[1][0], pattern=p, sub=sub+1, show=show) | |
27 | + validate_pattern(tree=ex[1][0], pattern=p) | |
33 | 28 | |
34 | 29 | |
35 | 30 |
@@ -4,10 +4,8 @@ | ||
4 | 4 | import arpeggio |
5 | 5 | RE, S = arpeggio.RegExMatch, arpeggio.StrMatch # shortcut |
6 | 6 | |
7 | -show_dot=False | |
8 | - | |
9 | 7 | def parse_rule(txt, pattern=None): |
10 | - parser = ParserPython(rule, comment, debug=show_dot) | |
8 | + parser = ParserPython(rule, comment) | |
11 | 9 | tree = parser.parse(txt) |
12 | 10 | assert tree.position_end == len(txt) , f"Not parsed whole input; Only: >>{txt[tree.position: tree.position_end]}<<; Not: >>{txt[tree.position_end:]}<<." |
13 | 11 | print(f'\nTREE\n{tree.tree_str()}') |
@@ -2,13 +2,12 @@ | ||
2 | 2 | |
3 | 3 | from grammar import * |
4 | 4 | |
5 | -show_dot=True | |
6 | 5 | |
7 | 6 | def parse_file(filename): # Assume we run in '.../pytst/.' |
8 | 7 | with open(filename) as f: |
9 | 8 | txt = f.read() |
10 | 9 | |
11 | - parser = ParserPython(peg_grammar, comment, debug=show_dot) | |
10 | + parser = ParserPython(peg_grammar, comment) | |
12 | 11 | tree = parser.parse(txt) |
13 | 12 | |
14 | 13 | assert tree.position_end == len(txt) , f"Not parsed whole input; Only: >>{regex[tree.position: tree.position_end]}<<; Not: >>{regex[tree.position_end:]}<<." |