Skip to content

Commit

Permalink
states as first class entity in constraints specification
Browse files Browse the repository at this point in the history
  • Loading branch information
grammarware committed May 16, 2012
1 parent dc7f6d2 commit e22d52b
Show file tree
Hide file tree
Showing 23 changed files with 145 additions and 140 deletions.
17 changes: 11 additions & 6 deletions shared/python/MBGF.py
Expand Up @@ -33,13 +33,16 @@ def parsebasic(self, xml):
else:
self.blocks = ''
self.data = {}
self.ids = {}

class SrcSimpleModel (TopModel):
def parse(self, xml):
self.parsebasic(xml)
for ss in xml.findall('src'):
for s in ss.attrib['name'].split(','):
for ss in xml.findall('state'):
for s in ss.attrib['src'].split(','):
self.data[s] = ss.text
if 'id' in ss.attrib:
self.ids[s] = ss.attrib['id']

class SrcProdModel (TopModel):
def getNTs(self,id):
Expand All @@ -65,8 +68,8 @@ def getData(self, id):
return '∅'
def parse(self, xml):
self.parsebasic(xml)
for ss in xml.findall('src'):
for s in ss.attrib['name'].split(','):
for ss in xml.findall('state'):
for s in ss.attrib['src'].split(','):
self.data[s] = [[],[]]
for p in ss.findall(slpsns.bgf_('production')):
xp = BGF3.Production()
Expand All @@ -82,7 +85,9 @@ def parse(self, xml):
# </sources>
class Sources (SrcSimpleModel):
def __init__(self, xml):
self.parse(xml)
self.parsebasic(xml)
for s in xml.findall('src'):
self.data[s.attrib['name']] = s.text

