... gr2.l.1
Note that the simplest grammars presented in the manual use the standard phrase structure approach S -> NP VP. More advanced grammars use a systemic approach to language (after gr4). In general, the FUG formalism is convenient to write systemic grammars, but it can also be used to implement other linguistic models (PS rules, LFG, GPSG or HPSG).
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... one.2
Note that the possibility to put paths on the left increases the expressive power of the external construct, as it becomes possible to express at run-time constraints on constituents which are not dominated by the position of the external construct in the structure.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
...23
When using a path on the left, note that the right hand side of the equation is always interpreted as occurring in the context pointed to by the left-hand side. So if you need to use relative paths, the relative path on the right is relative to the end position of the left-hand side. For example, to unify two features {verb syntax number} and {prot number} at level {verb v}, you must write:

((verb ((v (({^ syntax number} {^ ^ ^ prot number}))))))

and not:

((verb ((v (({^ syntax number} {^ prot number}))))))

because in this second equation, the path {^ prot number} is relative to the level {verb syntax number} (not {verb v} as intended) and therefore would end up at level {verb syntax prot number} instead of {prot number}.

.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... ((process build) (agent Steve) (object ((concept crane) (weight 2) (height 4)))) build(Steve, Crane(C1, 2, 4)) 4
Other representations are of course possible using first-order notation. Some of them have some of the advantages of features structures. For example: build(B1), agent(B1, Steve), object(B1, C1), crane(C1), weight(C1, 2), height(C1, 4). In fact, any FD can always be translated in a one-to-one mapping to a class of restricted first-order terms.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... role.5
In most cases, however, one feature plays a special role: for example, the cat attribute can specify the category or type of a description, but this is not built into the syntax, and several such ``special'' attributes can coexist in the same FD, allowing a reader to adopt several perspectives on the same FD.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... specification.6
Keep in mind that this facility is above all designed for use in large grammars, and the short fragments shown here could easily be handled without incremental CSETs.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... function.7
This means that when given is used, unification is no longer symmetric, but it remains order-independent and monotonic.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... FUF.8
Note that it is also possible to define lists as procedural types, with any desired specialized unification procedure. But in that case, lists are used as black boxes into which path expressions cannot enter.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... below:9
This notion of typing is similar to the Y-terms defined in [#!Ait-kaci!#].
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... NONE].10
In this example, the grammar could be a simple flat alternation ((cat ((alt (noun pronoun personal-pronoun ... common mass-noun count-noun))))), but this expression would hide the structure of the grammar.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... process-type.11
Note that this is not even correct, since any other attribute (besides the names of roles) could still be accepted by the grammar.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... constructs.12
A opt construct is actually an alt with 2 branches, one being the trivial nil. It would not make sense to index it. A pattern construct is ambiguous because patterns like (...a...b...) and (...c...d...) can be combined in many ways. Actually, it is always more efficient to put patterns at the end of the grammar, because much of the ambiguity generated by these patterns would not change the unification anyway, except when the (* constituent) device is used. In any case, the equivalent of `indexing' a pattern, that is reducing the ambiguity, is to use as few dots as possible in the patterns.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... failure.13
In an FD, each embedded feature can be viewed as an equation between the path leading to the feature in the total FD and the feature value.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... measurements.14
In this table, DN abbreviates Denver Nuggets and BC abbreviates Boston Celtics.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... value.15
Special attributes (user defined types) can also issue user-defined syntax messages through the use of syntax-checker functions. Cf section on user-defined types for details.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... module.16
on Common Lisp II, the function require is generally not supported anymore. Most of the commercial implementations of Common Lisp, however, still have a form of require available.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
... forced.17
NOTE: These 2 issues require further optimization: when do you awake a frozen disjunction and which one do you force first can be decided by some sort of dependency analysis, but one that can be done statically by building incrementally a complex data-structure, otw the cost of the analysis would not be justified. Practically, the first issue is most important: it determines how much overhead is added on ALL disjunctions when freeze is used. I am experimenting currently with a ``granularity'' control system, which controls how often the agenda of frozen disj. is checked. This is currently not implemented.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
Michael Elhadad - elhadad@cs.bgu.ac.il