diff --git a/shared/prolog/xbgf1.pro b/shared/prolog/xbgf1.pro index 25a5d663..11e77b2f 100644 --- a/shared/prolog/xbgf1.pro +++ b/shared/prolog/xbgf1.pro @@ -744,6 +744,8 @@ massage_rules(+(?(X)),*(X)). massage_rules(?(X),';'(L)) :- length(L,2),member(X,L),member(true,L). massage_rules(*(X),';'(L)) :- length(L,2),member(+(X),L),member(true,L). massage_rules(+(X),','([X,*(X)])). +massage_rules(','([X,*(','([Y,X]))]),','([*(','([X,Y])),X])). +massage_rules(','([X,+(','([Y,X]))]),','([+(','([X,Y])),X])). % diff --git a/shared/xsd/xbgf.xsd b/shared/xsd/xbgf.xsd index 22539b84..99ab5a01 100644 --- a/shared/xsd/xbgf.xsd +++ b/shared/xsd/xbgf.xsd @@ -109,6 +109,19 @@ + + + + TBD + + + + + + + + + @@ -128,6 +141,19 @@ + + + + TBD + + + + + + + + + @@ -145,20 +171,30 @@ - + - A replace variant that works on production level. When this - transformation is executed, all current productions for the - nonterminal are dropped, and all the given ones are added - to the grammar. + TBD - + + + + + + + + + To be explained later. + + + + + + - @@ -179,7 +215,7 @@ - TBD + TBD @@ -492,6 +528,23 @@ + + + + A replace variant that works on production level. When this + transformation is executed, all current productions for the + nonterminal are dropped, and all the given ones are added + to the grammar. + + + + + + + + + + @@ -689,7 +742,7 @@ - + @@ -767,7 +820,7 @@ - + @@ -794,45 +847,6 @@ - - - - TBD - - - - - - - - - - - - - TBD - - - - - - - - - - - - - TBD - - - - - - - - - @@ -890,20 +904,6 @@ - - - - To be explained later. - - - - - - - - - - @@ -938,4 +938,4 @@ - + \ No newline at end of file diff --git a/topics/presentation/metrics/xbgf_overview.py b/topics/presentation/metrics/xbgf_overview.py index 6a5683d5..0b05617a 100755 --- a/topics/presentation/metrics/xbgf_overview.py +++ b/topics/presentation/metrics/xbgf_overview.py @@ -3,10 +3,16 @@ import sys import elementtree.ElementTree as ET -safexbgf = ('eliminate','introduce','chain', 'designate', 'deyaccify','distribute', - 'extract', 'factor', 'fold', 'horizontal','inline', 'massage', - 'rename', 'reroot', 'unfold','vertical', 'yaccify', 'unchain', 'skip') -incdecxbgf = ('add', 'narrow', 'remove','unite', 'widen', 'rassoc', 'lassoc') +safexbgf = ('abridge','detour','anonymize','deanonymize','unlabel','designate', + 'deyaccify','yaccify','eliminate','introduce','inline','extract', + 'unfold','fold','horizontal','vertical','distribute','factor', + 'massage','chain','unchain','skip','reroot','rename') +#safexbgf = ('eliminate','introduce','chain', 'designate', 'deyaccify','distribute', +# 'extract', 'factor', 'fold', 'horizontal','inline', 'massage', +# 'rename', 'reroot', 'unfold','vertical', 'yaccify', 'unchain', 'skip') +incdecxbgf = ('remove','add','disappear','appear','narrow','widen', + 'downgrade','upgrade','rassoc','lassoc','unite') +#incdecxbgf = ('add', 'narrow', 'remove','unite', 'widen', 'rassoc', 'lassoc') messyxbgf = ('permute', 'dump') rkeys = ('LOC','NOI','NOX','NI~','NI+','NI!','SGO','COR','NI^','SID','SRE') diff --git a/topics/transformation/xbgf/tests/massage7.baseline b/topics/transformation/xbgf/tests/massage7.baseline new file mode 100644 index 00000000..228526b0 --- /dev/null +++ b/topics/transformation/xbgf/tests/massage7.baseline @@ -0,0 +1,27 @@ + + + + N + + + + a + + + + + + + b + + + a + + + + + + + + + diff --git a/topics/transformation/xbgf/tests/massage7.bgf b/topics/transformation/xbgf/tests/massage7.bgf new file mode 100644 index 00000000..41fb91d0 --- /dev/null +++ b/topics/transformation/xbgf/tests/massage7.bgf @@ -0,0 +1,27 @@ + + + + N + + + + + + + + a + + + b + + + + + + + a + + + + + diff --git a/topics/transformation/xbgf/tests/massage7.xbgf b/topics/transformation/xbgf/tests/massage7.xbgf new file mode 100644 index 00000000..ae4c7b49 --- /dev/null +++ b/topics/transformation/xbgf/tests/massage7.xbgf @@ -0,0 +1,49 @@ + + + + + + + + + + + a + + + b + + + + + + + a + + + + + + + a + + + + + + + b + + + a + + + + + + + + + \ No newline at end of file