Skip to content

Commit

Permalink
resolved test set looping eternally; added dir structure to web; roll…
Browse files Browse the repository at this point in the history
…ed back unsafe commit to xsd2bgf; fixed xbgf:equate

git-svn-id: https://slps.svn.sourceforge.net/svnroot/slps@812 ab42f6e0-554d-0410-b580-99e487e6eeb2
  • Loading branch information
grammarware committed Jul 11, 2010
1 parent 0ffa7c7 commit 2aa98af
Show file tree
Hide file tree
Showing 5 changed files with 222 additions and 63 deletions.
14 changes: 9 additions & 5 deletions shared/prolog/xbgf1.pro
Expand Up @@ -1460,11 +1460,15 @@ unite(N1,N2,G1,G2)
%
equate(N1,N2,g(Rs1,Ps1),g(Rs2,Ps2))
:-
findN(Ps1,N1,N1Ps1),
splitN(Ps1,N1,N1Ps1,N1Ps1a,N1Ps1b),
findN(Ps1,N2,N2Ps),
xbgf1:renameN(N1,N2,g(Rs1,N1Ps1),g(_,N1Ps2)),
checkforidentity(N1Ps2,N2Ps),
xbgf1:unite(N1,N2,g(Rs1,Ps1),g(Rs2,Ps2)).
xbgf1:renameN(N1,N2,g(Rs1,N1Ps1),g(_,N1Ps2)),
require(
(xbgf1:checkforidentity(N1Ps2,N2Ps)),
'Definitions of nonterminals ~q and ~q must be equal.',
[N1,N2]),
concat([N1Ps1a,N1Ps1b],N1Ps3),
transform(try(xbgf1:renameN_rules(N1,N2)),g(Rs1,N1Ps3),g(Rs2,Ps2)).

checkforidentity([],[]).
checkforidentity([P1|Ps1],Ps2)
Expand All @@ -1473,7 +1477,7 @@ checkforidentity([P1|Ps1],Ps2)
checkforidentity(Ps1,Ps3).

removeproduction(P1,[P2|Ps2],Ps2) :- eqP(P1,P2).
removeproduction(P1,[P2|Ps2],Ps3) :- [P2|removeproduction(P1,Ps2,Ps3)].
removeproduction(P1,[P2|Ps2],[P2|Ps3]) :- removeproduction(P1,Ps2,Ps3).

%
% p([l(verticalL)], f, n(l))
Expand Down
14 changes: 7 additions & 7 deletions shared/prolog/xsd2bgf.pro
Expand Up @@ -594,14 +594,14 @@ uqImportXsd(SGs1,(Pfx,Ns),G1,G4)
SG1 = (S1,_,_),
attribute(targetNamespace,S1,Ns),
transform(try(delpfx_rules(Pfx)),G1,G2),
% definedNs(G2,Defined1),
definedNs(G2,Defined1),
completeXsd(SG1,G3),
% definedNs(G3,Defined2),
% intersection(Defined1,Defined2,Defined3),
% require(
% ( Defined3 == [] ),
% 'XSD import with clashing unqualified names ~q.',
% [Defined3]),
definedNs(G3,Defined2),
intersection(Defined1,Defined2,Defined3),
require(
( Defined3 == [] ),
'XSD import with clashing unqualified names ~q.',
[Defined3]),
G2 = g(Rs1,Ps1),
G3 = g(Rs2,Ps2),
union(Rs1,Rs2,Rs3),
Expand Down
18 changes: 9 additions & 9 deletions topics/transformation/xbgf/Makefile
@@ -1,20 +1,20 @@
build:
cd tests; make build
cd apps; make build
cd ../../fl/lci; make build
cd tests && make build
cd apps && make build
cd ../../convergence/fl && make build

rebuild:
make clean
make build

test:
cd apps; make test
cd tests; make test
cd ../../fl/lci; make test
cd apps && make test
cd tests && make test
cd ../../convergence/fl && make test

clean:
rm -f *~
cd tests; make clean
cd apps; make clean
cd ../../fl/lci; make clean
cd tests && make clean
cd apps && make clean
cd ../../convergence/fl && make clean

