Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Revision | 3dbe821e87c434fbf6b11561ceaecbf1da510a3a (tree) |
---|---|
Zeit | 2022-02-16 06:36:49 |
Autor | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
Sequence is now a list (tuple) of children. All tests PASS. Done
@@ -16,10 +16,10 @@ | ||
16 | 16 | |
17 | 17 | python-demo: |
18 | 18 | @echo Running all 'dem*.py' python-files |
19 | - for d in `find demos -type f -iname \*.py `; do echo "=== $$d ==="; python $$d; echo "=========="; done | |
19 | + export PYTHONPATH=`pwd`; for d in `find demos -type f -iname \*.py `; do echo "=== $$d ==="; python $$d; echo "=========="; done | |
20 | 20 | |
21 | 21 | pytest-demo: |
22 | - pytest -s demos | |
22 | + PYTHONPATH=`pwd` pytest -s demos | |
23 | 23 | |
24 | 24 | |
25 | 25 | missing_visitor: castle/readers/parser/grammar.py |
@@ -57,9 +57,9 @@ | ||
57 | 57 | def RegExpTerm2xml(self, ast, parent): self._MixIn_value_attribute2xml(ast, parent, 'RegExpTerm') |
58 | 58 | |
59 | 59 | def Sequence2xml(self, ast, parent) ->None: |
60 | - logger.debug(f"Sequence2xml::ast={ast._valType(ast.value)}") | |
60 | + logger.debug(f"Sequence2xml::ast={ast._valType(ast._children)}") | |
61 | 61 | seq = ET.SubElement(parent, 'Sequence') |
62 | - for elm in ast.value: | |
62 | + for elm in ast: | |
63 | 63 | self._ast2xml(elm, parent=seq) |
64 | 64 | |
65 | 65 | def Rule2xml(self, ast, parent) ->None: |
@@ -44,13 +44,13 @@ | ||
44 | 44 | logger.debug(f'{self._typeName(self)}.MixIn_children_tuple:: children[{len(children)}]:=' + |
45 | 45 | ('[[' +', '.join(f'{c}:{type(c).__name__}' for c in children) + ']]') if isinstance(children, list) else f's>>{children}<<') |
46 | 46 | super().__init__(**kwargs) |
47 | - self._childeren = tuple(children) | |
47 | + self._children = tuple(children) | |
48 | 48 | |
49 | 49 | def __len__(self): |
50 | - return len(self._childeren) | |
50 | + return len(self._children) | |
51 | 51 | def __getitem__(self, key): |
52 | - return self._childeren[key] | |
53 | - def __iter__(self): return self._childeren.__iter__() | |
52 | + return self._children[key] | |
53 | + def __iter__(self): return self._children.__iter__() | |
54 | 54 | |
55 | 55 | |
56 | 56 | ## |
@@ -128,7 +128,7 @@ | ||
128 | 128 | #class Sequence(MixIn_value_attribute, Expression): |
129 | 129 | class Sequence(MixIn_children_tuple, Expression): |
130 | 130 | """A sequence of expressions; can be of length=1""" |
131 | - # __init__ (see MixIn) sets self._childeren; assuming it is a list | |
131 | + # __init__ (see MixIn) sets self._children; assuming it is a list | |
132 | 132 | |
133 | 133 | def __str__(self): # mostly for debugging |
134 | 134 | return "Seq{{" + " ; ".join(f"{c}" for c in self) + "}}" |
@@ -138,7 +138,7 @@ | ||
138 | 138 | """OC: A _tuple_ of alternative expressions""" |
139 | 139 | |
140 | 140 | def __str__(self): # mostly for debugging |
141 | - return "OC{{" + " | ".join(f"{c}" for c in self._childeren) + "}}" | |
141 | + return "OC{{" + " | ".join(f"{c}" for c in self._children) + "}}" | |
142 | 142 | |
143 | 143 | class Optional(Quantity):pass |
144 | 144 | class ZeroOrMore(Quantity):pass |
@@ -12,7 +12,7 @@ | ||
12 | 12 | e1 = peg.ID(name=self.n1) |
13 | 13 | e2 = peg.StrTerm(value=self.v2) |
14 | 14 | e3 = peg.RegExpTerm(value=self.v3) |
15 | - self.seq = peg.Sequence(value=[e1, e2, e3]) | |
15 | + self.seq = peg.Sequence(children=[e1, e2, e3]) | |
16 | 16 | def assert_xml_Element(self, txt): |
17 | 17 | assert_xml_Element(txt, tag='.//Sequence') |
18 | 18 | assert_xml_Element(txt, tag='.//ID', name=self.n1) |
@@ -30,7 +30,7 @@ | ||
30 | 30 | |
31 | 31 | def test_Sequence_1(xml_serialize): |
32 | 32 | e1 = peg.ID(name='ID_1') |
33 | - txt= xml_serialize(peg.Sequence(value=[e1])) | |
33 | + txt= xml_serialize(peg.Sequence(children=[e1])) | |
34 | 34 | logger.debug(f'XML:: {txt}') |
35 | 35 | assert_xml_Element(txt, tag='Sequence') |
36 | 36 | assert_xml_Element(txt, tag='.//ID', name='ID_1') |
@@ -48,7 +48,7 @@ | ||
48 | 48 | def test_Rule_1ID(xml_serialize): |
49 | 49 | rule_name = "RuleName" |
50 | 50 | xref = "cross_ref" |
51 | - expr = peg.Sequence(value=[peg.ID(name=xref)]) | |
51 | + expr = peg.Sequence(children=[peg.ID(name=xref)]) | |
52 | 52 | |
53 | 53 | txt = xml_serialize(peg.Rule(name=peg.ID(name=rule_name), expr=expr)) |
54 | 54 | logger.debug(f'XML:: {txt}') |
@@ -69,8 +69,8 @@ | ||
69 | 69 | |
70 | 70 | |
71 | 71 | def test_Rules(xml_serialize): |
72 | - r1 = peg.Rule(name=peg.ID(name='rule_1'), expr=peg.Sequence(value=[peg.ID(name='id1')])) | |
73 | - r2 = peg.Rule(name=peg.ID(name='rule_2'), expr=peg.Sequence(value=[peg.StrTerm(value='str2')])) | |
72 | + r1 = peg.Rule(name=peg.ID(name='rule_1'), expr=peg.Sequence(children=[peg.ID(name='id1')])) | |
73 | + r2 = peg.Rule(name=peg.ID(name='rule_2'), expr=peg.Sequence(children=[peg.StrTerm(value='str2')])) | |
74 | 74 | |
75 | 75 | txt = xml_serialize(peg.Rules(children=[r1,r2])) |
76 | 76 | logger.debug(f'XML:: {txt}') |