/*
 * Automatically generated from the files:
 *	/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.sid
 * and
 *	/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act
 * by:
 *	/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj/utilities/sid/sid
 */

/* BEGINNING OF HEADER */

#line 37 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

/*
 * Copyright (c) 2002-2004, The Tendra Project <http://www.ten15.org/>
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice unmodified, this list of conditions, and the following
 *    disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 *  		 Crown Copyright (c) 1997
 *
 *  This TenDRA(r) Computer Program is subject to Copyright
 *  owned by the United Kingdom Secretary of State for Defence
 *  acting through the Defence Evaluation and Research Agency
 *  (DERA).  It is made available to Recipients with a
 *  royalty-free licence for its use, reproduction, transfer
 *  to other parties and amendment for any purpose not excluding
 *  product development provided that any such use et cetera
 *  shall be deemed to be acceptance of the following conditions:-
 *
 *      (1) Its Recipients shall ensure that this Notice is
 *      reproduced upon any copies or amended versions of it;
 *
 *      (2) Any amended version of it shall be clearly marked to
 *      show both the nature of and the organisation responsible
 *      for the relevant amendment or amendments;
 *
 *      (3) Its onward transfer from a recipient to another
 *      party shall be deemed to be that party's acceptance of
 *      these conditions;
 *
 *      (4) DERA gives no warranty or assurance as to its
 *      quality or suitability for any purpose and DERA accepts
 *      no liability whatsoever in relation to any use to which
 *      it may be put.
 *
 * $TenDRA: tendra/src/utilities/make_tdf/syntax.act,v 1.3 2004/03/14 14:52:14 bp Exp $
 */


#include "config.h"
#include "tdf.h"
#include "cmd_ops.h"
#include "cons_ops.h"
#include "cstring.h"
#include "info_ops.h"
#include "link_ops.h"
#include "par_ops.h"
#include "sort_ops.h"
#include "spec_ops.h"
#include "input.h"
#include "lex.h"
#include "msgcat.h"
#include "syntax.h"


/*
 *    LOCAL TYPE ALIASES
 *
 *    These definitions give the aliases used for compound types within the
 *    grammar.
 */

typedef LIST (CONSTRUCT) SID_CONS_LIST;
typedef LIST (LINKAGE) SID_LINK_LIST;
typedef LIST (PARAMETER) SID_PARAM_LIST;


/*
 *    COMPILATION MODE
 *
 *    We allow unreached code and switch off the variable analysis in the
 *    automatically generated sections.
 */

#if FS_TENDRA
#pragma TenDRA begin
#pragma TenDRA variable analysis off
#ifndef OLD_PRODUCER
#pragma TenDRA unreachable code allow
#endif
#endif


#line 116 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"

/* BEGINNING OF FUNCTION DECLARATIONS */

static void ZRlink_Hpack (SID_LINK_LIST *);
static void ZRparam_Hlist (SID_PARAM_LIST *);
static void ZRclist_Hitem (void);
static void ZRslist_Hpack (void);
static void ZRedge_Hlist (void);
static void ZRkind_Hitem (LINKAGE *);
static void ZRoption_Hlist (void);
static void ZR139 (CONSTRUCT *);
static void ZRold_Hsort_Hname (SORT *);
static void ZR140 (CONSTRUCT *);
static void ZR141 (CONSTRUCT *);
static void ZRclist_Hlist (void);
static void ZRlink_Hitem (LINKAGE *);
static void ZRslist_Hitem (void);
static void ZRkind_Hlist (SID_LINK_LIST *);
static void ZRnew_Hsort_Hname (SORT *);
static void ZRsort_Hpack (void);
static void ZRany_Hname (string *);
static void ZRlink_Hlist (SID_LINK_LIST *);
static void ZRslist_Hlist (void);
static void ZRsort_Hitem (void);
static void ZRsort_Hlist (void);
static void ZRconstruct_Hpack (SORT, SID_CONS_LIST *);
static void ZRconstruct_Hextra (CONSTRUCT);
static void ZRboundary_Hitem (CONSTRUCT);
static void ZRconstruct_Hitem (SORT, CONSTRUCT *);
static void ZRconstruct_Hlist (SORT, SID_CONS_LIST *);
static void ZRparam_Hpack (SID_PARAM_LIST *);
static void ZRedge_Hpack (void);
extern void read_spec (SPECIFICATION *);
static void ZRoption_Hpack (void);
static void ZRclist_Hpack (void);
static void ZRparam_Hitem (PARAMETER *);
static void ZRedge_Hitem (void);
static void ZRkind_Hpack (SID_LINK_LIST *);
static void ZRnumber_Hlist (CONSTRUCT);
static void ZRoption_Hitem (void);

