<< Previous | - Up - | Next >> |
The TDG grammar formalism is still under development, and hence it may not be sufficient to account for everything. The parser implementation described herein however allows to formulate additional constraints using a plugin system. We have included in this package the plugin-file "Plugins-de.oz", containing two additional procedures in which additional constraints for the grammar in grammar file "grammar-de.dg" are formulated.
We also provide a plugin-dummy file with no additional constraints called "Plugins-dummy.oz". The dummy file contains the following code:
functor export Plugins define Plugins = o end
which is also the minimal code required for a plugin. Plugins are
functors exporting the record Plugins
which has to be
labeled with o
. In the dummy file, this record is empty.
We turn to the example plugin-file Plugins-de.oz
. The
Plugins record specified in this file is displayed below:
Plugins = o(relative: o(type:bool label:'Relative clause principle' default:true procedure:Relative) root: o(type:radio label:'Root node label' values:[o(label:'no restriction' value:norestr) o(label:'n' value:n) o(label:'v12' value:v12) o(label:'v' value:v)] default:norestr procedure:Root))
The arity of the plugin record consists of the names of the individual
constraints formulated in the plugin code file, here:
relative
and root
. The values of these
features are again records characterizing the constraints. These
records are also applied in the generation of the plugins-pulldown
menu in the graphical user interface (see chapter
5). The arity of this record comprises the features
type
, label
, values
,
default
and procedure
.
The feature type
denotes either bool
for a
constraint which can be turned on and off or radio
for a
constraint which can be further parametrized. The constraint
relative
in the example is of type bool
and
the constraint called root
of type radio
.
The feature label
is used to assign a label to the
respective constraint. The value of label
is an atom.
This label is used in the generation of the plugins-pulldown menu in
the GUI. In the example, the relative
-constraint is
assigned label 'Relative clause principle'
and the
root
-constraint label 'Root node label'
.
The feature values
only applies for constraints of type
radio
. Its value is a list of records describing the
different parameters of the constraint. This record has the two
features label
and value
. label
is a label for the respective parameter (used for pulldown-menu
generation in the GUI) and value
is the abbreviated name
of the parameter. In the example, the list of parameters contains e.g.
a parameter with label 'no restriction'
and value
norestr
.
The feature default
denotes a default value for the
parameter. Constraints of type bool
are either
true
or false
, and constraints of type
radio
are given either of the parameters defined in
values
above. In the example, the default value of the
constraint relative
is true
and the default
value of the constraint root
is norestr
.
Finally, the feature procedure
denotes the constraint
itself. As an example, we show below abbreviated versions of the two
constraints defined in "Plugins-de.oz". First, the
relative
-constraint:
proc {Relative Signs Param G} if Param then ... end end
Each plugin procedure has three arguments: Signs
is the
list of signs of the current parse. Param
is the
parameter given to the procedure: true
or
false
for constraints of type bool
, or one
of the values defined under values
for constraints of
type radio
. Finally, G
is the grammar
which the current parse uses.
An outline of the root
-constraint is shown below:
proc {Root Signs Param G} case Param of norestr then ... [] n then ... [] v12 then ... [] v then ... end end
Here, we make a case distinction because the parameter
Param
is not boolean as before but either
norestr
, n
, v12
or
v
.
<< Previous | - Up - | Next >> |