[developers] Questions on the syntax of TDL

Francis Bond bond at ieee.org
Thu Jul 12 04:59:17 CEST 2018


On my phone so forgive the brevity, but in Paris we agreed that the
docstring will start and end with three ".   I think this is what pet now
supports, Dan has a patch for the lkb, and I suspect I was meant to ask
Woodley to add out to ACE.

Comments anywhere would be great.

Thanks for pushing this forward Michael.

On Thu, 12 Jul 2018, 12:34 Michael Wayne Goodman, <goodmami at uw.edu> wrote:

>
> On Wed, Jul 11, 2018, 19:24 Woodley Packard <sweaglesw at sweaglesw.org>
> wrote:
>
>> 2 cents worth...
>>
>> 1. I think the logical behavior for an addendum with a doc string is
>> concatenation, not replacement.  The doc string on the addendum should
>> document what the addendum adds to the type, not the whole type.
>>
>
> Hmm, good point. I guess the addendum can only add constraints, so the old
> docstring wouldn't necessarily become invalid. I was comparing to method
> overrides in Python classes, but that's not a useful comparison.
>
>
>> 2. ACE (I believe) allows comments just about anywhere in TDL.  I find
>> this very useful when editing TDL, e.g. annotating changes on a fine
>> grained level or disabling certain constraints temporarily without deleting
>> them.
>>
>
> Yes, it's definitely more useful to allow comments almost anywhere, and
> not really hard to parse, either.
>
> Regards,
>> Woodley
>>
>> On Jul 11, 2018, at 5:00 PM, Michael Wayne Goodman <goodmami at uw.edu>
>> wrote:
>>
>> Thank you, Bernd, for the feedback. But I'm not having success parsing
>> types with docstrings using PET. E.g., I changed sign-min in the ERG like
>> this:
>>
>>     sign_min := *avm* &
>>       "doc"
>>       [ SYNSEM synsem_min,
>>         KEY-ARG bool ].
>>
>> But flop doesn't like it:
>>
>>     goodmami at tpy:~/grammars/erg$ flop english.tdl
>>     reading `Version.lsp'...
>>     converting `english.tdl' (ERG (1214)) into `english.grm' ...
>>     loading `english.tdl'... including `fundamentals.tdl'...
>> fundamentals.tdl:21:3: error: (syntax) - got `                   [',
>> expecting `.' at end of type definition
>>     [...]
>>
>> I get similar errors no matter where I put it (before :=, directly after
>> :=, after ]). It's syntactically valid if I have ... *avm* & "doc" & ...,
>> but then it has trouble unifying (as expected).
>>
>> It does, however, seem to be happy having a comment there (both ; and #|
>> styles) instead of a doc string.
>>
>> I'm using flop version 0.99.14svn_cm from the LOGON distribution.
>>
>> On Wed, Jul 11, 2018 at 7:00 AM, Bernd Kiefer <Bernd.Kiefer at dfki.de>
>> wrote:
>>
>>> Concerning question 3, at least in TDL and PET there was no such
>>> restriction,
>>> but that could make the definition of docstrings easier.
>>>
>>> Best,
>>>
>>> Bernd
>>>
>>> On 11.07.2018 03:01, Michael Wayne Goodman wrote:
>>>
>>> I attempted to define a BNF-like description of TDL syntax on the wiki:
>>> http://moin.delph-in.net/TdlRfc
>>> I tried to follow the partial BNF in the LKB source and often referred
>>> to the lisp code itself in order to fill out the rest of the description.
>>>
>>> My 3 questions above are concisely repeated at the bottom of the wiki
>>> along with some others.
>>>
>>> I welcome corrections and discussion (here or on the wiki) from any TDL
>>> nerds or authorities (especially if you've written a TDL parser).
>>>
>>> On Mon, Jul 9, 2018 at 12:49 PM, Michael Wayne Goodman <goodmami at uw.edu>
>>> wrote:
>>>
>>>> Hi developers,
>>>>
>>>> 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)
>>>>
>>>> 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.
>>>>
>>>> Q1: Are supertypes special in a definition?
>>>>
>>>> The BNF (in the LKB source) says this:
>>>>
>>>>     Type-def -> Type { Avm-def | Subtype-def} . |
>>>>                          Type { Avm-def | Subtype-def}.
>>>>     Avm-def -> := Conjunction | Comment Conjunction
>>>>     Conjunction -> Term { & Term } *
>>>>     Term -> Type | Feature-term | Diff-list | List | Coreference
>>>>
>>>> That makes it sound like I could do this:
>>>>
>>>>     mytype := [ FEAT val ] & supertype.
>>>>
>>>> or even:
>>>>
>>>>     mytype := <! diff list.. !> & #coref & supertype.
>>>>
>>>> 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:
>>>>
>>>>   ;;; Avm-def -> := Parents Conjunction | Parents Comment Conjunction |
>>>>   ;;;               Parents | Parents Comment
>>>>
>>>> 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.
>>>>
>>>>
>>>> Q2: Subtype-def is now just a variant of Avm-def, yes?
>>>>
>>>> The BNF still describes subtyping (with the :< operator) as only taking
>>>> a single parent:
>>>>
>>>>     Subtype-def ->  :< type
>>>>
>>>> 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?
>>>>
>>>>
>>>> Q3: What's the final word with type comments / docstrings?
>>>>
>>>> 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.
>>>>
>>>> My guess is this:
>>>>
>>>> * LTDB-style comments (before the type identifier) are processed
>>>> separately from TDL-parsing
>>>> * type-internal comments can go anywhere but are discarded
>>>> * 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)
>>>>
>>>> ACE seems happy with my assumptions, although PET doesn't seem to like
>>>> doc strings at all.
>>>>
>>>>
>>>> Thanks!
>>>>
>>>> --
>>>> Michael Wayne Goodman
>>>>
>>>
>>>
>>>
>>> --
>>> Michael Wayne Goodman
>>>
>>>
>>> --
>>> ----------------------------------------------------------------------
>>> Bernd Kiefer     DFKI GmbH,  Stuhlsatzenhausweg,  D-66123 Saarbrueckenkiefer at dfki.de   +49-681/85775-5301 (phone)   +49-681/85775-5338 (fax)
>>> ----------------------------------------------------------------------
>>> Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbHTrippstadter Strasse 122, D-67663 Kaiserslautern, Germany <https://maps.google.com/?q=Trippstadter+Strasse+122,+D-67663+Kaiserslautern,+Germany&entry=gmail&source=g>
>>> Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster (Vor-
>>>                     sitzender), Dr. Walter Olthoff
>>> Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
>>> Amtsgericht Kaiserslautern, HRB 2313
>>>
>>>
>>
>>
>> --
>> Michael Wayne Goodman
>>
>>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.delph-in.net/archives/developers/attachments/20180712/7daebc97/attachment-0001.html>


More information about the developers mailing list