Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Revisão | be541e58affa82256baba6e1a93d0fa01f1d6cb6 (tree) |
---|---|
Hora | 2022-04-20 21:34:01 |
Autor | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
Removed onld DEMO file
@@ -1,62 +0,0 @@ | ||
1 | -import pytest | |
2 | -import logging;logger = logging.getLogger(__name__) | |
3 | - | |
4 | -from castle.readers.parser import grammar | |
5 | - | |
6 | -import arpeggio | |
7 | - | |
8 | -def format_node(n): | |
9 | - return f"\tNODE:: {n!r}:{type(n)}" | |
10 | - | |
11 | -def format_children(l): | |
12 | - if l is None: return "~~~Forget to pass children~~~" | |
13 | - if len(l)<1: return "\tCHILDREN: None" | |
14 | - return ("\n\tCHILDREN::" + ", ".join(f'>>{c}<<' for c in l)) | |
15 | - | |
16 | -def show_visited(label="VISIT_", node=None, children=None): | |
17 | - nl= "\n" if label[-1] != '_' else "" | |
18 | - logger.info(f'{label}{nl}{format_node(node)}{format_children(children)}') | |
19 | - | |
20 | - | |
21 | - | |
22 | -class DemoVisitor(arpeggio.PTNodeVisitor): | |
23 | - def visit__default__(self, node, children): | |
24 | - show_visited('visit__default__', node, children) | |
25 | - return (node, children) | |
26 | - def visit_rule(self, node, children): | |
27 | - show_visited('visit_rule', node, children) | |
28 | - return (node, children) | |
29 | - def visit_ordered_choice(self, node, children): | |
30 | - show_visited('ordered_choice', node, children) | |
31 | - return (node, children) | |
32 | - | |
33 | - def visit_rule_name(self, node, children): | |
34 | - show_visited('VISIT_rule_name', node, children) | |
35 | - return (node, children) | |
36 | - def visit_rule_crossref(self, node, children): | |
37 | - show_visited('VISIT_rule_crossref', node, children) | |
38 | - return (node, children) | |
39 | - | |
40 | - | |
41 | - | |
42 | -def _test_Rule(): | |
43 | - TXT= """RULE_NAME <- EXP1 EXP2 ;""" | |
44 | - parse_tree = arpeggio.ParserPython(language_def=grammar.rule).parse(TXT) | |
45 | - | |
46 | - print("\nPARSE-TREE\n" + parse_tree.tree_str()+'\n') | |
47 | - | |
48 | - ast = arpeggio.visit_parse_tree(parse_tree, DemoVisitor()) | |
49 | - print("\nAST:\t" + ast) | |
50 | - | |
51 | - | |
52 | -def QAZ(txt, rule, label=None): | |
53 | - if label: print(f'\nLABEL: {label}') | |
54 | - parse_tree = arpeggio.ParserPython(language_def=rule).parse(txt) | |
55 | - print("PARSE-TREE\n" + parse_tree.tree_str()+'\n') | |
56 | - | |
57 | - ast = arpeggio.visit_parse_tree(parse_tree, DemoVisitor()) | |
58 | - print("AST:\t", ast) | |
59 | - | |
60 | -def test_QAZ_rule_name(): QAZ("""aName""", grammar.rule_name, label="rule_name") | |
61 | -def test_QAZ_rule_crossref(): QAZ("""aName""", grammar.rule_crossref, label="rule_crossref") | |
62 | -def test_QAZ_expression(): QAZ("""aName""", grammar.expression, label="expression") |