• 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

Revision9788baa79d25faf1f1cce412cd93205ef8697453 (tree)
Time2022-01-29 07:37:20
AuthorAlbert Mietus < albert AT mietus DOT nl >
CommiterAlbert Mietus < albert AT mietus DOT nl >

Log Message

Even more AST-2-XML serialization

Change Summary

Incremental Difference

diff -r a994c5f38a17 -r 9788baa79d25 castle/ast/serialization.py
--- a/castle/ast/serialization.py Fri Jan 28 23:08:02 2022 +0100
+++ b/castle/ast/serialization.py Fri Jan 28 23:37:20 2022 +0100
@@ -68,10 +68,13 @@
6868 for elm in ast.value:
6969 self._ast2xml(elm, seq)
7070
71+
72+ def Rule2xml(self, ast, parent) ->None:
73+ rule = ET.SubElement(parent, 'Rule', name=ast.name.name)
74+ for elm in ast.expr:
75+ self._ast2xml(elm, rule)
76+
7177 #############
72- def Rule2xml(self, ast, parent) ->None: ...
73-
74-
7578 def Rules2xml(self, ast, parent) ->None: ...
7679 def Setting2xml(self, ast, parent) ->None: ...
7780 def Settings2xml(self, ast, parent) ->None: ...
diff -r a994c5f38a17 -r 9788baa79d25 pytst/ast/XML_serialization/test_1_simple.py
--- a/pytst/ast/XML_serialization/test_1_simple.py Fri Jan 28 23:08:02 2022 +0100
+++ b/pytst/ast/XML_serialization/test_1_simple.py Fri Jan 28 23:37:20 2022 +0100
@@ -23,18 +23,22 @@
2323 logger.debug(f'XXX2 tag={tag}:: attrib={attrib}, value={value}')
2424 assert found.attrib[attrib] == value
2525
26+
2627 def test_ID(xml_serialize):
2728 txt = xml_serialize(peg.ID(name='demo_ID'))
2829 assert_xml_Element(txt, tag='ID', name='demo_ID')
2930
31+
3032 def test_StrTerm(xml_serialize):
3133 txt = xml_serialize(peg.StrTerm(value='demo string'))
3234 assert_xml_Element(txt, tag='StrTerm', value='demo string')
3335
36+
3437 def test_RegExpTerm(xml_serialize):
3538 txt = xml_serialize(peg.RegExpTerm(value='demo RegExp'))
3639 assert_xml_Element(txt, tag='RegExpTerm', value='demo RegExp')
3740
41+
3842 def test_Sequence_1(xml_serialize):
3943 e1 = peg.ID(name='ID_1')
4044 txt= xml_serialize(peg.Sequence(value=[e1]))
@@ -42,7 +46,8 @@
4246 assert_xml_Element(txt, tag='Sequence')
4347 assert_xml_Element(txt, tag='.//ID', name='ID_1')
4448
45-def test_Sequence_1(xml_serialize):
49+
50+def test_Sequence_3(xml_serialize):
4651 n1, v2, v3 = 'ID_1', 'str_2', 'regexp_3'
4752 e1 = peg.ID(name=n1)
4853 e2 = peg.StrTerm(value=v2)
@@ -56,3 +61,31 @@
5661 assert_xml_Element(txt, tag='.//StrTerm', value=v2)
5762 assert_xml_Element(txt, tag='.//RegExpTerm', value=v3)
5863
64+
65+def test_Rule_1ID(xml_serialize):
66+ rule_name, xref = "RuleName", "cross_ref"
67+ name = peg.ID(name=rule_name)
68+ expr = peg.Sequence(value=[peg.ID(name=xref)])
69+
70+ txt = xml_serialize(peg.Rule(name=name, expr=expr))
71+ logger.debug(f'XML:: {txt}')
72+
73+ assert_xml_Element(txt, tag='Rule', name=rule_name)
74+ assert_xml_Element(txt, tag='.//ID', name=xref)
75+
76+
77+def test_Rule_Sequence(xml_serialize):
78+ rule_name = "RuleName"
79+ name = peg.ID(name=rule_name)
80+
81+ n1, v2, v3 = 'ID_1', 'str_2', 'regexp_3'
82+ e1 = peg.ID(name=n1)
83+ e2 = peg.StrTerm(value=v2)
84+ e3 = peg.RegExpTerm(value=v3)
85+
86+ expr = peg.Sequence(value=[e1, e2, e3])
87+
88+ txt = xml_serialize(peg.Rule(name=name, expr=expr))
89+ logger.debug(f'XML:: {txt}')
90+
91+ assert_xml_Element(txt, tag='Rule', name=rule_name)