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. + + + + + + + + + + + + + + +