71 changes: 71 additions & 0 deletions www/faq.html
@@ -0,0 +1,71 @@
<?xml version="1.0"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:bgf="http://planet-sl.org/bgf" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Software Language Processing Suite — Frequently Asked Questions</title>
<link href="slps.css" rel="stylesheet" type="text/css" />
</head>
<body style="background-color:#9CF;">
<h1>
Software Language Processing Suite
<br/>
Frequently Asked Questions
</h1>
<dl>
<dt>What's the layout of the suite?</dt>
<dd>The topics directory holds all the language processing samples
(aka themes, topics, etc.). Typically, subdirectories of each topic
directory group different "implementations" (aka alternative
approaches, possibly with differing complementary capabilities). The
typical contributor will operate in the directory of one topic,
perhaps only in the directory of one implementation. For instance, the
"fl" topic (fl — Factorial Language) comprises different
implementations of the fl language that cover components such as
parser, pretty printer, evaluator, type checker, and optimizer. There
are different implementations for Java, Haskell, Prolog, and various
language processing technologies. A topic may also hold a "shared"
subdirectory that is meant to hold resources that are reused across
the different implementations. Next to the <i>topics</i> container,
there are also the following directories: <i>www</i> — SLPS web
content; <i>shared</i> — SLPS libraries and infrastructure not
currently assigned to a topic; <i>tools</i> — executable files (such
as scripts) to cover recurring actions in working with SLPS
topics.</dd>
<dt>How to use (install, build, run) the suite?</dt>
<dd>There is no useful way of building or running the suite as a
whole. The different implementations are provided by different people
and rely quite intrinsically on specific libraries and tools that may
require specific effort to get an implementation to work. As a general
rule, each implementation subdirectory of a topic directory should be
documented up to the point that one can build and run it more or less
independently. The use of README files and Makefiles is recommended to
this end. The colllective build and testing of an entire topic (with
several implementations) is often not practical because it would just
require too many third-party libraries and tools to be set up in a
challenging manner.</dd>
<dt>How to become a contributor?</dt>
<dd>Contributors are more than welcome. If you want to become a proper
contributor (with svn access), please submit a short request to the
slps-contributors mailing list or use SourceForge
functionality. Clearly, you need a SourceForge account to be a
contributor. This project uses the BSD license. If you merely want to
discuss issues with existing examples or just offer a quick fix or the
sketch of a new example, then please consider using one of the mailing
lists identified above.</dd>
</dl>
<hr />
<!-- Start of StatCounter Code -->
<script type="text/javascript">
sc_project=3709270;
sc_invisible=1;
sc_partition=44;
sc_security="9a69ae83";
</script>

<script type="text/javascript" src="http://www.statcounter.com/counter/counter_xhtml.js"></script><noscript><div class="statcounter"><a href="http://www.statcounter.com/" target="_blank"><img class="statcounter" src="http://c45.statcounter.com/3709270/0/9a69ae83/1/" alt="site stats" ></a></div></noscript>
<!-- End of StatCounter Code -->

</body>