/* BEGINNING OF STATIC VARIABLES */


/* BEGINNING OF FUNCTION DEFINITIONS */

static void
ZRlink_Hpack (SID_LINK_LIST *ZOp)
{
    SID_LINK_LIST ZIp;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SID_LINK_LIST ZIq;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 116 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_open:
		{
		    ZRlink_Hlist (&ZIq);
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		{
		    /* BEGINNING OF ACTION: null_link */
		    {
#line 347 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIq) = NULL_list (LINKAGE);
#line 200 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
		    }
		    /* END OF ACTION: null_link */
		}
		break;
	    }
	}
	/* END OF INLINE: 116 */
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZIp = ZIq;
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOp = ZIp;
}

static void
ZRparam_Hlist (SID_PARAM_LIST *ZOp)
{
    SID_PARAM_LIST ZIp;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	PARAMETER ZIa;
	SID_PARAM_LIST ZIq;

	ZRparam_Hitem (&ZIa);
	/* BEGINNING OF INLINE: 59 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    ZRparam_Hlist (&ZIq);
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		{
		    /* BEGINNING OF ACTION: null_param */
		    {
#line 254 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIq) = NULL_list (PARAMETER);
#line 258 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
		    }
		    /* END OF ACTION: null_param */
		}
		break;
	      case 32:
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	/* END OF INLINE: 59 */
	/* BEGINNING OF ACTION: cons_param */
	{
#line 258 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	CONS_par ((ZIa), (ZIq), (ZIp));
#line 274 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: cons_param */
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOp = ZIp;
}

