;;; -*- Mode: TDL; Package: LKB -*-
;;;
;;; HPSG Grammar Matrix
;;;
;;; $Id: matrix.tdl,v 1.51 2008-05-23 01:44:21 sfd Exp $
;;;
;;; Copyright (c) 2002-2005
;;; Emily M. Bender, Dan Flickinger, Stephan Oepen
;;; see licence.txt for conditions
;;;
;;; Projects using the Grammar Matrix should reference
;;; http://www.delph-in.net/matrix, the version used
;;; and Bender, Flickiner, & Oepen 2002.
;;;
;;; Based on:
;;;
;;; LinGO Grammar: fundamentals.tdl
;;; Copyright Daniel Flickinger 1994-2001
;;; Initial development Rob Malouf, 3-Nov-1994
;;;
;;; JACY Grammar: fundamentals.tdl, mrsbasic.tdl
;;; Developed by Melanie Siegel, Emily M. Bender
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Top-level feature geometry
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Types for Sign, Word, Phrase, and Lex-Entry
sign-min := avm &
[ STEM list ].
basic-sign := sign-min &
[ KEY-ARG bool ].
sign := basic-sign &
[ SYNSEM synsem,
ARGS list,
INFLECTED bool ].
; C-CONT encodes the semantic contribution of the rule (phrasal
; or lexical).
phrase-or-lexrule := sign &
[ SYNSEM canonical-synsem &
[ LOCAL.CONT.HOOK #hook],
C-CONT mrs-min & [ HOOK #hook] ].
word-or-lexrule-min := sign-min.
; ALTS allow lexical entries to block lexical rule application
; ARG-ST is the argument structure list. It appears only on
; lexical items (words or lexical rules), not on phrases.
word-or-lexrule := word-or-lexrule-min & sign &
[ ALTS alts-min,
ARG-ST list ].
nocoord := sign &
[ SYNSEM.LOCAL.COORD - ].
alts-min := avm.
alts := alts-min &
[ PASSIVE bool ].
no-alts := alts-min.
; Not all words have lex-synsem - e.g. lexical PPs like "tomorrow" are
; phr-synsem since they can be post-nominal modifiers.
word := word-or-lexrule & nocoord.
lex-item := word-or-lexrule & nocoord.
;; Not all phrases have SYNSEM phr-synsem, since we need to allow the
;; head-comp rules to build signs which are still [ SYNSEM lex-synsem
;; ], for constructions like "twenty-two" and "five fifteen p.m.". So
;; most phrases will assign the type phr-synsem to the value of
;; SYNSEM, but not all.
phrase := phrase-or-lexrule.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Affixation
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
non-affix-bearing := word-or-lexrule &
[ INFLECTED +,
SYNSEM.LKEYS.KEYREL.WLINK cons ].
; Rule
rule := sign &
[ RULE-NAME string ].
; LABEL-NAME and META used for labeling nodes in parse trees
tree-node-label := *top* &
[ NODE sign ].
label := sign &
[ LABEL-NAME string ].
; For complex node labels, like S/NP
meta := sign &
[ META-PREFIX string,
META-SUFFIX string ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; SYNSEM values
; ERB 2004-05-10 DEF-OPT and OPT are used in the analysis of
; optional complements (null instantiation). DEF-OPT allows words
; to lexically specify how their arguments will be interpreted
; in case of null instantiation. This solution may be superceded
; by a Sem-I based alternative.
; ERB 2007-02-05 Moving to an analysis of discourse status/cognitive
; status of referents following Borthen & Haugereid 2005. Replacing
; DEF and DEF-OPT with COG-ST and OPT-CS.
synsem-min := avm &
[ OPT bool,
OPT-CS cog-st,
LOCAL mod-local,
NON-LOCAL non-local-min ].
; The feature LIGHT is used to model phenomena which distinguish
; shorter words from longer ones, or constituents which are lexical
; or nearly so from larger phrases. It is inspired by the work
; of Abeille and Godard (e.g., 2003).
lex-or-phrase-synsem := synsem-min &
[ LIGHT luk ].
synsem := synsem-min.
expressed-synsem := synsem.
canonical-synsem := expressed-synsem &
[ MODIFIED xmod ].
lex-synsem := canonical-synsem & lex-or-phrase-synsem &
[ LOCAL local-min,
LIGHT +,
LKEYS lexkeys ].
; ERB (2005-08-10) We want to make sure that head-comp phrases
; don't have the feature LKEYS, even if they are LIGHT +.
phr-synsem-min := canonical-synsem & lex-or-phrase-synsem &
[ LOCAL local-min ].
phr-synsem := phr-synsem-min &
[ LIGHT - ].
non-canonical := synsem &
[ LOCAL.CONT.HOOK.INDEX event-or-ref-index ].
expressed-non-canonical := non-canonical & expressed-synsem.
gap := expressed-non-canonical &
[ LOCAL #local,
NON-LOCAL [ REL 0-dlist,
QUE 0-dlist,
SLASH 1-dlist &
[ LIST < #local > ] ] ].
unexpressed := synsem-min &
[ NON-LOCAL [ SLASH 0-dlist,
REL 0-dlist,
QUE 0-dlist ] ].
unexpressed-reg := unexpressed & non-canonical.
anti-synsem := unexpressed &
"A contrasting type to ordinary synsems (expressed
and unexpressed) which is sometimes useful. No longer
explicitly used in the Matrix.".
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LOCAL & NON-LOCAL values
mod-local := avm.
; sfd 08/02/2005: Added COORD and COORD-REL for coordination. COORD
; is a bool that's used to enforce the syntax of coordination.
; COORD-REL is the coordination relation.
local-min := mod-local &
[ CAT cat-min,
CONT mrs-min,
AGR individual,
COORD bool,
COORD-REL coordination-relation,
COORD-STRAT string ].
local := local-min &
[ CTXT ctxt-min ].
; Types for distinguishing scopal v. intersective modifiers.
; (These types are used in the MOD value of modifiers, and
; referenced by the scopal/intersective head-adjunct rules.)
scopal-mod := local.
intersective-mod := local.
non-local-min := avm.
non-local := non-local-min &
[ SLASH 0-1-dlist,
QUE 0-1-dlist,
REL 0-1-dlist ].
non-local-none := non-local &
[ SLASH 0-dlist & [ LIST < > ],
QUE 0-dlist,
REL 0-dlist ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; CAT values
cat-min := avm.
; ERB 2004-05-05 Following ERG, add a feature HC-LIGHT which indicates
; whether a head-comp phrase projected from a head is treated as light
; or heavy. That is, whether or not a phrase consisting of heads and
; complements is light or heavy is taken to be a lexical property of
; the head.
; MC stands for 'Main clause', and is used to distinguish phenomena
; which can only occur in main (+) or subordinate clauses (-). The
; value of MC is luk, allowing for a third possibility of na, for
; not applicable.
cat := cat-min &
[ HEAD head-min,
VAL valence-min,
MC luk,
HC-LIGHT luk,
POSTHEAD bool ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; HEAD
head-min := avm.
; It is expected that head will have many more features, but it
; is not yet clear which are relevant crosslinguistically. In
; the English grammar, HEAD features include CASE, PRD, AUX, INV,
; TAM, and VFORM. (Re: TAM --- it is sometimes useful to have the
; semantic information encoded in EVENT.E accessible via the head
; path.)
head := head-min &
[ MOD list,
KEYS keys_min ].
; (ERB 2004-08-19) We had previously shied away from defining head
; types because even head types that are expected to occur across
; all languages are probably grouped differently in the head subhierarchy
; for different languages. There are plenty of things which we
; think will be the same across languages, however. Thus the current
; strategy is to allow for all possible groupings of head types,
; and expect most of the disjunctive types to be ignored in most
; languages. Perhaps one day the LKB will be modified so that
; users can declare certain types to suppress in the hierarchy
; displays.
; One recent LKB addition which will be helpful here is the
; type addendum statements (':+'). Head types often bear
; features, but none are declared for any of these Matrix head
; types, since we don't yet know of any universal ones. With
; the new ':+' notation, you can add constraints (including feature
; declarations) to existing types. We encourage you to use this
; when adding information to Matrix types, but not to types defined
; solely within your grammar. For example:
; CASE on nouns:
; noun :+
; [ CASE case ].
; VFORM on verbs and complementizers
; +vc :+
; [ FORM form].
; We expect that particular grammars will need to add new head
; types, and may find that the new types should inherit from
; existing disjunctions. If you do this, we encourage you to
; make use of type addendum statements (':+') to add a comment
; to the existing disjunction, e.g.:
; co-verb := +jv.
; +jv :+
; "Adjectives, verbs, and co-verbs.".
; Anticipated future developments include Lisp commands for
; generating the appropriate type addenda and/or additional
; types when you want to add a new head type.
; Our basic inventory of head types will consist of
; verb (v), noun (n), adjective (j), adverb (r), adposition (p),
; complementizer (c), determiner (d), number-name (m),
; and conjunction (o). The letters in parentheses indicate
; the abbreviation for each part of speech used in the disjunctive
; types. Each disjunctive type is also associated with
; a documentation string explaining the disjuncts.
; With all the disjuntive types, we need 510 types to encode this.
; The parent types are in a separate file called head-types.tdl, with
; just the leaves here.
conj := +mo & +do & +co & +po & +ro & +jo & +vo & +no.
num := +mo & +dm & +cm & +pm & +rm & +jm & +vm & +nm.
det := +do & +dm & +cd & +pd & +rd & +jd & +vd & +nd.
comp := +co & +cm & +cd & +pc & +rc & +jc & +vc & +nc.
adp := +po & +pm & +pd & +pc & +rp & +jp & +vp & +np.
adv := +ro & +rm & +rd & +rc & +rp & +jr & +vr & +nr.
adj := +jo & +jm & +jd & +jc & +jp & +jr & +vj & +nj.
verb := +vo & +vm & +vd & +vc & +vp & +vr & +vj & +nv.
noun := +no & +nm & +nd & +nc & +np & +nr & +nj & +nv.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; VAL
valence-min := avm.
valence := valence-min &
[ SUBJ list,
SPR list,
COMPS list,
SPEC list,
--KEYCOMP avm ].
keys_min := avm.
keys := keys_min &
[ KEY predsort,
ALTKEY predsort ].
; One of a grammatically salient inventory of semantic sorts, such as
; 'animate' or 'time'
semsort :< sort.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; CONT values
;
; HOOK : Externally visible attributes of a sign
; RELS diff-list ; List of semantic relations
; HCONS diff-list ; Scope constraints: list of qeq's
mrs-min := avm.
; ERB 2007-01-21 Removing feature MSG here (moving it to a feature--SF---
; of events).
mrs := mrs-min &
[ HOOK hook,
RELS diff-list,
HCONS diff-list ].
; HOOK values include
; LTOP ; Local top handle
; INDEX ; The salient nominal instance or event
; XARG ; The external (controlled) argument of a phrase
hook := avm &
[ LTOP handle,
INDEX individual,
XARG individual ].
; MRSs are divided into psoas (with a distinguished event) and
; nom-objs (with a distinguished index). We use a polymorphic
; attribute name INDEX for both of these, to simplify manipulation of
; these objects; for example, modifying PPs assign as their ARG's
; value the INDEX of the phrase they modify, whether it's an N-bar
; (with a ref-ind value) or a VP (with an event value). Similarly
; useful for coordination.
psoa := mrs &
[ HOOK.INDEX event ].
nom-obj := mrs &
[ HOOK.INDEX index ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; LKEYS attributes, providing pointers to semantic relations and complement
; predsorts in lexical types:
; KEYREL relation ; Pointer to main relation in RELS
; ALTKEYREL relation ; Pointer to an alternate relation in RELS
; --COMPKEY predsort ; Pointer to the first complement's KEY predsort
; --OCOMPKEY predsort ; Pointer to the oblique complement's KEY predsort
lexkeys := avm &
[ KEYREL relation,
ALTKEYREL relation,
--COMPKEY predsort,
--OCOMPKEY predsort ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; CTXT values
ctxt-min := avm.
ctxt := ctxt-min &
[ ACTIVATED bool,
PRESUP diff-list ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Basic semantic types
; The message represents the semantic type of a clause (cf. Ginzburg &
; Sag 2000). All clauses have messages. Elements that take clauses
; as semantic arguments should end up with the LBL of the clause as
; the value of ARGn, L/R-HNDL, etc. The MARG (message argument) of a
; message is a handle that qeqs the LBL of the main verb in the clause.
; This leaves room for quantifiers to scope at each clause without
; allowing scope ambiguity between quanitifers and messages, as it is
; not clear what that would mean.
; ERB 2007-01-21 Moving to a message free universe.
;basic_message := relation.
;message := basic_message &
; [ PRED message_m_rel,
; MARG handle ].
;no-msg := basic_message.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Message preds
; ERB 2007-01-21 Moving to a message free universe.
;message_m_rel := predsort.
;command_m_rel := message_m_rel.
;prop-or-ques_m_rel := message_m_rel. ;for COMPS of e.g. 'know'
;proposition_m_rel := prop-or-ques_m_rel.
;abstr-ques_m_rel := prop-or-ques_m_rel.
;question_m_rel := abstr-ques_m_rel.
; Subtype of int_rel for tag questions and structures in other languages
; with equivalent pragmatics.
;ne_m_rel := abstr-ques_m_rel.
; Constrains handle of scopable argument HARG relative to one
; outscoped LARG handle (the "H" is mnemonic for either "higher" or
; "hole" argument, while the "L" is mnemonic for either "lower" or
; "label" argument.
qeq := avm &
[ HARG handle,
LARG handle ].
semarg := avm &
"INSTLOC is used by generator to index input. Changed from
value instloc to value string in July 2004. The grammar
should never need to make reference to it beyond this."
[ INSTLOC string ].
handle := semarg.
individual := semarg &
[ SORT semsort ].
; The INDEX value of a nom-obj is an index (expletive or
; referential).
; ERB 2004-05-10 Add a feature DEF which encodes definiteness
; for (in)definite null instantiation, and possibly other uses.
; The null instantiation use might get superceded by a Sem-I based
; solution.
; ERB 2007-02-05 Moving to an analysis of discourse status/cognitive
; status of referents following Borthen & Haugereid 2005. Replacing
; DEF and DEF-OPT with COG-ST and OPT-CS.
; ERB 2007-05-16 Can't put SPECI inside COG-ST, or the generator won't
; pay attention to the value of COG-ST. So, making it parallel.
index := individual &
[ COG-ST cog-st,
SPECI bool ].
; ERB 2007-02-05 Hierarchy from Borthen and Haugereid of possible
; COG-ST values. Departing from B&H analysis by putting SPECI on
; this type (as well as by making COG-ST a feature of indicies rather
; than parallel to the indices in the next level up).
cog-st := avm.
activ-or-less := cog-st.
uniq-or-more := cog-st.
uniq+fam+act := activ-or-less & uniq-or-more.
fam-or-less := activ-or-less.
fam-or-more := uniq-or-more.
activ+fam := uniq+fam+act & fam-or-more.
uniq+fam := uniq+fam+act & fam-or-less.
uniq-or-less := fam-or-less.
activ-or-more := fam-or-more.
type-id := uniq-or-less.
uniq-id := uniq-or-less & uniq+fam.
familiar := uniq+fam & activ+fam.
activated := activ+fam & activ-or-more.
in-foc := activ-or-more.
; This is the type of the index of the phrase modified by predicative
; PPs, which can either modify a ref-ind nominal or an event VP.
event-or-ref-index := individual.
; Expletives get distinguished index type so they can be
; selected semantically. In English, this type has subtypes
; for it and there. Most languages have at most one expletive,
; so those aren't included here.
expl-ind := index.
ref-ind := index & event-or-ref-index &
[ PNG png ].
; Types encoding agreement information, analyzed as a part of the
; index, following Pollard & Sag 1994. Which subtypes and features
; are appropriate seems highly language dependent. The agreement
; system of English doesn't justify a full cross-classification of
; number and gender, so the features of png are PN and GENDER in the
; English grammar. (See Flickinger 2000.) Sag & Wasow 1999 declare
; GENDER as a feature of the png type 3sg.
png := avm.
; Create subtypes of tense, aspect and mood as appropriate.
tense := sort.
aspect := sort.
mood := sort.
tam := avm &
[ TENSE tense,
ASPECT aspect,
MOOD mood ].
; ERB 2006-10-05 First pass at de-messaging. I'm going to leave
; the messages in for now, but add a feature MESG to events. Will
; have to update once I see what Dan has actually done with the ERG.
; ERB 2006-10-05 Update this little hierarchy enventually to
; include commands, etc.
; ERB 2007-01-21 Consider renaming the feature MSG to something more
; reminiscent of illocutionary force?
; ERB 2007-01-22 MSG renamed SF.
iforce := avm.
prop-or-ques := iforce.
prop := prop-or-ques.
ques := prop-or-ques.
comm := iforce.
event := event-or-ref-index &
[ E tam,
SF iforce ].
; Coordinated phrases have coordinated indices as their INDEX
; values. These are meant to be interpreted as pointers to
; the set of coordinated indices.
coord-index := event-or-ref-index.
coord-event := coord-index & event.
coord-ref-ind := coord-index & ref-ind.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Basic relation types
; Relations are classified according to the types of arguments they take. All
; relations have a handle. In addition, quantifier relations have a bound
; variable and a restriction, nominal relations have an instance, and event
; relations have an event. Furthermore, nominal relations and event relations
; can have additional roles, depending on their meaning.
; WLINK links semantic relation to input string elements, more or less.
; This becomes useful whenever a grammar is used in some application.
relation := avm &
[ LBL handle,
WLINK list,
PRED predsort ].
; Abstract relation subtypes. We recommend not positing a type
; for each lexical relation, but rather using the feature PRED
; to distinguish different lexical relations of the same type.
; Relation types are modified in one of two circumstances:
;
; (i) A feature needs to be introduced that is relevant for some
; relations and not others, or
;
; (ii) Something in the grammar needs to make reference to a family
; of relations that are not otherwise distinguished by a type.
arg0-relation := relation &
[ ARG0 individual ].
arg1-relation := arg0-relation &
[ ARG1 semarg ].
arg12-relation := arg1-relation &
[ ARG2 semarg ].
arg123-relation := arg12-relation &
[ ARG3 semarg ].
arg1234-relation := arg123-relation &
[ ARG4 semarg ].
event-relation := arg0-relation &
[ ARG0 event ].
arg1-ev-relation := arg1-relation & event-relation.
arg12-ev-relation := arg1-ev-relation & arg12-relation.
arg123-ev-relation := arg12-ev-relation & arg123-relation.
arg1234-ev-relation := arg123-ev-relation & arg1234-relation.
; Noun relations
noun-relation := arg0-relation &
[ ARG0 ref-ind ].
; Relational nouns like 'picture' or 'claim' take an additional semantic
; argument
noun-arg1-relation := noun-relation & arg1-relation.
; 02-12-2009 gcs extracted carg-relation from named-relation
carg-relation := relation & [ CARG string ].
named-relation := noun-relation & carg-relation & [ PRED named_rel ].
; coordinating and subordinating conjunctions
subord-or-coord-relation := relation &
[ L-HNDL handle,
R-HNDL handle ].
coordination-relation := subord-or-coord-relation &
[ C-ARG coord-index,
L-INDEX individual,
R-INDEX individual ].
; NB: "if_then_rel" is now a PRED value of subord-relation.
subord-relation := subord-or-coord-relation.
; quantifier relation
quant-relation := arg0-relation &
[ ARG0 ref-ind,
RSTR handle,
BODY handle ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; predsorts
norm_rel := predsort.
named_rel := norm_rel.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Head types
; Values for head features such as CASE, VFORM, ...
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Sorts for atomic values
; person, number and gender
; clause mode
; voice
; mood
; pronoun type
; Three-valued sort evoking Polish logician Jan Lukasiewicz
luk := sort.
; These types allow the statement of constraints (e.g., in
; subcategorization) of the form: If you care, you must have
; the value + (-), but you don't have to care. Useful for keeping
; down the number of constructions and subcategorization types.
na-or-+ := luk.
na-or-- := luk.
+-or-- := luk.
na := na-or-+ & na-or--.
bool := luk.
+ := bool & na-or-+ & +-or--.
- := bool & na-or-- & +-or--.
; Three-valued sort for distinguishing unmodified signs from both
; left-modified and right-modified signs PERIPH indicates whether this
; modifier is left- or right-peripheral in its phrase - e.g., "the IBM
; temporary employees" but "*the IBM five employees"
xmod := sort &
[ PERIPH luk ].
notmod-or-rmod := xmod.
notmod-or-lmod := xmod.
notmod := notmod-or-rmod & notmod-or-lmod.
hasmod := xmod.
lmod := hasmod & notmod-or-lmod.
rmod := hasmod & notmod-or-rmod.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Basic types
sort := *top*.
predsort := sort.
atom := predsort.
no-pred := predsort.
avm := *top*.
list := avm.
cons := list &
[ FIRST *top*,
REST *top* ].
0-1-list := list.
1-list := 0-1-list & cons &
[ REST null ].
null := 0-1-list.
1-plus-list := cons &
[ REST cons ].
diff-list := avm &
[ LIST list,
LAST list ].
0-1-dlist := diff-list &
[ LIST 0-1-list ].
0-dlist := 0-1-dlist &
[ LIST #list,
LAST #list ].
; ADD DOC -- don't use for lists which are constructive.
; might be good now -- circular structure check?
; dpf will look into it. -- remove null?
1-dlist := 0-1-dlist &
[ LIST 1-list &
[ REST #rest ],
LAST #rest ].
; This type shows the basic form for diff-list appends.
; It is not meant to be used as a supertype. Actual instances
; of diff-list append will involve different features in different
; relationships to each other & the feature geometry.
dl-append := avm & [APPARG1 [LIST #first,
LAST #between],
APPARG2 [LIST #between,
LAST #last],
RESULT [LIST #first,
LAST #last]].
integer := atom.
; NB: strings should be enclosed in double quotes, e.g., [PRED "named_rel"].
string := atom.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Some useful kinds of lists
; A list of optional arguments.
olist := list.
ocons := olist & cons &
[ FIRST unexpressed & [ OPT + ],
REST olist ].
onull := olist & null.
; The LinGO grammar also makes use of a prolist -- or list
; of synsems of type pro-ss.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Lexical rules
; Grammars should be monotonic in their construction of semantic
; representations. That is, as the tree is built, no relations should
; ever be thrown away. This has implications for the way lexical rules
; are written. If two forms are related to each other, and one has
; more semantic relations than the other, it has to be the output.
; We are interested in cases where this constraint is or appears to
; be problematic.
lex-rule := phrase-or-lexrule & word-or-lexrule &
[ NEEDS-AFFIX bool,
SYNSEM.LOCAL.CONT [ RELS [ LIST #first,
LAST #last ],
HCONS [ LIST #hfirst,
LAST #hlast ] ],
DTR #dtr & word-or-lexrule &
[ SYNSEM.LOCAL.CONT [ RELS [ LIST #first,
LAST #middle ],
HCONS [ LIST #hfirst,
LAST #hmiddle ] ],
ALTS #alts ],
C-CONT [ RELS [ LIST #middle,
LAST #last ],
HCONS [ LIST #hmiddle,
LAST #hlast ]],
ALTS #alts,
ARGS < #dtr > ].
; Lexical rules vary on two dimensions: whether they are lexeme-to-lexeme
; or lexeme-to-word and whether or not they involve spelling changes.
; Accordingly, we define four subtypes of lex-rule, which have
; four cross-classified glb subtypes:
; Note that the lexeme/word distinction is represented via a feature
; [INFLECTED bool] rather than as a type. We find this more convenient,
; as it allows certain words to be [INFLECTED +] from the start without
; having to twist the hierarchy too much (especially if one makes use
; of defaults).
; Lexeme-to-word rules are hypothesized to monotonically add synsem
; information.
; ERB 2005-04-14 But it's a bad idea to copy the whole synsem
; value, since that means identifying RELS and HCONS lists, breaking
; the diff-list append.
lexeme-to-word-rule := same-local-lex-rule &
same-modified-lex-rule &
same-light-lex-rule &
same-non-local-lex-rule &
[ INFLECTED +,
DTR [ INFLECTED - ],
C-CONT [RELS <! !>,
HCONS <! !>]].
; Lexeme-to-lexeme rules can make more radical changes to the SYNSEM value.
; (ERB 2004-02-11) This used to inherit from "lexeme" but now there is no
; such type. What was its purpose? (ERB 2007-02-13) Perhaps it was used
; to encode the lexeme/word distinction, now handled by the feature
; INFLECTED.
; (ERB 2007-02-12) Removing identity of MC here because this to can be
; changed by ltol rules. Creating a new type same-mc-lex-rule, etc.
lexeme-to-lexeme-rule := lex-rule &
[ INFLECTED #infl,
DTR.INFLECTED #infl ].
; ERB 2005-04-13 Add a few subtypes that copy up most other information,
; so that folks don't have to keep doing this.
; ERB 2005-04-14 If we copy the whole LOCAL value,
; we're copying RELS and HCONS, which means we can't
; add any sem through C-CONT. Thus what is 'logically'
; same-local is really a bunch of smaller identities.
;same-local-lex-rule := lexeme-to-lexeme-rule &
; [ SYNSEM.LOCAL #local,
; DTR.SYNSEM.LOCAL #local ].
; ERB 2005-04-14 Don't want any of these inheriting
; from lexeme-to-lexeme because they're supertypes
; to lexeme-to-word. This part of the hierarchy probably
; needs to be cleaned up a bit.
same-local-lex-rule := same-cat-lex-rule &
same-cont-lex-rule &
same-ctxt-lex-rule &
same-agr-lex-rule.
same-non-local-lex-rule := lex-rule &
[ SYNSEM.NON-LOCAL #nl,
DTR.SYNSEM.NON-LOCAL #nl ].
; ERB 2007-05-16 Not everything is inside LOCAL or NON-LOCAL.
same-modified-lex-rule := lex-rule &
[ SYNSEM.MODIFIED #mod,
DTR.SYNSEM.MODIFIED #mod ].
same-light-lex-rule := lex-rule &
[ SYNSEM.LIGHT #light,
DTR.SYNSEM.LIGHT #light ].
same-ctxt-lex-rule := lex-rule &
[ SYNSEM.LOCAL.CTXT #ctxt,
DTR.SYNSEM.LOCAL.CTXT #ctxt ].
; ERB 2005-04-14 Can't just identify CONT values,since
; that makes it impossible to add any RELS/HCONS through
; C-CONT. Instead this type should identify HOOK.
; ERB 2005-05-16 Copy MSG too!
; ERB 2007-01-21 Making MSG a feature (SF) of events.
; ERB 2007-02-20 Copy daughter's HOOK to C-CONT rather than to mother's
; HOOK, for uniformity.
same-cont-lex-rule := lex-rule &
[ C-CONT [ HOOK #hook ],
DTR.SYNSEM.LOCAL.CONT [ HOOK #hook ]].
same-agr-lex-rule := lex-rule &
[ SYNSEM.LOCAL.AGR #agr,
DTR.SYNSEM.LOCAL.AGR #agr ].
same-cat-lex-rule := lex-rule &
[ SYNSEM.LOCAL.CAT #cat,
DTR.SYNSEM.LOCAL.CAT #cat ].
same-head-lex-rule := lex-rule &
[ SYNSEM.LOCAL.CAT.HEAD #head,
DTR.SYNSEM.LOCAL.CAT.HEAD #head ].
same-val-lex-rule := lex-rule &
[ SYNSEM.LOCAL.CAT.VAL #val,
DTR.SYNSEM.LOCAL.CAT.VAL #val ].
same-hc-light-lex-rule := lex-rule &
[ SYNSEM.LOCAL.CAT.HC-LIGHT #hcl,
DTR.SYNSEM.LOCAL.CAT.HC-LIGHT #hcl ].
same-posthead-lex-rule := lex-rule &
[ SYNSEM.LOCAL.CAT.POSTHEAD #ph,
DTR.SYNSEM.LOCAL.CAT.POSTHEAD #ph ].
same-mc-lex-rule := lex-rule &
[ SYNSEM.LOCAL.CAT.MC #mc,
DTR.SYNSEM.LOCAL.CAT.MC #mc ].
no-ccont-lex-rule := lex-rule &
[ C-CONT [ RELS <! !>,
HCONS <! !> ]].
; ERB 2007-05-16 Realized I haven't been copying up MODIFIED
; and LIGHT. Fixing that.
non-local-change-only-lex-rule := same-local-lex-rule &
same-modified-lex-rule &
same-light-lex-rule &
no-ccont-lex-rule.
local-change-only-lex-rule := same-non-local-lex-rule &
same-modified-lex-rule &
same-light-lex-rule &
no-ccont-lex-rule.
; ERB 2004-04-13 The only permissible changes to CONT are
; inside HOOK. If any RELS or HCONS need to be added, they
; should be added through the lex-rule's C-CONT. For this reason,
; this type does not inherit from no-ccont-lex-rule, and any
; subtypes/instances should properly constrain the values of
; C-CONT.RELS and C-CONT.HCONS. No relations may be dropped.
; ERB 2004-04-14 But identifying RELS and HCONS is no good,
; because that breaks the diff-list append that should
; let you add info through C-CONT. So just go with the
; text warning above.
cont-change-only-lex-rule := same-non-local-lex-rule &
same-modified-lex-rule &
same-light-lex-rule &
same-ctxt-lex-rule &
same-cat-lex-rule &
same-agr-lex-rule.
ctxt-change-only-lex-rule := local-change-only-lex-rule &
same-cont-lex-rule &
same-cat-lex-rule &
same-agr-lex-rule.
agr-change-only-lex-rule := local-change-only-lex-rule &
same-cont-lex-rule &
same-cat-lex-rule &
same-ctxt-lex-rule.
cat-change-only-lex-rule := local-change-only-lex-rule &
same-ctxt-lex-rule &
same-cont-lex-rule &
same-agr-lex-rule.
head-change-only-lex-rule := cat-change-only-lex-rule &
same-val-lex-rule &
same-hc-light-lex-rule &
same-posthead-lex-rule &
same-mc-lex-rule.
mc-change-only-lex-rule := cat-change-only-lex-rule &
same-val-lex-rule &
same-hc-light-lex-rule &
same-posthead-lex-rule &
same-head-lex-rule.
; ERB 2005-04-13 When using val-change-only-lex rule, be sure
; to constrain the values of all of the VAL features (SPR, SUBJ,
; COMPS and SPEC) on the mother.
val-change-only-lex-rule := cat-change-only-lex-rule &
same-head-lex-rule &
same-hc-light-lex-rule &
same-posthead-lex-rule &
same-mc-lex-rule.
; ERB 2007-02-13 These two should only be inherited by ltol types,
; since they are redundant with constraints on lexeme-to-word-rule.
add-only-rule := same-local-lex-rule &
same-modified-lex-rule &
same-light-lex-rule &
same-non-local-lex-rule.
add-only-no-ccont-rule := add-only-rule &
no-ccont-lex-rule.
; Spelling changing rules. The LKB identifies these rules based
; on the NEEDS-AFFIX value.
inflecting-lex-rule := lex-rule &
[ NEEDS-AFFIX + ].
; Spelling-preserving rules copy up the STEM (orthography) of
; the daughter.
constant-lex-rule := lex-rule &
[ STEM #stem,
DTR [ STEM #stem ]].
; Cross-classified types packaing spelling change status and
; feature copying.
const-ltol-rule := lexeme-to-lexeme-rule & constant-lex-rule & nocoord.
infl-ltol-rule := lexeme-to-lexeme-rule & inflecting-lex-rule & nocoord.
const-ltow-rule := lexeme-to-word-rule & constant-lex-rule & nocoord.
infl-ltow-rule := lexeme-to-word-rule & inflecting-lex-rule & nocoord.
infl-non-local-change-only-ltol-rule := non-local-change-only-lex-rule &
infl-ltol-rule.
infl-local-change-only-ltol-rule := local-change-only-lex-rule &
infl-ltol-rule.
infl-cont-change-only-ltol-rule := cont-change-only-lex-rule &
infl-ltol-rule.
infl-ctxt-change-only-ltol-rule := ctxt-change-only-lex-rule &
infl-ltol-rule.
infl-agr-change-only-ltol-rule := agr-change-only-lex-rule &
infl-ltol-rule.
infl-cat-change-only-ltol-rule := cat-change-only-lex-rule &
infl-ltol-rule.
infl-head-change-only-ltol-rule := head-change-only-lex-rule &
infl-ltol-rule.
infl-val-change-only-ltol-rule := val-change-only-lex-rule &
infl-ltol-rule.
; ERB 2005-04-26 Take care with the following two rules. While
; they likely won't be circular for parsing (since the surface form
; of the word will usually limit the number of times each can apply)
; they can easily spin in generation. To make the input and output
; incompatible, I recommend constraining the type of the DTR to
; something incompatible with the type of the rule.
infl-add-only-ltol-rule := add-only-rule &
infl-ltol-rule.
infl-add-only-no-ccont-ltol-rule := add-only-no-ccont-rule &
infl-ltol-rule.
const-non-local-change-only-ltol-rule := non-local-change-only-lex-rule &
const-ltol-rule.
const-local-change-only-ltol-rule := local-change-only-lex-rule &
const-ltol-rule.
const-cont-change-only-ltol-rule := cont-change-only-lex-rule &
const-ltol-rule.
const-ctxt-change-only-ltol-rule := ctxt-change-only-lex-rule &
const-ltol-rule.
const-agr-change-only-ltol-rule := agr-change-only-lex-rule &
const-ltol-rule.
const-cat-change-only-ltol-rule := cat-change-only-lex-rule &
const-ltol-rule.
const-head-change-only-ltol-rule := head-change-only-lex-rule &
const-ltol-rule.
const-val-change-only-ltol-rule := val-change-only-lex-rule &
const-ltol-rule.
; ERB 2005-04-14 Take care when using the following two types
; not to create circular rules. They may still be useful (the
; latter is employed in the Slave grammar), but you'll need to
; make sure that the DTR type is incompatible with the rule type.
const-add-only-ltol-rule := add-only-rule &
const-ltol-rule.
const-add-only-no-ccont-ltol-rule := add-only-no-ccont-rule &
const-ltol-rule.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Phrase structure rules
; Headed phrases must obey the Head Feature Principle and the Revised
; Marking Principle. They do not all obey the NLFP with respect to
; QUE, but it appears that all CLAUSE phrases account for QUE on
; mother and non-head-dtr. Hence moved the QUE coreference to
; NON-CLAUSE. Headed phrases also identify the value of AGR on mother
; and head daughter, unlike e.g. the coordination schemata which
; identify HEAD but not AGR.
;
; sfd 08/02/2005: Added constraints on COORD and COORD-REL. COORD
; must be "-" for all phrases that aren't participating in
; coordination. Also identify the COORD-REL so it gets passed up.
headed-phrase := phrase &
[ SYNSEM.LOCAL [ CAT.HEAD head & #head,
AGR #agr,
COORD -,
COORD-REL #crel ],
HEAD-DTR.SYNSEM.LOCAL local &
[ CAT.HEAD #head,
AGR #agr,
COORD -,
COORD-REL #crel ] ].
headed-phrase :+
[ SYNSEM.LOCAL [ COORD -,
COORD-REL #crel ],
HEAD-DTR.SYNSEM.LOCAL [ COORD -,
COORD-REL #crel ]].
non-headed-phrase := phrase.
; Most but not all phrases have SYNSEM phr-synsem; head-complement
; constructions have their SYNSEM type determined by the head-dtr.
phrasal := phrase &
[ SYNSEM phr-synsem ].
; ERB 2005-05-04 If messages are introduced by unary rules at the
; top of each clause, most phrase types should say [MSG no-msg]
; on the mother. The exceptions to this are the clauses themselves
; and coordination constructions.
; ERB 2005-05-11 This is not the right way to do it. There are
; going to be cases (e.g., quantifiers) where we want the MSG
; of the head daughter copied up to the mother. Let's try
; making (normal) lexical items MSG no-msg, and having the no-msg-phrase
; copy the info up. Make no-msg-phrase inherit from headed-phrase.
; Non-headed phrases will have to say something about the MSG
; of the mother.
; ERB 2007-01-21 Getting rid of message relations. SF will now
; be a feature of the EVENT, so it will go up the semantic head path
; anyway. (Need to be careful about not setting it too early.)
;no-msg-phrase := headed-phrase &
; [ SYNSEM.LOCAL.CONT.MSG #msg,
; HEAD-DTR.SYNSEM.LOCAL.CONT.MSG #msg ].
; Head/nexus phrases pass up the REL and QUE values of the head daughter
; (which has amalgamated the REL and QUE values of its arguments as in
; Sag 1997) to the mother.
head-nexus-rel-phrase := headed-phrase &
[ SYNSEM.NON-LOCAL.REL #rel,
HEAD-DTR.SYNSEM.NON-LOCAL.REL #rel ].
head-nexus-que-phrase := headed-phrase &
[ SYNSEM.NON-LOCAL.QUE #que,
HEAD-DTR.SYNSEM.NON-LOCAL.QUE #que ].
; ERB 2005-05-04 If messages are introduced by unary rules at the
; top of each clause, most phrase types should say [MSG no-msg]
; on the mother. The exceptions to this are the clauses themselves
; and coordination constructions.
; ERB 2007-01-21 Removed supertype no-msg-phrase.
head-nexus-phrase := head-nexus-rel-phrase & head-nexus-que-phrase.
; In a head/local dependent phrase, the SLASH feature of the mother is
; token-identical to that of the head daughter, which has already amalgamated
; the SLASH values of its arguments. See discussion of head-nexus-phrase for
; treatment of REL and QUE.
head-valence-phrase := head-nexus-phrase &
[ SYNSEM.NON-LOCAL.SLASH #slash,
HEAD-DTR.SYNSEM.NON-LOCAL.SLASH #slash ].
; All phrases are either unary or binary.
basic-unary-phrase := phrase &
[ STEM #stem,
SYNSEM.LOCAL.CONT [ RELS [ LIST #first,
LAST #last ],
HCONS [ LIST #scfirst,
LAST #sclast ] ],
C-CONT [ RELS [ LIST #middle,
LAST #last ],
HCONS [ LIST #scmiddle,
LAST #sclast ] ],
ARGS < sign & [ STEM #stem,
SYNSEM.LOCAL local &
[ CONT [ RELS [ LIST #first,
LAST #middle ],
HCONS [ LIST #scfirst,
LAST #scmiddle ] ] ] ] > ].
unary-phrase := basic-unary-phrase &
[ INFLECTED +,
ARGS < [ INFLECTED + ] > ].
basic-binary-phrase := phrase &
[ SYNSEM.LOCAL.CONT [ RELS [ LIST #first,
LAST #last ],
HCONS [ LIST #scfirst,
LAST #sclast ] ],
C-CONT [ RELS [ LIST #middle2,
LAST #last ],
HCONS [ LIST #scmiddle2,
LAST #sclast ] ],
ARGS < sign & [ SYNSEM.LOCAL local &
[ CONT [ RELS [ LIST #first,
LAST #middle1 ],
HCONS [ LIST #scfirst,
LAST #scmiddle1 ] ] ] ],
sign & [ SYNSEM.LOCAL local &
[ CONT [ RELS [ LIST #middle1,
LAST #middle2 ],
HCONS [ LIST #scmiddle1,
LAST #scmiddle2 ] ] ] ] > ].
binary-phrase := basic-binary-phrase &
[ INFLECTED +,
ARGS < [ INFLECTED + ],
[ INFLECTED + ] > ].
basic-binary-headed-phrase := headed-phrase & basic-binary-phrase &
[ NON-HEAD-DTR sign & [ SYNSEM.LOCAL.COORD - ] ].
binary-headed-phrase := basic-binary-headed-phrase & binary-phrase.
; ERB (2007-02-13) Adding these for handling constructions where a marker
; shows up simultaneously on both ends of the phrase, such as negation
; in Hausa and question marking in ASL. (For the latter case, what's
; really going on is a non-manual sign extending the length of the clause,
; but a convenient single-line representation uses left and right brackets
; to show the duration of the non-manual.)
basic-ternary-phrase := phrase &
[ SYNSEM.LOCAL.CONT [ RELS [ LIST #first,
LAST #last ],
HCONS [ LIST #scfirst,
LAST #sclast ] ],
C-CONT [ RELS [ LIST #middle3,
LAST #last ],
HCONS [ LIST #scmiddle3,
LAST #sclast ] ],
ARGS < sign & [ SYNSEM.LOCAL local &
[ CONT [ RELS [ LIST #first,
LAST #middle1 ],
HCONS [ LIST #scfirst,
LAST #scmiddle1 ] ] ] ],
sign & [ SYNSEM.LOCAL local &
[ CONT [ RELS [ LIST #middle1,
LAST #middle2 ],
HCONS [ LIST #scmiddle1,
LAST #scmiddle2 ] ] ] ],
sign & [ SYNSEM.LOCAL local &
[ CONT [ RELS [ LIST #middle2,
LAST #middle3 ],
HCONS [ LIST #scmiddle2,
LAST #scmiddle3 ] ] ] ]> ].
ternary-phrase := basic-ternary-phrase &
[ INFLECTED +,
ARGS < [ INFLECTED +,
SYNSEM.LOCAL.COORD - ],
[ INFLECTED +,
SYNSEM.LOCAL.COORD - ],
[ INFLECTED +,
SYNSEM.LOCAL.COORD - ] > ].
ternary-headed-phrase := headed-phrase & ternary-phrase.
; ERB (2007-02-12) Hypothesizing for now that these will never be fulfilling
; valence requirements of the head, so just copy that up.
; ERB (2007-02-26) Clearly this shouldn't be head-compositional, since
; we're using it for negation in Hausa and ASL.
ternary-head-middle-phrase := ternary-headed-phrase &
[ SYNSEM.LOCAL.CAT.VAL #val,
HEAD-DTR #head &
[ SYNSEM.LOCAL.CAT.VAL #val ],
ARGS.REST.FIRST #head ].
; For more effecient parsing, designate one argument or the other
; as the KEY-ARG: that which should be unified with first.
binary-rule-left-to-right := rule &
[ ARGS < [ KEY-ARG + ] , [ KEY-ARG bool ] > ].
binary-rule-right-to-left := rule &
[ ARGS < [ KEY-ARG bool ], [ KEY-ARG + ] > ].
; ERB 2005-05-04 If messages are introduced by unary rules at the
; top of each clause, most phrase types should say [MSG no-msg]
; on the mother. The exceptions to this are the clauses themselves
; and coordination constructions. Basic-head-only is for
; the clauses.
; ERB 2007-01-21 Removing no-msg-phrase.
head-only := unary-phrase & headed-phrase &
[ HEAD-DTR #head,
ARGS < #head > ].
;head-only := basic-head-only & no-msg-phrase.
head-initial := binary-headed-phrase &
[ HEAD-DTR #head,
NON-HEAD-DTR #non-head,
ARGS < #head, #non-head > ].
basic-head-final := basic-binary-headed-phrase &
[ HEAD-DTR #head,
NON-HEAD-DTR #non-head,
ARGS < #non-head, #head > ].
head-final := basic-head-final & binary-headed-phrase.
; C-CONT is the semantic contribution of the phrase itself. The hook
; of the phrase is identified with the hook of C-CONT (which is possibly
; but not necessarily identified with the hook of one of the daughters.
; The rels of the phrase result from appending the rels of C-CONT and the
; rels of the daughters.
; Head-compositional phrases identify the syntactic head daughter as the
; semantic head.
head-compositional := headed-phrase &
[ C-CONT.HOOK #hook,
HEAD-DTR.SYNSEM.LOCAL.CONT.HOOK #hook ].
; Clauses have message types as values, non-clauses have the value no-msg.
; Constrain the HEAD value of clause to verb or whatever type is
; appropriate. Clauses have empty QUE values.
; Later versions of the Matrix might have clause v. non-clause as
; an independent dimension from headed v. non-headed phrase, as in
; Ginzburg & Sag 2000. The phrase types are meant to cross-classify
; with the clause types to give e.g., decl-head-subj from decl-clause
; and head-subj-phrase.
; ERB 2004-08-26 Remove [MC na], which is probably specific
; to some analysis for English.
; ERB 2005-05-11 I'm not sure what use non-clause is in the current
; system, and the constraint MSG no-msg is a little suspicious.
; It seems to only be used for head-spec phrases right now, though,
; so leave it for now.
; ERB 2007-01-21 I'm not sure there's really any use for non-clause
; in the message-free universe.
;non-clause := head-nexus-phrase &
; [ SYNSEM.LOCAL [ CONT.MSG no-msg ] ].
;clause := phrasal &
; [ SYNSEM [ LOCAL.CAT.VAL.COMPS olist,
; NON-LOCAL.QUE 0-dlist ] ].
; ERB 2007-01-21 COMPS olist is no longer a fair constraint on
; clauses, under current analysis.
clause := phrasal &
[ SYNSEM.NON-LOCAL.QUE 0-dlist ].
; The following subtypes of clause will need more constraints,
; as appropriate:
; Relative clauses are propositions, but depending on the analysis
; of the construction, the message may actually come from the daughter.
; ERB 2007-01-21 Adding constraint that should specialize prop-or-ques
; to prop as value of SF. (See notes at interrogative-clause.)
; ERB 2007-01-22 ... but I'm not sure we can assume that relative-clauses
; are headed phrases. So, I'm going to comment out this type for now,
; pending the developmet of a relative clause library.
;relative-clause := clause &
; [ HEAD-DTR.SYNSEM.LOCAL.CONT.HOOK.INDEX.SF prop ].
; This type does not constrain the length of the C-CONT..RELS
; in order to allow for clause types which insert two messages
; (e.g., interrogatives, which need to add both a question_m_rel
; and the embedded proposition_m_rel), or which some other
; constructional content in addition to the message.
; The MARG isn't related to anything in this type. There are
; two canonical possibilities: either the MARG qeqs the LTOP of
; the head daughter, or it is equal to the LBL of another message
; (again, the case of interrogatives, if there is one construction
; which introduces both messages).
; ERB 2005-05-04 Making all of these basic-head-only (non-branching
; constructions). Need to work on relative clauses at a later date.
; ERB 2007-01-21 No more messages. This type now enforces some
; constraints on the non-local features, but that's just about it.
; (And we haven't really worked on LDDs in the Matrix yet.) I'm not
; sure that there's really that much work for this type to do...
; Since we're not adding message relations anymore, I'm going to assume
; that the C-CONT.RELS and C-CONT.HCONS are empty.
; ERB 2007-01-21 Er, not head-only any more, though.
basic-non-rel-clause := clause & head-compositional &
[ SYNSEM.NON-LOCAL.REL 0-dlist,
HEAD-DTR.SYNSEM.NON-LOCAL [ QUE 0-dlist,
REL 0-dlist ],
C-CONT [ RELS <! !>,
HCONS <! !> ]].
; For non-interrogative non-rel clauses, hook up
; MARG to head daughter's LTOP. Subtypes will need
; to constrain length of HCONS and RELS.
; ERB 2007-01-21 No more messages.
;non-rel-clause := basic-non-rel-clause &
; [ SYNSEM.LOCAL.CONT.MSG.MARG #marg,
; HEAD-DTR.SYNSEM.LOCAL.CONT.HOOK.LTOP #ltop,
; C-CONT.HCONS.LIST.FIRST qeq & [ HARG #marg,
; LARG #ltop ]].
; ERB 2004-05-18 Make these inherit from non-rel-clause instead
; of just clause, so that something does the work of putting
; the message on the RELS list.
; ERB 2005-05-04 Trying out an analysis of clausal semantics where the
; message is always introduced by a non-branching construction. This
; goes against Ginzburg & Sag's (2000) strategy of cross-classifying
; phrase types with clause types, but it seems more practical for the
; Matrix, for two reasons: (i) In a free word order language, the
; `root' node in their strategy could be a head-subj, could be a
; head-comp, etc. and (ii) it's just easier to conceive of the
; crosslinguistic variation this way. Leave the length of C-CONT.RELS
; and C-CONT.HCONS unspecified for the moment on interrogatives. In
; some cases, it might be helpful to have the interrogatives put in
; both the prpstn and the ques messages. Likewise, don't require
; MSG no-msg on the head daugther of interrogatives.
; ERB 2007-01-21 Moving to a message-free universe. These guys
; now constrain the value of SF on the INDEX (event variable).
; How to keep them from spinning, though? For now, trying the following
; strategy:
; 1. All rules that satisfy the subject requirement add clausal semantics
; (either prop-or-ques or comm).
; 2. Complementizers (including matrix question/statement particles) can
; further constrain message value.
; 3. Head-filler phrases (for questions) can further constraint message value.
; 4. To force things to undergo question rules like the yesno rule from
; the ERG, take advanteg of [MC na] --- see ERG
; 5. Relative-clause rule constrains down from prop-or-ques to prop.
; 6. Since clausal semantics is tied to satisfaction of subject requirement
; and/or an appropriate MC value, assume that these will be enough and
; no further modification of the root condition is required.
interrogative-clause := basic-non-rel-clause &
[ SYNSEM.LOCAL.CONT.HOOK.INDEX.SF ques ].
declarative-clause := basic-non-rel-clause &
[ SYNSEM.LOCAL.CONT.HOOK.INDEX.SF prop-or-ques ].
imperative-clause := basic-non-rel-clause &
[ SYNSEM.LOCAL.CONT.HOOK.INDEX.SF comm ].
; ERB 2004-08-26 The analysis of relative clauses in the ERG
; requires that the relative clause construction (a kind of
; "head" filler phrase) not actually be a subtype of
; headed-phrase. This is because the HEAD.MOD value of
; the mother and the would-be head daughter differ.
; Thus basic-filler-phrase does not inherit form headed-phrase.
; We provide a subtype, basic-head-filler-phrase, below, which does.
basic-filler-phrase := binary-phrase & phrasal &
[ SYNSEM [ LOCAL [ CAT [ VAL [ COMPS < >,
SPR < > ],
POSTHEAD + ] ],
NON-LOCAL.SLASH 0-dlist ],
ARGS < [ SYNSEM [ LOCAL #slash & local &
[ CAT.VAL [ SUBJ olist,
COMPS olist,
SPR olist ],
CTXT.ACTIVATED + ],
NON-LOCAL.SLASH 0-dlist ] ],
[ SYNSEM [ LOCAL.CAT [ VAL.COMPS olist ],
NON-LOCAL [ SLASH 1-dlist &
[ LIST [ FIRST #slash,
REST < > & #last ],
LAST #last ],
QUE 0-dlist,
REL 0-dlist ] ] ] > ].
basic-head-filler-phrase := basic-filler-phrase & headed-phrase.
; These phrase types should all inherit from head-final or head-initial,
; as appropriate, replacing binary-headed-phrase.
; Don't assume that all comps are realized before the subject
; in all languages. Remove COMPS olist from this one. In languages
; which do realize all COMPS before the SUBJ, the head-subj-phrase
; should allow [COMPS olist] on the head daughter but constrain
; the mother to be [COMPS < >].
; ERB 2004-05-24 In anticipation of this type being cross-classified
; with decl-clause in at least some languages, it does not inherit
; from head-compositional, nor constrain the length of its C-CONT.RELS
; and C-CONT.HCONS lists. Subtypes of this type in specific grammars
; should inherit from either a clause-type or from head-compositional,
; and ensure that the length of these lists is specified appropriately.
; ERB 2004-12-14 For purposes of testing word order modules, assume
; for now that we're going to go with a non-branching rule analysis
; of message introduction. Make basic-head-subj phrase inherit from
; head-compositional and constraint C-CONT.RELS and C-CONT.HCONS like
; everyone else.
; ERB 2004-08-26 Remove [MC na] on head daughter; probably specific
; to some analysis for English.
; ERB 2005-08-12 Need [ LIGHT - ] on mother, so add SYNSEM phr-synsem.
; ERB 2007-01-21 Moving to message-free universe. Working with the
; hypothesis that head-subj phrases give clausal semantics --- either
; declarative (prop-or-ques) or imperative (comm). Can further constrain
; C-CONT to be RELS <! !>, now that we're not putting in messages. (Hey:
; that was already the case. Or not, now I don't see it?)
basic-head-subj-phrase := head-valence-phrase & binary-headed-phrase &
head-compositional &
[ SYNSEM phr-synsem &
[ LOCAL.CAT [ POSTHEAD +,
VAL [ SUBJ < >,
COMPS #comps,
SPR #spr ] ] ],
C-CONT [ RELS <! !>,
HCONS <! !> ],
HEAD-DTR.SYNSEM.LOCAL.CAT.VAL [ SUBJ < #synsem >,
COMPS #comps,
SPR #spr ],
NON-HEAD-DTR.SYNSEM #synsem & canonical-synsem &
[ LOCAL [ CAT [ VAL [ SUBJ olist,
COMPS olist,
SPR olist ] ] ],
NON-LOCAL [ SLASH 0-dlist & [ LIST < > ],
REL 0-dlist,
QUE 0-dlist ] ]].
decl-head-subj-phrase := basic-head-subj-phrase & declarative-clause.
imp-head-subj-phrase := basic-head-subj-phrase & imperative-clause.
; ERB 2004-08-26 Remove [MC na] on both daughters; probably specific
; to some analysis for English.
; ERB 2007-01-21 Removing non-clause, which doesn't seem to be doing
; any work any more.
; GCS 2009-02-19 changed identifying of COMPS of the mother with
; the COMPS of the non-head daughter. Instead identify the COMPS
; of the mother with the COMPS of the head-daughter
basic-head-spec-phrase := head-valence-phrase & phrasal &
binary-headed-phrase &
[ INFLECTED +,
SYNSEM [ LOCAL.CAT [ VAL [ SUBJ #subj,
COMPS #comps,
SPR #spr,
SPEC #spec ],
POSTHEAD #ph ],
MODIFIED #modif ],
HEAD-DTR [ INFLECTED +,
SYNSEM [ LOCAL [ CAT [ HEAD #head,
VAL [ SUBJ #subj,
COMPS olist & #comps,
SPR < #synsem &
canonical-synsem . #spr >,
SPEC #spec ],
POSTHEAD #ph ],
CONT.HOOK #hdhook ],
MODIFIED #hmodif ] ],
NON-HEAD-DTR.SYNSEM #synsem &
[ LOCAL [ CAT [ VAL [ SPEC < [ LOCAL [ CAT [ HEAD #head,
VAL.COMPS #comps ],
CONT.HOOK #hdhook ],
MODIFIED #hmodif ] > ] ],
CONT.HOOK #hook ],
MODIFIED #modif ],
C-CONT [ HOOK #hook,
RELS <! !>,
HCONS <! !> ] ].
; Value of LIGHT comes from head-daughter's specification in HC-LIGHT.
; ERB (2005-08-10) Change value of SYNSEM from canonical-synsem to
; phr-synsem-min, so that LKEYS is not an appropriate feature.
; ERB (2005-08-12) We need to copy of HC-LIGHT as well, for cases
; where there are multiple complements.
; ASF (2008-11-03) for the current v2 analysis, we need head-comp-phrase
; that does not pass up the MC feature..token id between mother and head
; daughter removed
basic-head-comp-phrase := head-valence-phrase & head-compositional &
binary-headed-phrase &
[ SYNSEM phr-synsem-min &
[ LOCAL.CAT [ VAL [ SUBJ #subj,
SPR #spr ],
POSTHEAD #ph,
HC-LIGHT #light ],
LIGHT #light ],
HEAD-DTR.SYNSEM [ LOCAL.CAT [ VAL [ SUBJ #subj,
SPR #spr ],
HC-LIGHT #light,
POSTHEAD #ph ]],
NON-HEAD-DTR.SYNSEM canonical-synsem,
C-CONT [ RELS <! !>,
HCONS <! !> ] ].
; ERB 2004-12-14 This is what used to be called basic-head-comp-phrase.
basic-head-1st-comp-phrase := basic-head-comp-phrase &
[ SYNSEM.LOCAL.CAT.VAL.COMPS #comps,
HEAD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS < #synsem . #comps >,
NON-HEAD-DTR.SYNSEM #synsem ].
; ERB 2004-12-14 First pass at a rule that realizes complements
; out of order.
basic-head-2nd-comp-phrase := basic-head-comp-phrase &
[ SYNSEM.LOCAL.CAT.VAL.COMPS < #firstcomp . #othercomps >,
HEAD-DTR.SYNSEM.LOCAL.CAT.VAL.COMPS [ FIRST #firstcomp,
REST < #synsem . #othercomps > ],
NON-HEAD-DTR.SYNSEM #synsem ].
; Skip an optional complement as long as there is still another obligatory
; complement on the list. Two subtypes allow for one or two optional
; complements before an obligatory one.
; ERB 2004-05-10 Moving towards discharing all optional complements,
; so we no longer require that there are other expressed arguments
; before suppressing something with unexpressed.
; Still requiring [ HEAD-DTR..INDEX event ] as we might not
; want to go around discharging all optional complements of nouns.
; We'll probably want to make this a language-specific choice, eventually.
; Need to decide what to do about LIGHT here.
; The feature DEF-OPT allows the head to specify whether the optional
; complement is interpreted as definite (+), indefinite (-), or
; either (underspecified). basic-head-opt-comp-phrase copies this
; information into the index of the unexpressed argument.
basic-head-opt-comp-phrase := head-valence-phrase & head-only &
head-compositional &
[ INFLECTED #infl,
SYNSEM canonical-synsem &
[ LOCAL.CAT [ VAL [ SUBJ #subj,
COMPS #comps,
SPR #spr,
SPEC #spec ],
MC #mc,
POSTHEAD #ph ],
MODIFIED #mod ],
HEAD-DTR [ INFLECTED #infl & +,
SYNSEM [ LOCAL [ CAT [ VAL [ SUBJ #subj,
COMPS < unexpressed &
[ OPT +,
OPT-CS #def,
LOCAL.CONT.HOOK.INDEX.COG-ST #def ] . #comps >,
SPR #spr,
SPEC #spec ],
MC #mc,
POSTHEAD #ph ],
CONT.HOOK.INDEX event ],
MODIFIED #mod ] ],
C-CONT [ RELS <! !>,
HCONS <! !> ] ].
; ERB 2004-05-10 For languages that allow "pro-drop" of subjects.
; (Languages that also allow "pro-drop" of other arguments will
; use this rule in addition to the head-opt-comp-phrase.) Hypothesizing
; that null instantiation of subjects is always definite null instantiation.
; This rule is constrained to apply after all complements are discharged.
; ERB 2004-06-08 In anticipation of this type being cross-classified
; with decl-clause in at least some languages, it does not inherit
; from head-compositional, nor constrain the length of its C-CONT.RELS
; and C-CONT.HCONS lists. Subtypes of this type in specific grammars
; should inherit from either a clause-type or from head-compositional,
; and ensure that the length of these lists is specified appropriately.
; ERB 2007-01-21 Removing messages in favor of the feature SF. On
; this first pass, trying to insert SF information whenever subject
; requirements are discharged. Hmmm, again this was already RELS <! !>
; and HCONS <! !> in C-CONT.
; ERB 2007-05-16 Moving MC identification from basic-head-opt-subj-phrase
; down to decl-head-opt-subj-phrase, since we might *not* want it for
; imperatives.
basic-head-opt-subj-phrase := head-valence-phrase & head-only &
[ INFLECTED #infl,
SYNSEM canonical-synsem &
[ LOCAL.CAT [ VAL [ SUBJ < >,
COMPS #comps,
SPR #spr,
SPEC #spec ],
POSTHEAD #ph ],
MODIFIED #mod ],
C-CONT [ RELS <! !>,
HCONS <! !> ],
HEAD-DTR [ INFLECTED #infl & +,
SYNSEM [ LOCAL [ CAT [ VAL [ SUBJ < unexpressed-reg &
[ OPT +,
LOCAL.CONT.HOOK.INDEX.COG-ST in-foc ] >,
COMPS #comps & < >,
SPR #spr,
SPEC #spec ],
POSTHEAD #ph ],
CONT.HOOK.INDEX event ],
MODIFIED #mod ] ] ].
; ERB 2007-01-21 Subtypes for declaratives and imperatives
decl-head-opt-subj-phrase := basic-head-opt-subj-phrase & declarative-clause &
[ SYNSEM.LOCAL.CAT.MC #mc,
HEAD-DTR.SYNSEM.LOCAL.CAT.MC #mc ].
imp-head-opt-subj-phrase := basic-head-opt-subj-phrase & imperative-clause.
; ASF 2008-11-18 Introducing a "basic-marker-comp-phrase", which basically
; behaves just like a head-comp-phrase, except that the phrase's head is not
; token-identical to that of the HEAD-DTR. We found this solution necessary to
; implement non-harmonic word order of auxiliaries that take a verb (not vp) as
; complement. The general idea of behaviour as head-comp, but without sharing
; all head-features could be useful for other phenomena, hence our decision to
; put it in the matrix.
; ASF 2008-11-18 The name MARKER-DTR is based on theoretical HPSG's HEAD-MARKER
; structure, but note that the marker-comp construction does not correspond to
; PS-84's head-marker structure (since the complement is not a head)
marker-phrase := binary-phrase &
[ SYNSEM.LOCAL [ AGR #agr,
COORD -,
COORD-REL #crel,
CONT.HOOK #hook ],
C-CONT.HOOK #hook,
MARKER-DTR.SYNSEM.LOCAL local &
[ AGR #agr,
COORD -,
COORD-REL #crel,
CONT.HOOK #hook ] ].
basic-binary-marker-phrase := marker-phrase &
[ NON-MARKER-DTR sign & [ SYNSEM.LOCAL.COORD - ] ].
basic-marker-comp-phrase := basic-binary-marker-phrase &
[ SYNSEM phr-synsem-min &
[ LOCAL.CAT [ MC #mc,
VAL [ SUBJ #subj,
SPR #spr,
COMPS #comps ],
POSTHEAD #ph,
HC-LIGHT #light ],
NON-LOCAL [ SLASH #slash,
REL #rel,
QUE #que ],
LIGHT #light ],
MARKER-DTR.SYNSEM [ LOCAL.CAT [ MC #mc,
VAL [ SUBJ #subj,
SPR #spr,
COMPS < #synsem . #comps > ],
HC-LIGHT #light,
POSTHEAD #ph ],
NON-LOCAL [ SLASH #slash,
REL #rel,
QUE #que ] ],
NON-MARKER-DTR.SYNSEM canonical-synsem & #synsem &
[ LOCAL.COORD - ],
C-CONT [ RELS <! !>,
HCONS <! !> ] ].
marker-initial-phrase := basic-binary-marker-phrase &
[ MARKER-DTR #marker,
NON-MARKER-DTR #non-marker,
ARGS < #marker, #non-marker > ].
marker-final-phrase := basic-binary-marker-phrase &
[ MARKER-DTR #marker,
NON-MARKER-DTR #non-marker,
ARGS < #non-marker, #marker > ].
; ERB 2004-12-14 Type for optional specifier (determiner) phrases.
; Build NPs out of N's. The specification [OPT +] on the head
; daughter's SPR value is meant to allow this rule to apply to
; some nouns and not others. Nouns which require an overt specifier
; should lexically say [ OPT - ]. Nouns which optionally occur
; with a specifier can leave the OPT value of that argument unmarked.
; Nouns which only appear without a specifier need a SPR value which
; is incompatible with any of the available overt determiners. This
; could conceivably be regulated on the basis of semantics.
basic-bare-np-phrase := head-only &
[ SYNSEM.LOCAL.CAT.VAL [ SPR < >,
SUBJ < >,
COMPS < >,
SPEC < > ],
HEAD-DTR.SYNSEM.LOCAL [ CAT.VAL [ SPR < [ LOCAL.CAT.HEAD det,
OPT + ] >,
SUBJ < >,
COMPS < > ],
CONT.HOOK [ INDEX #index,
LTOP #larg ] ],
C-CONT [ RELS <! quant-relation &
[ LBL #ltop,
ARG0 #index,
RSTR #harg ] !>,
HCONS <! qeq &
[ HARG #harg,
LARG #larg ] !>,
HOOK [ INDEX #index,
LTOP #ltop ] ] ].
; Unary rules for extraction
basic-extracted-arg-phrase := head-valence-phrase & head-only &
[ SYNSEM.LIGHT - ].
basic-extracted-comp-phrase := basic-extracted-arg-phrase &
head-compositional &
[ SYNSEM canonical-synsem &
[ LOCAL.CAT [ VAL [ SUBJ #subj,
SPR #spr,
COMPS #comps ],
MC #mc ] ],
HEAD-DTR [ SYNSEM
[ LOCAL.CAT [ VAL [ SUBJ #subj,
SPR #spr,
COMPS < gap &
[ NON-LOCAL.SLASH #slash ]
. #comps > ],
MC #mc ],
NON-LOCAL.SLASH #slash ] ],
C-CONT [ RELS <! !>,
HCONS <! !> ] ].
; ERB 2004-08-26 Remove [MC -] on mother; probably specific
; to analysis of subject extraction for English.
basic-extracted-subj-phrase := basic-extracted-arg-phrase &
[ SYNSEM.LOCAL.CAT.VAL [ SUBJ < >,
SPR < >,
COMPS < > ],
HEAD-DTR.SYNSEM [ LOCAL.CAT [ VAL [ SUBJ < gap &
[ LOCAL #local & local &
[ CONT.HOOK.INDEX
ref-ind ] ] >,
COMPS olist ],
MC na ],
NON-LOCAL.SLASH.LIST < #local > ] ].
; ERB 2004-05-05 Allow modifiers to attach to things with
; non-empty comps lists. The head-mod-phrase will pass up
; the COMPS requirement, whatever it was.
head-mod-phrase := head-nexus-phrase &
[ SYNSEM [ LOCAL.CAT.VAL [ SUBJ #subj,
SPR #spr,
COMPS #comps ],
MODIFIED hasmod ],
HEAD-DTR.SYNSEM [ LOCAL.CAT.VAL [ SUBJ #subj,
SPR #spr,
COMPS #comps ],
NON-LOCAL [ REL 0-dlist ] ] ].
basic-extracted-adj-phrase := head-mod-phrase & head-only & phrasal.
extracted-adj-phrase := basic-extracted-adj-phrase &
[ SYNSEM [ LOCAL.CAT [ POSTHEAD #ph,
MC #mc ],
NON-LOCAL.SLASH 1-dlist &
<! [ CAT [ POSTHEAD +,
HEAD [ MOD < [ LOCAL intersective-mod &
[ CAT [ HEAD #head,
VAL #val,
POSTHEAD #ph,
MC #mc ],
CONT.HOOK #hook,
CTXT #ctxt ] ] > ],
VAL [ SUBJ olist,
COMPS olist,
SPR olist ] ] ] !> ],
HEAD-DTR.SYNSEM canonical-synsem &
[ LOCAL local &
[ CAT [ HEAD #head,
VAL #val & [ SUBJ < synsem-min &
[ NON-LOCAL.SLASH 0-dlist ] > ],
POSTHEAD #ph,
MC #mc ],
CONT.HOOK #hook,
CTXT #ctxt ],
NON-LOCAL.SLASH 0-dlist,
MODIFIED notmod ],
C-CONT [ HOOK #hook,
HCONS <! !> ] ].
; ERB 2004-05-10 Bug fix: non-head daughter's MOD..LIGHT value should
; be matched to head-daughters LIGHT value.
; ASF (2008-11-03) for the v2 analysis, the MC feature cannot be shared between
; mother and non-head-daughter, token-identity removed
basic-head-mod-phrase-simple := head-mod-phrase & binary-headed-phrase &
[ SYNSEM [ NON-LOCAL [ SLASH [ LIST #first,
LAST #last ],
REL 0-dlist ] ],
HEAD-DTR.SYNSEM
[ LOCAL [ CAT [ HEAD #head,
VAL #val,
POSTHEAD #ph,
MC #hmc ],
AGR #agr,
CONT.HOOK #hdhook ],
NON-LOCAL #nonloc &
[ SLASH [ LIST #middle,
LAST #last ] ],
LIGHT #light,
MODIFIED #modif ],
NON-HEAD-DTR.SYNSEM
[ LOCAL.CAT [ HEAD [ MOD < [ LOCAL local &
[ CAT [ HEAD #head,
VAL #val,
POSTHEAD #ph,
MC #hmc ],
AGR #agr,
CONT.HOOK #hdhook ],
NON-LOCAL #nonloc,
LIGHT #light,
MODIFIED #modif ] > ],
VAL [ COMPS olist,
SPR olist ] ],
NON-LOCAL [ SLASH [ LIST #first,
LAST #middle ],
QUE 0-dlist & [ LIST null ] ] ],
C-CONT.RELS <! !> ].
head-mod-phrase-simple := basic-head-mod-phrase-simple &
[ HEAD-DTR.SYNSEM.LOCAL.CONT.HOOK.LTOP #htop,
NON-HEAD-DTR.SYNSEM.LOCAL.CAT.HEAD.MOD < [ LOCAL.CONT.HOOK.LTOP #htop ] >].
adj-head-phrase := basic-head-mod-phrase-simple & head-final &
[ SYNSEM [ LOCAL.CAT.POSTHEAD #ph,
MODIFIED lmod & [ PERIPH #periph ],
LIGHT #light ],
HEAD-DTR.SYNSEM [ LOCAL.CAT.POSTHEAD #ph,
LIGHT #light ],
NON-HEAD-DTR.SYNSEM [ LOCAL.CAT [ VAL.COMPS < > ],
NON-LOCAL [ SLASH 0-dlist,
REL 0-dlist ],
MODIFIED.PERIPH #periph ] ].
head-adj-phrase := basic-head-mod-phrase-simple & head-initial & phrasal &
[ SYNSEM [ LOCAL.CAT.POSTHEAD +,
MODIFIED rmod ],
HEAD-DTR.SYNSEM.MODIFIED notmod-or-rmod,
NON-HEAD-DTR.SYNSEM [ LOCAL.CAT.POSTHEAD +,
NON-LOCAL.QUE 0-dlist ] ].
; We split head-adj-phrase and adj-head-phrase into two each,
; one for intersective modifiers and one for scopal modifiers, in order to
; get desired results for recursive modification as in "apparently difficult
; problem" (cf. Kasper '98). This split is also used in generation, where
; we delay construction of intersective modification, but not scopal.
scopal-mod-phrase := head-mod-phrase-simple &
[ NON-HEAD-DTR.SYNSEM.LOCAL [ CAT.HEAD.MOD < [ LOCAL scopal-mod ] >,
CONT.HOOK #hook ],
C-CONT [ HOOK #hook,
HCONS <! !> ] ].
; ERB 2004-05-18 I'm guessing that MSG no-msg on the head
; daughter here is going to turn out too restrictive for other
; languages.
; ERB 2007-01-21 The option to say MSG no-msg is no longer available.
; But, it's probably less necessary, since we'll have fewer non-branching
; rules?
isect-mod-phrase := head-mod-phrase-simple & head-compositional &
[ HEAD-DTR.SYNSEM.LOCAL.CONT [ HOOK.LTOP #hand ],
NON-HEAD-DTR.SYNSEM.LOCAL [ CAT.HEAD.MOD < [ LOCAL intersective-mod ] >,
CONT.HOOK.LTOP #hand ],
C-CONT.HCONS <! !> ].
adj-head-scop-phrase := adj-head-phrase & scopal-mod-phrase &
[ NON-HEAD-DTR.SYNSEM.LOCAL.CAT.POSTHEAD - ].
head-adj-scop-phrase := head-adj-phrase & scopal-mod-phrase &
[ NON-HEAD-DTR.SYNSEM.NON-LOCAL.REL 0-dlist ].
adj-head-int-phrase := adj-head-phrase & isect-mod-phrase &
[ NON-HEAD-DTR.SYNSEM.LOCAL.CAT [ POSTHEAD - ] ].
head-adj-int-phrase := head-adj-phrase & isect-mod-phrase.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Lexical types
;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Lexical entries will be cross-classified along many dimensions,
; including:
;
; -- Whether or not they introduce non-empty non-local feature values
; -- Amalgamation of non-local features
; -- Whether or not they are fully inflected as listed
; in the lexicon.
; -- Part of speech (and associated semantic generalizations)
; -- Subcategorization
; -- Values for the HOOK features
;
; On the first three dimensions, the vast majority of words will
; actually follow the general pattern. In order to facilitate the
; definition of types (in particular grammars) for those cases that
; don't, the constraints are stated on separate types. Additional
; types can be created as required by inheriting from all of the types
; that are still relevant. This is clearly an area to investigate
; the use of defaults, as we learn more about best practice concerning
; their use.
;
; Note that we don't treat these dimensions as entirely independent
; of each other, but rather hope to strike a balance between flexibility
; and redundancy.
;
; We are currently avoiding any development within the Matrix of the
; subhierarchy under head (see notes at the definition of type head
; above), believing that the exact geometry of that hierarchy to be
; somewhat language dependent. Thus, even the types for the part of
; speech dimension will not specify head values, and will need to be
; specialized in particular grammars to do so. Furthermore, the
; subcategorization types will specify only the number of syntactic
; arguments and their linking to the semantic relations.
; Update: 2004-08-26 We have devised a means of adding in a subhierarchy
; under head without prejudging the disjunctive types needed. Therefore,
; the part of speech types will now specify HEAD values. Nonetheless,
; the HEAD values of arguments are left underspecified, as that does
; vary across languages.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; HOOK feature values
; LKEYS.KEYREL is a short-cut to the relation that is going to
; contribute the LTOP and INDEX for the word, such that linking
; types and lexical entries don't have to refer to a specific position
; on the RELS list.
norm-ltop-lex-item := lex-item &
[ SYNSEM [ LOCAL.CONT [ HOOK [ LTOP #ltop ],
RELS.LIST.FIRST #keyrel ],
LKEYS.KEYREL #keyrel & [ LBL #ltop ] ] ].
norm-hook-lex-item := norm-ltop-lex-item &
[ SYNSEM [ LOCAL.CONT.HOOK.INDEX #index,
LKEYS.KEYREL.ARG0 #index ] ].
; ERB 2007-02-26 For modifiers. Elements that have a double life
; as attributive and predicative become tricky. Attributive adjectives
; and PPs should be raise-index-mod-lex-item, while predicative
; ones should be norm-hook-lex-item. But how to relate the two?
; Also, reconsider whether I want to do this for intersective as
; well as scopal modifiers, or just the scopal guys.
raise-index-mod-lex-item := norm-ltop-lex-item
[ SYNSEM.LOCAL [ CAT.HEAD.MOD < [ LOCAL.CONT.HOOK.INDEX #index ] >,
CONT.HOOK.INDEX #index ] ].
; Furthermore, most lexical items contribute only one relation, and
; have empty HCONS values.
single-rel-lex-item := lex-item &
[ SYNSEM.LOCAL.CONT.RELS <! relation !> ].
no-hcons-lex-item := lex-item &
[ SYNSEM.LOCAL.CONT.HCONS <! !> ].
; ERB 2005-05-11 Normal lex items don't introduce messages.
; Since I'm trying out an analysis where the no-msg-phrases
; copy of MSG values, need to bottom out in MSG no-msg
; on most lex items.
; ERB 2007-01-21 No more messages.
;no-msg-lex-item := lex-item &
; [ SYNSEM.LOCAL.CONT.MSG no-msg ].
; ERB 2007-01-22 Removing no-hcons-lex-item here, since now
; there are many words which introduce hcons (in the absence of
; messages). HCONS should now (in most cases) be constrained
; by the linking types.
norm-sem-lex-item := norm-hook-lex-item & single-rel-lex-item.
hcons-lex-item := norm-hook-lex-item & single-rel-lex-item.
; ERB 2005-08-07 For lexical items like case-marking adpositions
; and auxiliaries which only contribute tense/aspect information.
; These all take HOOK from their first complements.
raise-sem-lex-item := no-hcons-lex-item &
[ SYNSEM.LOCAL [ CONT [ RELS <! !>,
HOOK #hook ],
CAT.VAL.COMPS < [ LOCAL.CONT.HOOK #hook ] , ... > ]].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; inflected v. uninflected
uninflected-lexeme := lex-item &
[ INFLECTED - ].
fully-inflected-lexeme := lex-item &
[ INFLECTED + ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Non-local features: Values and amalgamation
; Not all of the non-local features will necessarily be useful in
; all languages. SLASH is for `topicalization' style long distance
; dependencies. REL and QUE are used in the analysis of pied piping
; in relative clauses and questions respectively, and also to signal
; the presence of a question element in in-situ questions so that
; clausal constructions with question semantics can require the presence
; of a question word.
; basic_zero_arg lexical items have empty ARG-ST lists. They may
; introduce a non-empty value for one of the non-local features.
basic-zero-arg := lex-item &
[ ARG-ST < > ].
zero-arg-nonslash := lex-item &
[ SYNSEM.NON-LOCAL.SLASH 0-dlist ].
zero-arg-nonrel : = lex-item &
[ SYNSEM.NON-LOCAL.REL 0-dlist ].
zero-arg-nonque : = lex-item &
[ SYNSEM.NON-LOCAL.QUE 0-dlist ].
; Non-argument taking items which introduce no non-local values.
norm-zero-arg := zero-arg-nonslash & zero-arg-nonrel & zero-arg-nonque.
; Items introducing a rel value.
zero-arg-rel := zero-arg-nonslash & zero-arg-nonque.
; Items introducing a que value.
; ERB 2004-05-24 Bug fix: This was inheriting from zero-arg-nonque
; instead of zero-arg-nonrel.
zero-arg-que := zero-arg-nonslash & zero-arg-nonrel.
; Items introducing a slash value, e.g., resumptive pronouns in French.
zero-arg-slash := zero-arg-nonrel & zero-arg-nonque.
; These non-zero argument types only amalgamate the non-local
; feature values of their complements. They do not introduce any
; non-local values of their own, nor do they bind off any non-local
; feature values. This assumes that the bottom of most long-distance
; dependencies is handles by a rule that constrains an argument (either
; on the ARG-ST list or a valence list) to be a synsem of type gap.
; Elements like English tough adjectives which bind off a slash value
; will need a new type that doesn't amalgamate that slash value.
; Elements which both introduce REL or QUE values and take one or
; more arguments will require appropriate new types as well, which
; amalgamate everything but add a value in addition.
basic-one-arg := lex-item &
[ ARG-ST < [ NON-LOCAL [ SLASH #slash,
REL #rel,
QUE #que ] ] >,
SYNSEM.NON-LOCAL [ SLASH #slash,
REL #rel,
QUE #que ] ].
basic-two-arg := lex-item &
[ ARG-ST < [ NON-LOCAL [ SLASH [ LIST #smiddle,
LAST #slast ],
REL [ LIST #rmiddle,
LAST #rlast ],
QUE [ LIST #qmiddle,
LAST #qlast ] ] ],
[ NON-LOCAL [ SLASH [ LIST #sfirst,
LAST #smiddle ],
REL [ LIST #rfirst,
LAST #rmiddle ],
QUE [ LIST #qfirst,
LAST #qmiddle ] ] ] >,
SYNSEM.NON-LOCAL [ SLASH [ LIST #sfirst,
LAST #slast ],
REL [ LIST #rfirst,
LAST #rlast ],
QUE [ LIST #qfirst,
LAST #qlast ] ] ].
basic-three-arg := lex-item &
[ ARG-ST < [ NON-LOCAL [ SLASH [ LIST #smiddle2,
LAST #slast ],
REL [ LIST #rmiddle2,
LAST #rlast ],
QUE [ LIST #qmiddle2,
LAST #qlast ] ] ],
[ NON-LOCAL [ SLASH [ LIST #sfirst,
LAST #smiddle1 ],
REL [ LIST #rfirst,
LAST #rmiddle1 ],
QUE [ LIST #qfirst,
LAST #qmiddle1 ] ] ],
[ NON-LOCAL [ SLASH [ LIST #smiddle1,
LAST #smiddle2 ],
REL [ LIST #rmiddle1,
LAST #rmiddle2 ],
QUE [ LIST #qmiddle1,
LAST #qmiddle2 ] ] ] >,
SYNSEM.NON-LOCAL [ SLASH [ LIST #sfirst,
LAST #slast ],
REL [ LIST #rfirst,
LAST #rlast ],
QUE [ LIST #qfirst,
LAST #qlast ] ] ].
; ERB 2007-01-22 In the message-free universe, many more qeqs are
; introduced by lexical items (basically any head that selects a clausal
; complement). To facilitate this, I'm going to move the no-hcons
; distinction to the linking types part of the hierarchy (and out of
; the pos part of the hierarchy). In this connection, it's useful
; to have subtypes of basic-n-arg which inherit from no-hcons-lex-item.
basic-one-arg-no-hcons := basic-one-arg & no-hcons-lex-item.
basic-two-arg-no-hcons := basic-two-arg & no-hcons-lex-item.
basic-three-arg-no-hcons := basic-three-arg & no-hcons-lex-item.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Subcategorization/linking
; These types specify the number of syntactic arguments, a relation
; type, and the relationship between the syntactic arguments and the
; relation type. They inherit from the amalgamation types above,
; since we believe that the need for cross-classification across these
; two dimensions is minimal. That is, words which do something other
; than simply amalgamate the non-local feature values of their
; arguments probably have quirky subcategorization frames as well.
; It is expected that further types will need to be defined in
; every particular grammar, but these types should cover the vast
; majority of open-class lexical items, and assist with some closed-class
; items as well.
; As explained above, we are leaving the HEAD values of the syntactic
; arguments underspecified as there are cross-linguistic differences
; in the part of speech of arguments in otherwise similar
; subcategorization types: English transitive verbs select two NPs.
; Japanese transitives select two PPs, as the case particles are
; treated as postpositions.
; We will, however, specify the semantic type of arguments, since it
; is relevant to the semantic constraints associated with each lexical
; item. Clausal-argument taking elements identify the LTOP of their
; complement with an ARGn position, rather than the INDEX. (Even
; though handles are involved here, we do identification rather than a
; relationship mediated by HCONS because the messages already leave
; enough room for quantifiers to scope at the top of the embedded
; clause, and scope ambiguities between quantifiers and messages would
; be meaningless.) Subordinating conjunctions will have even more
; to say semantically.
; We are also leaving underspecified the mapping from ARG-ST to
; valence features. The phrase structure rules assume one particular
; inventory of valence features (SPR, SUBJ, COMPS), but the exact
; deployment of those features might be language-specific (e.g.,
; in syntactically ergative languages). NB: The phrase structure
; rules differentiate SPR and SUBJ in that SPR is treated as the
; semantic head.
; By hypothesis, the order of the syntactic arguments on the ARG-ST
; list corresponds to the order of the semantric arguments ARGn, with
; the caveat that not all syntactic arguments are also semantic
; arguments, as in constructions involving expletives or raising. The
; ARGn features do not correspond to theta roles but rather should
; have their interpretation specified in the Sem-I, where the
; interpretations of each ARGn will be relative to (classes of)
; predicates. Nonetheless, we expect the order of elements on the
; ARG-ST list follow a thematic role or grammatical function hierarchy
; in underived lexical items. This order may be perturbed by lexical
; rules. In addition, there are degrees of freedom allowed by the
; mapping from ARG-ST to the valence features and the possibility of
; scrambling by realizing elements of a valence list "out of order".
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; For verbs, adjectives and nouns that don't require specifiers
; Kim is tired, Kim sleeps, Kim is in the park, Kim is a student.
; Kim ga nemui, Kim ga neru.
; Kim est fatigue, Kim dors, Kim est a la maison, Kim est etudiant.
; (Kim is a student requires an analysis of predicative NPs.)
intransitive-lex-item := basic-one-arg-no-hcons &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX ref-ind & #ind ] >,
SYNSEM.LKEYS.KEYREL.ARG1 #ind ].
; It rains.
; Il pleut.
expl-arg-only-lex-item := basic-one-arg-no-hcons &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX expl-ind ] > ].
; Kim eats lunch. Kim is fond of apples.
; Kim ga hiru gohan wo taberu.
; Kim mange le dejeuner.
transitive-lex-item := basic-two-arg-no-hcons &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX ref-ind & #ind1 ],
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind2 ] >,
SYNSEM.LKEYS.KEYREL [ ARG1 #ind1,
ARG2 #ind2 ] ].
; Kim gives Sandy a book.
; Kim ga Sandy ni hon wo ageru.
; Kim donne un livre a Sandy.
ditransitive-lex-item := basic-three-arg-no-hcons &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX ref-ind & #ind1 ],
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind2 ],
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind3 ] >,
SYNSEM.LKEYS.KEYREL [ ARG1 #ind1,
ARG2 #ind2,
ARG3 #ind3 ] ].
; That Kim sleeps is obvious.
; [NB: This is just one possible analysis of clausal subjects.
; in English, a non-branching NP -> CP rule is also plausible.
; We are interested in arguments from other languages supporting
; one analysis or the other.]
; ERB 2007-01-22 Inserting qeqs now that we no longer have messages
; intervening.
clausal-arg-intrans-lex-item := basic-one-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.LTOP #larg ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #harg ] ] ].
; That Kim sleeps surprises Sandy.
; ERB 2007-01-22 Inserting qeqs now that we no longer have messages
; intervening.
clausal-first-arg-trans-lex-item := basic-two-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.LTOP #larg ],
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #harg,
ARG2 #ind ] ] ].
; Sandy believes that Kim sleeps.
; Sandy ga Kim ga neru to shinjita.
; Sandy croit que Kim dors.
; ERB 2007-01-22 Inserting qeqs now that we no longer have messages
; intervening.
clausal-second-arg-trans-lex-item := basic-two-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX ref-ind & #ind ],
[ LOCAL.CONT.HOOK.LTOP #larg ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #ind,
ARG2 #harg ] ] ].
; Kim told Sandy that Pat slept.
; Kim ga Sandy ni Pat ga neta to itta.
; Kim a dit a Sandy que Pat dormait.
; ERB 2007-01-22 Inserting qeqs now that we no longer have messages
; intervening.
clausal-third-arg-ditrans-lex-item := basic-three-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX ref-ind & #ind1 ],
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind2 ],
[ LOCAL.CONT.HOOK.LTOP #larg ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #ind1,
ARG2 #ind2,
ARG3 #harg ] ] ].
; It is obvious that Kim sleeps.
; Il est evident que Kim dors.
; (Many of these might be generated via a lexical rule from
; clausal-arg-intrans-lex-items, but some probably don't alternate).
; ERB 2007-01-22 Inserting qeqs now that we no longer have messages
; intervening.
clausal-expl-arg-lex-item := basic-two-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX expl-ind ],
[ LOCAL.CONT.HOOK.LTOP #larg ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #harg ] ] ].
; Kim seems to sleep; Kim is sleeping.
trans-first-arg-raising-lex-item := basic-two-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX #ind ],
[ LOCAL.CONT.HOOK.XARG #ind ] > ].
; Variant expecting a relation introduced by the raising
; predicate. Adding qeq between ARG1 and LTOP. Can't
; cross-classify with norm-sem-lex-item.
; These can't inherit from basic-verb-lex, since they
; introduce a non-empty HCONS value. Need to get
; event-relation from somewhere else.
; ERB (2007-02-20) They should be able to now that things
; are de-messaged, since basic-verb-lex no longer inherits
; from no-hcons-lex-item.
trans-first-arg-raising-lex-item-1 := trans-first-arg-raising-lex-item &
[ ARG-ST < [ ],
[ LOCAL.CONT.HOOK.LTOP #larg ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq &
[ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL event-relation &
[ ARG1 #harg ]]].
; Variant for raising verbs/auxiliaries which don't
; introduce a predicate of their own.
trans-first-arg-raising-lex-item-2 := trans-first-arg-raising-lex-item &
raise-sem-lex-item.
; Kim tries to sleep.
; ERB 2007-01-22 Adding in qeq here.
trans-first-arg-control-lex-item := basic-two-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX ref-ind & #ind ],
[ LOCAL.CONT.HOOK [ XARG #ind,
LTOP #larg ] ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #ind,
ARG2 #harg ] ] ].
; Kim appeared to Sandy to leave, Kim seems to Sandy to have left.
; (Treat "Kim seems happy to Sandy" as derived in some way?)
; ERB 2007-01-22 Adding in qeq here.
ditrans-first-arg-raising-lex-item := basic-three-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX #ind1 ],
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind2 ],
[ LOCAL.CONT.HOOK [ XARG #ind1,
LTOP #larg ] ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #ind2,
ARG2 #harg ] ] ].
; Kim promised Sandy to leave.
; ERB 2007-01-22 Adding in qeq here.
ditrans-first-arg-control-lex-item := basic-three-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX ref-ind & #ind1 ],
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind2 ],
[ LOCAL.CONT.HOOK [ XARG #ind1,
LTOP #larg ] ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #ind1,
ARG2 #ind2,
ARG3 #harg ] ] ].
; Kim believed Sandy to have left.
; ERB 2007-01-22 Adding in qeq here.
distrans-second-arg-raising-lex-item := basic-three-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX ref-ind & #ind1 ],
[ LOCAL.CONT.HOOK.INDEX #ind2 ],
[ LOCAL.CONT.HOOK [ XARG #ind2,
LTOP #larg ] ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #ind1,
ARG2 #harg ] ] ].
; Kim appealed to Sandy to leave.
; ERB 2007-01-22 Adding in qeq here.
ditrans-second-arg-control-lex-item := basic-three-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.INDEX ref-ind & #ind1 ],
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind2 ],
[ LOCAL.CONT.HOOK [ XARG #ind2,
LTOP #larg ] ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #ind1,
ARG2 #ind2,
ARG3 #harg ] ] ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; For nouns requiring specifiers, adjectives taking degree specifiers, etc.
; Keep specifiers on ARG-ST because amalgamation constraints are
; stated there. Also, in the eventual hope of implementing
; a binding theory, which seems to need to take account of possessor
; nouns in picture NPs (Runner et al 2004).
; a dog, Kim's dog
; The specifier does not play a semantic role in the 'dog' relation,
; so there is nothing more to say: these can just inherit from
; basic-one-arg and no-hcons-lex-item, and not link in that one
; argument. The head-spec rule identifies the head's HOOK with the
; SPEC..HOOK of the specifier, which gives the specifier access to the
; noun's index for linking purposes.
; a book about dogs
; very fond of apples
spr-plus-one-arg-lex-item := basic-two-arg-no-hcons &
[ ARG-ST < synsem,
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind ] >,
SYNSEM.LKEYS.KEYREL.ARG1 #ind ].
; the claim that Sandy slept.
; very happy that Sandy slept
; ERB 2007-01-22 Adding qeq in here.
spr-plus-clausal-arg-lex-item := basic-two-arg &
[ ARG-ST < synsem,
[ LOCAL.CONT.HOOK.LTOP #larg ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL.ARG1 #harg ] ].
; Whether or not we need more types here is going to largely depend
; on whether we treat deverbal nouns semantically as nominalizations,
; and how we handle the linking in that case. Leave this for later.
; Kim is very eager to sleep.
; How eager to sleep is Kim?
; ERB 2007-01-22 Adding qeq in here.
spr-trans-first-arg-control-lex-item := basic-three-arg &
[ ARG-ST < synsem,
[ LOCAL.CONT.HOOK.INDEX ref-ind & #ind ],
[ LOCAL.CONT.HOOK [ XARG #ind,
LTOP #larg ] ] >,
SYNSEM [ LOCAL.CONT.HCONS <! qeq & [ HARG #harg,
LARG #larg ] !>,
LKEYS.KEYREL [ ARG1 #ind,
ARG2 #harg ] ] ].
; Possibly more types related to the above.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Modifiers
; Modifiers which can be used either attributively or predicatively
; identify their XARG with their MOD..IND, so that the modified element
; or the subject play the same role. Assume other constraints will block
; a modifier from picking up a subject (in the ERG, this is done by
; not giving them any SUBJ ever, since adjectives and PPs require
; the support of the copula to function as predicates; in a language
; which doesn't use the copula in these contexts, something else would
; need to be done.
attrib-or-pred-lex-item := lex-item &
[ SYNSEM.LOCAL [ CAT.HEAD.MOD.FIRST.LOCAL.CONT.HOOK.INDEX #ind,
CONT.HOOK.XARG #ind ] ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Part of speech
; These types are meant to cross-classify with the above, but
; many closed-class items have linking constraints which are particular
; to the part of speech class, and so some linking constraints are
; included.
; Bringing in norm-sem-lex-item here where relevant, although this
; might be too stringent.
; ERB 2006-10-05 Temporarily constraining INDEX.MESG to be
; prop-or-ques. This will need to be revisited if we're going to
; allow commands, but look at what ERG does first.
; ERB 2007-01-21 Moving to constructionally introduced SF values.
; Removing that constraint on now defunct feature MESG.
basic-verb-lex := norm-sem-lex-item &
[ SYNSEM [ LOCAL.CAT.HEAD verb,
LKEYS.KEYREL event-relation ]].
; ERB 2004-08-26 Put in qeq, assuming that for all scopal modifiers
; the relevant argument position is ARG1, and there will be
; no further handle constraints. The latter especially may be
; too strong.
; Adpositions and adjectives (also adverbs, somewhere?) may
; have additional arguments, but the modified element is assumed
; to always be the ARG1. These types should be cross-classified
; with argument structure types appropriate to their combinatoric
; potential.
scopal-mod-lex := lex-item &
[ SYNSEM [ LOCAL [ CAT.HEAD.MOD < [ LOCAL scopal-mod &
[ CONT.HOOK.LTOP #larg ]] >,
CONT.HCONS <! qeq &
[ HARG #harg,
LARG #larg ] !> ],
LKEYS.KEYREL.ARG1 #harg ]].
intersective-mod-lex := no-hcons-lex-item &
[ SYNSEM [ LOCAL.CAT.HEAD.MOD < [ LOCAL intersective-mod &
[ CONT.HOOK.INDEX #ind ]] >,
LKEYS.KEYREL.ARG1 #ind ] ].
no-mod-lex := no-hcons-lex-item &
[ SYNSEM.LOCAL.CAT.HEAD.MOD < > ].
basic-adjective-lex := single-rel-lex-item &
[ SYNSEM [ LOCAL.CAT.HEAD adj,
LKEYS.KEYREL event-relation ]].
; ERB 2007-02-26 New type raise-index-mod-lex-item to get the
; INDEX value right on modifiers. Attributive adjectives should
; inherit from this one, predicatives from norm-hook-lex-item.
; Need to worry about the relationship between the two.
basic-mod-adj-lex := basic-adjective-lex & raise-index-mod-lex-item.
basic-scopal-mod-adj-lex := basic-mod-adj-lex & scopal-mod-lex.
basic-int-mod-adj-lex := basic-mod-adj-lex & intersective-mod-lex.
basic-nomod-adj-lex := basic-adjective-lex & no-mod-lex & norm-hook-lex-item.
basic-adposition-lex := single-rel-lex-item &
[ SYNSEM [ LOCAL.CAT.HEAD adp,
LKEYS.KEYREL event-relation ]].
basic-mod-adp-lex := basic-adposition-lex & raise-index-mod-lex-item.
basic-scopal-mod-adposition-lex := basic-mod-adp-lex & scopal-mod-lex.
basic-int-mod-adposition-lex := basic-mod-adp-lex & intersective-mod-lex.
basic-nomod-adposition-lex := basic-adposition-lex & no-mod-lex & norm-hook-lex-item.
basic-adverb-lex := raise-index-mod-lex-item & single-rel-lex-item &
[ SYNSEM [ LOCAL.CAT.HEAD adv,
LKEYS.KEYREL event-relation ]].
basic-scopal-adverb-lex := basic-adverb-lex & scopal-mod-lex.
basic-int-adverb-lex := basic-adverb-lex & intersective-mod-lex.
; Anticipate subtypes of basic-noun-lex for common nouns,
; proper nouns, and pronouns. All are treated as norm-sem-lex-item
; (i.e., only introducing a single relation, and no H-CONS). One
; might think otherwise based on canonical examples from familiar
; languages in which pronouns and proper nouns don't have determiners.
; However, even in languages like English, we find examples like
; "The Kim that I know is younger than the one that you know."
; So, rather than build the quantifier for proper nouns/pronouns
; into the lexical entry, use (potentially obligatory) non-branching
; rules to introduce the quantifier and discharge the SPR requirement.
basic-noun-lex := norm-sem-lex-item &
[ SYNSEM [ LOCAL.CAT.HEAD noun,
LKEYS.KEYREL noun-relation ]].
; Note the use of the feature SPEC in basic-determiner-lex.
; This is important semantically to allow the determiner to grab
; onto the INDEX and LTOP of the N' it combines with. Elsewhere
; in the lexical types we have avoided mentioning the valence features,
; believing the mapping from ARG-ST to valence features to be somewhat
; language-specific. In this case, however, it does not concern
; a mapping to ARG-ST.
basic-determiner-lex := norm-hook-lex-item &
[ SYNSEM [ LOCAL [ CAT [ HEAD det,
VAL.SPEC.FIRST.LOCAL.CONT.HOOK [ INDEX #ind,
LTOP #larg ]],
CONT [ HCONS <! qeq &
[ HARG #harg,
LARG #larg ] !>,
RELS <! relation !> ] ],
LKEYS.KEYREL quant-relation &
[ ARG0 #ind,
RSTR #harg ] ] ].
; Subordinating conjunctions take two clauses, one as an argument
; (i.e., element of ARG-ST) and one as modifiee. We allow quantifiers
; to scope between the messages of the clauses and the subord-relation
; in order to capture the ambiguity of:
; No one drinks coffee because it tastes good.
; We are interested in examples from languages where the analogous
; sentence is not analogously ambiguous.
; No hypothesis yet about the HEAD value of these cross-linguistically.
; ERB 2007-01-21 Quickly trying to bring this into the non-message
; universe. I'm not sure why we needed space bewteen the subord-relation
; and the messages, nor if the equivalent thing can't be modeled without
; messages. Isn't enough for the quantifiers to be able to out-scope
; the subord-relation?
; basic-subord-conjunction-lex := basic-one-arg &
; [ ARG-ST < [ LOCAL.CONT.HOOK.LTOP #ltop1 ] >,
; SYNSEM [ LOCAL [ CAT.HEAD.MOD < [ LOCAL.CONT.HOOK.LTOP #ltop2 ] >,
; CONT [ HCONS <! qeq &
; [ HARG #harg,
; LARG #larg ] !>,
; RELS <! relation,
; message &
; [ LBL #msg,
; PRED proposition_m_rel,
; MARG #harg ] !>,
; HOOK [ LTOP #msg ] ] ],
; LKEYS.KEYREL subord-relation &
; [ LBL #larg,
; L-HNDL #ltop1,
; R-HNDL #ltop2 ] ] ].
basic-subord-conjunction-lex := basic-one-arg &
[ ARG-ST < [ LOCAL.CONT.HOOK.LTOP #ltop1 ] >,
SYNSEM [ LOCAL [ CAT.HEAD.MOD < [ LOCAL.CONT.HOOK.LTOP #ltop2 ] >,
CONT [ HCONS <! !>,
RELS <! relation !>,
HOOK [ LTOP #ltop ] ] ],
LKEYS.KEYREL subord-relation &
[ LBL #ltop,
L-HNDL #ltop1,
R-HNDL #ltop2 ] ] ].
; Coming soon:
; Lexical type for negative particles like English "not"
; Lexical type for WH elements
; Documentation listing the phenomena handled by these lexical types.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Coordination (added by sfd 08/02/2005)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Two relations used in coordination:
;
; implicit-coord-rel: used when there's no overt conjunction (or
; morpheme) providing the coordination relation.
;
; null-coord-rel: used when a conjunction contributes *no* relation.
implicit-coord-rel := coordination-relation &
[ PRED 'implicit_coord_rel ].
null-coord-rel := coordination-relation &
[ PRED 'null_coord_rel ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Conjunction parts of speech
conj-lex := basic-zero-arg & single-rel-lex-item & no-hcons-lex-item &
[ CFORM string,
SYNSEM [ LOCAL [ CAT [ HEAD conj & [ MOD null ],
VAL [ SPR < >,
COMPS < >,
SUBJ < > ]],
CONT [ HOOK [ LTOP #ltop,
INDEX #index ],
RELS.LIST.FIRST #keyrel ]],
LKEYS.KEYREL #keyrel & coordination-relation & [ LBL #ltop,
C-ARG #index ]]].
; A nosem-conj-lex is a conjunction that contributes no relation.
; Used below in "omnisyndeton" coordination.
nosem-conj-lex := basic-zero-arg & no-hcons-lex-item &
[ SYNSEM [ LOCAL [ CAT [ HEAD conj & [ MOD null ],
VAL [ SPR < >,
COMPS < >,
SUBJ < > ]],
CONT.RELS <! !> ]]].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Coordination phrases and rules
coord-phrase := binary-phrase &
[ SYNSEM.LOCAL [ COORD-STRAT #cstrat,
CAT [ HEAD.MOD #mod,
VAL #val ]],
LCOORD-DTR #ldtr & sign & [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod,
VAL #val ]]],
RCOORD-DTR #rdtr & sign & [ SYNSEM.LOCAL [ COORD-STRAT #cstrat,
CAT [ HEAD.MOD #mod,
VAL #val ]]],
ARGS < #ldtr, #rdtr > ].
topormid-coord-phrase := coord-phrase &
[ C-CONT.HOOK [ LTOP #lbl, INDEX #carg ],
LCOORD-DTR.SYNSEM.LOCAL.CONT.HOOK.INDEX #lind,
RCOORD-DTR.SYNSEM.LOCAL [ COORD-REL [ LBL #lbl,
C-ARG #carg,
L-INDEX #lind,
R-INDEX #rind ],
CONT.HOOK.INDEX #rind ]].
top-coord-rule := topormid-coord-phrase &
[ SYNSEM.LOCAL.COORD - ].
mid-coord-rule := topormid-coord-phrase &
[ SYNSEM.LOCAL [ COORD +,
COORD-REL implicit-coord-rel ]].
bottom-coord-phrase := phrase &
[ CONJ-DTR sign,
NONCONJ-DTR sign ].
unary-bottom-coord-rule := bottom-coord-phrase & unary-phrase &
[ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod,
VAL #val ],
COORD +,
COORD-REL #crel ],
C-CONT [ HOOK [ INDEX #rind ],
RELS <! #crel !>,
HCONS <! !> ],
NONCONJ-DTR sign & #ncdtr,
ARGS < #ncdtr & [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod,
VAL #val ],
COORD -,
CONT.HOOK [ INDEX #rind ]]] > ].
;;; ERB 2007-05-16 Note for sfd: There is probably a single type
;;; you could inherit from here that combines what you need.
infl-bottom-coord-rule := same-local-lex-rule &
same-non-local-lex-rule &
same-modified-lex-rule &
same-light-lex-rule &
inflecting-lex-rule &
[ INFLECTED +,
DTR.INFLECTED -,
SYNSEM.LOCAL [ COORD +,
COORD-REL #crel ],
C-CONT [ RELS <! #crel !>,
HCONS <! !> ]].
binary-bottom-coord-rule := bottom-coord-phrase & binary-phrase &
[ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod,
VAL #val ],
COORD +,
COORD-REL #crel,
COORD-STRAT #cform ],
C-CONT [ HOOK [ INDEX #rind ],
RELS <! !>,
HCONS <! !> ],
CONJ-DTR conj-lex & [ CFORM #cform,
SYNSEM.LKEYS.KEYREL #crel ],
NONCONJ-DTR sign & [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod,
VAL #val ],
COORD -,
CONT.HOOK [ INDEX #rind ]]]].
conj-first-bottom-coord-rule := binary-bottom-coord-rule &
[ CONJ-DTR #cdtr,
NONCONJ-DTR #ncdtr,
ARGS < #cdtr, #ncdtr > ].
conj-last-bottom-coord-rule := binary-bottom-coord-rule &
[ CONJ-DTR #cdtr,
NONCONJ-DTR #ncdtr,
ARGS < #ncdtr, #cdtr > ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; *syndeton rules: Rules that describe the different kinds of marking
; strategies used for coordination in various languages.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; monopoly*: Mandatory monosyndeton with optional polysyndeton. This
; is the familiar Indo-European pattern, in which at least one
; coordinator is mandatory ("A B and C") and more than one is possible
; ("A and B and C").
monopoly-top-coord-rule := top-coord-rule &
[ LCOORD-DTR.SYNSEM.LOCAL.COORD -,
RCOORD-DTR.SYNSEM.LOCAL.COORD + ].
monopoly-mid-coord-rule := mid-coord-rule &
[ LCOORD-DTR.SYNSEM.LOCAL.COORD -,
RCOORD-DTR.SYNSEM.LOCAL.COORD + ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; apoly: These rules handle two coordination strategies:
;
; Asyndeton, in which no coordinators appear: "A B C".
;
; Polysyndeton, in which an N-way coordination is marked with N-1
; coordinators:
; "A and B and C", not "A B and C"
;
; For both of these, there is NO MID RULE. The difference between
; them is captured in the bottom rule: asyndeton will have a unary
; (and non-inflecting) bottom rule.
apoly-top-coord-rule := top-coord-rule &
[ LCOORD-DTR.SYNSEM.LOCAL.COORD -,
RCOORD-DTR.SYNSEM.LOCAL.COORD + ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; omni: This handles a variety of polysyndeton, called here for
; clarity "omnisyndeton", in which for an N-way coordination, N
; coordinators are required:
;
; "and A and B and C" or "A and B and C and".
;
; This coordination strategy requires a significantly approach than
; the others. Rather than a single kind of bottom rule, there are two
; kinds. The first kind, still called "bottom", handles the single
; lowest (rightmost) coordinand. The other kind, called "left",
; handles all other coordinands (it's called "left" because it is
; always the left daughter of a top- or mid- rule). Because there are
; N coordinators for N coordinands in this strategy, one of the
; conjunctions must contribute *no* coordination relation, or else
; we'd have too many. The bottom rule is the exceptional one: it
; requires that its conjunction daughter be of type nosem-conj-lex.
;
; The mid- and top- rules are also slightly different from the other
; coordination strategies, in that they take the COORD-REL from the
; *left* daughter instead of the right.
omni-binary-bottom-coord-rule := bottom-coord-phrase & binary-phrase &
[ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod,
VAL #val ],
COORD +,
COORD-REL null-coord-rel ],
C-CONT [ HOOK [ INDEX #rind ],
RELS <! !>,
HCONS <! !> ],
CONJ-DTR nosem-conj-lex,
NONCONJ-DTR sign & [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod,
VAL #val ],
COORD -,
CONT.HOOK [ INDEX #rind ]]]].
omni-conj-first-bottom-coord-rule := omni-binary-bottom-coord-rule &
[ CONJ-DTR #cdtr,
NONCONJ-DTR #ncdtr,
ARGS < #cdtr, #ncdtr > ].
omni-conj-last-bottom-coord-rule := omni-binary-bottom-coord-rule &
[ CONJ-DTR #cdtr,
NONCONJ-DTR #ncdtr,
ARGS < #ncdtr, #cdtr > ].
omni-left-coord-rule := bottom-coord-phrase.
omni-binary-left-coord-rule := omni-left-coord-rule & binary-phrase &
[ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod,
VAL #val ],
COORD -,
COORD-REL #crel ],
C-CONT [ HOOK [ INDEX #rind ],
RELS <! !>,
HCONS <! !> ],
CONJ-DTR conj-lex & [ SYNSEM.LKEYS.KEYREL #crel ],
NONCONJ-DTR sign & [ SYNSEM.LOCAL [ CAT [ HEAD.MOD #mod,
VAL #val ],
COORD -,
CONT.HOOK [ INDEX #rind ]]]].
omni-conj-first-left-coord-rule := omni-binary-left-coord-rule &
[ CONJ-DTR #cdtr,
NONCONJ-DTR #ncdtr,
ARGS < #cdtr, #ncdtr > ].
omni-conj-last-left-coord-rule := omni-binary-left-coord-rule &
[ CONJ-DTR #cdtr,
NONCONJ-DTR #ncdtr,
ARGS < #ncdtr, #cdtr > ].
;;; ERB 2007-05-16 Note for sfd: There is probably a single type
;;; you could inherit from here that combines what you need.
infl-left-coord-rule := omni-left-coord-rule &
same-modified-lex-rule &
same-light-lex-rule &
same-local-lex-rule &
same-non-local-lex-rule &
inflecting-lex-rule &
[ INFLECTED +,
DTR.INFLECTED -,
SYNSEM.LOCAL [ COORD -,
COORD-REL #crel ],
C-CONT [ RELS <! #crel !>,
HCONS <! !> ]].
omni-coord-phrase := coord-phrase &
[ C-CONT.HOOK [ LTOP #lbl, INDEX #carg ],
LCOORD-DTR omni-left-coord-rule &
[ SYNSEM.LOCAL [ COORD-REL [ LBL #lbl,
C-ARG #carg,
L-INDEX #lind,
R-INDEX #rind ],
CONT.HOOK.INDEX #lind ]],
RCOORD-DTR.SYNSEM.LOCAL [ COORD +,
CONT.HOOK.INDEX #rind ]].
omni-top-coord-rule := omni-coord-phrase &
[ SYNSEM.LOCAL.COORD - ].
omni-mid-coord-rule := omni-coord-phrase &
[ SYNSEM.LOCAL.COORD + ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; N Coordination rules
n-coord-phrase := coord-phrase &
[ SYNSEM.LOCAL.CAT.VAL.SPR < [ ] >,
SYNSEM.LOCAL.CAT.HEAD noun,
LCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD noun,
RCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD noun ].
basic-n-top-coord-rule := n-coord-phrase &
[ SYNSEM.LOCAL.CAT.VAL.SPR < [ ] >,
C-CONT [ RELS <! !>,
HCONS <! !> ]].
basic-n-mid-coord-rule := n-coord-phrase &
[ SYNSEM.LOCAL.COORD-REL #crel,
C-CONT [ RELS <! #crel !>,
HCONS <! !> ]].
n-bottom-coord-phrase := bottom-coord-phrase &
[ SYNSEM.LOCAL.CAT [ HEAD noun,
VAL.SPR < [ ] > ],
NONCONJ-DTR.SYNSEM.LOCAL.CAT [ HEAD noun,
VAL.SPR < [ ] > ]].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; NP Coordination rules
np-coord-phrase := coord-phrase &
[ SYNSEM.LOCAL.CAT.VAL.SPR < >,
SYNSEM.LOCAL.CAT.HEAD noun,
LCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD noun,
RCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD noun ].
basic-np-top-coord-rule := np-coord-phrase &
[ SYNSEM.LOCAL.CAT.VAL.SPR < >,
C-CONT [ HOOK [ LTOP #ltop,
INDEX #ind ],
RELS <! [ PRED "exist_q_rel", ARG0 #ind, RSTR #ltop ] !>,
HCONS <! !> ]].
basic-np-mid-coord-rule := np-coord-phrase &
[ SYNSEM.LOCAL.COORD-REL #crel,
C-CONT [ RELS <! [ ARG0 #carg, RSTR #lbl ], #crel !>,
HCONS <! !> ],
RCOORD-DTR.SYNSEM.LOCAL.COORD-REL [ LBL #lbl,
C-ARG #carg ]].
np-bottom-coord-phrase := bottom-coord-phrase &
[ SYNSEM.LOCAL.CAT [ HEAD noun,
VAL.SPR < > ],
NONCONJ-DTR.SYNSEM.LOCAL.CAT [ HEAD noun,
VAL.SPR < > ]].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Event Coordination rules (for verbs and adjectives)
event-coord-phrase := coord-phrase &
[ SYNSEM.LOCAL.CONT.HOOK.INDEX [ E #tam ],
LCOORD-DTR.SYNSEM.LOCAL.CONT.HOOK.LTOP #lhndl,
RCOORD-DTR.SYNSEM.LOCAL [ COORD-REL [ L-HNDL #lhndl,
R-HNDL #rhndl,
R-INDEX.E #tam ],
CONT.HOOK.LTOP #rhndl ]].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ADJ Coordination rules
adj-coord-phrase := event-coord-phrase &
[ SYNSEM.LOCAL.CAT [ POSTHEAD #ph,
HEAD adj ],
LCOORD-DTR.SYNSEM.LOCAL.CAT [ POSTHEAD #ph,
HEAD adj ],
RCOORD-DTR.SYNSEM.LOCAL.CAT [ POSTHEAD #ph,
HEAD adj ]].
basic-adj-top-coord-rule := adj-coord-phrase &
[ C-CONT [ RELS <! !>,
HCONS <! !> ]].
basic-adj-mid-coord-rule := adj-coord-phrase &
[ SYNSEM.LOCAL.COORD-REL #crel,
C-CONT [ RELS <! #crel !>,
HCONS <! !> ]].
adj-bottom-coord-phrase := bottom-coord-phrase &
[ SYNSEM.LOCAL.CAT.HEAD adj,
NONCONJ-DTR.SYNSEM.LOCAL.CAT.HEAD adj ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; ADV Coordination rules
adv-coord-phrase := event-coord-phrase &
[ SYNSEM.LOCAL.CAT [ POSTHEAD #ph,
HEAD adv ],
LCOORD-DTR.SYNSEM.LOCAL.CAT [ POSTHEAD #ph,
HEAD adv ],
RCOORD-DTR.SYNSEM.LOCAL.CAT [ POSTHEAD #ph,
HEAD adv ]].
basic-adv-top-coord-rule := adv-coord-phrase &
[ C-CONT [ RELS <! !>,
HCONS <! !> ]].
basic-adv-mid-coord-rule := adv-coord-phrase &
[ SYNSEM.LOCAL.COORD-REL #crel,
C-CONT [ RELS <! #crel !>,
HCONS <! !> ]].
adv-bottom-coord-phrase := bottom-coord-phrase &
[ SYNSEM.LOCAL.CAT.HEAD adv,
NONCONJ-DTR.SYNSEM.LOCAL.CAT.HEAD adv ].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; VP Coordination rules
vp-coord-phrase := event-coord-phrase &
[ SYNSEM.LOCAL.CAT.VAL.SUBJ < [ ] >,
SYNSEM.LOCAL.CAT.HEAD verb,
LCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD verb,
RCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD verb ].
basic-vp-top-coord-rule := vp-coord-phrase &
[ C-CONT [ RELS <! !>,
HCONS <! !> ]].
basic-vp-mid-coord-rule := vp-coord-phrase &
[ SYNSEM.LOCAL.COORD-REL #crel,
C-CONT [ RELS <! #crel !>,
HCONS <! !> ]].
vp-bottom-coord-phrase := bottom-coord-phrase &
[ SYNSEM.LOCAL.CAT [ HEAD verb,
VAL.SUBJ < [ ] > ],
NONCONJ-DTR.SYNSEM.LOCAL.CAT [ HEAD verb,
VAL.SUBJ < [ ] > ]].
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; S Coordination rules
s-coord-phrase := event-coord-phrase &
[ SYNSEM.LOCAL.CAT.VAL.SUBJ < >,
SYNSEM.LOCAL.CAT.HEAD verb,
LCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD verb,
RCOORD-DTR.SYNSEM.LOCAL.CAT.HEAD verb ].
basic-s-top-coord-rule := s-coord-phrase &
[ C-CONT [ RELS <! !>,
HCONS <! !> ]].
basic-s-mid-coord-rule := s-coord-phrase &
[ SYNSEM.LOCAL.COORD-REL #crel,
C-CONT [ RELS <! #crel !>,
HCONS <! !> ]].
s-bottom-coord-phrase := bottom-coord-phrase &
[ SYNSEM.LOCAL.CAT [ HEAD verb,
VAL.SUBJ < > ],
NONCONJ-DTR.SYNSEM.LOCAL.CAT [ HEAD verb,
VAL.SUBJ < > ]].