;;; Hey, emacs, this file is -*- Mode: tdl; -*- ... got that? ;;; ;;; the type hierachy, introducing sub-types and appropriate features ;;; feat-struc := *top*. expression := feat-struc & [ HEAD pos, VAL valence ]. valence := feat-struc & [ SPR *list*, COMPS *list* ]. pos := feat-struc. noun := pos. verb := pos. det := pos. phrase := expression & [ ARGS *list* ]. word := expression & [ ORTH *string* ]. root := phrase & [ HEAD verb, VAL [ SPR < >, COMPS < > ] ]. ;;; ;;; a few `non-linguistic' types: the top type for all strings (i.e. type names ;;; enclosed in double quotes; no need to declare strings individually) and the ;;; hierarchy of list types (using a FIRST -- REST encoding for list elements ;;; and list tails, respectively). ;;; *string* := *top*. *list* := *top*. *ne-list* := *list* & [ FIRST *top*, REST *list* ]. *null* := *list*.