<div dir="ltr"><div>Hi developers,</div><div><br></div><div>I'm taking a closer look at the syntax of TDL files and the situation is a bit of a mess. Can anyone help me clarify some things? (I'll restrict myself to 3 questions for now)<br></div><div><br></div><div>The Copestake 2002 reference (Implementing TFS Grammars) has a BNF for TDL, but it's a bit out of date and, according to comments in the LKB source code, incorrect in parts. The LKB source comments are scattered, incomplete, inconsistent, and also a bit outdated. There is not much on the wiki. There is some discussion in the mailing list archives (much from before my time in DELPH-IN), but it's not clear how current those descriptions are.</div><div><br></div><div>Q1: Are supertypes special in a definition?</div><div><br></div><div>The BNF (in the LKB source) says this:</div><div><br></div><div> Type-def -> Type { Avm-def | Subtype-def} . | <br> Type { Avm-def | Subtype-def}.<br></div><div> Avm-def -> := Conjunction | Comment Conjunction<br> Conjunction -> Term { & Term } *<br> Term -> Type | Feature-term | Diff-list | List | Coreference<br></div><div><br></div><div>That makes it sound like I could do this:</div><div><br></div><div> mytype := [ FEAT val ] & supertype.</div><div><br></div><div>or even:</div><div><br></div><div> mytype := <! diff list.. !> & #coref & supertype.</div><div><br></div><div>But elsewhere it seems like a list of parents is special and appears before the rest of the conjunction. E.g., at read-tdl-avm-def of lingo/lkb/src/io-tdl/tdltypeinput.lsp I see this alternate definition of Avm-def:<br></div><div><br></div><div> ;;; Avm-def -> := Parents Conjunction | Parents Comment Conjunction |<br> ;;; Parents | Parents Comment<br></div><div><br></div><div>It seems that both ACE and PET are fine with putting supertypes after the feature list (and some other variations). I'm fine with this, but I wonder what it means for docstrings (see Q3 below), which (I think) are supposed to appear after the list of parents and before the feature list.<br></div><div><br></div><div><br></div><div>Q2: Subtype-def is now just a variant of Avm-def, yes?</div><div><br></div><div>The BNF still describes subtyping (with the :< operator) as only taking a single parent:</div><div><br></div><div> Subtype-def -> :< type</div><div><br></div><div>But I believe the consensus is that this is unnecessary (it's equivalent to using := with only a supertype), so :< is treated as equivalent to := (to avoid breaking backward compatibility). Is this interpretation used by all processors?</div><div><br></div><div><br></div><div>Q3: What's the final word with type comments / docstrings?</div><div><br></div><div>I find evidence of 3 proposed variants: (1) a block of ";" comments before a typename (LTDB-style); (2) a block of ";" comments within a type description; and (3) a "doc string" within a type description. Furthermore, there is a question as to whether comments or strings within a type go after the ":=" or after the list of supertypes. I think #| ... |# comments were not considered for this purpose.</div><div><br></div><div>My guess is this:</div><div><br></div><div>* LTDB-style comments (before the type identifier) are processed separately from TDL-parsing</div><div>* type-internal comments can go anywhere but are discarded</div><div>* type-internal doc strings must appear after the list of supertypes and are later available for inspection (they are included as a non-functional part of a type)</div><div><br></div><div>ACE seems happy with my assumptions, although PET doesn't seem to like doc strings at all.<br></div><div><br></div><div><br></div><div>Thanks!<br></div><div><br></div><div>-- <br><div class="gmail_signature"><div dir="ltr"><div><div dir="ltr"><div><div dir="ltr">Michael Wayne Goodman</div></div></div></div></div></div>
</div></div>