• R/O
  • SSH

Commit

Tags
Keine Tags

Frequently used words (click to add to your profile)

javac++androidlinuxc#windowsobjective-ccocoa誰得qtpythonphprubygameguibathyscaphec計画中(planning stage)翻訳omegatframeworktwitterdomtestvb.netdirectxゲームエンジンbtronarduinopreviewer

Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2


Commit MetaInfo

Revisionbea38726c5d2c27cf3ff1f82ae1c3f8bc1b91534 (tree)
Zeit2022-01-31 00:27:51
AutorAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Log Message

Refactored Rules (etc), by rewriting Mixin_Children_... -- Not longer a subclass of tuple, but using tuple for ._childeren

Ändern Zusammenfassung

Diff

diff -r b631a4bad200 -r bea38726c5d2 castle/ast/peg.py
--- a/castle/ast/peg.py Sun Jan 30 15:55:45 2022 +0100
+++ b/castle/ast/peg.py Sun Jan 30 16:27:51 2022 +0100
@@ -35,13 +35,17 @@
3535 return self._expr
3636
3737
38-class MixIn_children_as_tuple(tuple, PEG):
39- """With this MixIn PEG-class can be used a list"""
40- def __new__(cls, children, **kwargs):
41- return tuple.__new__(cls, tuple(children))
42- def __init__(self, *, children=None, **kwargs):
43- # children is handled in __new__ (RO!)
38+class MixIn_children_tuple:
39+ """With this MixIn PEG-class get the ``.children`` property; and sequence-alike methods"""
40+ def __init__(self, *, children, **kwargs):
4441 super().__init__(**kwargs)
42+ self._childeren = tuple(children)
43+
44+ def __len__(self):
45+ return len(self._childeren)
46+ def __getitem__(self, key):
47+ return self._childeren[key]
48+ def __iter__(self): return self._childeren.__iter__()
4549
4650
4751 ##
@@ -71,7 +75,7 @@
7175 self.name = name
7276 self.value = value
7377
74-class Settings(MixIn_children_as_tuple, PEG): pass
78+class Settings(MixIn_children_tuple, PEG): pass
7579
7680
7781 class Rule(NonTerminal):
@@ -87,7 +91,7 @@
8791 self.expr = expr
8892
8993
90-class Rules(MixIn_children_as_tuple, PEG): pass
94+class Rules(MixIn_children_tuple, PEG): pass
9195
9296
9397 class Grammar(NonTerminal):