Castle: The best Real-Time/Embedded/HighTech language EVER. Attempt 2
Revision | 04371911620cb14d75d2b06dc1995c22ef5dc686 (tree) |
---|---|
Time | 2022-01-25 06:01:28 |
Author | Albert Mietus < albert AT mietus DOT nl > |
Commiter | Albert Mietus < albert AT mietus DOT nl > |
Added better logging &str-support
@@ -6,6 +6,16 @@ | ||
6 | 6 | super().__init__(**kwargs) |
7 | 7 | self._parse_tree = parse_tree |
8 | 8 | |
9 | + def __str__(self): # mostly for debugging | |
10 | + return str(type(self).__name__) + "\n\t" + "\n\t".join(f'{n}\t{str(v)}:{type(v).__name__}' for n,v in self.__dict__.items() if n[0]!='_') | |
11 | + | |
12 | + @staticmethod | |
13 | + def _typeName(x): | |
14 | + return type(x).__name__ | |
15 | + | |
16 | + def _valType(self, x): | |
17 | + return f'{x}:{self._typeName(x)}' | |
18 | + return type(x).__name__ | |
9 | 19 | |
10 | 20 | @property |
11 | 21 | def position(self): return self._parse_tree.position |
@@ -32,5 +42,9 @@ | ||
32 | 42 | def __init__(self, *, name, **kwargs): |
33 | 43 | super().__init__(**kwargs) |
34 | 44 | self.validate_or_raise(name) |
45 | + if isinstance(name, ID): | |
46 | + name=name.name | |
35 | 47 | self.name=name |
36 | 48 | |
49 | + def __str__(self): # mostly for debugging | |
50 | + return self.name |
@@ -14,12 +14,12 @@ | ||
14 | 14 | |
15 | 15 | def __init__(self, *, value=None, **kwargs): |
16 | 16 | super().__init__(**kwargs) |
17 | - logger.debug(f'{type(self).__name__}:: value:={value}:{type(value)}') | |
17 | + logger.debug(f'{self._typeName(self)}:: value:={value}:{self._typeName(value)}') | |
18 | 18 | self._value=value |
19 | 19 | |
20 | 20 | @property |
21 | 21 | def value(self): |
22 | - logger.debug(f'{type(self).__name__}:: @property={self._value}') | |
22 | + logger.debug(f'{self._typeName(self)}:: @property={self._value}') | |
23 | 23 | return self._value |
24 | 24 | |
25 | 25 |
@@ -78,12 +78,13 @@ | ||
78 | 78 | def __init__(self, *, |
79 | 79 | name: ID, expr:Expression=None, |
80 | 80 | **kwargs): |
81 | + logger.debug(f'{self._typeName(self)}: name={self._valType(name)}, expr={self._valType(expr)}') | |
82 | + if expr: | |
83 | + logger.debug("\t" + "; ".join(f'{c}:{type(c)}' for c in expr)) | |
81 | 84 | ID.validate_or_raise(name) |
82 | 85 | super().__init__(**kwargs) |
83 | 86 | self.name = name |
84 | 87 | self.expr = expr |
85 | - logger.debug(f'{type(self).__name__}:: expr:={expr}:{type(expr)}') | |
86 | - logger.debug("\t" + "; ".join(f'{c}:{type(c)}' for c in expr)) | |
87 | 88 | |
88 | 89 | |
89 | 90 | class Rules(MixIn_children_as_tuple, PEG): pass |
@@ -94,10 +95,10 @@ | ||
94 | 95 | rules: Rules=None, |
95 | 96 | settings: Settings=None, |
96 | 97 | **kwargs): |
98 | + logger.debug(f'{self._typeName(self)}:: kwargs={kwargs}') | |
97 | 99 | super().__init__(**kwargs) |
98 | 100 | self.rules = rules |
99 | 101 | self.settings = settings |
100 | - logger.debug(f'{type(self).__name__}:: kwargs={kwargs}') | |
101 | 102 | |
102 | 103 | |
103 | 104 | class Group(Expression): pass # abstract -- Note: Do not Group for '(' ...')'; that's a Sequence!! |