Skip to content

Commit

Permalink
improved exbgf:factor-out
Browse files Browse the repository at this point in the history
git-svn-id: https://slps.svn.sourceforge.net/svnroot/slps@1177 ab42f6e0-554d-0410-b580-99e487e6eeb2
  • Loading branch information
grammarware committed Mar 5, 2012
1 parent 161c3d9 commit 736728e
Show file tree
Hide file tree
Showing 21 changed files with 262 additions and 660 deletions.
94 changes: 90 additions & 4 deletions shared/xsl/exbgf2xbgf.xslt
Original file line number Diff line number Diff line change
Expand Up @@ -1443,16 +1443,29 @@
Factor an expression in a concise way.
If context is given, it is assumed to be defined vertically (so we transparently horizontalize it during this operation).
exbgf:factor-out(s,c,t) = xbgf:factor ( choice(s c1 t, s c2 t, ...), sequence(s c t) )
Possibly includes exbgf:massageC2O
-->
<xsl:choose>
<xsl:when test="context">
<xsl:when test="context and not(optional)">
<xbgf:horizontal>
<nonterminal>
<xsl:value-of select="context"/>
</nonterminal>
</xbgf:horizontal>
<xsl:message>[EXBGF] factor-out ::= horizontal + factor + vertical</xsl:message>
</xsl:when>
<xsl:when test="context and optional">
<xbgf:horizontal>
<nonterminal>
<xsl:value-of select="context"/>
</nonterminal>
</xbgf:horizontal>
<xsl:message>[EXBGF] factor-out ::= horizontal + factor + massage + vertical</xsl:message>
</xsl:when>
<xsl:when test="not(context) and optional">
<xsl:message>[EXBGF] factor-out ::= factor + massage</xsl:message>
</xsl:when>
<xsl:otherwise>
<xsl:message>[EXBGF] factor-out ::= factor</xsl:message>
</xsl:otherwise>
Expand All @@ -1469,18 +1482,91 @@
</sequence>
</bgf:expression>
</xsl:for-each>
<xsl:if test="optional">
<bgf:expression>
<sequence>
<xsl:copy-of select="start/*"/>
<xsl:copy-of select="optional/*"/>
<xsl:copy-of select="tail/*"/>
</sequence>
</bgf:expression>
<bgf:expression>
<sequence>
<xsl:copy-of select="start/*"/>
<xsl:copy-of select="tail/*"/>
</sequence>
</bgf:expression>
</xsl:if>
</choice>
</bgf:expression>
<bgf:expression>
<sequence>
<xsl:copy-of select="start/*"/>
<bgf:expression>
<xsl:copy-of select="choice"/>
</bgf:expression>
<xsl:if test="choice">
<bgf:expression>
<xsl:copy-of select="choice"/>
</bgf:expression>
</xsl:if>
<xsl:if test="optional">
<bgf:expression>
<choice>
<xsl:copy-of select="optional/*"/>
<bgf:expression>
<epsilon/>
</bgf:expression>
</choice>
</bgf:expression>
</xsl:if>
<xsl:copy-of select="tail/*"/>
</sequence>
</bgf:expression>
</xbgf:factor>
<xsl:if test="optional and not(optional/bgf:expression/plus)">
<xbgf:massage>
<bgf:expression>
<choice>
<xsl:copy-of select="optional/*"/>
<bgf:expression>
<epsilon/>
</bgf:expression>
</choice>
</bgf:expression>
<bgf:expression>
<xsl:copy-of select="optional"/>
</bgf:expression>
<xsl:if test="context">
<in>
<nonterminal>
<xsl:value-of select="context[1]"/>
</nonterminal>
</in>
</xsl:if>
</xbgf:massage>
</xsl:if>
<xsl:if test="optional and optional/bgf:expression/plus">
<xbgf:massage>
<bgf:expression>
<choice>
<xsl:copy-of select="optional/*"/>
<bgf:expression>
<epsilon/>
</bgf:expression>
</choice>
</bgf:expression>
<bgf:expression>
<star>
<xsl:copy-of select="optional/bgf:expression/plus/*"/>
</star>
</bgf:expression>
<xsl:if test="context">
<in>
<nonterminal>
<xsl:value-of select="context[1]"/>
</nonterminal>
</in>
</xsl:if>
</xbgf:massage>
</xsl:if>
<xsl:if test="context">
<xbgf:vertical>
<nonterminal>
Expand Down
14 changes: 2 additions & 12 deletions topics/convergence/java/exbgf/correct-read1.exbgf
Original file line number Diff line number Diff line change
Expand Up @@ -84,18 +84,15 @@
<nonterminal>PrimitiveType</nonterminal>
</bgf:expression>
</start>
<choice>
<bgf:expression>
<epsilon/>
</bgf:expression>
<optional>
<bgf:expression>
<optional>
<bgf:expression>
<nonterminal>Dims</nonterminal>
</bgf:expression>
</optional>
</bgf:expression>
</choice>
</optional>
<tail>
<bgf:expression>
<terminal>)</terminal>
Expand All @@ -105,13 +102,6 @@
</bgf:expression>
</tail>
</exbgf:factor-out>
<exbgf:massageC2O>
<optional>
<bgf:expression>
<nonterminal>Dims</nonterminal>
</bgf:expression>
</optional>
</exbgf:massageC2O>
<exbgf:massage-double>
<optional/>
<nonterminal>Dims</nonterminal>
Expand Down
14 changes: 2 additions & 12 deletions topics/convergence/java/exbgf/correct-read2.exbgf
Original file line number Diff line number Diff line change
Expand Up @@ -85,18 +85,15 @@
<nonterminal>PrimitiveType</nonterminal>
</bgf:expression>
</start>
<choice>
<bgf:expression>
<epsilon/>
</bgf:expression>
<optional>
<bgf:expression>
<optional>
<bgf:expression>
<nonterminal>Dims</nonterminal>
</bgf:expression>
</optional>
</bgf:expression>
</choice>
</optional>
<tail>
<bgf:expression>
<terminal>)</terminal>
Expand All @@ -106,13 +103,6 @@
</bgf:expression>
</tail>
</exbgf:factor-out>
<exbgf:massageC2O>
<optional>
<bgf:expression>
<nonterminal>Dims</nonterminal>
</bgf:expression>
</optional>
</exbgf:massageC2O>
<exbgf:massage-double>
<optional/>
<nonterminal>Dims</nonterminal>
Expand Down
14 changes: 2 additions & 12 deletions topics/convergence/java/exbgf/correct-read3.exbgf
Original file line number Diff line number Diff line change
Expand Up @@ -146,18 +146,15 @@
<nonterminal>PrimitiveType</nonterminal>
</bgf:expression>
</start>
<choice>
<bgf:expression>
<epsilon/>
</bgf:expression>
<optional>
<bgf:expression>
<optional>
<bgf:expression>
<nonterminal>Dims</nonterminal>
</bgf:expression>
</optional>
</bgf:expression>
</choice>
</optional>
<tail>
<bgf:expression>
<terminal>)</terminal>
Expand All @@ -167,13 +164,6 @@
</bgf:expression>
</tail>
</exbgf:factor-out>
<exbgf:massageC2O>
<optional>
<bgf:expression>
<nonterminal>Dims</nonterminal>
</bgf:expression>
</optional>
</exbgf:massageC2O>
<exbgf:massage-double>
<optional/>
<nonterminal>Dims</nonterminal>
Expand Down
10 changes: 2 additions & 8 deletions topics/convergence/java/exbgf/edit-read1.exbgf
Original file line number Diff line number Diff line change
Expand Up @@ -189,18 +189,12 @@
<terminal>)</terminal>
</bgf:expression>
</start>
<choice>
<bgf:expression>
<epsilon/>
</bgf:expression>
<optional>
<bgf:expression>
<nonterminal>ClassBody</nonterminal>
</bgf:expression>
</choice>
</optional>
<tail/>
</exbgf:factor-out>
<exbgf:massageC2O>
<nonterminal>ClassBody</nonterminal>
</exbgf:massageC2O>
</exbgf:atomicV>
</exbgf:sequence>
35 changes: 2 additions & 33 deletions topics/convergence/java/exbgf/edit-read2.exbgf
Original file line number Diff line number Diff line change
Expand Up @@ -1344,7 +1344,7 @@
<terminal>{</terminal>
</bgf:expression>
</start>
<choice>
<optional>
<bgf:expression>
<sequence>
<bgf:expression>
Expand Down Expand Up @@ -1373,42 +1373,11 @@
</bgf:expression>
</sequence>
</bgf:expression>
<bgf:expression>
<epsilon/>
</bgf:expression>
</choice>
</optional>
<tail>
<bgf:expression>
<terminal>}</terminal>
</bgf:expression>
</tail>
</exbgf:factor-out>
<exbgf:massageC2O>
<sequence>
<bgf:expression>
<nonterminal>VariableInitializer</nonterminal>
</bgf:expression>
<bgf:expression>
<star>
<bgf:expression>
<sequence>
<bgf:expression>
<terminal>,</terminal>
</bgf:expression>
<bgf:expression>
<nonterminal>VariableInitializer</nonterminal>
</bgf:expression>
</sequence>
</bgf:expression>
</star>
</bgf:expression>
<bgf:expression>
<optional>
<bgf:expression>
<terminal>,</terminal>
</bgf:expression>
</optional>
</bgf:expression>
</sequence>
</exbgf:massageC2O>
</exbgf:sequence>
Loading

0 comments on commit 736728e

Please sign in to comment.