diff --git a/shared/xsd/Makefile b/shared/xsd/Makefile
index 2a7c1213..85e52930 100644
--- a/shared/xsd/Makefile
+++ b/shared/xsd/Makefile
@@ -7,11 +7,11 @@ test:
make check
check:
- make check1 arg=bgf.xsd
- make check1 arg=xbgf.xsd
- make check1 arg=xbgf.xsd
- make check1 arg=btf.xsd
- make check1 arg=ldf.xsd
+ @make check1 arg=bgf.xsd
+ @make check1 arg=xbgf.xsd
+ @make check1 arg=xbgf.xsd
+ @make check1 arg=btf.xsd
+ @make check1 arg=ldf.xsd
check-old:
@for file in *.xsd ; \
@@ -23,10 +23,10 @@ check-old:
done
check1:
- echo Validating $$arg ... ; \
- java -jar ${validator} $$arg ; \
- echo Translating $$arg to BGF ... ; \
- ${viewer} $$arg > /dev/null ;\
+ @echo Validating $$arg ...
+ @java -jar ${validator} $$arg
+ @echo Translating $$arg to BGF ...
+ @${viewer} $$arg > /dev/null
clean:
rm -rf bin obj
diff --git a/shared/xsd/lcf.xsd b/shared/xsd/lcf.xsd
index d1d847b0..6fb90d8a 100644
--- a/shared/xsd/lcf.xsd
+++ b/shared/xsd/lcf.xsd
@@ -11,6 +11,8 @@
LCF Configuration Format, where
LCI = Language Convergence Infrastructure
+
+ Part of SLPS = Software Language Processing Suite
@@ -19,6 +21,7 @@
+
@@ -29,6 +32,14 @@
+
+
+ An action in LCF is a transformation step.
+ Usually an action is defined as a reference to an XBGF file with a sequence of atomic grammar transformations
+ grouped by one theme.
+ Actions are combined in chains to get from sources and intermediate targets to one final target.
+
+
@@ -43,76 +54,101 @@
+
+
+ An shortcut in LCF is just a simple macro.
+ If binds a longer definition to a concise name.
+ For example, a path with long directory names that is used multiple times in the LCF document is a good shortcut.
+ Shortcuts can be defined on basis of other shortcuts defined before them in the LCF file.
+
+
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+ An expand in LCF is a way to use macros.
+ The volatile expand references a user-defined shortcut.
+ The expand-action is substituted with a name of an action inside which it is used.
+ The expand-input is substituted with a name of the file that is the main input for the parser/evaluator.
+ The expand-output is substituted with a name of the file that is produced by the parser/evaluator.
+ The expand-context is substituted with a name of the file that contains a context for the evaluator.
+ The expand-yields is substituted with a value that the evaluator is expected to return.
+
+ For more information on sample-related matters, consult LDF schema.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A command in LCF is something that is possible to run with a given shell.
+ If one needs to redirect the output stream (stdout), use the @out attribute.
+ If one needs to redirect the error stream (stderr), use the @err attribute.
+
+
+
+
+ A source in LCF is the starting point for the grammar convergence.
+ A source must have a name by which it will be referenced later.
+ A source must have a defined extractor that provides LCI with a BGF.
+ A source may have a parser and an evaluator defined as commands - if they are present, they will be tested.
+
+
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
@@ -134,6 +170,18 @@
+
+
+ A target in LCF is the convergence point.
+ A target must have a name by which it is referenced and displayed on a diagram.
+ A target can have any number of branches.
+ Each branch defines an input that can be either source name or a target name.
+ Each branch also references a sequence of actions that are performed on that source or target to reach this target.
+ Once all branches are made, a diff tool is run to make sure all results converge.
+ If there is one branch, no diffing takes place.
+ If there are three or more branches, diffs occur pairwise.
+
+
@@ -147,4 +195,30 @@
+
+
+
+ A tool in LCF is an external script.
+ At this point there are three tools which output is needed by LCI:
+ The validator makes sure that the BGFs are valid against their schema.
+ This includes extracted BGFs as well as all derived BGFs.
+ If the validator is not defined, LCI works fine without it.
+ The diff tool takes two parameters and returns zero if both BGFs are deemed equal.
+ If the diff tool is not defined, LCI can only work with one-branch targets.
+ The testset generates a test set in LDF, presumably by taking it from a bigger LDF document.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+