# <naming-convention>
# <default>l!</default>
Expand Down Expand Up @@ -221,7 +226,7 @@ def getSpecifics(self):
# </folding>
class Folding (SrcProdModel):
def __init__(self, xml):
self.nt = xml.findtext('src/'+slpsns.bgf_('production')+'/nonterminal')
self.nt = xml.findtext('state/'+slpsns.bgf_('production')+'/nonterminal')
self.parse(xml)
def getSpecifics(self):
return 'n('+self.nt+')'
8 changes: 4 additions & 4 deletions topics/convergence/declarative/tests/fold-labels-fl.mbgf
Expand Up @@ -6,7 +6,7 @@
<src name="c">fold-labels-fl-3.bgf</src>
</sources>
<folding id="fld" depends="sels:deanonymize">
<src name="a,c">
<state src="a,c">
<bgf:production>
<nonterminal>z</nonterminal>
<bgf:expression>
Expand Down Expand Up @@ -37,10 +37,10 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</folding>
<selectables id="sels" depends="fld:extract">
<src name="a,b">
<state src="a,b">
<bgf:production>
<nonterminal>z</nonterminal>
<bgf:expression>
Expand Down Expand Up @@ -79,6 +79,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</selectables>
</mbgf:sequence>
8 changes: 4 additions & 4 deletions topics/convergence/declarative/tests/fold-labels-lf.mbgf
Expand Up @@ -6,7 +6,7 @@
<src name="c">fold-labels-lf-3.bgf</src>
</sources>
<selectables id="sels" depends="fld:extract">
<src name="a,b">
<state src="a,b">
<bgf:production>
<nonterminal>z</nonterminal>
<bgf:expression>
Expand Down Expand Up @@ -45,10 +45,10 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</selectables>
<folding id="fld" depends="sels:deanonymize">
<src name="a,c">
<state src="a,c">
<bgf:production>
<nonterminal>z</nonterminal>
<bgf:expression>
Expand Down Expand Up @@ -79,6 +79,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</folding>
</mbgf:sequence>
12 changes: 6 additions & 6 deletions topics/convergence/declarative/tests/fold-names-any.mbgf
Expand Up @@ -7,16 +7,16 @@
</sources>
<name-bind>
<name>a</name>
<src name="a,c">a</src>
<src name="b">x</src>
<state src="a,c">a</state>
<state src="b">x</state>
</name-bind>
<name-bind>
<name>b</name>
<src name="a,c">b</src>
<src name="b">y</src>
<state src="a,c">b</state>
<state src="b">y</state>
</name-bind>
<folding>
<src name="a,b">
<state src="a,b">
<bgf:production>
<nonterminal>c</nonterminal>
<bgf:expression>
Expand All @@ -30,6 +30,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</folding>
</mbgf:sequence>
16 changes: 8 additions & 8 deletions topics/convergence/declarative/tests/fold-names-ordered.mbgf
Expand Up @@ -7,21 +7,21 @@
</sources>
<name-bind>
<name>a</name>
<src name="a,c">a</src>
<src name="b">x</src>
<state src="a,c">a</state>
<state src="b">x</state>
</name-bind>
<name-bind>
<name>b</name>
<src name="a,c">b</src>
<src name="b">y</src>
<state src="a,c">b</state>
<state src="b">y</state>
</name-bind>
<name-bind depends="fld:extract">
<name>c</name>
<src name="a,c">c</src>
<src name="b">z</src>
<state src="a,c">c</state>
<state src="b">z</state>
</name-bind>
<folding id="fld">
<src name="a,b">
<state src="a,b">
<bgf:production>
<nonterminal>c</nonterminal>
<bgf:expression>
Expand All @@ -35,6 +35,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</folding>
</mbgf:sequence>
4 changes: 2 additions & 2 deletions topics/convergence/declarative/tests/folding-easy.mbgf
Expand Up @@ -6,7 +6,7 @@
<src name="c">folding-easy-3.bgf</src>
</sources>
<folding>
<src name="b">
<state src="b">
<bgf:production>
<nonterminal>y</nonterminal>
<bgf:expression>
Expand All @@ -20,6 +20,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</folding>
</mbgf:sequence>
6 changes: 3 additions & 3 deletions topics/convergence/declarative/tests/iteration-irl.mbgf
Expand Up @@ -8,8 +8,8 @@
<iteration>
<name>x</name>
<separator>op</separator>
<src name="a">iterate</src>
<src name="b">lassoc</src>
<src name="c">rassoc</src>
<state src="a">iterate</state>
<state src="b">lassoc</state>
<state src="c">rassoc</state>
</iteration>
</mbgf:sequence>
6 changes: 3 additions & 3 deletions topics/convergence/declarative/tests/iteration-nosep.mbgf
Expand Up @@ -7,8 +7,8 @@
</sources>
<iteration>
<name>x</name>
<src name="a">iterate</src>
<src name="b">lassoc</src>
<src name="c">iterate</src>
<state src="a">iterate</state>
<state src="b">lassoc</state>
<state src="c">iterate</state>
</iteration>
</mbgf:sequence>
8 changes: 4 additions & 4 deletions topics/convergence/declarative/tests/labels-many.mbgf
Expand Up @@ -6,7 +6,7 @@
<src name="c">labels-many-3.bgf</src>
</sources>
<production-label>
<src name="b">
<state src="b">
<bgf:production>
<label>FooBar</label>
<nonterminal>x</nonterminal>
Expand All @@ -21,8 +21,8 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
<src name="c">
</state>
<state src="c">
<bgf:production>
<label>foo_bar</label>
<nonterminal>x</nonterminal>
Expand All @@ -37,6 +37,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</production-label>
</mbgf:sequence>
4 changes: 2 additions & 2 deletions topics/convergence/declarative/tests/labels-same.mbgf
Expand Up @@ -6,7 +6,7 @@
<src name="c">labels-same-3.bgf</src>
</sources>
<production-label>
<src name="b">
<state src="b">
<bgf:production>
<label>FooBar</label>
<nonterminal>x</nonterminal>
Expand All @@ -21,6 +21,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</production-label>
</mbgf:sequence>
6 changes: 3 additions & 3 deletions topics/convergence/declarative/tests/naming-abc.mbgf
Expand Up @@ -7,8 +7,8 @@
</sources>
<name-bind>
<name>x</name>
<src name="a">a</src>
<src name="b">b</src>
<src name="c">c</src>
<state src="a">a</state>
<state src="b">b</state>
<state src="c">c</state>
</name-bind>
</mbgf:sequence>
4 changes: 2 additions & 2 deletions topics/convergence/declarative/tests/naming-dde.mbgf
Expand Up @@ -7,7 +7,7 @@
</sources>
<name-bind>
<name>x</name>
<src name="a,c">d</src>
<src name="b">e</src>
<state src="a,c">d</state>
<state src="b">e</state>
</name-bind>
</mbgf:sequence>
8 changes: 4 additions & 4 deletions topics/convergence/declarative/tests/selectables-many.mbgf
Expand Up @@ -6,7 +6,7 @@
<src name="c">selectables-many-3.bgf</src>
</sources>
<selectables>
<src name="b">
<state src="b">
<bgf:production>
<nonterminal>x</nonterminal>
<bgf:expression>
Expand Down Expand Up @@ -38,8 +38,8 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
<src name="c">
</state>
<state src="c">
<bgf:production>
<nonterminal>x</nonterminal>
<bgf:expression>
Expand Down Expand Up @@ -71,6 +71,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</selectables>
</mbgf:sequence>
4 changes: 2 additions & 2 deletions topics/convergence/declarative/tests/selectables-multi.mbgf
Expand Up @@ -6,7 +6,7 @@
<src name="c">selectables-multi-3.bgf</src>
</sources>
<selectables>
<src name="b">
<state src="b">
<bgf:production>
<nonterminal>x</nonterminal>
<bgf:expression>
Expand Down Expand Up @@ -38,6 +38,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</selectables>
</mbgf:sequence>
4 changes: 2 additions & 2 deletions topics/convergence/declarative/tests/selectables-one.mbgf
Expand Up @@ -6,7 +6,7 @@
<src name="c">selectables-one-3.bgf</src>
</sources>
<selectables>
<src name="c">
<state src="c">
<bgf:production>
<nonterminal>x</nonterminal>
<bgf:expression>
Expand All @@ -29,6 +29,6 @@
</sequence>
</bgf:expression>
</bgf:production>
</src>
</state>
</selectables>
</mbgf:sequence>
4 changes: 2 additions & 2 deletions topics/convergence/declarative/tests/topchoice-hhv.mbgf
Expand Up @@ -7,7 +7,7 @@
</sources>
<top-choice>
<name>x</name>
<src name="a,b">horizontal</src>
<src name="c">vertical</src>
<state src="a,b">horizontal</state>
<state src="c">vertical</state>
</top-choice>
</mbgf:sequence>
4 changes: 2 additions & 2 deletions topics/convergence/declarative/tests/unification-easy.mbgf
Expand Up @@ -7,13 +7,13 @@
</sources>
<unification>
<name>x</name>
<src name="a">
<state src="a">
<bgf:production>
<nonterminal>y</nonterminal>
<bgf:expression>
<terminal>b</terminal>
</bgf:expression>
</bgf:production>
</src>
</state>
</unification>
</mbgf:sequence>
8 changes: 4 additions & 4 deletions topics/convergence/declarative/tests/unification-hard.mbgf
Expand Up @@ -7,15 +7,15 @@
</sources>
<unification>
<name>x</name>
<src name="b">
<state src="b">
<bgf:production>
<nonterminal>z</nonterminal>
<bgf:expression>
<terminal>c</terminal>
</bgf:expression>
</bgf:production>
</src>
<src name="c">
</state>
<state src="c">
<bgf:production>
<nonterminal>z</nonterminal>
<bgf:expression>
Expand All @@ -28,6 +28,6 @@
<terminal>c</terminal>
</bgf:expression>
</bgf:production>
</src>
</state>
</unification>
</mbgf:sequence>

0 comments on commit e22d52b

Please sign in to comment.