</html>
168 changes: 126 additions & 42 deletions www/index.html
Expand Up @@ -4,7 +4,7 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Software Language Processing Suite</title>
<link href="../slps.css" rel="stylesheet" type="text/css" />
<link href="slps.css" rel="stylesheet" type="text/css" />
</head>
<body style="background-color:#9CF;">
<h1>
Expand Down Expand Up @@ -38,6 +38,9 @@ <h2>Pages</h2>
<li>
<a href="zoo/java/links.html">Java grammars link repository</a>
</li>
<li>
<a href="faq.html">FAQ (outdated)</a>
</li>
</ul>
<h2>Links</h2>
<ul>
Expand All @@ -52,48 +55,129 @@ <h2>Links</h2>
</li>
</ul>
<hr />
<h2>FAQ</h2>
<h2>Structure</h2>
<dl>
<dt>What's the layout of the suite?</dt>
<dd>The topics directory holds all the language processing samples
(aka themes, topics, etc.). Typically, subdirectories of each topic
directory group different "implementations" (aka alternative
approaches, possibly with differing complementary capabilities). The
typical contributor will operate in the directory of one topic,
perhaps only in the directory of one implementation. For instance, the
"fl" topic (fl — Factorial Language) comprises different
implementations of the fl language that cover components such as
parser, pretty printer, evaluator, type checker, and optimizer. There
are different implementations for Java, Haskell, Prolog, and various
language processing technologies. A topic may also hold a "shared"
subdirectory that is meant to hold resources that are reused across
the different implementations. Next to the <i>topics</i> container,
there are also the following directories: <i>www</i> — SLPS web
content; <i>shared</i> — SLPS libraries and infrastructure not
currently assigned to a topic; <i>tools</i> — executable files (such
as scripts) to cover recurring actions in working with SLPS
topics.</dd>
<dt>How to use (install, build, run) the suite?</dt>
<dd>There is no useful way of building or running the suite as a
whole. The different implementations are provided by different people
and rely quite intrinsically on specific libraries and tools that may
require specific effort to get an implementation to work. As a general
rule, each implementation subdirectory of a topic directory should be
documented up to the point that one can build and run it more or less
independently. The use of README files and Makefiles is recommended to
this end. The colllective build and testing of an entire topic (with
several implementations) is often not practical because it would just
require too many third-party libraries and tools to be set up in a
challenging manner.</dd>
<dt>How to become a contributor?</dt>
<dd>Contributors are more than welcome. If you want to become a proper
contributor (with svn access), please submit a short request to the
slps-contributors mailing list or use SourceForge
functionality. Clearly, you need a SourceForge account to be a
contributor. This project uses the BSD license. If you merely want to
discuss issues with existing examples or just offer a quick fix or the
sketch of a new example, then please consider using one of the mailing
lists identified above.</dd>
<dt>topics</dt>
<dd>
<dl>
<dt>fl</dt>
<dd>
The Factorial Language that is used in the SLPS for prototyping various tools
and approaches. Every subdirectory there is a different implementation of FL:
Java, Haskell, Prolog, etc.
</dd>
<dt>convergence</dt>
<dd>
Grammar convergence scenarios: Factorial Language, Java Language Specification, etc.
</dd>
<dt>extraction</dt>
<dd>
Grammar extractors.
</dd>
<dt>recovery</dt>
<dd>
Grammar recovery attempts that go beyond simple extraction: Grammar Recovery Kit, C#, etc.
</dd>
<dt>grammars</dt>
<dd>
Extracted grammars that form the <a href="zoo/">SLPS Zoo</a>.
Java grammars are also located here.
</dd>
<dt>metasyntax</dt>
<dd>
BNF-like Grammar Format definitions and similar topics. Work in progress.
</dd>
<dt>presentation</dt>
<dd>
Mappers from BGF to elsewhere: pretty-printers, grammar analyses, metrics, normalisations, etc.
</dd>
<dt>transformation</dt>
<dd>
Grammar transformation and language document transformation, complete with test sets.
</dd>
<dt>exercises</dt>
<dd>
Lab exercises for the course Programming Paradigms and Formal Semantics.
</dd>
<dt>documentation</dt>
<dd>
Files needed for Language Documentation.
</dd>
<dt>documents</dt>
<dd>
Language documents. Work in progress.
</dd>
<dt>NielsonN07</dt>
<dd>
Some encodings of semantics derived from Nielson and Nielson, 2007 (and prior versions).
In particular, the denotational semantics of While language.
</dd>
<dt>while</dt>
<dd>
While language. Outdated.
</dd>
<dt>apimigration</dt>
<dd>
API migration. Work in progress.
</dd>
<dt>java</dt>
<dd>
Outdated.
</dd>
</dl>
</dd>
<dt>shared</dt>
<dd>
<dl>
<dt>xsd</dt>
<dd>
XML Schema definitions for various DSLs used in SLPS: BTF, BGF, XBGF, LDF, XLDF, LCF, etc.
</dd>
<dt>xsl</dt>
<dd>
eXtensible Stylesheet Language transformations for mappers and extractors.
Mostly populated with BGF-to-elsewhere mappings, but also Ecore-to-BGF, TXL-to-BGF and LDF-to-elsewhere ones are found here.
</dd>
<dt>prolog</dt>
<dd>
Prolog sources for some extractors and for the XBGF engine (as well as any other future Prolog sources).
</dd>
<dt>python</dt>
<dd>
Python sources for many different SLPS tools, of which the most interesting ones are perhaps LCI and XLDF.
</dd>
<dt>tools</dt>
<dd>
Shell scripts that wrap SLPS tools in a user-friendly way. People who use SLPS frequently are advised to
add this directory to their system PATH.
</dd>
<dt>generators</dt>
<dd>
Shell wrappers for BGF-to-XBGF generators.
</dd>
<dt>wrappers</dt>
<dd>
Shell wrappers for running parsers and evaluators in order to generalize
their interface for the LCI. These wrappers are rarely, if ever, executed by a human.
</dd>
<dt>edd</dt>
<dd>
EBNF Dialect Definitions. Work in progress.
</dd>
</dl>
</dd>
<dt>download</dt>
<dd>
Automated installers for third party software which is needed for SLPS stuff to work.
ANTLR, FOP, JastAdd, MSV, ElementTree, GDK, PyParsing, etc.
</dd>
<dt>www</dt>
<dd>
Web content for this page, the FAQ, the Zoo, the XBGF manual, etc.
The makefile is configured to be easily used by <a href="mailto:zaytsev.vadim@googlemail.com">VZ</a>
and <a href="mailto:rlaemmel@acm.org">RL</a>, so it seems
more reasonable to contact one of them if you want anything changed there.
</dd>
</dl>
<hr />
<!-- Start of StatCounter Code -->
Expand Down

0 comments on commit 2aa98af

Please sign in to comment.