static void
ZRclist_Hitem (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SORT ZIs;

	ZRnew_Hsort_Hname (&ZIs);
	if ((CURRENT_TERMINAL) == 32) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: make_clist */
	{
#line 313 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	compound_sort ((ZIs), "_list", info_clist_tag, '*');
#line 305 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: make_clist */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRslist_Hpack (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 101 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_name:
		{
		    ZRslist_Hlist ();
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		break;
	    }
	}
	/* END OF INLINE: 101 */
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRedge_Hlist (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
  ZL2_edge_Hlist:;
    {
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRedge_Hitem ();
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 127 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: edge-list */
		    goto ZL2_edge_Hlist;
		    /* END OF INLINE: edge-list */
		}
		/*UNREACHED*/
	      default:
		break;
	    }
	}
	/* END OF INLINE: 127 */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRkind_Hitem (LINKAGE *ZOa)
{
    LINKAGE ZIa;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SORT ZIs;
	string ZIe;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_unit_Helements:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRold_Hsort_Hname (&ZIs);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_unit_Hidentifier:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRany_Hname (&ZIe);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: make_unit_link */
	{
#line 342 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	MAKE_link_basic ((ZIe), (ZIs), (ZIa));
	COPY_string (sort_unit ((ZIs)), (ZIe));
#line 498 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: make_unit_link */
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOa = ZIa;
}

static void
ZRoption_Hlist (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
  ZL2_option_Hlist:;
    {
	ZRoption_Hitem ();
	/* BEGINNING OF INLINE: 105 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: option-list */
		    goto ZL2_option_Hlist;
		    /* END OF INLINE: option-list */
		}
		/*UNREACHED*/
	      case 32:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		break;
	    }
	}
	/* END OF INLINE: 105 */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZR139 (CONSTRUCT *ZIc)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZR140 (ZIc);
	if ((CURRENT_TERMINAL) == 32) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRold_Hsort_Hname (SORT *ZOs)
{
    SORT ZIs;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	string ZIa;

	switch (CURRENT_TERMINAL) {
	  case lex_name:
	    /* BEGINNING OF EXTRACT: name */
	    {
#line 210 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIa = string_copy (token_buff);
#line 589 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: name */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: find_old_sort */
	{
#line 305 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIs) = find_sort ((ZIa), 0);
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: find_old_sort */
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOs = ZIs;
}

static void
ZR140 (CONSTRUCT *ZIc)
{
    switch (CURRENT_TERMINAL) {
      case lex_boundaries:
	{
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_open:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRnumber_Hlist (*ZIc);
	    switch (CURRENT_TERMINAL) {
	      case lex_close:
		break;
	      case 32:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_close:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_break:
	{
	    unsigned ZIa;

	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_number:
		/* BEGINNING OF EXTRACT: number */
		{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIa = token_value;
#line 674 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
		}
		/* END OF EXTRACT: number */
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_close:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: set_break */
	    {
#line 262 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	PARAMETER p = find_param ((*ZIc), (ZIa));
	if (!IS_NULL_par (p)) COPY_int (par_brk (p), 1);
#line 695 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF ACTION: set_break */
	    ZR141 (ZIc);
	    if ((CURRENT_TERMINAL) == 32) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 32:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZR141 (CONSTRUCT *ZIc)
{
    switch (CURRENT_TERMINAL) {
      case lex_comma:
	{
	    ADVANCE_LEXER;
	    ZRboundary_Hitem (*ZIc);
	    if ((CURRENT_TERMINAL) == 32) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 32:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRclist_Hlist (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
  ZL2_clist_Hlist:;
    {
	ZRclist_Hitem ();
	/* BEGINNING OF INLINE: 93 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: clist-list */
		    goto ZL2_clist_Hlist;
		    /* END OF INLINE: clist-list */
		}
		/*UNREACHED*/
	      case 32:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		break;
	    }
	}
	/* END OF INLINE: 93 */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRlink_Hitem (LINKAGE *ZOa)
{
    LINKAGE ZIa;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SORT ZIs;
	string ZIe;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_entity_Hsort:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRold_Hsort_Hname (&ZIs);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_entity_Hidentifier:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRany_Hname (&ZIe);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: make_edge_link */
	{
#line 337 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	MAKE_link_basic ((ZIe), (ZIs), (ZIa));
	COPY_string (sort_link ((ZIs)), (ZIe));
#line 865 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: make_edge_link */
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOa = ZIa;
}

static void
ZRslist_Hitem (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SORT ZIs;

	ZRnew_Hsort_Hname (&ZIs);
	if ((CURRENT_TERMINAL) == 32) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: make_slist */
	{
#line 317 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	compound_sort ((ZIs), "_list", info_slist_tag, '%');
#line 896 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: make_slist */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRkind_Hlist (SID_LINK_LIST *ZOp)
{
    SID_LINK_LIST ZIp;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	LINKAGE ZIa;
	SID_LINK_LIST ZIq;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRkind_Hitem (&ZIa);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 120 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    ZRkind_Hlist (&ZIq);
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		{
		    /* BEGINNING OF ACTION: null_link */
		    {
#line 347 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIq) = NULL_list (LINKAGE);
#line 956 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
		    }
		    /* END OF ACTION: null_link */
		}
		break;
	    }
	}
	/* END OF INLINE: 120 */
	/* BEGINNING OF ACTION: cons_link */
	{
#line 351 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	CONS_link ((ZIa), (ZIq), (ZIp));
#line 969 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: cons_link */
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOp = ZIp;
}

static void
ZRnew_Hsort_Hname (SORT *ZOs)
{
    SORT ZIs;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	string ZIa;

	switch (CURRENT_TERMINAL) {
	  case lex_name:
	    /* BEGINNING OF EXTRACT: name */
	    {
#line 210 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIa = string_copy (token_buff);
#line 999 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: name */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: find_new_sort */
	{
#line 301 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIs) = find_sort ((ZIa), 1);
#line 1012 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: find_new_sort */
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOs = ZIs;
}

static void
ZRsort_Hpack (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 89 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_open:
		{
		    ZRsort_Hlist ();
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		break;
	    }
	}
	/* END OF INLINE: 89 */
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRany_Hname (string *ZOn)
{
    string ZIn;

    switch (CURRENT_TERMINAL) {
      case lex_name:
	{
	    /* BEGINNING OF EXTRACT: name */
	    {
#line 210 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIn = string_copy (token_buff);
#line 1082 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: name */
	    ADVANCE_LEXER;
	}
	break;
      case lex_break: case lex_boundaries: case lex_constructs:
      case lex_construct_Hname: case lex_edge_Hconstructor: case lex_edge_Hsort:
      case lex_encoding: case lex_encoding_Hbits: case lex_entity_Hidentifier:
      case lex_entity_Hsort: case lex_graph_Hedges: case lex_has_Hextension:
      case lex_kinds_Hof_Hunit: case lex_linkable_Hentities: case lex_lists:
      case lex_major_Hversion: case lex_minor_Hversion: case lex_options:
      case lex_parameter_Hsorts: case lex_result_Hsort: case lex_slists:
      case lex_sortid: case lex_sorts: case lex_unit_Helements:
      case lex_unit_Hidentifier:
	{
	    /* BEGINNING OF ACTION: keyword_name */
	    {
#line 237 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIn) = string_copy (token_buff);
#line 1103 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF ACTION: keyword_name */
	    /* BEGINNING OF INLINE: 46 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_boundaries:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_break:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_construct_Hname:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_constructs:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_edge_Hconstructor:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_edge_Hsort:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_encoding:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_encoding_Hbits:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_entity_Hidentifier:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_entity_Hsort:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_graph_Hedges:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_has_Hextension:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_kinds_Hof_Hunit:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_linkable_Hentities:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_lists:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_major_Hversion:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_minor_Hversion:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_options:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_parameter_Hsorts:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_result_Hsort:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_slists:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_sortid:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_sorts:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_unit_Helements:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_unit_Hidentifier:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 46 */
	}
	break;
      case 32:
	return;
      default:
	goto ZL1;
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOn = ZIn;
}

static void
ZRlink_Hlist (SID_LINK_LIST *ZOp)
{
    SID_LINK_LIST ZIp;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	LINKAGE ZIa;
	SID_LINK_LIST ZIq;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRlink_Hitem (&ZIa);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 114 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    ZRlink_Hlist (&ZIq);
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		{
		    /* BEGINNING OF ACTION: null_link */
		    {
#line 347 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIq) = NULL_list (LINKAGE);
#line 1304 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
		    }
		    /* END OF ACTION: null_link */
		}
		break;
	    }
	}
	/* END OF INLINE: 114 */
	/* BEGINNING OF ACTION: cons_link */
	{
#line 351 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	CONS_link ((ZIa), (ZIq), (ZIp));
#line 1317 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: cons_link */
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOp = ZIp;
}

static void
ZRslist_Hlist (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
  ZL2_slist_Hlist:;
    {
	ZRslist_Hitem ();
	/* BEGINNING OF INLINE: 99 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: slist-list */
		    goto ZL2_slist_Hlist;
		    /* END OF INLINE: slist-list */
		}
		/*UNREACHED*/
	      case 32:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		break;
	    }
	}
	/* END OF INLINE: 99 */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRsort_Hitem (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SORT ZIs;
	unsigned ZIb;
	unsigned ZIe;
	SID_CONS_LIST ZIp;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_sortid:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRnew_Hsort_Hname (&ZIs);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_encoding_Hbits:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_number:
	    /* BEGINNING OF EXTRACT: number */
	    {
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIb = token_value;
#line 1443 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: number */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_has_Hextension:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_number:
	    /* BEGINNING OF EXTRACT: number */
	    {
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIe = token_value;
#line 1493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: number */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_constructs:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRconstruct_Hpack (ZIs, &ZIp);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: make_sort */
	{
#line 309 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	basic_sort ((ZIs), (ZIb), (ZIe), (ZIp));
#line 1552 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: make_sort */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRsort_Hlist (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
  ZL2_sort_Hlist:;
    {
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRsort_Hitem ();
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 87 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: sort-list */
		    goto ZL2_sort_Hlist;
		    /* END OF INLINE: sort-list */
		}
		/*UNREACHED*/
	      default:
		break;
	    }
	}
	/* END OF INLINE: 87 */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRconstruct_Hpack (SORT ZIs, SID_CONS_LIST *ZOp)
{
    SID_CONS_LIST ZIp;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SID_CONS_LIST ZIq;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 81 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_open:
		{
		    ZRconstruct_Hlist (ZIs, &ZIq);
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		{
		    /* BEGINNING OF ACTION: null_cons */
		    {
#line 286 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIq) = NULL_list (CONSTRUCT);
#line 1648 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
		    }
		    /* END OF ACTION: null_cons */
		}
		break;
	    }
	}
	/* END OF INLINE: 81 */
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZIp = ZIq;
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOp = ZIp;
}

static void
ZRconstruct_Hextra (CONSTRUCT ZIc)
{
    switch (CURRENT_TERMINAL) {
      case lex_comma:
	{
	    ADVANCE_LEXER;
	    ZR139 (&ZIc);
	    if ((CURRENT_TERMINAL) == 32) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 32:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRboundary_Hitem (CONSTRUCT ZIc)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_boundaries:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRnumber_Hlist (ZIc);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRconstruct_Hitem (SORT ZIs, CONSTRUCT *ZOc)
{
    CONSTRUCT ZIc;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	string ZIn;
	unsigned ZIe;
	SORT ZIr;
	SID_PARAM_LIST ZIp;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_construct_Hname:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_name:
	    /* BEGINNING OF EXTRACT: name */
	    {
#line 210 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIn = string_copy (token_buff);
#line 1800 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: name */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_encoding:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_number:
	    /* BEGINNING OF EXTRACT: number */
	    {
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIe = token_value;
#line 1850 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: number */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_result_Hsort:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRnew_Hsort_Hname (&ZIr);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_parameter_Hsorts:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRparam_Hpack (&ZIp);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: make_cons */
	{
#line 279 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	if (!EQ_sort ((ZIr), (ZIs))) {
	MSG_wrong_result_sort ((ZIn));
	}
	(ZIc) = make_construct ((ZIn), (ZIe), (ZIs), (ZIp));
#line 1951 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: make_cons */
	ZRconstruct_Hextra (ZIc);
	if ((CURRENT_TERMINAL) == 32) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOc = ZIc;
}

static void
ZRconstruct_Hlist (SORT ZIs, SID_CONS_LIST *ZOp)
{
    SID_CONS_LIST ZIp;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	CONSTRUCT ZIc;
	SID_CONS_LIST ZIq;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRconstruct_Hitem (ZIs, &ZIc);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 79 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    ZRconstruct_Hlist (ZIs, &ZIq);
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		{
		    /* BEGINNING OF ACTION: null_cons */
		    {
#line 286 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIq) = NULL_list (CONSTRUCT);
#line 2018 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
		    }
		    /* END OF ACTION: null_cons */
		}
		break;
	    }
	}
	/* END OF INLINE: 79 */
	/* BEGINNING OF ACTION: cons_cons */
	{
#line 290 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	CONS_cons ((ZIc), (ZIq), (ZIp));
#line 2031 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: cons_cons */
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOp = ZIp;
}

static void
ZRparam_Hpack (SID_PARAM_LIST *ZOp)
{
    SID_PARAM_LIST ZIp;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SID_PARAM_LIST ZIq;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 62 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_open:
		{
		    ZRparam_Hlist (&ZIq);
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		{
		    /* BEGINNING OF ACTION: null_param */
		    {
#line 254 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIq) = NULL_list (PARAMETER);
#line 2080 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
		    }
		    /* END OF ACTION: null_param */
		}
		break;
	    }
	}
	/* END OF INLINE: 62 */
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZIp = ZIq;
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOp = ZIp;
}

static void
ZRedge_Hpack (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 129 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_open:
		{
		    ZRedge_Hlist ();
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		break;
	    }
	}
	/* END OF INLINE: 129 */
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

void
read_spec (SPECIFICATION *ZOspec)
{
    SPECIFICATION ZIspec;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SID_LINK_LIST ZIp;
	SID_LINK_LIST ZIq;
	unsigned ZIv1;
	unsigned ZIv2;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_sorts:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRsort_Hpack ();
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_lists:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRclist_Hpack ();
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_slists:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRslist_Hpack ();
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_options:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRoption_Hpack ();
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_linkable_Hentities:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRlink_Hpack (&ZIp);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_kinds_Hof_Hunit:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRkind_Hpack (&ZIq);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_graph_Hedges:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRedge_Hpack ();
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_major_Hversion:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_number:
	    /* BEGINNING OF EXTRACT: number */
	    {
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIv1 = token_value;
#line 2472 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: number */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_minor_Hversion:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_number:
	    /* BEGINNING OF EXTRACT: number */
	    {
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIv2 = token_value;
#line 2522 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: number */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_eof:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: make_spec */
	{
#line 362 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	LIST (SORT) p = check_sorts ();
	LIST (LINKAGE) q = foreign_sorts ();
	MAKE_spec_basic ((ZIv1), (ZIv2), p, (ZIp), (ZIq), q, (ZIspec));
#line 2558 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: make_spec */
    }
    goto ZL0;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 379 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	MSG_syntax_error ();
#line 2570 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: syntax_error */
	/* BEGINNING OF ACTION: null_spec */
	{
#line 368 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIspec) = NULL_spec;
#line 2578 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: null_spec */
    }
  ZL0:;
    *ZOspec = ZIspec;
}

static void
ZRoption_Hpack (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 107 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_name:
		{
		    ZRoption_Hlist ();
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		break;
	    }
	}
	/* END OF INLINE: 107 */
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRclist_Hpack (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 95 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_name:
		{
		    ZRclist_Hlist ();
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		break;
	    }
	}
	/* END OF INLINE: 95 */
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRparam_Hitem (PARAMETER *ZOa)
{
    PARAMETER ZIa;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	string ZIn;
	SORT ZIs;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRany_Hname (&ZIn);
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRnew_Hsort_Hname (&ZIs);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: make_param */
	{
#line 248 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	int intro = 0;
	if (ends_in ((ZIn), "_intro")) intro = 1;
	MAKE_par_basic ((ZIn), (ZIs), 0, 0, intro, (ZIa));
#line 2724 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: make_param */
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOa = ZIa;
}

static void
ZRedge_Hitem (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SORT ZIs;
	string ZIc;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_edge_Hsort:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRold_Hsort_Hname (&ZIs);
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  case 32:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_edge_Hconstructor:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_comma:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_name:
	    /* BEGINNING OF EXTRACT: name */
	    {
#line 210 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIc = string_copy (token_buff);
#line 2813 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: name */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: set_edge */
	{
#line 325 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	set_special ((ZIs), (ZIc), KIND_edge);
	COPY_int (sort_edge ((ZIs)), 1);
#line 2834 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: set_edge */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRkind_Hpack (SID_LINK_LIST *ZOp)
{
    SID_LINK_LIST ZIp;

    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SID_LINK_LIST ZIq;

	switch (CURRENT_TERMINAL) {
	  case lex_open:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF INLINE: 122 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_open:
		{
		    ZRkind_Hlist (&ZIq);
		    if ((CURRENT_TERMINAL) == 32) {
			RESTORE_LEXER;
			goto ZL1;
		    }
		}
		break;
	      default:
		{
		    /* BEGINNING OF ACTION: null_link */
		    {
#line 347 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	(ZIq) = NULL_list (LINKAGE);
#line 2881 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
		    }
		    /* END OF ACTION: null_link */
		}
		break;
	    }
	}
	/* END OF INLINE: 122 */
	switch (CURRENT_TERMINAL) {
	  case lex_close:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZIp = ZIq;
    }
    goto ZL0;
  ZL1:;
    SAVE_LEXER (32);
    return;
  ZL0:;
    *ZOp = ZIp;
}

static void
ZRnumber_Hlist (CONSTRUCT ZIc)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
  ZL2_number_Hlist:;
    {
	unsigned ZIa;

	switch (CURRENT_TERMINAL) {
	  case lex_number:
	    /* BEGINNING OF EXTRACT: number */
	    {
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	ZIa = token_value;
#line 2923 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	    }
	    /* END OF EXTRACT: number */
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: set_boundary */
	{
#line 267 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	PARAMETER p = find_param ((ZIc), (ZIa));
	if (!IS_NULL_par (p)) COPY_int (par_align (p), 1);
#line 2937 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: set_boundary */
	/* BEGINNING OF INLINE: 69 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: number-list */
		    goto ZL2_number_Hlist;
		    /* END OF INLINE: number-list */
		}
		/*UNREACHED*/
	      default:
		break;
	    }
	}
	/* END OF INLINE: 69 */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

static void
ZRoption_Hitem (void)
{
    if ((CURRENT_TERMINAL) == 32) {
	return;
    }
    {
	SORT ZIs;

	ZRnew_Hsort_Hname (&ZIs);
	if ((CURRENT_TERMINAL) == 32) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: make_option */
	{
#line 321 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

	compound_sort ((ZIs), "_option", info_option_tag, '?');
#line 2982 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"
	}
	/* END OF ACTION: make_option */
    }
    return;
  ZL1:;
    SAVE_LEXER (32);
    return;
}

/* BEGINNING OF TRAILER */

#line 384 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/make_tdf/syntax.act"

#line 2996 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/make_tdf/syntax.c"

/* END OF FILE */


syntax highlighted by Code2HTML, v. 0.9.1