Skip to content

Commit

Permalink
Mostly done over the Atlantic.
Browse files Browse the repository at this point in the history
git-svn-id: https://slps.svn.sourceforge.net/svnroot/slps@126 ab42f6e0-554d-0410-b580-99e487e6eeb2
  • Loading branch information
rlaemmel committed Aug 5, 2008
1 parent 9dee0ed commit ae3f24d
Show file tree
Hide file tree
Showing 16 changed files with 497 additions and 7 deletions.
2 changes: 1 addition & 1 deletion shared/prolog/showxsd.pro
@@ -1,4 +1,4 @@
:- ensure_loaded('ll.pro').
:- ensure_loaded('slps.pro').


main
Expand Down
9 changes: 8 additions & 1 deletion shared/prolog/xsd.pro
Expand Up @@ -221,7 +221,14 @@ xFromCType(S,T1,X)
:-
(
child(name(xsd:complexContent),T1,T2) ->
child(name(xsd:extension),T2,T3)
( require(
child(name(xsd:extension),T2,T3),
'Complex-type restriction unsupported.',
[T2]) % ,
% attribute(base,T3,B1),
% normalizeQName(S,B1,B2),
% require(
)
; T3 = T1
),
( child( (name(xsd:sequence);
Expand Down
2 changes: 1 addition & 1 deletion shared/tools/xsd2btf
Expand Up @@ -8,7 +8,7 @@ LOCAL2=${PWD}
cd ${LOCAL1}

if [ $# -ne 3 ]; then
echo "Usage: xsd2btf <xsd-input> <xml-input> <btf-output>"
echo "Usage: xsd2btf <XSD-input> <XML-input> <BTF-output>"
exit 1
elif [ ! -r $1 ]; then
echo "Oops: $1 not found or not readable."
Expand Down
2 changes: 2 additions & 0 deletions shared/xsd/Makefile
Expand Up @@ -3,6 +3,8 @@ validator = ../../download/msv/msv.jar
build:

test:

check:
ls -1 *.xsd | xargs -n1 java -jar ${validator}

clean:
Expand Down
2 changes: 1 addition & 1 deletion topics/extraction/antlr2bgf/Makefile
@@ -1,4 +1,4 @@
source = ../../fl/java1/fl.g
source = ../../fl/java1/FL.g
target = tests/fl
pkg = slps/antlr2bgf

Expand Down
6 changes: 6 additions & 0 deletions topics/extraction/java2bgf/.classpath
@@ -0,0 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" path=""/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
<classpathentry kind="output" path=""/>
</classpath>
17 changes: 17 additions & 0 deletions topics/extraction/java2bgf/.project
@@ -0,0 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>java2bgf</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>org.eclipse.jdt.core.javabuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.jdt.core.javanature</nature>
</natures>
</projectDescription>
3 changes: 3 additions & 0 deletions topics/extraction/java2bgf/slps/java2bgf/Tool.java
Expand Up @@ -52,6 +52,9 @@ public static void main(String[] args) throws Exception {
}
}
}

if (classes.isEmpty())
throw new RuntimeException("No classes found!");

// Generate one nonterminal per class
for (Class<?> clss : classes) {
Expand Down
21 changes: 18 additions & 3 deletions topics/extraction/xsd2btf/Makefile
@@ -1,14 +1,29 @@
source = ../../fl/shared/fl.xsd
target = tests/fl
fl = ../../../../slps/topics/fl
xsd = ${fl}/xsd/fl.xsd
factorial = ${fl}/xsd/factorial.xml
bgf = ../../../shared/xsd/bgf.xsd
xbgf = ../../../shared/xsd/xbgf.xsd
btf = ../../../shared/xsd/btf.xsd
apps = ../../transformation/xbgf/apps
validator = ../../../download/msv/msv.jar
xsd2btf = ../../../shared/tools/xsd2btf

build:

test:
${xsd2btf} ${xsd} ${factorial} tests/factorial.btf
${xsd2btf} ${xbgf} ${apps}/bgf/bgf1.xbgf tests/bgf1.btf
${xsd2btf} ${xbgf} ${apps}/bgf/bgf2.xbgf tests/bgf2.btf
${xsd2btf} ${xbgf} ${apps}/xbgf/xbgf1.xbgf tests/xbgf1.btf
${xsd2btf} ${xbgf} ${apps}/xbgf/xbgf2.xbgf tests/xbgf2.btf
make check

check:
ls tests/*.btf | xargs java -jar ${validator} ${btf}

clean:
make clean-tests
rm -f *~

clean-tests:
rm -f tests/*.btf
rm -f tests/*.out
16 changes: 16 additions & 0 deletions topics/transformation/xbgf/Makefile
@@ -0,0 +1,16 @@
build:
cd apps/bgf; make build
cd apps/xbgf; make build

rebuild:
make clean
make build

test:
cd apps/bgf; make test
cd apps/xbgf; make test

clean:
rm -f *~
cd apps/bgf; make clean
cd apps/xbgf; make clean
23 changes: 23 additions & 0 deletions topics/transformation/xbgf/apps/bgf/Makefile
@@ -0,0 +1,23 @@
shared = ../../../../../shared
tools = ${shared}/tools
xsd = ${shared}/xsd

build: bgf2.bgf

bgf2.bgf: *.xbgf
${tools}/xsd2bgf ${xsd}/bgf.xsd bgf0.bgf
${tools}/xbgf bgf0.bgf bgf1.xbgf bgf1.bgf
${tools}/xbgf bgf1.bgf bgf2.xbgf bgf2.bgf

rebuild:
make clean
make build

test: build

show: build
${tools}/showbgf bgf2.bgf

clean:
rm -f *~
rm -f *.bgf
23 changes: 23 additions & 0 deletions topics/transformation/xbgf/apps/bgf/bgf1.xbgf
@@ -0,0 +1,23 @@
<xbgf:sequence xmlns:xbgf="http://planet-sl.org/xbgf">
<xbgf:rename>
<nonterminal>
<from>xsd:anyURI</from>
<to>uri</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>xsd:string</from>
<to>string</to>
</nonterminal>
</xbgf:rename>
<xbgf:vertical>
<nonterminal>expression</nonterminal>
</xbgf:vertical>
<xbgf:strip>
<selector>label</selector>
</xbgf:strip>
<xbgf:strip>
<selector>nonterminal</selector>
</xbgf:strip>
</xbgf:sequence>
122 changes: 122 additions & 0 deletions topics/transformation/xbgf/apps/bgf/bgf2.xbgf
@@ -0,0 +1,122 @@
<xbgf:sequence
xmlns:lgf="http://planet-sl.org/lgf"
xmlns:xbgf="http://planet-sl.org/xbgf">
<xbgf:rename>
<nonterminal>
<from>grammar</from>
<to>g</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>production</from>
<to>p</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>expression</from>
<to>x</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>label</from>
<to>l</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>nonterminal</from>
<to>n</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>selector</from>
<to>s</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>terminal</from>
<to>t</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<label>
<from>epsilon</from>
<to>true</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>empty</from>
<to>fail</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>any</from>
<to>a</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>terminal</from>
<to>t</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>nonterminal</from>
<to>n</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>selectable</from>
<to>s</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>choice</from>
<to>;</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>sequence</from>
<to>,</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>optional</from>
<to>?</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>plus</from>
<to>+</to>
</label>
</xbgf:rename>
<xbgf:rename>
<label>
<from>star</from>
<to>*</to>
</label>
</xbgf:rename>
<xbgf:strip>
<selector>selector</selector>
</xbgf:strip>
<xbgf:strip>
<selector>name</selector>
</xbgf:strip>
<xbgf:strip>
<selector>root</selector>
</xbgf:strip>
<xbgf:prune>uri</xbgf:prune>
</xbgf:sequence>
23 changes: 23 additions & 0 deletions topics/transformation/xbgf/apps/xbgf/Makefile
@@ -0,0 +1,23 @@
shared = ../../../../../shared
tools = ${shared}/tools
xsd = ${shared}/xsd

build: xbgf2.bgf

xbgf2.bgf: *.xbgf
${tools}/xsd2bgf ${xsd}/xbgf.xsd xbgf0.bgf
${tools}/xbgf xbgf0.bgf xbgf1.xbgf xbgf1.bgf
${tools}/xbgf xbgf1.bgf xbgf2.xbgf xbgf2.bgf

rebuild:
make clean
make build

test: build

show: build
${tools}/showbgf xbgf2.bgf

clean:
rm -f *~
rm -f *.bgf
69 changes: 69 additions & 0 deletions topics/transformation/xbgf/apps/xbgf/xbgf1.xbgf
@@ -0,0 +1,69 @@
<xbgf:sequence
xmlns:bgf="http://planet-sl.org/bgf"
xmlns:xbgf="http://planet-sl.org/xbgf">
<xbgf:reroot>
<root>transformation</root>
</xbgf:reroot>
<xbgf:vertical>
<nonterminal>transformation</nonterminal>
</xbgf:vertical>
<xbgf:unchain>add</xbgf:unchain>
<xbgf:unchain>define</xbgf:unchain>
<xbgf:unchain>downcase</xbgf:unchain>
<xbgf:unchain>eliminate</xbgf:unchain>
<xbgf:unchain>extract</xbgf:unchain>
<xbgf:unchain>fold</xbgf:unchain>
<xbgf:unchain>horizontal</xbgf:unchain>
<xbgf:unchain>id</xbgf:unchain>
<xbgf:unchain>inline</xbgf:unchain>
<xbgf:unchain>introduce</xbgf:unchain>
<xbgf:unchain>label</xbgf:unchain>
<xbgf:unchain>massage</xbgf:unchain>
<xbgf:unchain>permute</xbgf:unchain>
<xbgf:unchain>project</xbgf:unchain>
<xbgf:unchain>prune</xbgf:unchain>
<xbgf:unchain>remove</xbgf:unchain>
<xbgf:unchain>relabel</xbgf:unchain>
<xbgf:unchain>rename</xbgf:unchain>
<xbgf:unchain>reroot</xbgf:unchain>
<xbgf:unchain>relax</xbgf:unchain>
<xbgf:unchain>restrict</xbgf:unchain>
<xbgf:unchain>sequence</xbgf:unchain>
<xbgf:unchain>skip</xbgf:unchain>
<xbgf:unchain>strip</xbgf:unchain>
<xbgf:unchain>unchain</xbgf:unchain>
<xbgf:unchain>undefine</xbgf:unchain>
<xbgf:unchain>unfold</xbgf:unchain>
<xbgf:unchain>unite</xbgf:unchain>
<xbgf:unchain>vertical</xbgf:unchain>
<xbgf:rename>
<nonterminal>
<from>bgf:production</from>
<to>production</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>bgf:label</from>
<to>label</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>bgf:nonterminal</from>
<to>nonterminal</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>bgf:selector</from>
<to>selector</to>
</nonterminal>
</xbgf:rename>
<xbgf:rename>
<nonterminal>
<from>bgf:terminal</from>
<to>terminal</to>
</nonterminal>
</xbgf:rename>
</xbgf:sequence>

0 comments on commit ae3f24d

Please sign in to comment.