• R/O
  • SSH

Commit

Tags
No 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

Revisión0bffc2fb7d81d2a392dba7eb9f3345dbbea80027 (tree)
Tiempo2022-02-13 06:26:22
AutorAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Log Message

AST-2XML:: AndPredicate, NotPredicate added. Bit refactoring

Cambiar Resumen

Diferencia incremental

diff -r 5800f73c267c -r 0bffc2fb7d81 castle/ast/ast2xml.py
--- a/castle/ast/ast2xml.py Fri Feb 11 23:09:00 2022 +0100
+++ b/castle/ast/ast2xml.py Sat Feb 12 22:26:22 2022 +0100
@@ -46,6 +46,7 @@
4646 #NO_VISITOR_NEEDED: Group2xml ## Pure Abstract
4747 #NO_VISITOR_NEEDED: Markers2xml ## Pure Abstract
4848 #NO_VISITOR_NEEDED: Quantity2xml ## Pure Abstract
49+#NO_VISITOR_NEEDED: EOF2xml ## Not a real token
4950
5051
5152 def _MixIn_value_attribute2xml(self, ast, parent, cls_name):
@@ -72,20 +73,29 @@
7273 logger.debug(f'Rules2xml type(child)={type(child)}')
7374 self._ast2xml(child, parent=parent)
7475
75- def _quantity_op(self, ast, parent, tagName) -> None:
76+ def _quantity_op2xml(self, ast, parent, tagName) -> None:
7677 g = ET.SubElement(parent, tagName)
7778 self._ast2xml(ast.expr, g)
7879
79- def UnorderedGroup2xml(self, ast, parent): self._quantity_op(ast, parent, 'UnorderedGroup')
80- def Optional2xml(self, ast, parent): self._quantity_op(ast, parent, 'Optional')
81- def ZeroOrMore2xml(self, ast, parent): self._quantity_op(ast, parent, 'ZeroOrMore')
82- def OneOrMore2xml(self, ast, parent): self._quantity_op(ast, parent, 'OneOrMore')
80+ def UnorderedGroup2xml(self, ast, parent): self._quantity_op2xml(ast, parent, 'UnorderedGroup')
81+ def Optional2xml(self, ast, parent): self._quantity_op2xml(ast, parent, 'Optional')
82+ def ZeroOrMore2xml(self, ast, parent): self._quantity_op2xml(ast, parent, 'ZeroOrMore')
83+ def OneOrMore2xml(self, ast, parent): self._quantity_op2xml(ast, parent, 'OneOrMore')
84+
8385
8486 def OrderedChoice2xml(self, ast, parent) ->None:
8587 oc = ET.SubElement(parent, 'OrderedChoice')
8688 for c in ast:
8789 self._ast2xml(c,oc)
8890
91+ def _Predicate2xml(self, ast, parent, tagName) ->None:
92+ logger.debug(f"_Predicate2xml.{tagName}:: expr: {ast.expr}:{type(ast.expr).__name__}")
93+ predicate = ET.SubElement(parent, tagName)
94+ self._ast2xml(ast.expr, predicate)
95+
96+ def AndPredicate2xml(self, ast, parent): self._Predicate2xml(ast, parent,'AndPredicate')
97+ def NotPredicate2xml(self, ast, parent): self._Predicate2xml(ast, parent,'NotPredicate')
98+
8999 #############
90100
91101 ## def Setting2xml(self, ast, parent) ->None:
@@ -98,7 +108,7 @@
98108
99109
100110
101-# def AndPredicate2xml(self, ast, parent) ->None: ...
111+
102112 # def NotPredicate2xml(self, ast, parent) ->None: ...
103113
104-# def EOF2xml(self, ast, parent) ->None: pass # Needed
114+
diff -r 5800f73c267c -r 0bffc2fb7d81 pytst/ast/XML_serialization/test_1_simpleXML.py
--- a/pytst/ast/XML_serialization/test_1_simpleXML.py Fri Feb 11 23:09:00 2022 +0100
+++ b/pytst/ast/XML_serialization/test_1_simpleXML.py Sat Feb 12 22:26:22 2022 +0100
@@ -110,3 +110,11 @@
110110
111111 assert_xml_Element(txt, tag='OrderedChoice', child_count=2)
112112
113+def verify_Predicate(xml_serialize, pegPredicate, tagName):
114+ txt= xml_serialize(pegPredicate(expr=peg.ID(name="PartOfSomePredicate")))
115+ logger.debug(f'XML:: {txt}')
116+
117+ assert_xml_Element(txt, tag=tagName, child_count=1)
118+
119+def test_AndPredicate(xml_serialize): verify_Predicate(xml_serialize, peg.AndPredicate, 'AndPredicate')
120+def test_NotPredicate(xml_serialize): verify_Predicate(xml_serialize, peg.NotPredicate, 'NotPredicate')