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

/* BEGINNING OF HEADER */

#line 47 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

/*
 * Copyright (c) 2003-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/tools/pl/syntax.act,v 1.5 2005/09/27 09:31:14 stefanf Exp $
 */


#include "config.h"
#include "cstring.h"
#include "fmm.h"
#include "defs.h"
#include "encodings.h"
#include "enc_nos.h"
#include "consfile.h"
#include "lex.h"
#include "analyse_sort.h"
#include "find_id.h"
#include "readstreams.h"
#include "standardsh.h"
#include "syntax.h"
#include "units.h"
#include "msgcat.h"

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

static int saved = 0 ;
#define CURRENT_TERMINAL (unsigned)lex_v.t
#define ADVANCE_LEXER lex_v = reader ()
#define SAVE_LEXER(e) ((saved = lex_v.t), (lex_v.t = (e)))
#define RESTORE_LEXER (lex_v.t = saved)

typedef Al_tagdec *PTR_Al_tagdec ;
typedef Labdec *PTR_Labdec ;
typedef char *PTR_char ;
typedef Tagdec *PTR_Tagdec ;
typedef TDF *PTR_TDF ;
typedef Tokdec *PTR_Tokdec ;
typedef Tokpar *PTR_Tokpar ;
typedef unsigned long unsigned_long ;


static Tokpar * g_tokpars;
static Sort g_sname;
static TDF g_tok_defn;
static TokSort g_toksort;
int search_for_toks = 1;
static Tokdec * g_tokformals;
static int g_lastfield;
static TDF g_shape;
static TDF g_lastshape;

static Name * g_shtokname;
static int g_has_vis = 0;
static Bool issigned;
static Labdec * g_labdec;
static unsigned long intvalue;
static TDF optlab;
static TDF g_lower;
static TDF g_upper;
static Bool g_has_upper;
static TDF intro_acc;
static TDF intro_init;

static int query_t;
static int g_cr_v;
static int g_ce_v;
static int g_unt;
static Tagdec * g_app_tags;

static void
do_procprops(int i)
{
    switch(i) {
       case 0: return;
       case 1: OPTION(o_var_callers); return;
       case 2: OPTION(o_var_callees); return;
       case 3: OPTION(o_add_procprops(o_var_callers, o_var_callees)); return;
       case 4: OPTION(o_untidy); return;
       case 5: OPTION(o_add_procprops(o_var_callers, o_untidy)); return;
       case 6: OPTION(o_add_procprops(o_var_callees, o_untidy)); return;
       case 7: OPTION(o_add_procprops(o_var_callers,
		      o_add_procprops(o_var_callees, o_untidy))); return;
       case 8: OPTION(o_check_stack); return;
       case 9: OPTION(o_add_procprops(o_var_callers,o_check_stack)); return;
       case 10: OPTION(o_add_procprops(o_var_callees,o_check_stack)); return;
       case 11: OPTION(o_add_procprops(o_check_stack,
		       o_add_procprops(o_var_callers, o_var_callees))); return;
       case 12: OPTION(o_add_procprops(o_untidy,o_check_stack)); return;
       case 13: OPTION(o_add_procprops(o_check_stack,
		       o_add_procprops(o_var_callers, o_untidy))); return;
       case 14: OPTION(o_add_procprops(o_check_stack,
		       o_add_procprops(o_var_callees, o_untidy))); return;
       case 15: OPTION(o_add_procprops(o_check_stack,
		       o_add_procprops(o_var_callers,
		       o_add_procprops(o_var_callees, o_untidy)))); return;
    }
}

static int defaultlab = -1;
static TDF g_lablist;
BoolT do_pp = FALSE;

static void
success(void)
{
    IGNORE printf("Reached end\n");
    print_res();
}

static int HAS_MAGIC = 1;
unsigned long MAJOR_NO = major_version;
unsigned long MINOR_NO = minor_version;


#line 183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"

/* BEGINNING OF FUNCTION DECLARATIONS */

extern void read_label (void);
static void ZR641 (PTR_Tokdec *);
static void ZRfull__sortname (void);
static void ZR643 (int *);
static void ZR645 (void);
extern void read_variety (void);
static void ZR646 (void);
static void ZRtok__formal__list__opt (void);
static void ZR647 (void);
static void ZR648 (void);
static void ZR650 (void);
static void ZRsortname__list (void);
static void ZRsignature__opt (void);
static void ZRexp__sequence (void);
static void ZRrange (void);
static void ZR654 (void);
static void ZR655 (TDF *, PTR_TDF *);
static void ZRrange__label__list (void);
static void ZR656 (void);
extern void read_shape (void);
static void ZR657 (void);
static void ZRaccess__list (void);
static void ZR660 (TDF *, TDF *, TDF *, TDF *);
static void ZRtagshacc__list__opt (void);
static void ZR661 (TDF *, PTR_TDF *);
static void ZRlabdest__opt (void);
static void ZR662 (PTR_TDF *);
static void ZRalignment__list__opt (void);
static void ZR663 (void);
extern void read_string (void);
static void ZR664 (void);
static void ZRotagexp__list (void);
static void ZRvariety__sign (void);
static void ZR668 (void);
static void ZR669 (TDF *, TDF *, PTR_TDF *, PTR_Tagdec *, int *);
static void ZR670 (TDF *, TDF *, PTR_TDF *, PTR_Tagdec *, int *);
extern void read_signed_nat (void);
static void ZR672 (TDF *, TDF *, PTR_TDF *, PTR_char *);
extern void read_token (void);
static void ZR673 (void);
static void ZRnat__not__int (void);
static void ZRshape__body (void);
static void ZRrepeat__starter__opt (void);
static void ZR674 (void);
static void ZRfield__list (void);
static void ZR675 (void);
static void ZR676 (void);
static void ZR677 (TDF *, TDF *, PTR_TDF *, PTR_Tagdec *, PTR_char *, int *);
static void ZRrounding__mode__opt (void);
static void ZR678 (TDF *, TDF *, PTR_TDF *, PTR_Tagdec *, PTR_char *, int *);
static void ZRnonst__shape (void);
static void ZR679 (TDF *, TDF *, PTR_TDF *, PTR_Tagdec *, PTR_char *, int *);
static void ZRaccess__opt (void);
extern void read_error_code (void);
static void ZRpostlude__opt (void);
static void ZR680 (TDF *, TDF *, PTR_TDF *, PTR_Tagdec *, int *);
static void ZRexponent__opt (void);
static void ZR681 (TDF *, TDF *, PTR_TDF *, PTR_Tagdec *, int *);
static void ZRclosed__exp (void);
extern void read_bool (void);
static void ZRvarintro__opt (void);
extern void read_ntest (void);
extern void read_bitfield_variety (void);
static void ZRsigned__nat__body (void);
static void ZRlabset__opt (void);
static void ZRkeep__item (void);
static void ZRstruct__def (void);
static void ZRnonst__shape__body (void);
extern void read_tag (void);
static void ZRvariety__opt (void);
extern void read_nat_option (void);
static void ZRsortname__list__opt (void);
extern void read_floating_variety (void);
static void ZRtagshacc (void);
static void ZRelement__list__opt (void);
extern void read_nat (void);
extern void read_alignment (void);
static void ZRvarpar__opt (void);
static void ZRkeep__list (void);
static void ZRproc__def (void);
extern void read_error_code_list (void);
static void ZRcallee__var__opt (void);
static void ZRtag__dec (void);
static void ZRtag__intro (void);
extern void read_exp (void);
static void ZRtag__def (void);
static void ZRotagexp__list__opt (void);
static void ZRtok__formal__list (void);
static void ZRuntidy__opt (void);
static void ZRcaller__var__opt (void);
static void ZRproc__def__body (void);
static void ZRlabelled__list (void);
static void ZRoffset__exp__list (void);
static void ZRbitfield__sign (void);
static void ZRtok__dec (void);
static void ZRexp__comma__list (void);
static void ZRexp__body (void);
static void ZRtok__def (void);
static void ZRunary__exp (void);
static void ZRtagshacc__list (void);
static void ZRshapetok (void);
static void ZRalignment__list (void);
extern void read_error_treatment (void);
static void ZRcallee (void);
extern void read_al_tag (void);
extern void read_exp_list (void);
static void ZRelement (void);
static void ZR622 (void);
static void ZRtok__def__body (void);
static void ZRinteger (void);
extern void read_transfer_mode (void);
extern void read_rounding_mode (void);
static void ZR625 (void);
static void ZR626 (void);
extern void read_access (void);
static void ZR627 (void);
static void ZR628 (void);
static void ZR629 (void);
static void ZR630 (void);
static void ZR632 (void);
static void ZRkeep__list__opt (void);
static void ZR633 (void);
static void ZRal__tag__def (void);
static void ZRotagexp (void);
extern void read_program (void);
static void ZR634 (void);

/* BEGINNING OF STATIC VARIABLES */


/* BEGINNING OF FUNCTION DEFINITIONS */

void
read_label (void)
{
  ZL2_label:;
    switch (CURRENT_TERMINAL) {
      case lex_label__sort:
	{
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: label */
	    goto ZL2_label;
	    /* END OF INLINE: label */
	}
	/*UNREACHED*/
      case lex_label__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 349 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 358 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case lex_ident:
	{
	    /* BEGINNING OF ACTION: label1 */
	    {
#line 1493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n =lex_v.val.name;
    Labdec * x = find_lab(n);
    if (x==(Labdec*)0) {
	x = xalloc(sizeof(*x));
	x->idname.id = n; x->idname.name.unit_name = next_label();
	x->declared = 0;
	x->next = labdecs; labdecs = x;
    }
    g_labdec = x;
    o_make_label(out_tdfint32(LOCNAME(x->idname)));
#line 379 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: label1 */
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 398 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZR641 (PTR_Tokdec *ZI640)
{
    switch (CURRENT_TERMINAL) {
      case lex_exp__tok:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((*ZI640), &(*ZI640)->sort);
#line 416 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case lex_signed__nat__tok:
	{
	    TDF ZIa;
	    TDF ZIb;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((*ZI640), &(*ZI640)->sort);
#line 432 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	    /* BEGINNING OF ACTION: mint1_dec */
	    {
#line 1559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 442 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: mint2 */
	    {
#line 1565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = *current_TDF;
    INIT_TDF(current_TDF);
    o_make_int(append_TDF(&(ZIb),1), append_TDF(&(ZIa),1));
#line 464 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRfull__sortname (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	/* BEGINNING OF ACTION: sortname1 */
	{
#line 1906 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_sname.sort = lex_v.t;
#line 499 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: sortname1 */
	/* BEGINNING OF INLINE: sortname */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_access__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_al__tag__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_alignment__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_bitfield__variety__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_bool__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_error__treatment__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_exp__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_floating__variety__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_label__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_nat__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_ntest__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_rounding__mode__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_shape__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_signed__nat__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_string__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_tag__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_token__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_transfer__mode__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      case lex_variety__sort:
		{
		    ADVANCE_LEXER;
		}
		break;
	      default:
		goto ZL1;
	    }
	}
	/* END OF INLINE: sortname */
	ZR674 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR643 (int *ZI642)
{
    switch (CURRENT_TERMINAL) {
      case lex_exp__cons:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(*ZI642)].f)();
#line 629 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_signed__nat__cons:
	{
	    TDF ZIa;
	    TDF ZIb;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(*ZI642)].f)();
#line 645 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	    /* BEGINNING OF ACTION: mint1_dec */
	    {
#line 1559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 655 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: mint2 */
	    {
#line 1565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = *current_TDF;
    INIT_TDF(current_TDF);
    o_make_int(append_TDF(&(ZIb),1), append_TDF(&(ZIa),1));
#line 677 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR645 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_ord:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: expneg1_dec */
	    {
#line 842 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 715 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expneg1_dec */
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expnegate2 */
	    {
#line 846 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_negate(o_wrap, append_TDF(&(ZIa),1));
#line 729 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expnegate2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_character: case lex_int__den: case lex_nat__cons:
      case lex_nat__sort: case lex_nat__tok:
	{
	    TDF ZIa;
	    TDF ZIb;

	    ZR634 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: mint1_dec */
	    {
#line 1559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 759 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: mint2 */
	    {
#line 1565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = *current_TDF;
    INIT_TDF(current_TDF);
    o_make_int(append_TDF(&(ZIb),1), append_TDF(&(ZIa),1));
#line 781 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_float__den:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    TDF ZId;
	    PTR_TDF ZIe;
	    int ZIf;
	    unsigned_long ZIg;

	    /* BEGINNING OF ACTION: fden2_dec */
	    {
#line 1023 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIc), (ZId) uninitialised */
    (ZIf) = 1;
    (ZIg) = UL(radix);
    SET_TDF((ZIe), &(ZIa));
    out_tdfstring_bytes(fformat(lex_v.val.name,lnum), 8, UI(lnum));
    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZIb));
#line 814 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fden2_dec */
	    ADVANCE_LEXER;
	    ZRexponent__opt ();
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: fden3 */
	    {
#line 1033 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZIc));
#line 835 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fden3 */
	    read_floating_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: fden4 */
	    {
#line 1038 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZId));
#line 849 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fden4 */
	    ZRrounding__mode__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: fden5 */
	    {
#line 1043 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    o_make_floating(append_TDF(&(ZIc),1),
		    append_TDF(&(ZId),1),
		    if ((ZIf)) { o_true; } else { o_false; },
		    o_make_string(append_TDF(&(ZIa), 1)),
		    o_make_nat(out_tdfint32((ZIg))),
		    append_TDF(&(ZIb), 1));
#line 868 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fden5 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_variety (void)
{
  ZL2_variety:;
    switch (CURRENT_TERMINAL) {
      case lex_variety__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 649 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: variety */
			goto ZL2_variety;
			/* END OF INLINE: variety */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 924 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 945 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_variety ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 966 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_variety ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: variety1 */
			{
#line 2425 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_var_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
	       append_TDF(&(ZIc),1));
#line 988 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: variety1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 649 */
	}
	break;
      case lex_char__term: case lex_int__term: case lex_long__term:
      case lex_short__term: case lex_signed__term: case lex_unsigned__term:
	{
	    ZRvariety__sign ();
	    ZR650 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_variety__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 1027 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 1036 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_variety__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 1051 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 1060 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case lex_arithop: case lex_character: case lex_int__den:
      case lex_line__term: case lex_minus__term: case lex_signed__nat__cons:
      case lex_signed__nat__sort: case lex_signed__nat__tok:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;

	    /* BEGINNING OF ACTION: variety2_dec */
	    {
#line 2431 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    SET_TDF((ZIc), &(ZIa));
#line 1079 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: variety2_dec */
	    ZRsigned__nat__body ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: variety3 */
	    {
#line 2436 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 1093 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: variety3 */
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRsigned__nat__body ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: variety4 */
	    {
#line 2441 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_var_limits(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1));
#line 1114 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: variety4 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 1132 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZR646 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_osq:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    TDF ZId;

	    /* BEGINNING OF ACTION: call1_dec */
	    {
#line 424 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc), (ZId) uninitialised */
    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 1156 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: call1_dec */
	    ADVANCE_LEXER;
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: call2 */
	    {
#line 430 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = *current_TDF;
    INIT_TDF(current_TDF);
#line 1171 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: call2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_csq:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZR660 (&ZIa, &ZIb, &ZIc, &ZId);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_tail__call__term:
	{
	    TDF ZIa;

	    /* BEGINNING OF ACTION: tcall1_dec */
	    {
#line 2225 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 1198 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tcall1_dec */
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_osq:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRcallee ();
	    ZRcallee__var__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tcall2 */
	    {
#line 2230 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    TDF cees;
    cees = *current_TDF;
    INIT_TDF(current_TDF);
    o_tail_call(do_procprops(g_ce_v*2),
		append_TDF(&(ZIa),1), append_TDF(&cees,1));
#line 1224 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tcall2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_csq:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRtok__formal__list__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_ident:
	{
	    ZRtok__formal__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: tok_fml_opt1 */
	    {
#line 2405 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_tokpars = (Tokpar*)0;
#line 1267 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tok_fml_opt1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR647 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_ident:
	{
	    /* BEGINNING OF ACTION: expstar1 */
	    {
#line 915 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n = lex_v.val.name;
    Tagdec * x = find_tag(n);
    if (x == (Tagdec*)0) { MSG_not_a_tag(n); }
    else
    if (!x->isvar || x->hassh == 0) {
	MSG_dont_know_shape(n);
    }
    o_contents(
	if (x->hassh == 1) {
	    o_shape_apply_token(make_tok(&x->sh.shtok), {});
	} else { append_TDF(&x->sh.tdfsh, 0); },
	o_obtain_tag(make_tag(&x->idname.name)));
#line 1303 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expstar1 */
	    ADVANCE_LEXER;
	}
	break;
      case lex_ord:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;

	    /* BEGINNING OF ACTION: expstar2_dec */
	    {
#line 930 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    SET_TDF((ZIc), &(ZIa));
#line 1321 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expstar2_dec */
	    ADVANCE_LEXER;
	    read_shape ();
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: expstar3 */
	    {
#line 935 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 1342 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expstar3 */
	    ZRunary__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expstar4 */
	    {
#line 940 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_contents(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1));
#line 1356 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expstar4 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR648 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_ocurl:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    int ZIe;
	    PTR_Labdec ZIf;

	    /* BEGINNING OF ACTION: expcond1_dec */
	    {
#line 728 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    (ZIe) = defaultlab;
    (ZIf) = labdecs;
    defaultlab = -1;
    SET_TDF((ZId), &(ZIa));
#line 1394 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcond1_dec */
	    ADVANCE_LEXER;
	    ZRexp__sequence ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expcond2 */
	    {
#line 736 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 1409 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcond2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_bar:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRlabset__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expcond3 */
	    {
#line 741 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIc) = optlab;
    defaultlab = (ZIe);
    tidy_labels((ZIf));
#line 1431 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcond3 */
	    ZRexp__sequence ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expcond4 */
	    {
#line 747 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    INIT_TDF((ZId));
    RESET_TDF((ZId));
    o_conditional(append_TDF(&(ZIc),1),
		  append_TDF(&(ZIa),1), append_TDF(&(ZIb),1));
#line 1447 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcond4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ccurl:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_ord:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    int ZIe;

	    /* BEGINNING OF ACTION: query_type1 */
	    {
#line 1696 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    query_t = lex_query;
#line 1472 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: query_type1 */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: exptst1_dec */
	    {
#line 967 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    (ZIe) = query_t;
    SET_TDF((ZId),&(ZIa));
#line 1483 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst1_dec */
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst2 */
	    {
#line 973 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId),&(ZIb));
#line 1497 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst2 */
	    read_ntest ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst3 */
	    {
#line 978 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc))
#line 1511 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst3 */
	    read_exp ();
	    ZRlabdest__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst4 */
	    {
#line 983 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    switch((ZIe)) {
	case lex_query:
	    o_integer_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_float__query:
	    o_floating_test({}, o_impossible, append_TDF(&(ZIb),1),
	   		append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_ptr__query:
	    o_pointer_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_proc__query:
	    o_proc_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	case lex_offset__query:
	    o_offset_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	default: MSG_dont_understand_test();
    }
#line 1551 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR650 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_char__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: varietychar */
	    {
#line 2446 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_var_limits(
	o_make_signed_nat(out_tdfbool(issigned),
	    out_tdfint32(UL((issigned)?MINSC:0))),
	o_make_signed_nat(out_tdfbool(0),
	    out_tdfint32(UL((issigned)?MAXSC:MAXUSC))));
#line 1590 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: varietychar */
	}
	break;
      case lex_int__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: varietyint */
	    {
#line 2454 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_var_limits(
	o_make_signed_nat(out_tdfbool(issigned),
	    out_tdfint32(UL((issigned)?MINSI:0))),
	o_make_signed_nat(out_tdfbool(0),
	    out_tdfint32(UL((issigned)?MAXSI:MAXUSI))));
#line 1607 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: varietyint */
	}
	break;
      case lex_long__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: varietylong */
	    {
#line 2462 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_var_limits(
	o_make_signed_nat(out_tdfbool(issigned),
	    out_tdfint32(UL((issigned)?MINSL:0))),
	o_make_signed_nat(out_tdfbool(0),
	    out_tdfint32(UL((issigned)?MAXSL:MAXUSL))));
#line 1624 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: varietylong */
	}
	break;
      case lex_short__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: varietyshort */
	    {
#line 2477 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_var_limits(
	o_make_signed_nat(out_tdfbool(issigned),
	    out_tdfint32(UL((issigned)?MINSS:0))),
	o_make_signed_nat(out_tdfbool(0),
	    out_tdfint32(UL((issigned)?MAXSS:MAXUSS))));
#line 1641 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: varietyshort */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRsortname__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	ZRfull__sortname ();
	ZR673 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRsignature__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_qstring: case lex_string__cons: case lex_string__sort:
      case lex_string__tok:
	{
	    read_string ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: newstr_opt1 */
	    {
#line 1590 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no=1;
#line 1694 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: newstr_opt1 */
	}
	break;
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRexp__sequence (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_arithop: case lex_case__term: case lex_character:
      case lex_cons: case lex_exp__cons: case lex_exp__sort:
      case lex_exp__tok: case lex_float__den: case lex_float__query:
      case lex_hash: case lex_ident: case lex_int__den:
      case lex_lab: case lex_let: case lex_line__term:
      case lex_minus__term: case lex_ocurl: case lex_offset__query:
      case lex_ord: case lex_osq: case lex_proc:
      case lex_proc__query: case lex_ptr__query: case lex_qstring:
      case lex_query: case lex_rep: case lex_signed__nat__cons:
      case lex_signed__nat__sort: case lex_signed__nat__tok: case lex_size__term:
      case lex_star: case lex_string__cons: case lex_string__sort:
      case lex_string__tok: case lex_tag__cons: case lex_tag__sort:
      case lex_tag__tok: case lex_var:
	{
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exp_sls2 */
	    {
#line 700 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no =1;
#line 1738 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exp_sls2 */
	    ZR628 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: exp_sls1 */
	    {
#line 695 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no =1;
    o_make_top;
#line 1756 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exp_sls1 */
	    ZR628 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRrange (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	PTR_TDF ZIa;

	/* BEGINNING OF ACTION: range1_dec */
	{
#line 1716 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIa), &g_lower);
#line 1789 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: range1_dec */
	ZRsigned__nat__body ();
	ZR662 (&ZIa);
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR654 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_char__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shapechar */
	    {
#line 1775 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Name * shtok = tokforcharsh(issigned);
    o_shape_apply_token(make_tok(shtok), {});
#line 1818 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapechar */
	}
	break;
      case lex_int__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shapeint */
	    {
#line 1790 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Name * shtok = tokforintsh(issigned);
    o_shape_apply_token(make_tok(shtok), {});
#line 1832 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapeint */
	}
	break;
      case lex_long__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shapelong */
	    {
#line 1795 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Name * shtok = tokforlongsh(issigned);
    o_shape_apply_token(make_tok(shtok), {});
#line 1846 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapelong */
	}
	break;
      case lex_short__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shapeshort */
	    {
#line 1805 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Name * shtok = tokforshortsh(issigned);
    o_shape_apply_token(make_tok(shtok), {});
#line 1860 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapeshort */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR655 (TDF *ZIa, PTR_TDF *ZIb)
{
    switch (CURRENT_TERMINAL) {
      case lex_colon:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: otagexp3 */
	    {
#line 1657 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char* n = lex_v.val.name;
    Tagdec * x = find_tag(n);
    if (x != (Tagdec*)0) { MSG_tag_declared_twice(n); }
    x = xalloc(sizeof(*x)); x->isdeffed = 1; x->hassh=0; x->iskept=0;
    NEW_IDNAME(x->idname, n, tag_ent);
    x->isvar = 1;
    x->next = g_app_tags; g_app_tags = x;
    RESET_TDF((*ZIb));
    o_make_otagexp( OPTION(make_tag(&x->idname.name)),append_TDF(&(*ZIa),1));
#line 1896 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: otagexp3 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: otagexp2 */
	    {
#line 1652 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIb));
    o_make_otagexp( {}, append_TDF(&(*ZIa),1));
#line 1916 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: otagexp2 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRrange__label__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	PTR_TDF ZIb;

	/* BEGINNING OF ACTION: rllist1_dec */
	{
#line 1736 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb),&(ZIa));
#line 1945 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: rllist1_dec */
	ZRrange ();
	switch (CURRENT_TERMINAL) {
	  case lex_goesto:
	    break;
	  case 130:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	read_label ();
	ZR661 (&ZIa, &ZIb);
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR656 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_arithop: case lex_case__term: case lex_character:
      case lex_cons: case lex_exp__cons: case lex_exp__sort:
      case lex_exp__tok: case lex_float__den: case lex_float__query:
      case lex_hash: case lex_ident: case lex_int__den:
      case lex_lab: case lex_let: case lex_line__term:
      case lex_minus__term: case lex_ocurl: case lex_offset__query:
      case lex_ord: case lex_osq: case lex_proc:
      case lex_proc__query: case lex_ptr__query: case lex_qstring:
      case lex_query: case lex_rep: case lex_signed__nat__cons:
      case lex_signed__nat__sort: case lex_signed__nat__tok: case lex_size__term:
      case lex_star: case lex_string__cons: case lex_string__sort:
      case lex_string__tok: case lex_tag__cons: case lex_tag__sort:
      case lex_tag__tok: case lex_var:
	{
	    ZRexp__comma__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_shape (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	PTR_TDF ZIb;
	int ZIc;

	/* BEGINNING OF ACTION: genhold1_dec */
	{
#line 1187 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIc) = (current_TDF->first == current_TDF->last &&
	      current_TDF->first->usage == 0 &&
	      current_TDF->first->offst == 0);
    if (!(ZIc)) { SET_TDF((ZIb), &(ZIa)); }
#line 2027 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: genhold1_dec */
	ZRshape__body ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: genhold2 */
	{
#line 1194 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    if (!(ZIc) ) {
	SET((ZIb));
	RESET_TDF((ZIb));
	append_TDF(&(ZIa),1);
    }
#line 2044 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: genhold2 */
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 2056 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZR657 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_check__stack:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: untidy3 */
	    {
#line 2417 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_unt = 3;
#line 2074 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: untidy3 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: untidy2 */
	    {
#line 2413 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_unt = 1;
#line 2086 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: untidy2 */
	}
	break;
      case 130:
	return;
    }
}

static void
ZRaccess__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	read_access ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: acc_l1 */
	{
#line 289 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no=1;
#line 2113 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: acc_l1 */
	ZR627 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR660 (TDF *ZIa, TDF *ZIb, TDF *ZIc, TDF *ZId)
{
    switch (CURRENT_TERMINAL) {
      case lex_ord:
	{
	    ADVANCE_LEXER;
	    read_exp_list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: call3 */
	    {
#line 435 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (*ZIc) = *current_TDF;
    INIT_TDF(current_TDF);
#line 2146 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: call3 */
	    ZRvarpar__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: call4 */
	    {
#line 440 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (*ZId) = *current_TDF;
    INIT_TDF(current_TDF);
    o_apply_proc(append_TDF(&(*ZIb),1), append_TDF(&(*ZIa),1),
	    { append_TDF(&(*ZIc), 1); current_TDF->no = (*ZIc).no; },
	      if ((*ZId).no !=0) { OPTION(append_TDF(&(*ZId),1)); }
	    );
#line 2164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: call4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_osq:
	{
	    TDF ZIe;
	    TDF ZIf;
	    TDF ZIg;
	    int ZIh;
	    int ZIi;
	    PTR_Tagdec ZIj;
	    PTR_Tagdec ZIk;
	    PTR_Tagdec ZIl;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gcall1_dec */
	    {
#line 1124 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIe), (ZIf), (ZIg) uninitialised */
    /* (ZIh), (ZIi), (ZIk) uninitialised */
    (ZIj) = g_app_tags;
    (ZIl) = tagdecs;
    g_app_tags = (Tagdec*)0;
#line 2197 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gcall1_dec */
	    ZRotagexp__list__opt ();
	    ZRcaller__var__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gcall2 */
	    {
#line 1132 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIe) = *current_TDF;
    INIT_TDF(current_TDF);
    (ZIh) = g_cr_v;
    (ZIk) = g_app_tags;
    g_app_tags = (ZIj);
#line 2215 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gcall2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_semi:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRcallee ();
	    ZRcallee__var__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gcall3 */
	    {
#line 1140 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIf) = *current_TDF;
    (ZIi) = g_ce_v;
    INIT_TDF(current_TDF);
    while ((ZIk) != (Tagdec*)0) {
	Tagdec * x = (ZIk);
	(ZIk) = x->next;
	x->next = tagdecs;
	tagdecs = x;
    }
#line 2244 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gcall3 */
	    ZRpostlude__opt ();
	    switch (CURRENT_TERMINAL) {
	      case lex_csq:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRuntidy__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gcall4 */
	    {
#line 1152 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIg) = *current_TDF;
    INIT_TDF(current_TDF);
    tagdecs = (ZIl);
    o_apply_general_proc(
	append_TDF(&(*ZIb),1), do_procprops((ZIh)+2*(ZIi)+4*g_unt),
	append_TDF(&(*ZIa),1),
	{ append_TDF(&(ZIe),1); current_TDF->no = (ZIe).no; },
	append_TDF(&(ZIf),1),
	append_TDF(&(ZIg), 1))
#line 2276 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gcall4 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRtagshacc__list__opt (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	/* BEGINNING OF ACTION: tagshacc_l1 */
	{
#line 2217 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no =0;
#line 2304 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tagshacc_l1 */
	ZR664 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR661 (TDF *ZIa, PTR_TDF *ZIb)
{
    switch (CURRENT_TERMINAL) {
      default:
	{
	    /* BEGINNING OF ACTION: rllist2 */
	    {
#line 1740 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIb));
    o_make_caselim(append_TDF(&(*ZIa),1),
		   append_TDF(&g_lower, g_has_upper),
		   append_TDF(&g_upper,1));
    current_TDF->no = 1;
#line 2334 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: rllist2 */
	}
	break;
      case lex_comma:
	{
	    /* BEGINNING OF ACTION: rllist3 */
	    {
#line 1748 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIb));
    o_make_caselim(append_TDF(&(*ZIa),1),
		   append_TDF(&g_lower, g_has_upper),
		   append_TDF(&g_upper,1));
#line 2349 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: rllist3 */
	    ADVANCE_LEXER;
	    ZRrange__label__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: rllist4 */
	    {
#line 1755 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no++;
#line 2363 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: rllist4 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRlabdest__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_bar:
	{
	    PTR_TDF ZIa;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: dest_o1_dec */
	    {
#line 553 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIa), &optlab);
#line 2391 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: dest_o1_dec */
	    read_label ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: dest_opt2 */
	    {
#line 557 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIa));
#line 2404 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: dest_opt2 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: lset_o1 */
	    {
#line 1535 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    TDF * hold;
    SET_TDF(hold, &optlab);
    if (defaultlab==-1) defaultlab = next_label();
    o_make_label(out_tdfint32(UL(defaultlab)));
    RESET_TDF(hold);
#line 2420 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: lset_o1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR662 (PTR_TDF *ZIa)
{
    switch (CURRENT_TERMINAL) {
      case lex_colon:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: range3 */
	    {
#line 1726 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIa));
    SET_TDF((*ZIa), &g_upper);
#line 2447 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: range3 */
	    ZRsigned__nat__body ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: range4 */
	    {
#line 1731 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIa));
    g_has_upper=1;
#line 2461 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: range4 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: range2 */
	    {
#line 1720 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIa));
    g_upper = g_lower;
    g_has_upper=0;
#line 2475 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: range2 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRalignment__list__opt (void)
{
    switch (CURRENT_TERMINAL) {
      default:
	{
	    /* BEGINNING OF ACTION: al_list_opt1 */
	    {
#line 331 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_alignment(o_top);
#line 2500 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: al_list_opt1 */
	}
	break;
      case lex_al__tag__sort: case lex_al__tag__tok: case lex_alignment__cons:
      case lex_alignment__sort: case lex_alignment__tok: case lex_ident:
      case lex_ord:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;
	    int ZIc;

	    /* BEGINNING OF ACTION: genhold1_dec */
	    {
#line 1187 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIc) = (current_TDF->first == current_TDF->last &&
	      current_TDF->first->usage == 0 &&
	      current_TDF->first->offst == 0);
    if (!(ZIc)) { SET_TDF((ZIb), &(ZIa)); }
#line 2521 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: genhold1_dec */
	    ZRalignment__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: genhold2 */
	    {
#line 1194 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    if (!(ZIc) ) {
	SET((ZIb));
	RESET_TDF((ZIb));
	append_TDF(&(ZIa),1);
    }
#line 2538 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: genhold2 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR663 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_comma:
	{
	    ADVANCE_LEXER;
	    ZRoffset__exp__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: offexpl2 */
	    {
#line 1632 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no+=2;
#line 2569 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: offexpl2 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: offexpl1 */
	    {
#line 1628 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no = 2;
#line 2581 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: offexpl1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_string (void)
{
  ZL2_string:;
    switch (CURRENT_TERMINAL) {
      case lex_string__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 631 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: string */
			goto ZL2_string;
			/* END OF INLINE: string */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 2628 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 2649 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_string ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 2676 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			read_string ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: newstring2 */
			{
#line 1599 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_string_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		  append_TDF(&(ZIc),1));
#line 2691 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: newstring2 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 631 */
	}
	break;
      case lex_string__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 2719 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 2728 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_string__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 2743 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 2752 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case lex_qstring:
	{
	    /* BEGINNING OF ACTION: newstring1 */
	    {
#line 1594 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * s = lex_v.val.name;
    o_make_string(out_tdfstring_bytes(s, 8, UI(strlen(s))));
#line 2765 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: newstring1 */
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 2784 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZR664 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_ident:
	{
	    ZRtagshacc__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRotagexp__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	ZRotagexp ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: otagel1 */
	{
#line 1636 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no = 1;
#line 2831 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: otagel1 */
	ZR626 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRvariety__sign (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_signed__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: signedornot1 */
	    {
#line 1892 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    issigned = 1;
#line 2858 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signedornot1 */
	}
	break;
      case lex_unsigned__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: signedornot2 */
	    {
#line 1896 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    issigned = 0;
#line 2871 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signedornot2 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: signedornot1 */
	    {
#line 1892 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    issigned = 1;
#line 2883 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signedornot1 */
	}
	break;
      case 130:
	return;
    }
}

static void
ZR668 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_bar:
	{
	    ADVANCE_LEXER;
	    ZRlabelled__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: llist4 */
	    {
#line 1526 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_lablist.no++;
#line 2910 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: llist4 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: llist3 */
	    {
#line 1522 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_lablist.no = 1;
#line 2922 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: llist3 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR669 (TDF *ZIa, TDF *ZIb, PTR_TDF *ZIc, PTR_Tagdec *ZId, int *ZIe)
{
    switch (CURRENT_TERMINAL) {
      case lex_equals:
	{
	    /* BEGINNING OF ACTION: intro2 */
	    {
#line 1288 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    SET_TDF((*ZIc), &(*ZIb));
    (*ZIe) = g_has_vis;
#line 2949 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro2 */
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: intro4 */
	    {
#line 1300 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    intro_acc = (*ZIa);
    intro_init = (*ZIb);
    (*ZId)->isvar=1;
    if ((*ZIe)) {
	Tagdec * y = xalloc(sizeof(*y));
	*y = *(*ZId);
	y->next = tagdecs;
	tagdecs = y;
    }
    (*ZId)->next = localdecs;
    localdecs = (*ZId);
#line 2974 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro4 */
	}
	break;
      case lex_colon:
	{
	    /* BEGINNING OF ACTION: intro3 */
	    {
#line 1294 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    SET_TDF((*ZIc), &(*ZId)->sh.tdfsh);
    (*ZId)->hassh=2;
#line 2988 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro3 */
	    ADVANCE_LEXER;
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: intro2 */
	    {
#line 1288 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    SET_TDF((*ZIc), &(*ZIb));
    (*ZIe) = g_has_vis;
#line 3004 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro2 */
	    ZR670 (ZIa, ZIb, ZIc, ZId, ZIe);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR670 (TDF *ZIa, TDF *ZIb, PTR_TDF *ZIc, PTR_Tagdec *ZId, int *ZIe)
{
    switch (CURRENT_TERMINAL) {
      case lex_equals:
	{
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: intro4 */
	    {
#line 1300 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    intro_acc = (*ZIa);
    intro_init = (*ZIb);
    (*ZId)->isvar=1;
    if ((*ZIe)) {
	Tagdec * y = xalloc(sizeof(*y));
	*y = *(*ZId);
	y->next = tagdecs;
	tagdecs = y;
    }
    (*ZId)->next = localdecs;
    localdecs = (*ZId);
#line 3053 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro4 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: intro6 */
	    {
#line 1330 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_value(append_TDF(&(*ZId)->sh.tdfsh, 0));
#line 3065 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro6 */
	    /* BEGINNING OF ACTION: intro4 */
	    {
#line 1300 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    intro_acc = (*ZIa);
    intro_init = (*ZIb);
    (*ZId)->isvar=1;
    if ((*ZIe)) {
	Tagdec * y = xalloc(sizeof(*y));
	*y = *(*ZId);
	y->next = tagdecs;
	tagdecs = y;
    }
    (*ZId)->next = localdecs;
    localdecs = (*ZId);
#line 3084 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro4 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_signed_nat (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	ZRsigned__nat__body ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 3119 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZR672 (TDF *ZIa, TDF *ZIb, PTR_TDF *ZIc, PTR_char *ZId)
{
    switch (CURRENT_TERMINAL) {
      case lex_addrop:
	{
	    ADVANCE_LEXER;
	    ZRunary__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exp2 */
	    {
#line 609 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    INIT_TDF((*ZIc));
    RESET_TDF((*ZIc));
    if(strcmp((*ZId), "*+.")==0) {
	o_add_to_ptr(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if(strcmp((*ZId), "*-*")==0) {
	o_subtract_ptrs(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if(strcmp((*ZId), ".*")==0) {
	o_offset_mult(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if(strcmp((*ZId), ".+.")==0) {
	o_offset_add(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if(strcmp((*ZId), ".-.")==0) {
	o_offset_subtract(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if(strcmp((*ZId), "./")==0) {
	o_offset_div_by_int(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if(strcmp((*ZId), "./.")==0) {
	o_offset_div(
	    o_var_limits(
		o_make_signed_nat(out_tdfbool(1), out_tdfint32(UL(MINSI))),
		o_make_signed_nat(out_tdfbool(0), out_tdfint32(UL(MAXSI)))),
	    append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if(strcmp((*ZId), ".max.")==0) {
	o_offset_max(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else { MSG_not_an_addrop((*ZId)); }
#line 3164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exp2 */
	}
	break;
      case lex_equals:
	{
	    ADVANCE_LEXER;
	    ZRunary__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exp6 */
	    {
#line 689 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    INIT_TDF((*ZIc));
    RESET_TDF((*ZIc));
    o_assign(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
#line 3184 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exp6 */
	}
	break;
      case lex_logop:
	{
	    ADVANCE_LEXER;
	    ZRunary__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exp3 */
	    {
#line 635 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    INIT_TDF((*ZIc));
    RESET_TDF((*ZIc));
    if(strcmp((*ZId), "And")==0) {
	o_and(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if(strcmp((*ZId), "Or")==0) {
	o_or(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if(strcmp((*ZId), "Xor")==0) {
	o_xor(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else { MSG_not_a_logop((*ZId)); }
#line 3210 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exp3 */
	}
	break;
      case lex_arithop: case lex_minus__term: case lex_star:
	{
	    /* BEGINNING OF INLINE: binop */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_arithop:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_minus__term:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_star:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: binop */
	    ZRunary__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exp5 */
	    {
#line 647 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    INIT_TDF((*ZIc));
    RESET_TDF((*ZIc));
    if (strcmp((*ZId),"%")==0) {
	o_rem2(o_continue, o_continue, append_TDF(&(*ZIa),1),
	       append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"%1")==0) {
	o_rem1(o_continue, o_continue, append_TDF(&(*ZIa),1),
	       append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"*")==0) {
	o_mult(o_wrap, append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"+")==0) {
	o_plus(o_wrap, append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"-")==0) {
	o_minus(o_wrap, append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"/")==0) {
	o_div2(o_continue, o_continue, append_TDF(&(*ZIa),1),
	       append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"/1")==0) {
	o_div1(o_continue, o_continue, append_TDF(&(*ZIa),1),
	       append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"<<")==0) {
	o_shift_left(o_wrap, append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"F*")==0) {
	o_floating_mult(o_continue,
	    { LIST_ELEM(append_TDF(&(*ZIa),1));
	    LIST_ELEM(append_TDF(&(*ZIb),1)) });
    } else if (strcmp((*ZId),">>")==0) {
	o_shift_right(append_TDF(&(*ZIa),1), append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"F+")==0) {
	o_floating_plus(o_continue,
	    { LIST_ELEM(append_TDF(&(*ZIa),1));
	    LIST_ELEM(append_TDF(&(*ZIb),1)) });
    } else if (strcmp((*ZId),"F-")==0) {
	o_floating_minus(o_continue, append_TDF(&(*ZIa),1),
			 append_TDF(&(*ZIb),1));
    } else if (strcmp((*ZId),"F/")==0) {
	o_floating_div(o_continue, append_TDF(&(*ZIa),1),
		       append_TDF(&(*ZIb),1));
    } else { MSG_not_an_arithop((*ZId)); }
#line 3288 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exp5 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_token (void)
{
  ZL2_token:;
    switch (CURRENT_TERMINAL) {
      case lex_token__sort:
	{
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: token */
	    goto ZL2_token;
	    /* END OF INLINE: token */
	}
	/*UNREACHED*/
      case lex_use:
	{
	    TDF ZIa;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tok2_dec */
	    {
#line 2268 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = g_tok_defn;
#line 3334 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tok2_dec */
	    ZRtok__def__body ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tok3 */
	    {
#line 2272 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_use_tokdef(append_TDF(&g_tok_defn,1));
    g_tok_defn = (ZIa);
#line 3348 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tok3 */
	}
	break;
      case lex_access__tok: case lex_al__tag__tok: case lex_alignment__tok:
      case lex_bitfield__variety__tok: case lex_bool__tok: case lex_error__treatment__tok:
      case lex_exp__tok: case lex_floating__variety__tok: case lex_label__tok:
      case lex_nat__tok: case lex_ntest__tok: case lex_rounding__mode__tok:
      case lex_shape__tok: case lex_signed__nat__tok: case lex_tag__tok:
      case lex_transfer__mode__tok: case lex_variety__tok:
	{
	    /* BEGINNING OF ACTION: tok1 */
	    {
#line 2258 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Tokdec * td = lex_v.val.tokname;
    if (td->isparam) {
	o_token_apply_token(make_tok(&td->idname.name), {});
    } else {
	make_tok(&td->idname.name);
    }
    /* token should only be expanded as parameter of a token */
#line 3371 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tok1 */
	    /* BEGINNING OF INLINE: tok_item */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_access__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_al__tag__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_alignment__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_bitfield__variety__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_bool__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_error__treatment__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_exp__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_floating__variety__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_label__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_nat__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_ntest__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_rounding__mode__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_shape__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_signed__nat__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_tag__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_transfer__mode__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_variety__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: tok_item */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 3482 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZR673 (void)
{
    switch (CURRENT_TERMINAL) {
      default:
	{
	    /* BEGINNING OF ACTION: snl1 */
	    {
#line 1939 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_tokpars = xalloc(sizeof(*g_tokpars));
    g_tokpars->par = g_sname;
    g_tokpars->next = (Tokpar*)0;
#line 3501 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: snl1 */
	}
	break;
      case lex_comma:
	{
	    Sort ZIa;

	    /* BEGINNING OF ACTION: snl2_dec */
	    {
#line 1945 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = g_sname;
#line 3515 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: snl2_dec */
	    ADVANCE_LEXER;
	    ZRsortname__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: snl3 */
	    {
#line 1949 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Tokpar * x = xalloc(sizeof(*x));
    x->par = (ZIa);
    x->next = g_tokpars;
    g_tokpars = x;
#line 3532 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: snl3 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRnat__not__int (void)
{
  ZL2_nat__not__int:;
    switch (CURRENT_TERMINAL) {
      case lex_nat__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 651 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			read_nat ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
		    }
		    break;
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 3581 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 3602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_nat ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 3623 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_nat ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: nat1 */
			{
#line 1571 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_nat_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
	       append_TDF(&(ZIc),1));
#line 3645 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: nat1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 651 */
	}
	break;
      case lex_nat__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 3673 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 3682 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_nat__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 3697 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 3706 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRshape__body (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_double__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shapedouble */
	    {
#line 1780 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Name * shtok = tokfordoublesh();
    o_shape_apply_token(make_tok(shtok), {});
#line 3735 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapedouble */
	}
	break;
      case lex_float__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shapefloat */
	    {
#line 1785 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Name * shtok = tokforfloatsh();
    o_shape_apply_token(make_tok(shtok), {});
#line 3749 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapefloat */
	}
	break;
      case lex_ptr:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shptr1_dec */
	    {
#line 1831 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 3765 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shptr1_dec */
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: shapeptr2 */
	    {
#line 1800 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_pointer(o_alignment(append_TDF(&(ZIa),1)));
#line 3779 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapeptr2 */
	}
	break;
      case lex_shape__sort:
	{
	    ADVANCE_LEXER;
	    ZR676 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_char__term: case lex_int__term: case lex_long__term:
      case lex_short__term: case lex_signed__term: case lex_unsigned__term:
	{
	    ZRvariety__sign ();
	    ZR654 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_shape__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 3814 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 3823 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_shape__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 3838 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 3847 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRrepeat__starter__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_ord:
	{
	    ADVANCE_LEXER;
	    ZRexp__sequence ();
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: strtr1 */
	    {
#line 1956 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_top;
#line 3890 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: strtr1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR674 (void)
{
    switch (CURRENT_TERMINAL) {
      default:
	{
	    /* BEGINNING OF ACTION: sortname2 */
	    {
#line 1910 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    if(g_sname.sort == token_sort) {
	MSG_token_pars_req();
    }
    g_sname.toksort= (TokSort*)0;
#line 3918 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: sortname2 */
	}
	break;
      case lex_osq:
	{
	    Sort ZIa;
	    PTR_Tokpar ZIb;
	    PTR_Tokpar ZIc;

	    /* BEGINNING OF ACTION: sortname3_dec */
	    {
#line 1917 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIc) = g_tokpars;
    (ZIa) = g_sname;
    if (g_sname.sort != token_sort) {
	MSG_token_pars_require_parameter();
    }
#line 3939 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: sortname3_dec */
	    ADVANCE_LEXER;
	    ZRsortname__list__opt ();
	    switch (CURRENT_TERMINAL) {
	      case lex_csq:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: sortname4 */
	    {
#line 1926 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = g_tokpars;
#line 3959 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: sortname4 */
	    ZRfull__sortname ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: sortname5 */
	    {
#line 1930 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    TokSort * ts = xalloc(sizeof(*ts));
    ts->ressort = g_sname;
    ts->pars = (ZIb);
    g_tokpars = (ZIc);
    (ZIa).toksort = ts;
    g_sname = (ZIa);
#line 3977 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: sortname5 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRfield__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
  ZL2_field__list:;
    {
	PTR_TDF ZIa;
	PTR_Tokdec ZIb;
	PTR_Tokdec ZIc;

	/* BEGINNING OF ACTION: field1_dec */
	{
#line 1053 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * dotn = string_concat(".",lex_v.val.name);
    char * n = lex_v.val.name;
    (ZIb) = find_tok(dotn);
    (ZIc) = find_tok(n);
    if ((ZIb)!=(Tokdec*)0 || (ZIc)!=(Tokdec*)0)
	    MSG_field_name_unique(dotn);
    (ZIb) = xalloc(sizeof(*(ZIb))); NEW_IDNAME((ZIb)->idname, dotn, tok_ent);
    (ZIb)->isdeffed = 1; (ZIb)->isused=0; (ZIb)->iskept = 0;
    (ZIb)->sort.ressort.sort = exp_sort;
    (ZIb)->sort.pars = (Tokpar *)0;

    (ZIc) = xalloc(sizeof(*(ZIc))); NEW_IDNAME((ZIc)->idname, n, tok_ent);
    (ZIc)->isdeffed = 1; (ZIc)->isused=0; (ZIc)->iskept = 0;
    (ZIc)->sort.ressort.sort = exp_sort;
    (ZIc)->sort.pars = xalloc(sizeof(Tokpar));
    (ZIc)->sort.pars->par.sort = exp_sort;
    (ZIc)->sort.pars->next = (Tokpar*)0;
    (ZIb)->next = (ZIc);
    SET_TDF((ZIa), &g_shape);
#line 4026 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: field1_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_ident:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_colon:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	read_shape ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: field2 */
	{
#line 1075 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    int tn;
    RESET_TDF((ZIa));
    o_make_tokdef(out_tdfint32(LOCNAME((ZIb)->idname)), {},
	o_token_def(o_exp, {},
	    if (g_lastfield==-1) { /* first field */
		o_offset_zero(o_alignment(append_TDF(&g_shape, 0)));
	    } else {
		o_offset_pad(o_alignment(append_TDF(&g_shape,0)),
		    o_offset_add(o_exp_apply_token(
			o_make_tok(out_tdfint32(UL(g_lastfield))),{}),
		    o_shape_offset(append_TDF(&g_lastshape, 1))))
	    }));
    g_lastfield = (int)(LOCNAME((ZIb)->idname));
    g_lastshape = g_shape;
    INC_LIST;
    o_make_tokdef(out_tdfint32(LOCNAME((ZIc)->idname)), {},
	o_token_def(o_exp,
	    LIST_ELEM(o_make_tokformals(o_exp,
		out_tdfint32(UL(tn=next_unit_name(tok_ent))))),
	    o_component(append_TDF(&g_lastshape,0),
		o_exp_apply_token(o_make_tok(out_tdfint32(UL(tn))),{}),
		o_exp_apply_token(
		    o_make_tok(out_tdfint32(UL(g_lastfield))),{}))));
    INC_LIST;
    (ZIc)->next = tokdecs;
    tokdecs = (ZIb);
#line 4078 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: field2 */
	/* BEGINNING OF INLINE: 682 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: field_list */
		    goto ZL2_field__list;
		    /* END OF INLINE: field_list */
		}
		/*UNREACHED*/
	      default:
		break;
	    }
	}
	/* END OF INLINE: 682 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR675 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_char__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shapetokchar */
	    {
#line 1819 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    * g_shtokname = *(tokforcharsh(issigned));
#line 4116 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapetokchar */
	}
	break;
      case lex_int__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shapetokint */
	    {
#line 1823 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    * g_shtokname = *(tokforintsh(issigned));
#line 4129 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapetokint */
	}
	break;
      case lex_long__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shapetoklong */
	    {
#line 1827 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    * g_shtokname = *(tokforlongsh(issigned));
#line 4142 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapetoklong */
	}
	break;
      case lex_short__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shtokshrt */
	    {
#line 1851 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    * g_shtokname = *(tokforshortsh(issigned));
#line 4155 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shtokshrt */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR676 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_colon:
	{
	    ADVANCE_LEXER;
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_query:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencond1_dec */
	    {
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 4199 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencond1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gencond2 */
	    {
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 4220 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencond2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gencond3 */
	    {
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 4241 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencond3 */
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: shape1 */
	    {
#line 1769 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_shape_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		 append_TDF(&(ZIc),1));
#line 4263 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shape1 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR677 (TDF *ZIa, TDF *ZIb, PTR_TDF *ZIc, PTR_Tagdec *ZId, PTR_char *ZIe, int *ZIf)
{
    switch (CURRENT_TERMINAL) {
      case lex_equals:
	{
	    /* BEGINNING OF ACTION: tag_def2 */
	    {
#line 2093 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    if (!(*ZId)->hassh) MSG_no_declaration_shape((*ZIe));
    SET_TDF((*ZIc), &(*ZIa));
#line 4299 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def2 */
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_def3 */
	    {
#line 2099 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    o_make_var_tagdef(out_tdfint32(UL(non_local(&(*ZId)->idname.name, tag_ent))),
	{},
	if ((*ZIb).no !=0) { OPTION(append_TDF(&(*ZIb), 1)); },
	append_TDF(&(*ZIa), 1));
    INC_LIST;
    (*ZId)->isdeffed = 1;
#line 4319 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def3 */
	}
	break;
      case lex_colon:
	{
	    /* BEGINNING OF ACTION: tag_def4 */
	    {
#line 2109 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    if ((*ZId)->hassh) MSG_two_declaration_shapes((*ZIe));
    g_shtokname = &(*ZId)->sh.shtok;
#line 4333 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def4 */
	    ADVANCE_LEXER;
	    ZRshapetok ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_def5 */
	    {
#line 2115 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((*ZIc), &(*ZIa));
#line 4347 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def5 */
	    ZR680 (ZIa, ZIb, ZIc, ZId, ZIf);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRrounding__mode__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_rounding__mode__cons: case lex_rounding__mode__sort: case lex_rounding__mode__tok:
	{
	    read_rounding_mode ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: rmodeopt1 */
	    {
#line 1765 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_to_nearest;
#line 4388 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: rmodeopt1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR678 (TDF *ZIa, TDF *ZIb, PTR_TDF *ZIc, PTR_Tagdec *ZId, PTR_char *ZIe, int *ZIf)
{
    switch (CURRENT_TERMINAL) {
      case lex_equals:
	{
	    /* BEGINNING OF ACTION: tag_def2 */
	    {
#line 2093 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    if (!(*ZId)->hassh) MSG_no_declaration_shape((*ZIe));
    SET_TDF((*ZIc), &(*ZIa));
#line 4415 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def2 */
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: ctag_def3 */
	    {
#line 524 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    (*ZId)->iscommon = 1;
    o_common_tagdef(out_tdfint32(UL(non_local(&(*ZId)->idname.name, tag_ent))), {},
	if ((*ZIb).no !=0) { OPTION(append_TDF(&(*ZIb), 1)); },
	append_TDF(&(*ZIa), 1));
    INC_LIST;
    (*ZId)->isdeffed = 1;
#line 4435 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: ctag_def3 */
	}
	break;
      case lex_colon:
	{
	    /* BEGINNING OF ACTION: tag_def4 */
	    {
#line 2109 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    if ((*ZId)->hassh) MSG_two_declaration_shapes((*ZIe));
    g_shtokname = &(*ZId)->sh.shtok;
#line 4449 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def4 */
	    ADVANCE_LEXER;
	    ZRshapetok ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_def5 */
	    {
#line 2115 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((*ZIc), &(*ZIa));
#line 4463 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def5 */
	    ZR681 (ZIa, ZIb, ZIc, ZId, ZIf);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRnonst__shape (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	PTR_TDF ZIb;
	int ZIc;

	/* BEGINNING OF ACTION: genhold1_dec */
	{
#line 1187 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIc) = (current_TDF->first == current_TDF->last &&
	      current_TDF->first->usage == 0 &&
	      current_TDF->first->offst == 0);
    if (!(ZIc)) { SET_TDF((ZIb), &(ZIa)); }
#line 4503 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: genhold1_dec */
	ZRnonst__shape__body ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: genhold2 */
	{
#line 1194 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    if (!(ZIc) ) {
	SET((ZIb));
	RESET_TDF((ZIb));
	append_TDF(&(ZIa),1);
    }
#line 4520 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: genhold2 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR679 (TDF *ZIa, TDF *ZIb, PTR_TDF *ZIc, PTR_Tagdec *ZId, PTR_char *ZIe, int *ZIf)
{
    switch (CURRENT_TERMINAL) {
      case lex_equals:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tag_def2 */
	    {
#line 2093 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    if (!(*ZId)->hassh) MSG_no_declaration_shape((*ZIe));
    SET_TDF((*ZIc), &(*ZIa));
#line 4544 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def2 */
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_def8 */
	    {
#line 2157 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    o_make_id_tagdef(out_tdfint32(UL(non_local(&(*ZId)->idname.name, tag_ent))),
	if ((*ZIb).no !=0) { OPTION(append_TDF(&(*ZIb), 1)); },
	append_TDF(&(*ZIa), 1));
    INC_LIST;
    (*ZId)->isdeffed = 1;
#line 4562 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def8 */
	}
	break;
      case lex_colon:
	{
	    /* BEGINNING OF ACTION: tag_def4 */
	    {
#line 2109 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    if ((*ZId)->hassh) MSG_two_declaration_shapes((*ZIe));
    g_shtokname = &(*ZId)->sh.shtok;
#line 4576 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def4 */
	    ADVANCE_LEXER;
	    ZRshapetok ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_def5 */
	    {
#line 2115 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((*ZIc), &(*ZIa));
#line 4590 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def5 */
	    switch (CURRENT_TERMINAL) {
	      case lex_equals:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_def9 */
	    {
#line 2166 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    o_make_id_tagdef(out_tdfint32(UL(local_name(&(*ZId)->idname.name, tag_ent))),
	if ((*ZIb).no !=0) { OPTION(append_TDF(&(*ZIb), (*ZIf))); },
	append_TDF(&(*ZIa), 1));
    INC_LIST;
    SELECT_UNIT(tagdec_unit);
    if (!(*ZIf)) {
	o_make_id_tagdec(out_tdfint32(UL(non_local(&(*ZId)->idname.name,tag_ent))),
	    {},
	    if ((*ZIb).no !=0) { OPTION(append_TDF(&(*ZIb), 1)); },
	    o_shape_apply_token(make_tok(&(*ZId)->sh.shtok), {}));
	INC_LIST;
    }
    (*ZId)->isdeffed=1; (*ZId)->hassh =1;
    if (!(*ZIf)) { (*ZId)->next = tagdecs; tagdecs = (*ZId); }
#line 4624 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def9 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRaccess__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_osq:
	{
	    ADVANCE_LEXER;
	    ZRaccess__list ();
	    switch (CURRENT_TERMINAL) {
	      case lex_csq:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_error_code (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	int ZIa;

	/* BEGINNING OF ACTION: gencons1_dec */
	{
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 4685 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: gencons1_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_error__code__cons:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: gencons2 */
	{
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 4700 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: gencons2 */
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 4712 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRpostlude__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_semi:
	{
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: plude1 */
	    {
#line 1669 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_top;
#line 4739 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: plude1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR680 (TDF *ZIa, TDF *ZIb, PTR_TDF *ZIc, PTR_Tagdec *ZId, int *ZIf)
{
    switch (CURRENT_TERMINAL) {
      case lex_equals:
	{
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_def6 */
	    {
#line 2119 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    o_make_var_tagdef(out_tdfint32(UL(local_name(&(*ZId)->idname.name, tag_ent))),
	{},
	if ((*ZIb).no !=0 ) { OPTION(append_TDF(&(*ZIb), (*ZIf))); },
	append_TDF(&(*ZIa), 1));
    INC_LIST;
    SELECT_UNIT(tagdec_unit);
    if (!(*ZIf)) {
	o_make_var_tagdec(out_tdfint32(UL(non_local(&(*ZId)->idname.name,tag_ent))),
	    {},
	    if ((*ZIb).no !=0 ) { OPTION(append_TDF(&(*ZIb), 1)); },
	    o_shape_apply_token(make_tok(&(*ZId)->sh.shtok), {}));
	INC_LIST;
    }
    (*ZId)->isdeffed=1; (*ZId)->hassh =1;
    if (!(*ZIf)) { (*ZId)->next = tagdecs; tagdecs = (*ZId); }
#line 4785 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def6 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: tag_def10 */
	    {
#line 2053 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_value(o_shape_apply_token(make_tok(&(*ZId)->sh.shtok), {}));
#line 4797 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def10 */
	    /* BEGINNING OF ACTION: tag_def6 */
	    {
#line 2119 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    o_make_var_tagdef(out_tdfint32(UL(local_name(&(*ZId)->idname.name, tag_ent))),
	{},
	if ((*ZIb).no !=0 ) { OPTION(append_TDF(&(*ZIb), (*ZIf))); },
	append_TDF(&(*ZIa), 1));
    INC_LIST;
    SELECT_UNIT(tagdec_unit);
    if (!(*ZIf)) {
	o_make_var_tagdec(out_tdfint32(UL(non_local(&(*ZId)->idname.name,tag_ent))),
	    {},
	    if ((*ZIb).no !=0 ) { OPTION(append_TDF(&(*ZIb), 1)); },
	    o_shape_apply_token(make_tok(&(*ZId)->sh.shtok), {}));
	INC_LIST;
    }
    (*ZId)->isdeffed=1; (*ZId)->hassh =1;
    if (!(*ZIf)) { (*ZId)->next = tagdecs; tagdecs = (*ZId); }
#line 4820 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def6 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRexponent__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_e__term:
	{
	    ADVANCE_LEXER;
	    ZRsigned__nat__body ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: eopt1 */
	    {
#line 565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_signed_nat(out_tdfbool(0), out_tdfint32(UL(0)));
#line 4855 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: eopt1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR681 (TDF *ZIa, TDF *ZIb, PTR_TDF *ZIc, PTR_Tagdec *ZId, int *ZIf)
{
    switch (CURRENT_TERMINAL) {
      case lex_equals:
	{
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: ctag_def6 */
	    {
#line 534 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    (*ZId)->iscommon = 1;
    o_common_tagdef(out_tdfint32(UL(local_name(&(*ZId)->idname.name, tag_ent))), {},
	if ((*ZIb).no !=0) { OPTION(append_TDF(&(*ZIb), (*ZIf))); },
	append_TDF(&(*ZIa), 1));
    INC_LIST;
    SELECT_UNIT(tagdec_unit);
    if (!(*ZIf)) {
	o_common_tagdec(out_tdfint32(UL(non_local(&(*ZId)->idname.name,tag_ent))),
	    {},
	    if ((*ZIb).no !=0) { OPTION(append_TDF(&(*ZIb), 1)); },
	    o_shape_apply_token(make_tok(&(*ZId)->sh.shtok), {}));
	INC_LIST;
    }
    (*ZId)->isdeffed=1; (*ZId)->hassh =1;
    if (!(*ZIf)) { (*ZId)->next = tagdecs; tagdecs = (*ZId); }
#line 4901 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: ctag_def6 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: tag_def10 */
	    {
#line 2053 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_value(o_shape_apply_token(make_tok(&(*ZId)->sh.shtok), {}));
#line 4913 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def10 */
	    /* BEGINNING OF ACTION: ctag_def6 */
	    {
#line 534 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((*ZIc));
    (*ZId)->iscommon = 1;
    o_common_tagdef(out_tdfint32(UL(local_name(&(*ZId)->idname.name, tag_ent))), {},
	if ((*ZIb).no !=0) { OPTION(append_TDF(&(*ZIb), (*ZIf))); },
	append_TDF(&(*ZIa), 1));
    INC_LIST;
    SELECT_UNIT(tagdec_unit);
    if (!(*ZIf)) {
	o_common_tagdec(out_tdfint32(UL(non_local(&(*ZId)->idname.name,tag_ent))),
	    {},
	    if ((*ZIb).no !=0) { OPTION(append_TDF(&(*ZIb), 1)); },
	    o_shape_apply_token(make_tok(&(*ZId)->sh.shtok), {}));
	INC_LIST;
    }
    (*ZId)->isdeffed=1; (*ZId)->hassh =1;
    if (!(*ZIf)) { (*ZId)->next = tagdecs; tagdecs = (*ZId); }
#line 4936 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: ctag_def6 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRclosed__exp (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_lab:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    PTR_Labdec ZIe;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: explab1_dec */
	    {
#line 818 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIe) = labdecs;
    (ZIc) = g_lablist;
    INIT_TDF(&g_lablist);
    SET_TDF((ZId), &(ZIa));
#line 4972 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: explab1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ocurl:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRexp__sequence ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: explab2 */
	    {
#line 826 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 4993 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: explab2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_bar:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRlabelled__list ();
	    switch (CURRENT_TERMINAL) {
	      case lex_ccurl:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: explab3 */
	    {
#line 831 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_labelled( { append_TDF(&g_lablist,1);
		  current_TDF->no = g_lablist.no;},
		  append_TDF(&(ZIa), 1),
		  { append_TDF(&(ZIb),1);
		    current_TDF->no = g_lablist.no;});
    tidy_labels((ZIe));
    g_lablist = (ZIc);
#line 5026 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: explab3 */
	}
	break;
      case lex_ocurl:
	{
	    ADVANCE_LEXER;
	    ZRexp__sequence ();
	    switch (CURRENT_TERMINAL) {
	      case lex_ccurl:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_query:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    int ZIe;
	    PTR_Labdec ZIf;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: expcond1_dec */
	    {
#line 728 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    (ZIe) = defaultlab;
    (ZIf) = labdecs;
    defaultlab = -1;
    SET_TDF((ZId), &(ZIa));
#line 5066 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcond1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ocurl:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRexp__sequence ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expcond2 */
	    {
#line 736 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 5087 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcond2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_bar:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRlabset__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expcond3 */
	    {
#line 741 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIc) = optlab;
    defaultlab = (ZIe);
    tidy_labels((ZIf));
#line 5109 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcond3 */
	    ZRexp__sequence ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expcond4 */
	    {
#line 747 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    INIT_TDF((ZId));
    RESET_TDF((ZId));
    o_conditional(append_TDF(&(ZIc),1),
		  append_TDF(&(ZIa),1), append_TDF(&(ZIb),1));
#line 5125 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcond4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ccurl:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_rep:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    PTR_Labdec ZIe;
	    int ZIf;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: exprep1_dec */
	    {
#line 891 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc), (ZIf) uninitialised */
    (ZIe) = labdecs;
    SET_TDF((ZId), &(ZIa));
#line 5154 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exprep1_dec */
	    ZRrepeat__starter__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exprep2 */
	    {
#line 897 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIf) = defaultlab;
    defaultlab = -1;
#line 5168 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exprep2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ocurl:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRlabset__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exprep3 */
	    {
#line 902 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIc) = optlab;
    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 5190 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exprep3 */
	    ZRexp__sequence ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exprep4 */
	    {
#line 908 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_repeat(append_TDF(&(ZIc),1), append_TDF(&(ZIa),1), append_TDF(&(ZIb),1));
    tidy_labels((ZIe));
    defaultlab = (ZIf);
#line 5206 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exprep4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ccurl:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_let: case lex_var:
	{
	    PTR_Tagdec ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    TDF ZId;
	    PTR_TDF ZIe;
	    Name ZIf;
	    int ZIg;

	    /* BEGINNING OF ACTION: expdec1_dec */
	    {
#line 770 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = localdecs;
#line 5233 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expdec1_dec */
	    ZRtag__intro ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: ibody1_dec */
	    {
#line 1261 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIg) = localdecs->isvar;
    (ZIb) = intro_acc;
    (ZIc) = intro_init;
    (ZIf) = localdecs->idname.name;
    SET_TDF((ZIe), &(ZId));
#line 5250 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: ibody1_dec */
	    ZRclosed__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: introbody2 */
	    {
#line 1334 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    if ((ZIg)) {
	o_variable( if((ZIb).no!=0) { OPTION(append_TDF(&(ZIb),1)); },
		    make_tag(&(ZIf)), append_TDF(&(ZIc),1),
		    append_TDF(&(ZId),1));
    } else {
	o_identify( if((ZIb).no!=0) { OPTION(append_TDF(&(ZIb),1)); },
		    make_tag(&(ZIf)), append_TDF(&(ZIc),1),
		    append_TDF(&(ZId),1));
    }
#line 5272 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: introbody2 */
	    /* BEGINNING OF ACTION: expdec2 */
	    {
#line 774 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    localdecs = (ZIa);
#line 5280 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expdec2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_bool (void)
{
  ZL2_bool:;
    switch (CURRENT_TERMINAL) {
      case lex_bool__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: after_bool_sort */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: bool */
			goto ZL2_bool;
			/* END OF INLINE: bool */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 5328 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			ADVANCE_LEXER;
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 5356 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			read_bool ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 5376 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			read_bool ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: bool1 */
			{
#line 392 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_bool_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		append_TDF(&(ZIc),1));
#line 5391 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: bool1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: after_bool_sort */
	}
	break;
      case lex_bool__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 5419 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 5428 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_bool__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 5443 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 5452 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 5470 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRvarintro__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_varpar:
	{
	    ADVANCE_LEXER;
	    read_tag ();
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_alignment ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_ntest (void)
{
  ZL2_ntest:;
    switch (CURRENT_TERMINAL) {
      case lex_ntest__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 671 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: ntest */
			goto ZL2_ntest;
			/* END OF INLINE: ntest */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 5545 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 5566 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_ntest ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 5587 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_ntest ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: ntest1 */
			{
#line 1605 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_ntest_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		 append_TDF(&(ZIc),1));
#line 5609 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: ntest1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 671 */
	}
	break;
      case lex_ntest__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 5638 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 5647 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case lex_relop:
	{
	    /* BEGINNING OF ACTION: ntest2 */
	    {
#line 1611 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n = lex_v.val.name;
    if (strcmp(n,"!<")==0) { o_not_less_than; }
    else if (strcmp(n,"!<=")==0) { o_not_less_than_or_equal; }
    else if (strcmp(n,"!=")==0) { o_not_equal; }
    else if (strcmp(n,"!>")==0) { o_not_greater_than; }
    else if (strcmp(n,"!>=")==0) { o_not_greater_than_or_equal; }
    else if (strcmp(n,"!Comparable")==0) { o_not_comparable; }
    else if (strcmp(n,"<")==0) { o_less_than; }
    else if (strcmp(n,"<=")==0) { o_less_than_or_equal; }
    else if (strcmp(n,"==")==0) { o_equal; }
    else if (strcmp(n,">")==0) { o_greater_than; }
    else if (strcmp(n,">=")==0) { o_greater_than_or_equal; }
    else if (strcmp(n,"Comparable")==0) { o_comparable; }
    else { MSG_not_a_comparison(n); }
#line 5672 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: ntest2 */
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 5691 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

void
read_bitfield_variety (void)
{
  ZL2_bitfield__variety:;
    switch (CURRENT_TERMINAL) {
      case lex_bitfield__variety__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: after_bv_sort */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: bitfield_variety */
			goto ZL2_bitfield__variety;
			/* END OF INLINE: bitfield_variety */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 5729 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			ADVANCE_LEXER;
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 5757 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			read_bitfield_variety ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 5777 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			read_bitfield_variety ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: bvariety1 */
			{
#line 403 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_bfvar_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		 append_TDF(&(ZIc),1));
#line 5792 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: bvariety1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: after_bv_sort */
	}
	break;
      case lex_bool__cons: case lex_bool__sort: case lex_bool__tok:
      case lex_character: case lex_int__den: case lex_nat__cons:
      case lex_nat__sort: case lex_nat__tok: case lex_signed__term:
      case lex_unsigned__term:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;

	    /* BEGINNING OF ACTION: bvar3_dec */
	    {
#line 398 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    SET_TDF((ZIc), &(ZIa));
#line 5826 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: bvar3_dec */
	    ZRbitfield__sign ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: bvariety4 */
	    {
#line 414 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 5840 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: bvariety4 */
	    read_nat ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: bvariety5 */
	    {
#line 419 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_bfvar_bits(append_TDF(&(ZIa),1), append_TDF(&(ZIb), 1));
#line 5854 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: bvariety5 */
	}
	break;
      case lex_bitfield__variety__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 5868 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 5877 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_bitfield__variety__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 5892 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 5901 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 5919 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRsigned__nat__body (void)
{
  ZL2_signed__nat__body:;
    switch (CURRENT_TERMINAL) {
      case lex_minus__term:
	{
	    ADVANCE_LEXER;
	    ZR634 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_signed__nat__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 633 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: signed_nat_body */
			goto ZL2_signed__nat__body;
			/* END OF INLINE: signed_nat_body */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 5968 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 5989 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			ZRsigned__nat__body ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 6010 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			ZRsigned__nat__body ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: signed_nat1 */
			{
#line 1855 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_signed_nat_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		      append_TDF(&(ZIc),1));
#line 6032 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: signed_nat1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 633 */
	}
	break;
      case lex_character: case lex_int__den:
	{
	    ZRinteger ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: signed_nat2 */
	    {
#line 1861 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_signed_nat(out_tdfbool(0), out_tdfint32(intvalue));
#line 6063 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat2 */
	}
	break;
      case lex_signed__nat__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 6077 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 6086 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_signed__nat__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 6101 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 6110 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case lex_line__term:
	{
	    /* BEGINNING OF ACTION: signed_nat4 */
	    {
#line 1869 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_signed_nat(out_tdfbool(0), out_tdfint32(cLINE));
#line 6122 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat4 */
	    ADVANCE_LEXER;
	}
	break;
      case lex_arithop:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    /* BEGINNING OF ACTION: signed_nat7_dec */
	    {
#line 1882 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
    if (strcmp(lex_v.val.name, "+")) MSG_only_plus_or_minus();
#line 6139 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat7_dec */
	    ADVANCE_LEXER;
	    ZRnat__not__int ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: signed_nat8 */
	    {
#line 1887 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_snat_from_nat(o_false, append_TDF(&(ZIa),1));
#line 6154 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat8 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRlabset__opt (void)
{
    switch (CURRENT_TERMINAL) {
      default:
	{
	    /* BEGINNING OF ACTION: lset_o1 */
	    {
#line 1535 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    TDF * hold;
    SET_TDF(hold, &optlab);
    if (defaultlab==-1) defaultlab = next_label();
    o_make_label(out_tdfint32(UL(defaultlab)));
    RESET_TDF(hold);
#line 6185 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: lset_o1 */
	}
	break;
      case lex_colon:
	{
	    PTR_TDF ZIa;

	    /* BEGINNING OF ACTION: lset_o2_dec */
	    {
#line 1543 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIa), &optlab);
    g_labdec = (Labdec*)0;
    if (defaultlab != -1) { MSG_default_jump(); }
#line 6201 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: lset_o2_dec */
	    ADVANCE_LEXER;
	    read_label ();
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: lset_o3 */
	    {
#line 1549 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    if (g_labdec != (Labdec*)0) {
	if (g_labdec->declared) {
	    MSG_label_set_twice(g_labdec->idname.id);
	}
	g_labdec->declared = 1;
    }
    RESET_TDF((ZIa));
#line 6227 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: lset_o3 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRkeep__item (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_access__tok: case lex_al__tag__tok: case lex_alignment__tok:
      case lex_bitfield__variety__tok: case lex_bool__tok: case lex_error__treatment__tok:
      case lex_exp__tok: case lex_floating__variety__tok: case lex_label__tok:
      case lex_nat__tok: case lex_ntest__tok: case lex_rounding__mode__tok:
      case lex_shape__tok: case lex_signed__nat__tok: case lex_tag__tok:
      case lex_transfer__mode__tok: case lex_variety__tok:
	{
	    /* BEGINNING OF ACTION: keep1 */
	    {
#line 1347 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Tokdec * k = lex_v.val.tokname;
    k->iskept = 1;
#line 6258 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: keep1 */
	    /* BEGINNING OF INLINE: tok_item */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_access__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_al__tag__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_alignment__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_bitfield__variety__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_bool__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_error__treatment__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_exp__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_floating__variety__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_label__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_nat__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_ntest__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_rounding__mode__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_shape__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_signed__nat__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_tag__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_transfer__mode__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  case lex_variety__tok:
		    {
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: tok_item */
	}
	break;
      case lex_ident:
	{
	    /* BEGINNING OF ACTION: keep2 */
	    {
#line 1352 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n = lex_v.val.name;
    Tagdec * t = find_tag(n);
    if (t != (Tagdec*)0){
	t->iskept = 1;
     } else {
	Al_tagdec * a = find_al_tag(n);
	if (a == (Al_tagdec*)0) {
	    MSG_ident_not_declared(n);
	}
	a->iskept = 1;
    }
#line 6373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: keep2 */
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRstruct__def (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	PTR_Tokdec ZIa;

	switch (CURRENT_TERMINAL) {
	  case lex_struct__term:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: struct1_dec */
	{
#line 1960 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n = lex_v.val.name;
    (ZIa) = find_tok(n);
    SELECT_UNIT(tokdef_unit);
    if ((ZIa)!=(Tokdec*)0) MSG_struct_unique(n);
    (ZIa) = xalloc(sizeof(*(ZIa))); NEW_IDNAME((ZIa)->idname, n, tok_ent);
    (ZIa)->sort.ressort.sort = shape_sort; (ZIa)->sort.pars = (Tokpar*)0;
    (ZIa)->isdeffed = 1; (ZIa)->isused=0; (ZIa)->iskept=0;
    g_lastfield = -1;
#line 6418 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: struct1_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_ident:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_ord:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRfield__list ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: struct2 */
	{
#line 1971 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_tokdef(out_tdfint32(LOCNAME((ZIa)->idname)), {},
	o_token_def(o_shape, {},
	    o_compound(o_offset_add(
		o_exp_apply_token(
		    o_make_tok(out_tdfint32(UL(g_lastfield))),{}),
		o_shape_offset(append_TDF(&g_lastshape, 1))))))
    INC_LIST;
    (ZIa)->next = tokdecs;
    tokdecs = (ZIa);
#line 6453 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: struct2 */
	switch (CURRENT_TERMINAL) {
	  case lex_crd:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRnonst__shape__body (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_ptr:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shptr1_dec */
	    {
#line 1831 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 6485 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shptr1_dec */
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: shapeptr2 */
	    {
#line 1800 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_pointer(o_alignment(append_TDF(&(ZIa),1)));
#line 6499 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapeptr2 */
	}
	break;
      case lex_shape__sort:
	{
	    ADVANCE_LEXER;
	    ZR676 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_shape__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 6523 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 6532 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_shape__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 6547 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 6556 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_tag (void)
{
  ZL2_tag:;
    switch (CURRENT_TERMINAL) {
      case lex_tag__sort:
	{
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: tag */
	    goto ZL2_tag;
	    /* END OF INLINE: tag */
	}
	/*UNREACHED*/
      case lex_tag__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 6601 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 6610 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_tag__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 6625 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 6634 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case lex_ident:
	{
	    /* BEGINNING OF ACTION: tag1 */
	    {
#line 1987 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n =lex_v.val.name;
    Tagdec * x = find_tag(n);
    if (x == (Tagdec*)0) { MSG_ident_not_declared(n); }
    x->isused = 1;
    make_tag(&x->idname.name);
#line 6650 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag1 */
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 6669 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRvariety__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_ord:
	{
	    ADVANCE_LEXER;
	    read_variety ();
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: varietyopt1 */
	    {
#line 2470 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* unsigned char */
    o_var_limits(
	o_make_signed_nat(out_tdfbool(0), out_tdfint32(UL(0))),
	o_make_signed_nat(out_tdfbool(0), out_tdfint32(UL(255))));
#line 6705 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: varietyopt1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_nat_option (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_character: case lex_int__den: case lex_nat__cons:
      case lex_nat__sort: case lex_nat__tok:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    /* BEGINNING OF ACTION: natopt_dec */
	    {
#line 1586 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 6734 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: natopt_dec */
	    read_nat ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: natopt1 */
	    {
#line 1581 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    OPTION(append_TDF(&(ZIa),1));
#line 6748 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: natopt1 */
	}
	break;
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 6766 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRsortname__list__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_access__sort: case lex_al__tag__sort: case lex_alignment__sort:
      case lex_bitfield__variety__sort: case lex_bool__sort: case lex_error__treatment__sort:
      case lex_exp__sort: case lex_floating__variety__sort: case lex_label__sort:
      case lex_nat__sort: case lex_ntest__sort: case lex_rounding__mode__sort:
      case lex_shape__sort: case lex_signed__nat__sort: case lex_string__sort:
      case lex_tag__sort: case lex_token__sort: case lex_transfer__mode__sort:
      case lex_variety__sort:
	{
	    ZRsortname__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: empty_snl */
	    {
#line 561 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_tokpars = (Tokpar*)0;
#line 6798 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: empty_snl */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_floating_variety (void)
{
  ZL2_floating__variety:;
    switch (CURRENT_TERMINAL) {
      case lex_double__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: fvardouble */
	    {
#line 1110 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_flvar_parms(o_make_nat(out_tdfint32(UL(2))),
		  o_make_nat(out_tdfint32(UL(MANT_DOUBLE))),
		  o_make_nat(out_tdfint32(UL(MINEXP_DOUBLE))),
		  o_make_nat(out_tdfint32(UL(MAXEXP_DOUBLE))));
#line 6828 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fvardouble */
	}
	break;
      case lex_float__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: fvarfloat */
	    {
#line 1117 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_flvar_parms(o_make_nat(out_tdfint32(UL(2))),
		  o_make_nat(out_tdfint32(UL(MANT_FLOAT))),
		  o_make_nat(out_tdfint32(UL(MINEXP_FLOAT))),
		  o_make_nat(out_tdfint32(UL(MAXEXP_FLOAT))));
#line 6844 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fvarfloat */
	}
	break;
      case lex_floating__variety__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 658 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: floating_variety */
			goto ZL2_floating__variety;
			/* END OF INLINE: floating_variety */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 6876 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			ADVANCE_LEXER;
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 6904 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			read_floating_variety ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 6924 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			read_floating_variety ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: fvar1 */
			{
#line 1104 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_flvar_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		 append_TDF(&(ZIc),1));
#line 6939 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: fvar1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 658 */
	}
	break;
      case lex_floating__variety__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 6967 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 6976 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_floating__variety__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 6991 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 7000 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 7018 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRtagshacc (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	PTR_TDF ZIb;
	PTR_Tagdec ZIc;
	int ZId;

	/* BEGINNING OF ACTION: tagsa1_dec */
	{
#line 2184 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZId) uninitialised */
    char * n =lex_v.val.name;
    (ZIc) = find_tag(n);
    if ((ZIc) != (Tagdec*)0) MSG_ident_already_declared(n);
    (ZIc) = xalloc(sizeof(*(ZIc)));
    (ZIc)->hassh = 2; (ZIc)->isvar =1; (ZIc)->isdeffed = 1; (ZIc)->iskept=0;
    NEW_IDNAME((ZIc)->idname, n, tag_ent);
    g_has_vis =0;
    SET_TDF((ZIb), &(ZIa));
#line 7049 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tagsa1_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_ident:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRaccess__opt ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: tagshacc2 */
	{
#line 2196 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    SET_TDF((ZIb), &(ZIc)->sh.tdfsh);
    (ZId) = g_has_vis;
#line 7071 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tagshacc2 */
	switch (CURRENT_TERMINAL) {
	  case lex_colon:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	read_shape ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: tagshacc3 */
	{
#line 2202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_make_tagshacc( append_TDF(&(ZIc)->sh.tdfsh, 0),
	if((ZIa).no != 0) {OPTION(append_TDF(&(ZIa),1));},
	make_tag(&(ZIc)->idname.name));
    if ((ZId)) {
	Tagdec * y = xalloc(sizeof(*y));
	*y = *(ZIc);
	y->next = tagdecs;
	tagdecs = y;
    }
    (ZIc)->next = localdecs;
    localdecs = (ZIc);
#line 7102 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tagshacc3 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRelement__list__opt (void)
{
  ZL2_element__list__opt:;
    switch (CURRENT_TERMINAL) {
      case lex_al__tagdef: case lex_common__term: case lex_commondec__term:
      case lex_iddec: case lex_let: case lex_proc:
      case lex_string__term: case lex_struct__term: case lex_tokdec:
      case lex_tokdef: case lex_var: case lex_vardec:
	{
	    ZRelement ();
	    switch (CURRENT_TERMINAL) {
	      case lex_semi:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: element_list_opt */
	    goto ZL2_element__list__opt;
	    /* END OF INLINE: element_list_opt */
	}
	/*UNREACHED*/
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_nat (void)
{
  ZL2_nat:;
    switch (CURRENT_TERMINAL) {
      case lex_character: case lex_int__den:
	{
	    ZRinteger ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: nat2 */
	    {
#line 1577 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_nat(out_tdfint32(intvalue));
#line 7166 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: nat2 */
	}
	break;
      case lex_nat__cons: case lex_nat__sort: case lex_nat__tok:
	{
	    ZRnat__not__int ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 7193 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

void
read_alignment (void)
{
  ZL2_alignment:;
    switch (CURRENT_TERMINAL) {
      case lex_alignment__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 666 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: alignment */
			goto ZL2_alignment;
			/* END OF INLINE: alignment */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 7232 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 7259 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			read_alignment ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 7279 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			read_alignment ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: alignment1 */
			{
#line 377 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_alignment_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		     append_TDF(&(ZIc),1));
#line 7294 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: alignment1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 666 */
	}
	break;
      case lex_ord:
	{
	    ADVANCE_LEXER;
	    ZRalignment__list__opt ();
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_al__tag__sort: case lex_al__tag__tok: case lex_ident:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    /* BEGINNING OF ACTION: alment2_dec */
	    {
#line 388 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 7339 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: alment2_dec */
	    read_al_tag ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: alignment3 */
	    {
#line 383 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_obtain_al_tag(append_TDF(&(ZIa), 1));
#line 7353 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: alignment3 */
	}
	break;
      case lex_alignment__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 7367 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 7376 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_alignment__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 7391 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 7400 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 7418 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRvarpar__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_varpar:
	{
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: vpar1 */
	    {
#line 2485 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no=1;
#line 7441 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: vpar1 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: vpar2 */
	    {
#line 2489 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no=0;
#line 7453 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: vpar2 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRkeep__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
  ZL2_keep__list:;
    {
	ZRkeep__item ();
	/* BEGINNING OF INLINE: 683 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: keep_list */
		    goto ZL2_keep__list;
		    /* END OF INLINE: keep_list */
		}
		/*UNREACHED*/
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		break;
	    }
	}
	/* END OF INLINE: 683 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRproc__def (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	TDF ZIb;
	PTR_TDF ZIc;
	PTR_Tagdec ZId;
	PTR_char ZIe;
	int ZIf;

	switch (CURRENT_TERMINAL) {
	  case lex_proc:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: tag_def7_dec */
	{
#line 2138 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIa) uninitialised */
    (ZIe) =lex_v.val.name;
    (ZId) = find_tag((ZIe));
    SELECT_UNIT(tagdef_unit);
    if((ZId)!= (Tagdec*)0) {
	if ((ZId)->isdeffed && !(ZId)->iscommon) MSG_tag_defined_twice((ZIe));
	if ((ZId)->isvar) MSG_tag_declared_as_variable((ZIe));
	(ZIf) = 1;
    } else {
	(ZId) = xalloc(sizeof(*(ZId)));
	(ZId)->hassh = 0; (ZId)->isvar=0; (ZId)->iskept=0; (ZId)->iscommon = 0;
	(ZId)->isused = 0;
	NEW_IDNAME((ZId)->idname, (ZIe), tag_ent);
	(ZIf) = 0;
    }
    SET_TDF((ZIc), &(ZIb));
#line 7543 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tag_def7_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_ident:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_equals:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: proc_def1 */
	{
#line 1673 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIa));
#line 7566 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: proc_def1 */
	ZRproc__def__body ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: proc_def2 */
	{
#line 1678 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_make_id_tagdef(out_tdfint32(UL(local_name(&(ZId)->idname.name, tag_ent))),
	if ((ZIb).no !=0) { OPTION(append_TDF(&(ZIb), (ZIf))); },
      append_TDF(&(ZIa), 1));
    INC_LIST;
    SELECT_UNIT(tagdec_unit);
    if (!(ZIf)) {
	o_make_id_tagdec(out_tdfint32(UL(non_local(&(ZId)->idname.name,tag_ent))),
	    {},
	    if ((ZIb).no !=0) { OPTION(append_TDF(&(ZIb), 1)); },
	    o_proc);
	INC_LIST;
    }
    (ZId)->isdeffed=1;
    if (!(ZIf)) {(ZId)->next = tagdecs; tagdecs = (ZId);}
#line 7593 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: proc_def2 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_error_code_list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	read_error_code ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: errc1 */
	{
#line 569 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no = 1;
#line 7620 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: errc1 */
	ZR625 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 7637 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRcallee__var__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_dotdotdot:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: cevaropt2 */
	    {
#line 481 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_ce_v = 1;
#line 7655 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: cevaropt2 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: cevaropt1 */
	    {
#line 477 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_ce_v = 0;
#line 7667 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: cevaropt1 */
	}
	break;
      case 130:
	return;
    }
}

static void
ZRtag__dec (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_commondec__term:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_Tagdec ZId;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tag_dec1_dec */
	    {
#line 1995 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    char * n =lex_v.val.name;
    (ZId) = find_tag(n);
    if ((ZId) != (Tagdec*)0) MSG_tag_declared_twice(n);
    SELECT_UNIT(tagdec_unit);
    (ZId) = xalloc(sizeof(*(ZId))); NEW_IDNAME((ZId)->idname, n, tag_ent);
    (ZId)->isdeffed = 0; (ZId)->hassh = 1; (ZId)->iskept=0; (ZId)->iscommon=0;
    (ZId)->isused = 0;
    SET_TDF((ZIc), &(ZIa));
#line 7702 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRaccess__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_dec6 */
	    {
#line 2048 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 7723 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec6 */
	    ZRsignature__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_dec2 */
	    {
#line 2007 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_shtokname = &(ZId)->sh.shtok;
#line 7736 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRshapetok ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_dec5 */
	    {
#line 2035 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    (ZId)->iscommon = 1;
    o_common_tagdec(out_tdfint32(LOCNAME((ZId)->idname)),
	if ((ZIa).no !=0) { OPTION(append_TDF(&(ZIa), 1)); },
	if ((ZIb).no !=0) { OPTION(append_TDF(&(ZIb), 1)); },
	o_shape_apply_token(make_tok(&(ZId)->sh.shtok), {}));
    INC_LIST;
    (ZId)->next = tagdecs;
    (ZId)->isvar = 1;
    tagdecs = (ZId);
#line 7765 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec5 */
	}
	break;
      case lex_iddec:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_Tagdec ZId;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tag_dec1_dec */
	    {
#line 1995 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    char * n =lex_v.val.name;
    (ZId) = find_tag(n);
    if ((ZId) != (Tagdec*)0) MSG_tag_declared_twice(n);
    SELECT_UNIT(tagdec_unit);
    (ZId) = xalloc(sizeof(*(ZId))); NEW_IDNAME((ZId)->idname, n, tag_ent);
    (ZId)->isdeffed = 0; (ZId)->hassh = 1; (ZId)->iskept=0; (ZId)->iscommon=0;
    (ZId)->isused = 0;
    SET_TDF((ZIc), &(ZIa));
#line 7791 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRaccess__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_dec6 */
	    {
#line 2048 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 7812 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec6 */
	    ZRsignature__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_dec2 */
	    {
#line 2007 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_shtokname = &(ZId)->sh.shtok;
#line 7825 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRshapetok ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_dec4 */
	    {
#line 2023 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_make_id_tagdec(out_tdfint32(LOCNAME((ZId)->idname)),
	if ((ZIa).no !=0) { OPTION(append_TDF(&(ZIa), 1)); },
	if ((ZIb).no !=0) { OPTION(append_TDF(&(ZIb), 1)); },
	o_shape_apply_token(make_tok(&(ZId)->sh.shtok), {}));
    INC_LIST;
    (ZId)->next = tagdecs;
    (ZId)->isvar = 0;
    tagdecs = (ZId);
#line 7853 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec4 */
	}
	break;
      case lex_vardec:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_Tagdec ZId;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tag_dec1_dec */
	    {
#line 1995 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    char * n =lex_v.val.name;
    (ZId) = find_tag(n);
    if ((ZId) != (Tagdec*)0) MSG_tag_declared_twice(n);
    SELECT_UNIT(tagdec_unit);
    (ZId) = xalloc(sizeof(*(ZId))); NEW_IDNAME((ZId)->idname, n, tag_ent);
    (ZId)->isdeffed = 0; (ZId)->hassh = 1; (ZId)->iskept=0; (ZId)->iscommon=0;
    (ZId)->isused = 0;
    SET_TDF((ZIc), &(ZIa));
#line 7879 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRaccess__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_dec6 */
	    {
#line 2048 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 7900 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec6 */
	    ZRsignature__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_dec2 */
	    {
#line 2007 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_shtokname = &(ZId)->sh.shtok;
#line 7913 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRshapetok ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tag_dec3 */
	    {
#line 2011 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_make_var_tagdec(out_tdfint32(LOCNAME((ZId)->idname)),
	if ((ZIa).no !=0) { OPTION(append_TDF(&(ZIa), 1)); },
	if ((ZIb).no !=0) { OPTION(append_TDF(&(ZIb), 1)); },
	o_shape_apply_token(make_tok(&(ZId)->sh.shtok), {}));
    INC_LIST;
    (ZId)->next = tagdecs;
    (ZId)->isvar = 1;
    tagdecs = (ZId);
#line 7941 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_dec3 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRtag__intro (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_let:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_Tagdec ZId;
	    int ZIe;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: intro1_dec */
	    {
#line 1277 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIe) uninitialised */
    char* n = lex_v.val.name;
    (ZId) = find_tag(n);
    if ((ZId) != (Tagdec*)0) { MSG_tag_declared_twice(n); }
    (ZId) = xalloc(sizeof(*(ZId))); (ZId)->isdeffed = 1; (ZId)->hassh=0; (ZId)->iskept=0;
    NEW_IDNAME((ZId)->idname, n, tag_ent);
    g_has_vis = 0;
    SET_TDF((ZIc), &(ZIa));
#line 7982 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRaccess__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: intro2 */
	    {
#line 1288 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
    (ZIe) = g_has_vis;
#line 8004 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_equals:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: intro5 */
	    {
#line 1315 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    intro_acc = (ZIa);
    intro_init = (ZIb);
    (ZId)->isvar=0;
    if ((ZIe)) {
	Tagdec * y = xalloc(sizeof(*y));
	*y = *(ZId);
	y->next = tagdecs;
	tagdecs = y;
    }
    (ZId)->next = localdecs;
    localdecs = (ZId);
#line 8035 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro5 */
	}
	break;
      case lex_var:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_Tagdec ZId;
	    int ZIe;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: intro1_dec */
	    {
#line 1277 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIe) uninitialised */
    char* n = lex_v.val.name;
    (ZId) = find_tag(n);
    if ((ZId) != (Tagdec*)0) { MSG_tag_declared_twice(n); }
    (ZId) = xalloc(sizeof(*(ZId))); (ZId)->isdeffed = 1; (ZId)->hassh=0; (ZId)->iskept=0;
    NEW_IDNAME((ZId)->idname, n, tag_ent);
    g_has_vis = 0;
    SET_TDF((ZIc), &(ZIa));
#line 8061 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: intro1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRaccess__opt ();
	    ZR669 (&ZIa, &ZIb, &ZIc, &ZId, &ZIe);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_exp (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	PTR_TDF ZIb;
	int ZIc;
	unsigned_long ZId;
	int ZIe;

	/* BEGINNING OF ACTION: exphold1_dec */
	{
#line 782 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIc) = (current_TDF->first == current_TDF->last &&
	      current_TDF->first->usage == 0 &&
	      current_TDF->first->offst == 0);
    (ZId) = cLINE;
    (ZIe) = bind;
    if (!(ZIc) || line_no_tok != -1) { SET_TDF((ZIb), &(ZIa)); }
#line 8113 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: exphold1_dec */
	ZRexp__body ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: exphold2 */
	{
#line 791 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    if (!(ZIc) || line_no_tok != -1) {
	SET((ZIb));
	RESET_TDF((ZIb));
	if (line_no_tok != -1) {
	    o_exp_apply_token(
		o_make_tok(out_tdfint32(UL(cname_to_lname(line_no_tok,tok_ent)))),
		{ append_TDF(&(ZIa),1);
		  o_make_sourcemark(FILENAME(),
			o_make_nat(out_tdfint32((ZId))),
			o_make_nat(out_tdfint32(UL((ZIe)))));
			o_make_sourcemark(FILENAME(),
			    o_make_nat(out_tdfint32(cLINE)),
			    o_make_nat(out_tdfint32(UL(bind))));
		});
	 } else append_TDF(&(ZIa),1);
    }
#line 8141 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: exphold2 */
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 8153 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRtag__def (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_common__term:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_Tagdec ZId;
	    PTR_char ZIe;
	    int ZIf;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tag_def1_dec */
	    {
#line 2074 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIa) uninitialised */
    (ZIe) =lex_v.val.name;
    (ZId) = find_tag((ZIe));
    SELECT_UNIT(tagdef_unit);
    if((ZId)!= (Tagdec*)0) {
	if ((ZId)->isdeffed && !(ZId)->iscommon) MSG_tag_defined_twice((ZIe));
	if (!(ZId)->isvar) MSG_tag_declared_non_variable((ZIe));
	(ZIf) = 1;
    } else {
	(ZId) = xalloc(sizeof(*(ZId)));
	(ZId)->hassh = 0; (ZId)->isvar=1; (ZId)->iskept=0; (ZId)->iscommon = 0;
	(ZId)->isused=0;
	NEW_IDNAME((ZId)->idname, (ZIe), tag_ent);
	(ZIf)=0;
    }
    SET_TDF((ZIc), &(ZIb));
#line 8193 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRsignature__opt ();
	    ZR678 (&ZIa, &ZIb, &ZIc, &ZId, &ZIe, &ZIf);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_let:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_Tagdec ZId;
	    PTR_char ZIe;
	    int ZIf;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tag_def7_dec */
	    {
#line 2138 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIa) uninitialised */
    (ZIe) =lex_v.val.name;
    (ZId) = find_tag((ZIe));
    SELECT_UNIT(tagdef_unit);
    if((ZId)!= (Tagdec*)0) {
	if ((ZId)->isdeffed && !(ZId)->iscommon) MSG_tag_defined_twice((ZIe));
	if ((ZId)->isvar) MSG_tag_declared_as_variable((ZIe));
	(ZIf) = 1;
    } else {
	(ZId) = xalloc(sizeof(*(ZId)));
	(ZId)->hassh = 0; (ZId)->isvar=0; (ZId)->iskept=0; (ZId)->iscommon = 0;
	(ZId)->isused = 0;
	NEW_IDNAME((ZId)->idname, (ZIe), tag_ent);
	(ZIf) = 0;
    }
    SET_TDF((ZIc), &(ZIb));
#line 8241 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def7_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRsignature__opt ();
	    ZR679 (&ZIa, &ZIb, &ZIc, &ZId, &ZIe, &ZIf);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_string__term:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_Tagdec ZId;
	    PTR_char ZIe;
	    int ZIf;
	    TDF ZIg;
	    PTR_char ZIh;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tag_def1_dec */
	    {
#line 2074 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIa) uninitialised */
    (ZIe) =lex_v.val.name;
    (ZId) = find_tag((ZIe));
    SELECT_UNIT(tagdef_unit);
    if((ZId)!= (Tagdec*)0) {
	if ((ZId)->isdeffed && !(ZId)->iscommon) MSG_tag_defined_twice((ZIe));
	if (!(ZId)->isvar) MSG_tag_declared_non_variable((ZIe));
	(ZIf) = 1;
    } else {
	(ZId) = xalloc(sizeof(*(ZId)));
	(ZId)->hassh = 0; (ZId)->isvar=1; (ZId)->iskept=0; (ZId)->iscommon = 0;
	(ZId)->isused=0;
	NEW_IDNAME((ZId)->idname, (ZIe), tag_ent);
	(ZIf)=0;
    }
    SET_TDF((ZIc), &(ZIb));
#line 8291 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRsignature__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tgdef10_dec */
	    {
#line 2238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIg));
#line 8312 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tgdef10_dec */
	    ZRvariety__opt ();
	    switch (CURRENT_TERMINAL) {
	      case lex_equals:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tgdef11_dec */
	    {
#line 2243 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIh) = lex_v.val.name;
    if ((ZId)->hassh) MSG_two_declaration_shapes((ZIe));
    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIa));
    o_make_nof_int(append_TDF(&(ZIg), 0),
	o_make_string(out_tdfstring_bytes((ZIh), 8, UI(strlen((ZIh))+1))));
#line 8336 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tgdef11_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_qstring:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tag_def12 */
	    {
#line 2057 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_make_var_tagdef(out_tdfint32(UL(local_name(&(ZId)->idname.name, tag_ent))),
	{}, {}, append_TDF(&(ZIa), 1));
    INC_LIST;
    SELECT_UNIT(tagdec_unit);
    if (!(ZIf)) {
	o_make_var_tagdec(out_tdfint32(UL(non_local(&(ZId)->idname.name,tag_ent))),
	    {}, {},
	    o_nof(o_make_nat(out_tdfint32(UL(strlen((ZIh))+1))),
		o_integer(append_TDF(&(ZIg), 0))));
       INC_LIST;
    }
    (ZId)->isdeffed=1;
    if (!(ZIf)) { (ZId)->next = tagdecs; tagdecs = (ZId); }
#line 8364 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def12 */
	}
	break;
      case lex_var:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_Tagdec ZId;
	    PTR_char ZIe;
	    int ZIf;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tag_def1_dec */
	    {
#line 2074 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIa) uninitialised */
    (ZIe) =lex_v.val.name;
    (ZId) = find_tag((ZIe));
    SELECT_UNIT(tagdef_unit);
    if((ZId)!= (Tagdec*)0) {
	if ((ZId)->isdeffed && !(ZId)->iscommon) MSG_tag_defined_twice((ZIe));
	if (!(ZId)->isvar) MSG_tag_declared_non_variable((ZIe));
	(ZIf) = 1;
    } else {
	(ZId) = xalloc(sizeof(*(ZId)));
	(ZId)->hassh = 0; (ZId)->isvar=1; (ZId)->iskept=0; (ZId)->iscommon = 0;
	(ZId)->isused=0;
	NEW_IDNAME((ZId)->idname, (ZIe), tag_ent);
	(ZIf)=0;
    }
    SET_TDF((ZIc), &(ZIb));
#line 8399 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tag_def1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRsignature__opt ();
	    ZR677 (&ZIa, &ZIb, &ZIc, &ZId, &ZIe, &ZIf);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRotagexp__list__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_arithop: case lex_case__term: case lex_character:
      case lex_cons: case lex_exp__cons: case lex_exp__sort:
      case lex_exp__tok: case lex_float__den: case lex_float__query:
      case lex_hash: case lex_ident: case lex_int__den:
      case lex_lab: case lex_let: case lex_line__term:
      case lex_minus__term: case lex_ocurl: case lex_offset__query:
      case lex_ord: case lex_osq: case lex_proc:
      case lex_proc__query: case lex_ptr__query: case lex_qstring:
      case lex_query: case lex_rep: case lex_signed__nat__cons:
      case lex_signed__nat__sort: case lex_signed__nat__tok: case lex_size__term:
      case lex_star: case lex_string__cons: case lex_string__sort:
      case lex_string__tok: case lex_tag__cons: case lex_tag__sort:
      case lex_tag__tok: case lex_var:
	{
	    ZRotagexp__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: otagel_opt1 */
	    {
#line 1644 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no = 0;
#line 8460 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: otagel_opt1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRtok__formal__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	PTR_Tokdec ZIa;

	/* BEGINNING OF ACTION: tok_fml1_dec */
	{
#line 2383 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n = lex_v.val.name;
    (ZIa) = find_tok(n);
    if ((ZIa)!=(Tokdec*)0) MSG_token_parameter_name_unique(n);
    (ZIa) = xalloc(sizeof(*(ZIa))); NEW_IDNAME((ZIa)->idname, n, tok_ent);
    (ZIa)->isdeffed = 1; (ZIa)->isused = 0; (ZIa)->iskept=0;
    (ZIa)->next = (Tokdec*)0;
#line 8493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tok_fml1_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_ident:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_colon:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRfull__sortname ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: tok_fml2 */
	{
#line 2392 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa)->sort.ressort = g_sname;
    (ZIa)->sort.pars = (Tokpar*)0;  /* no pars in formal pars */
    g_tokformals = (ZIa);
#line 8522 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tok_fml2 */
	ZR629 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRuntidy__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_check__stack:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: untidy4 */
	    {
#line 2421 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_unt = 2;
#line 8549 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: untidy4 */
	}
	break;
      case lex_untidy:
	{
	    ADVANCE_LEXER;
	    ZR657 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: untidy1 */
	    {
#line 2409 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_unt = 0;
#line 8571 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: untidy1 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRcaller__var__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_dotdotdot:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: crvaropt2 */
	    {
#line 504 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_cr_v = 1;
#line 8597 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: crvaropt2 */
	}
	break;
      default:
	{
	    /* BEGINNING OF ACTION: crvaropt1 */
	    {
#line 500 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    g_cr_v = 0;
#line 8609 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: crvaropt1 */
	}
	break;
      case 130:
	return;
    }
}

static void
ZRproc__def__body (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_general:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    TDF ZId;
	    PTR_TDF ZIe;
	    int ZIf;
	    int ZIg;
	    int ZIh;
	    PTR_Tagdec ZIi;
	    PTR_Labdec ZIj;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gproc1_dec */
	    {
#line 1211 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc), (ZId) uninitialised */
    /* (ZIf), (ZIg) (ZIh) uninitialised */
    (ZIi) = localdecs;
    (ZIj) = labdecs;
    localdecs = (Tagdec*)0;
    labdecs = (Labdec *)0;
    SET_TDF((ZIe), &(ZIa));
#line 8648 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gproc1_dec */
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gproc2 */
	    {
#line 1221 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZIb));
#line 8662 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gproc2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRtagshacc__list__opt ();
	    ZRcaller__var__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gproc3 */
	    {
#line 1226 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZIc));
    (ZIf) = g_cr_v;
#line 8685 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gproc3 */
	    switch (CURRENT_TERMINAL) {
	      case lex_semi:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRtagshacc__list__opt ();
	    ZRcallee__var__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gproc4 */
	    {
#line 1232 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZId));
    (ZIg) = g_ce_v;
#line 8708 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gproc4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRuntidy__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gproc5 */
	    {
#line 1238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIh) = g_unt;
#line 8728 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gproc5 */
	    ZRclosed__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gproc6 */
	    {
#line 1242 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    o_make_general_proc(append_TDF(&(ZIa),1),
			do_procprops((ZIf)+2*(ZIg)+4*(ZIh)),
			{ append_TDF(&(ZIb),1);
			  current_TDF->no = (ZIb).no;},
			{ append_TDF(&(ZIc),1);
			  current_TDF->no = (ZIc).no;},
			append_TDF(&(ZId),1))
    while (labdecs != (Labdec *)0 ) {
	if (!labdecs->declared) {
	    MSG_label_not_declared(labdecs->idname.id);
	}
	labdecs = labdecs->next;
    }
    localdecs = (ZIi);
    labdecs = (ZIj);
#line 8756 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gproc6 */
	}
	break;
      case lex_char__term: case lex_double__term: case lex_float__term:
      case lex_int__term: case lex_long__term: case lex_ptr:
      case lex_shape__cons: case lex_shape__sort: case lex_shape__tok:
      case lex_short__term: case lex_signed__term: case lex_unsigned__term:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    TDF ZId;
	    PTR_TDF ZIe;
	    PTR_Tagdec ZIf;
	    PTR_Labdec ZIg;

	    /* BEGINNING OF ACTION: expproc1_dec */
	    {
#line 851 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIa), (ZIb), (ZIc) uninitialised */
    (ZIf) = localdecs;
    (ZIg) = labdecs;
    localdecs = (Tagdec*)0;
    labdecs = (Labdec *)0;
    SET_TDF((ZIe), &(ZId));
#line 8784 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expproc1_dec */
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expproc2 */
	    {
#line 860 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZIa))
#line 8798 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expproc2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRtagshacc__list__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expproc3 */
	    {
#line 865 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZIb));
#line 8819 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expproc3 */
	    ZRvarintro__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expproc4 */
	    {
#line 870 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZIc));
#line 8833 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expproc4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRclosed__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expproc5 */
	    {
#line 875 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    o_make_proc(append_TDF(&(ZId),1),
		{ append_TDF(&(ZIa),1); current_TDF->no = (ZIa).no;},
		if ((ZIb).no !=0) {OPTION(append_TDF(&(ZIb),1)); },
		append_TDF(&(ZIc),1);)
    while (labdecs != (Labdec *)0 ) {
	if (!labdecs->declared) {
	    MSG_label_not_declared(labdecs->idname.id);
	}
	labdecs = labdecs->next;
    }
    localdecs = (ZIf);
    labdecs = (ZIg);
#line 8865 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expproc5 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRlabelled__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	PTR_TDF ZIb;

	switch (CURRENT_TERMINAL) {
	  case lex_colon:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: llist1_dec */
	{
#line 1506 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = current_TDF;
    INIT_TDF(&(ZIa));
    current_TDF = &g_lablist;
#line 8905 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: llist1_dec */
	read_label ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: llist2 */
	{
#line 1512 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    if (g_labdec != (Labdec*)0) {
	if (g_labdec->declared) {
	    MSG_label_set_twice(g_labdec->idname.id);
	}
	g_labdec->declared = 1;
    }
    current_TDF = &(ZIa);
#line 8924 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: llist2 */
	switch (CURRENT_TERMINAL) {
	  case lex_colon:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRexp__sequence ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: llist5 */
	{
#line 1530 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    append_TDF(&(ZIa), 1);
#line 8945 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: llist5 */
	ZR668 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRoffset__exp__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	read_exp ();
	switch (CURRENT_TERMINAL) {
	  case lex_colon:
	    break;
	  case 130:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	read_exp ();
	ZR663 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRbitfield__sign (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_bool__cons: case lex_bool__sort: case lex_bool__tok:
	{
	    read_bool ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      default:
	{
	    ZRvariety__sign ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: bvariety2 */
	    {
#line 409 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    if (issigned) { o_true; }
    else { o_false; }
#line 9017 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: bvariety2 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRtok__dec (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	PTR_TDF ZIb;
	PTR_Tokdec ZIc;

	switch (CURRENT_TERMINAL) {
	  case lex_tokdec:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: tok_dec1_dec */
	{
#line 2277 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char *n = lex_v.val.name;
    (ZIc) = find_tok(n);
    if ((ZIc) != (Tokdec *)0) MSG_token_declared_twice(n);
    SELECT_UNIT(tokdec_unit);
    (ZIc) = xalloc(sizeof(*(ZIc)));
    NEW_IDNAME((ZIc)->idname, n, tok_ent);
    SET_TDF((ZIb), &(ZIa));
#line 9060 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tok_dec1_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_ident:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRsignature__opt ();
	switch (CURRENT_TERMINAL) {
	  case lex_colon:
	    break;
	  case 130:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_osq:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRsortname__list__opt ();
	switch (CURRENT_TERMINAL) {
	  case lex_csq:
	    break;
	  case 130:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRfull__sortname ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: tok_dec2 */
	{
#line 2287 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    (ZIc)->sort.ressort = g_sname;
    (ZIc)->sort.pars = g_tokpars;
    (ZIc)->next = tokdecs;
    (ZIc)->isdeffed = 0; (ZIc)->isused = 0; (ZIc)->iskept=0; (ZIc)->isparam=0;
    tokdecs = (ZIc);
    o_make_tokdec(out_tdfint32(LOCNAME((ZIc)->idname)),
	if ((ZIa).no != 0) { OPTION(append_TDF(&(ZIa), 1)); },
	out_toksort(&(ZIc)->sort));
    INC_LIST;
#line 9118 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tok_dec2 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRexp__comma__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
  ZL2_exp__comma__list:;
    {
	read_exp ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: expl2 */
	{
#line 814 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no++;
#line 9146 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: expl2 */
	/* BEGINNING OF INLINE: 624 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: exp_comma_list */
		    goto ZL2_exp__comma__list;
		    /* END OF INLINE: exp_comma_list */
		}
		/*UNREACHED*/
	      default:
		break;
	    }
	}
	/* END OF INLINE: 624 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRexp__body (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	ZRunary__exp ();
	ZR632 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRtok__def (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	TDF ZIb;
	PTR_TDF ZIc;
	PTR_Tokdec ZId;
	int ZIe;

	/* BEGINNING OF ACTION: tok_def0 */
	{
#line 2300 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    search_for_toks = 0;
#line 9210 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tok_def0 */
	switch (CURRENT_TERMINAL) {
	  case lex_tokdef:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: tok_def1_dec */
	{
#line 2304 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char *n = lex_v.val.name;
    (ZId) = find_tok(n);
    (ZIa) = g_tok_defn;
    SELECT_UNIT(tokdef_unit);
    search_for_toks = 1;
    if ((ZId) != (Tokdec *)0) {
	if ((ZId)->isdeffed) MSG_token_defined_twice(n);
	(ZIe) = 1;
    } else {
	(ZId) = xalloc(sizeof(*(ZId)));
	NEW_IDNAME((ZId)->idname, n, tok_ent);
	(ZIe) = 0;
    }
    SET_TDF((ZIc), &(ZIb));
#line 9238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tok_def1_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_ident:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_equals:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRtok__def__body ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: tok_def2 */
	{
#line 2321 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    (ZId)->sort = g_toksort;
    (ZId)->isdeffed =1; (ZId)->iskept=0; (ZId)->isparam = 0;
    o_make_tokdef(out_tdfint32(UL(local_name(&(ZId)->idname.name,tok_ent))),
	if ((ZIb).no != 0) { OPTION(append_TDF(&(ZIb), 1)); },
	append_TDF(&g_tok_defn, 1));
    INC_LIST;
    if (!(ZIe)) { (ZId)->next = tokdecs; tokdecs = (ZId); (ZId)->isused=0; }
    g_tok_defn = (ZIa);
#line 9273 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tok_def2 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRunary__exp (void)
{
  ZL2_unary__exp:;
    switch (CURRENT_TERMINAL) {
      case lex_case__term:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: cseexp1_dec */
	    {
#line 508 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    SET_TDF((ZIc), &(ZIa));
#line 9301 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: cseexp1_dec */
	    read_exp ();
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: cseexp2 */
	    {
#line 513 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 9321 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: cseexp2 */
	    ZRrange__label__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: cseexp3 */
	    {
#line 518 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_case(o_false, append_TDF(&(ZIa),1),
	   { append_TDF(&(ZIb),1); current_TDF->no = (ZIb).no; });
#line 9336 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: cseexp3 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_cons:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;

	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_osq:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: expcons1_dec */
	    {
#line 754 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    SET_TDF((ZIc), &(ZIa));
#line 9368 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcons1_dec */
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expcons2 */
	    {
#line 759 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 9382 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcons2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_csq:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRoffset__exp__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expcons3 */
	    {
#line 764 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_make_compound(append_TDF(&(ZIa),1),
		    { append_TDF(&(ZIb),1); current_TDF->no = (ZIb).no; });
#line 9411 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expcons3 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_exp__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 639 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: unary_exp */
			goto ZL2_unary__exp;
			/* END OF INLINE: unary_exp */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 9451 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 9472 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 9493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: exp1 */
			{
#line 597 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_exp_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
	       append_TDF(&(ZIc),1));
#line 9515 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: exp1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 639 */
	}
	break;
      case lex_float__query:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    int ZIe;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: query_type2 */
	    {
#line 1700 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    query_t = lex_float__query;
#line 9548 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: query_type2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: exptst1_dec */
	    {
#line 967 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    (ZIe) = query_t;
    SET_TDF((ZId),&(ZIa));
#line 9565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst1_dec */
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst2 */
	    {
#line 973 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId),&(ZIb));
#line 9579 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst2 */
	    read_ntest ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst3 */
	    {
#line 978 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc))
#line 9593 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst3 */
	    read_exp ();
	    ZRlabdest__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst4 */
	    {
#line 983 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    switch((ZIe)) {
	case lex_query:
	    o_integer_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_float__query:
	    o_floating_test({}, o_impossible, append_TDF(&(ZIb),1),
	   		append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_ptr__query:
	    o_pointer_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_proc__query:
	    o_proc_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	case lex_offset__query:
	    o_offset_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	default: MSG_dont_understand_test();
    }
#line 9633 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_hash:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: expfail1 */
	    {
#line 778 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_fail_installer(read_string());
#line 9653 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expfail1 */
	}
	break;
      case lex_lab:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    PTR_Labdec ZIe;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: explab1_dec */
	    {
#line 818 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIe) = labdecs;
    (ZIc) = g_lablist;
    INIT_TDF(&g_lablist);
    SET_TDF((ZId), &(ZIa));
#line 9676 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: explab1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ocurl:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRexp__sequence ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: explab2 */
	    {
#line 826 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 9697 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: explab2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_bar:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRlabelled__list ();
	    switch (CURRENT_TERMINAL) {
	      case lex_ccurl:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: explab3 */
	    {
#line 831 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_labelled( { append_TDF(&g_lablist,1);
		  current_TDF->no = g_lablist.no;},
		  append_TDF(&(ZIa), 1),
		  { append_TDF(&(ZIb),1);
		    current_TDF->no = g_lablist.no;});
    tidy_labels((ZIe));
    g_lablist = (ZIc);
#line 9730 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: explab3 */
	}
	break;
      case lex_minus__term:
	{
	    ADVANCE_LEXER;
	    ZR645 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_ocurl:
	{
	    ADVANCE_LEXER;
	    ZRexp__sequence ();
	    switch (CURRENT_TERMINAL) {
	      case lex_ccurl:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_offset__query:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    int ZIe;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: query_type5 */
	    {
#line 1712 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    query_t = lex_offset__query;
#line 9775 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: query_type5 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: exptst1_dec */
	    {
#line 967 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    (ZIe) = query_t;
    SET_TDF((ZId),&(ZIa));
#line 9792 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst1_dec */
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst2 */
	    {
#line 973 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId),&(ZIb));
#line 9806 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst2 */
	    read_ntest ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst3 */
	    {
#line 978 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc))
#line 9820 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst3 */
	    read_exp ();
	    ZRlabdest__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst4 */
	    {
#line 983 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    switch((ZIe)) {
	case lex_query:
	    o_integer_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_float__query:
	    o_floating_test({}, o_impossible, append_TDF(&(ZIb),1),
	   		append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_ptr__query:
	    o_pointer_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_proc__query:
	    o_proc_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	case lex_offset__query:
	    o_offset_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	default: MSG_dont_understand_test();
    }
#line 9860 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_ord:
	{
	    ADVANCE_LEXER;
	    read_exp ();
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZR646 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_osq:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: chvar1_dec */
	    {
#line 485 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    SET_TDF((ZIc), &(ZIa));
#line 9906 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: chvar1_dec */
	    read_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: chvar2 */
	    {
#line 490 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 9920 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: chvar2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_csq:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRunary__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: chvar3 */
	    {
#line 495 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_change_variety(o_wrap, append_TDF(&(ZIa),1), append_TDF(&(ZIb),1));
#line 9941 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: chvar3 */
	}
	break;
      case lex_proc:
	{
	    ADVANCE_LEXER;
	    ZRproc__def__body ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_proc__query:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    int ZIe;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: query_type4 */
	    {
#line 1708 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    query_t = lex_proc__query;
#line 9970 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: query_type4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: exptst1_dec */
	    {
#line 967 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    (ZIe) = query_t;
    SET_TDF((ZId),&(ZIa));
#line 9987 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst1_dec */
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst2 */
	    {
#line 973 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId),&(ZIb));
#line 10001 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst2 */
	    read_ntest ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst3 */
	    {
#line 978 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc))
#line 10015 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst3 */
	    read_exp ();
	    ZRlabdest__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst4 */
	    {
#line 983 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    switch((ZIe)) {
	case lex_query:
	    o_integer_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_float__query:
	    o_floating_test({}, o_impossible, append_TDF(&(ZIb),1),
	   		append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_ptr__query:
	    o_pointer_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_proc__query:
	    o_proc_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	case lex_offset__query:
	    o_offset_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	default: MSG_dont_understand_test();
    }
#line 10055 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_ptr__query:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    int ZIe;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: query_type3 */
	    {
#line 1704 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    query_t = lex_ptr__query;
#line 10081 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: query_type3 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: exptst1_dec */
	    {
#line 967 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    (ZIe) = query_t;
    SET_TDF((ZId),&(ZIa));
#line 10098 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst1_dec */
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst2 */
	    {
#line 973 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId),&(ZIb));
#line 10112 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst2 */
	    read_ntest ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst3 */
	    {
#line 978 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc))
#line 10126 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst3 */
	    read_exp ();
	    ZRlabdest__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptst4 */
	    {
#line 983 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    switch((ZIe)) {
	case lex_query:
	    o_integer_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_float__query:
	    o_floating_test({}, o_impossible, append_TDF(&(ZIb),1),
	   		append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_ptr__query:
	    o_pointer_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1));
	    break;
	case lex_proc__query:
	    o_proc_test( {}, append_TDF(&(ZIb),1),append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	case lex_offset__query:
	    o_offset_test({}, append_TDF(&(ZIb),1), append_TDF(&optlab,1),
	   		append_TDF(&(ZIa), 1), append_TDF(&(ZIc),1)
	   		);
	    break;
	default: MSG_dont_understand_test();
    }
#line 10166 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptst4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_query:
	{
	    ADVANCE_LEXER;
	    ZR648 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_rep:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;
	    PTR_Labdec ZIe;
	    int ZIf;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: exprep1_dec */
	    {
#line 891 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc), (ZIf) uninitialised */
    (ZIe) = labdecs;
    SET_TDF((ZId), &(ZIa));
#line 10205 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exprep1_dec */
	    ZRrepeat__starter__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exprep2 */
	    {
#line 897 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIf) = defaultlab;
    defaultlab = -1;
#line 10219 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exprep2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ocurl:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRlabset__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exprep3 */
	    {
#line 902 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIc) = optlab;
    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 10241 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exprep3 */
	    ZRexp__sequence ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exprep4 */
	    {
#line 908 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_repeat(append_TDF(&(ZIc),1), append_TDF(&(ZIa),1), append_TDF(&(ZIb),1));
    tidy_labels((ZIe));
    defaultlab = (ZIf);
#line 10257 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exprep4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ccurl:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_signed__nat__sort:
	{
	    TDF ZIa;
	    TDF ZIb;

	    ADVANCE_LEXER;
	    ZR633 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: mint1_dec */
	    {
#line 1559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 10287 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: mint2 */
	    {
#line 1565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = *current_TDF;
    INIT_TDF(current_TDF);
    o_make_int(append_TDF(&(ZIb),1), append_TDF(&(ZIa),1));
#line 10309 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_size__term:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: szexp1_dec */
	    {
#line 1983 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 10339 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: szexp1_dec */
	    read_shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: sizeexp2 */
	    {
#line 1900 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_offset_pad(o_alignment(append_TDF(&(ZIa), 0)),
		 o_shape_offset(append_TDF(&(ZIa), 1)));
#line 10354 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: sizeexp2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_star:
	{
	    ADVANCE_LEXER;
	    ZR647 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_character: case lex_int__den:
	{
	    TDF ZIa;
	    TDF ZIb;

	    ZRinteger ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: signed_nat2 */
	    {
#line 1861 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_signed_nat(out_tdfbool(0), out_tdfint32(intvalue));
#line 10391 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat2 */
	    /* BEGINNING OF ACTION: mint1_dec */
	    {
#line 1559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 10401 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: mint2 */
	    {
#line 1565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = *current_TDF;
    INIT_TDF(current_TDF);
    o_make_int(append_TDF(&(ZIb),1), append_TDF(&(ZIa),1));
#line 10423 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_ident: case lex_tag__cons: case lex_tag__sort:
      case lex_tag__tok:
	{
	    read_tag ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: exptag1 */
	    {
#line 960 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    TDF tg;
    tg = *current_TDF;
    INIT_TDF(current_TDF);
    o_obtain_tag(append_TDF(&tg,1));
#line 10451 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exptag1 */
	    ZR646 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_let: case lex_var:
	{
	    PTR_Tagdec ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    TDF ZId;
	    PTR_TDF ZIe;
	    Name ZIf;
	    int ZIg;

	    /* BEGINNING OF ACTION: expdec1_dec */
	    {
#line 770 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = localdecs;
#line 10476 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expdec1_dec */
	    ZRtag__intro ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: ibody1_dec */
	    {
#line 1261 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIg) = localdecs->isvar;
    (ZIb) = intro_acc;
    (ZIc) = intro_init;
    (ZIf) = localdecs->idname.name;
    SET_TDF((ZIe), &(ZId));
#line 10493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: ibody1_dec */
	    ZRclosed__exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: introbody2 */
	    {
#line 1334 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    if ((ZIg)) {
	o_variable( if((ZIb).no!=0) { OPTION(append_TDF(&(ZIb),1)); },
		    make_tag(&(ZIf)), append_TDF(&(ZIc),1),
		    append_TDF(&(ZId),1));
    } else {
	o_identify( if((ZIb).no!=0) { OPTION(append_TDF(&(ZIb),1)); },
		    make_tag(&(ZIf)), append_TDF(&(ZIc),1),
		    append_TDF(&(ZId),1));
    }
#line 10515 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: introbody2 */
	    /* BEGINNING OF ACTION: expdec2 */
	    {
#line 774 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    localdecs = (ZIa);
#line 10523 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expdec2 */
	}
	break;
      case lex_qstring: case lex_string__cons: case lex_string__sort:
      case lex_string__tok:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;

	    /* BEGINNING OF ACTION: expstr1_dec */
	    {
#line 945 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    SET_TDF((ZIc), &(ZIa));
#line 10541 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expstr1_dec */
	    read_string ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: expstr2 */
	    {
#line 950 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 10555 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expstr2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_variety ();
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: expstring2 */
	    {
#line 955 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_make_nof_int(append_TDF(&(ZIb), 1), append_TDF(&(ZIa), 1););
#line 10582 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: expstring2 */
	}
	break;
      case lex_float__den:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    TDF ZId;
	    PTR_TDF ZIe;
	    int ZIf;
	    unsigned_long ZIg;

	    /* BEGINNING OF ACTION: fden1_dec */
	    {
#line 1013 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIc), (ZId) uninitialised */
    (ZIf) = 0;
    (ZIg) = UL(radix);
    SET_TDF((ZIe), &(ZIa));
    out_tdfstring_bytes(fformat(lex_v.val.name,lnum), 8, UI(lnum));
    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZIb));
#line 10608 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fden1_dec */
	    ADVANCE_LEXER;
	    ZRexponent__opt ();
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: fden3 */
	    {
#line 1033 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZIc));
#line 10629 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fden3 */
	    read_floating_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: fden4 */
	    {
#line 1038 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    SET_TDF((ZIe), &(ZId));
#line 10643 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fden4 */
	    ZRrounding__mode__opt ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: fden5 */
	    {
#line 1043 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIe));
    o_make_floating(append_TDF(&(ZIc),1),
		    append_TDF(&(ZId),1),
		    if ((ZIf)) { o_true; } else { o_false; },
		    o_make_string(append_TDF(&(ZIa), 1)),
		    o_make_nat(out_tdfint32((ZIg))),
		    append_TDF(&(ZIb), 1));
#line 10662 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: fden5 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_exp__cons: case lex_signed__nat__cons:
	{
	    int ZI642;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZI642) = lex_v.val.v;
#line 10683 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ZR643 (&ZI642);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_exp__tok: case lex_signed__nat__tok:
	{
	    PTR_Tokdec ZI640;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZI640) = lex_v.val.tokname;
    (ZI640)->isused = 1;
#line 10703 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ZR641 (&ZI640);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_line__term:
	{
	    TDF ZIa;
	    TDF ZIb;

	    /* BEGINNING OF ACTION: signed_nat4 */
	    {
#line 1869 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_signed_nat(out_tdfbool(0), out_tdfint32(cLINE));
#line 10723 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat4 */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: mint1_dec */
	    {
#line 1559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 10734 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: mint2 */
	    {
#line 1565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = *current_TDF;
    INIT_TDF(current_TDF);
    o_make_int(append_TDF(&(ZIb),1), append_TDF(&(ZIa),1));
#line 10756 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_arithop:
	{
	    TDF ZI637;
	    PTR_TDF ZI638;
	    TDF ZIa;
	    TDF ZIb;

	    /* BEGINNING OF ACTION: signed_nat7_dec */
	    {
#line 1882 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZI638), &(ZI637));
    if (strcmp(lex_v.val.name, "+")) MSG_only_plus_or_minus();
#line 10781 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat7_dec */
	    ADVANCE_LEXER;
	    ZRnat__not__int ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: signed_nat8 */
	    {
#line 1887 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZI638));
    o_snat_from_nat(o_false, append_TDF(&(ZI637),1));
#line 10796 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat8 */
	    /* BEGINNING OF ACTION: mint1_dec */
	    {
#line 1559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 10806 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_variety ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: mint2 */
	    {
#line 1565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = *current_TDF;
    INIT_TDF(current_TDF);
    o_make_int(append_TDF(&(ZIb),1), append_TDF(&(ZIa),1));
#line 10828 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: mint2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRtagshacc__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
  ZL2_tagshacc__list:;
    {
	ZRtagshacc ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: tagshacc_l2 */
	{
#line 2221 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no++;
#line 10869 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tagshacc_l2 */
	/* BEGINNING OF INLINE: 623 */
	{
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		{
		    ADVANCE_LEXER;
		    /* BEGINNING OF INLINE: tagshacc_list */
		    goto ZL2_tagshacc__list;
		    /* END OF INLINE: tagshacc_list */
		}
		/*UNREACHED*/
	      default:
		break;
	    }
	}
	/* END OF INLINE: 623 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRshapetok (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_double__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shtokdb */
	    {
#line 1843 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    * g_shtokname = *(tokfordoublesh());
#line 10907 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shtokdb */
	}
	break;
      case lex_float__term:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: shtokflt */
	    {
#line 1847 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    * g_shtokname = *(tokforfloatsh());
#line 10920 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shtokflt */
	}
	break;
      case lex_char__term: case lex_int__term: case lex_long__term:
      case lex_short__term: case lex_signed__term: case lex_unsigned__term:
	{
	    ZRvariety__sign ();
	    ZR675 ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_ptr: case lex_shape__cons: case lex_shape__sort:
      case lex_shape__tok:
	{
	    PTR_TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    int ZId;

	    /* BEGINNING OF ACTION: shtok1_dec */
	    {
#line 1835 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = current_TDF;
    (ZId) = current_Unit;
    select_tokdef_unit();
    * g_shtokname = next_name(tok_ent);
    SET_TDF((ZIc), &(ZIb));
#line 10953 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shtok1_dec */
	    ZRnonst__shape ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: shapetok2 */
	    {
#line 1810 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_make_tokdef(out_tdfint32(UL(g_shtokname->unit_name)), {},
		  o_token_def(o_shape, {}, append_TDF(&(ZIb), 1)));
    INC_LIST;
    current_Unit = (ZId);
    RESET_TDF((ZIa));
#line 10971 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: shapetok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRalignment__list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	read_alignment ();
	ZR622 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_error_treatment (void)
{
  ZL2_error__treatment:;
    switch (CURRENT_TERMINAL) {
      case lex_error__treatment__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 684 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: error_treatment */
			goto ZL2_error__treatment;
			/* END OF INLINE: error_treatment */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 11039 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			ADVANCE_LEXER;
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 11067 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			read_error_treatment ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 11087 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			read_error_treatment ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: errt1 */
			{
#line 577 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_errt_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		append_TDF(&(ZIc),1));
#line 11102 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: errt1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 684 */
	}
	break;
      case lex_osq:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: errt2_dec */
	    {
#line 583 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 11132 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: errt2_dec */
	    read_error_code_list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: errt5 */
	    {
#line 592 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_trap({append_TDF(&(ZIa),1); current_TDF->no = (ZIa).no; });
#line 11146 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: errt5 */
	    switch (CURRENT_TERMINAL) {
	      case lex_csq:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_ident: case lex_label__sort: case lex_label__tok:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    /* BEGINNING OF ACTION: errt2_dec */
	    {
#line 583 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 11168 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: errt2_dec */
	    read_label ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: errt3 */
	    {
#line 587 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_error_jump(append_TDF(&(ZIa),1));
#line 11182 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: errt3 */
	}
	break;
      case lex_error__treatment__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 11196 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 11205 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_error__treatment__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 11220 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 11229 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 11247 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRcallee (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_dynamic:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: callee3_dec */
	    {
#line 458 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb) uninitialised */
    SET_TDF((ZIc), &(ZIa));
#line 11270 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: callee3_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: callee4 */
	    {
#line 463 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    SET_TDF((ZIc), &(ZIb));
#line 11291 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: callee4 */
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: callee5 */
	    {
#line 468 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_make_dynamic_callees(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1));
#line 11312 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: callee5 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case lex_same:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: callee6 */
	    {
#line 473 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_same_callees;
#line 11332 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: callee6 */
	}
	break;
      default:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    /* BEGINNING OF ACTION: callee1_dec */
	    {
#line 449 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 11347 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: callee1_dec */
	    read_exp_list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: callee2 */
	    {
#line 453 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_make_callee_list( { append_TDF(&(ZIa),1); current_TDF->no = (ZIa).no;} );
#line 11361 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: callee2 */
	}
	break;
      case 130:
	return;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_al_tag (void)
{
  ZL2_al__tag:;
    switch (CURRENT_TERMINAL) {
      case lex_al__tag__sort:
	{
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: al_tag */
	    goto ZL2_al__tag;
	    /* END OF INLINE: al_tag */
	}
	/*UNREACHED*/
      case lex_ident:
	{
	    /* BEGINNING OF ACTION: al_tag1 */
	    {
#line 335 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n =lex_v.val.name;
    Al_tagdec * x = find_al_tag(n);
    if (x==(Al_tagdec*)0) {
	x= xalloc(sizeof(*x));
	x->isdeffed =0; x->iskept=0;
	NEW_IDNAME(x->idname, n, al_tag_ent);
	x->next = al_tagdecs;
	al_tagdecs = x;
    }
    x->isused =1;
    make_al_tag(&x->idname.name);
#line 11412 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: al_tag1 */
	    ADVANCE_LEXER;
	}
	break;
      case lex_al__tag__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 11428 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 11437 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 11455 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

void
read_exp_list (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	/* BEGINNING OF ACTION: expl1 */
	{
#line 810 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no=0;
#line 11473 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: expl1 */
	ZR656 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 11490 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZRelement (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_al__tagdef:
	{
	    ZRal__tag__def ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_proc:
	{
	    ZRproc__def ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_struct__term:
	{
	    ZRstruct__def ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_commondec__term: case lex_iddec: case lex_vardec:
	{
	    ZRtag__dec ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_common__term: case lex_let: case lex_string__term:
      case lex_var:
	{
	    ZRtag__def ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_tokdec:
	{
	    ZRtok__dec ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_tokdef:
	{
	    ZRtok__def ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR622 (void)
{
  ZL2_622:;
    switch (CURRENT_TERMINAL) {
      case lex_comma:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    /* BEGINNING OF ACTION: al_list1_dec */
	    {
#line 317 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIb) = current_TDF;
    (ZIa) = *current_TDF;
    INIT_TDF(current_TDF);
#line 11592 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: al_list1_dec */
	    ADVANCE_LEXER;
	    read_alignment ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: al_list2 */
	    {
#line 323 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    TDF second;
    second = *current_TDF;
    INIT_TDF((ZIb));
    RESET_TDF((ZIb));
    o_unite_alignments(append_TDF(&(ZIa),1), append_TDF(&second,1));
#line 11610 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: al_list2 */
	    /* BEGINNING OF INLINE: 622 */
	    goto ZL2_622;
	    /* END OF INLINE: 622 */
	}
	/*UNREACHED*/
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRtok__def__body (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	PTR_Tokdec ZIa;

	/* BEGINNING OF ACTION: tok_dn1_dec */
	{
#line 2333 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = g_tokformals;
#line 11643 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tok_dn1_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_osq:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRtok__formal__list__opt ();
	switch (CURRENT_TERMINAL) {
	  case lex_csq:
	    break;
	  case 130:
	    RESTORE_LEXER;
	    goto ZL1;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	ZRfull__sortname ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: tok_dn2 */
	{
#line 2337 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    Tokdec * old_tokdecs = tokdecs;
    Tokdec * tokformals = g_tokformals;
    TDF * hold = current_TDF;
    Tokpar * tp = (Tokpar*)0;
    Sort sn;
    Tokdec * tfrev = (Tokdec*)0;
    while (g_tokformals != (Tokdec*)0) { /* the wrong way round!! */
	Tokdec * x = xalloc(sizeof(*x));
	*x = *g_tokformals;
	x->next = tfrev;
	tfrev = x;
	g_tokformals = g_tokformals->next;
    }
    sn = g_sname;
    current_TDF = &g_tok_defn;
    INIT_TDF(current_TDF);
    o_token_def( out_sort(&sn),
	{
	    while(tfrev != (Tokdec*)0) {
		Tokdec * x = tfrev->next;
		LIST_ELEM(
		    o_make_tokformals(
			out_sort(&tfrev->sort.ressort),
			out_tdfint32(LOCNAME(tfrev->idname))));
		tfrev->isparam = 1;
		tfrev->next = tokdecs;
		tokdecs = tfrev;
		tfrev = x;
	    }
	},
	analyse_sort(sn.sort));
    g_toksort.ressort = sn;
    while (tokformals != (Tokdec*)0) {
	Tokpar * p = xalloc(sizeof(*p));
	p->par = tokformals->sort.ressort;
	p->next = tp;
	tokformals = tokformals->next;
	tp = p;
    }
    g_toksort.pars = tp;
    RESET_TDF(hold);
    tokdecs = old_tokdecs;
    g_tokformals = (ZIa);
#line 11716 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: tok_dn2 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRinteger (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_int__den:
	{
	    /* BEGINNING OF ACTION: integer1 */
	    {
#line 1269 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    intvalue = UL(stoi(lex_v.val.name, lnum));
#line 11737 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: integer1 */
	    ADVANCE_LEXER;
	}
	break;
      case lex_character:
	{
	    /* BEGINNING OF ACTION: integer2 */
	    {
#line 1273 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    intvalue = UL(lex_v.val.v);
#line 11750 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: integer2 */
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_transfer_mode (void)
{
  ZL2_transfer__mode:;
    switch (CURRENT_TERMINAL) {
      case lex_transfer__mode__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 685 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: transfer_mode */
			goto ZL2_transfer__mode;
			/* END OF INLINE: transfer_mode */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 11800 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 11821 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_transfer_mode ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 11842 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_transfer_mode ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: tmode1 */
			{
#line 2252 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_transfer_mode_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
			 append_TDF(&(ZIc),1));
#line 11864 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: tmode1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 685 */
	}
	break;
      case lex_transfer__mode__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 11892 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 11901 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_transfer__mode__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 11916 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 11925 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 11943 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

void
read_rounding_mode (void)
{
  ZL2_rounding__mode:;
    switch (CURRENT_TERMINAL) {
      case lex_rounding__mode__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 659 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: rounding_mode */
			goto ZL2_rounding__mode;
			/* END OF INLINE: rounding_mode */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 11982 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 12009 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			read_rounding_mode ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 12029 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			read_rounding_mode ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: rmode1 */
			{
#line 1759 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_rounding_mode_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
			 append_TDF(&(ZIc),1));
#line 12044 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: rmode1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 659 */
	}
	break;
      case lex_rounding__mode__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 12072 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 12081 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_rounding__mode__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 12096 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 12105 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 12123 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZR625 (void)
{
  ZL2_625:;
    switch (CURRENT_TERMINAL) {
      case lex_comma:
	{
	    ADVANCE_LEXER;
	    read_error_code ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: errc2 */
	    {
#line 573 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no ++;
#line 12147 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: errc2 */
	    /* BEGINNING OF INLINE: 625 */
	    goto ZL2_625;
	    /* END OF INLINE: 625 */
	}
	/*UNREACHED*/
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR626 (void)
{
  ZL2_626:;
    switch (CURRENT_TERMINAL) {
      case lex_comma:
	{
	    /* BEGINNING OF ACTION: otagel2 */
	    {
#line 1640 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    current_TDF->no++;
#line 12178 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: otagel2 */
	    ADVANCE_LEXER;
	    ZRotagexp ();
	    /* BEGINNING OF INLINE: 626 */
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    } else {
		goto ZL2_626;
	    }
	    /* END OF INLINE: 626 */
	}
	/*UNREACHED*/
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_access (void)
{
  ZL2_access:;
    switch (CURRENT_TERMINAL) {
      case lex_access__sort:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 665 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_colon:
		    {
			ADVANCE_LEXER;
			/* BEGINNING OF INLINE: access */
			goto ZL2_access;
			/* END OF INLINE: access */
		    }
		    /*UNREACHED*/
		  case lex_query:
		    {
			TDF ZIa;
			TDF ZIb;
			TDF ZIc;
			PTR_TDF ZId;

			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond1_dec */
			{
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 12237 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond1_dec */
			switch (CURRENT_TERMINAL) {
			  case lex_ord:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: gencond2 */
			{
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 12258 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond2 */
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			read_access ();
			switch (CURRENT_TERMINAL) {
			  case lex_comma:
			    break;
			  case 130:
			    RESTORE_LEXER;
			    goto ZL1;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
			/* BEGINNING OF ACTION: gencond3 */
			{
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 12285 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: gencond3 */
			read_access ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: access1 */
			{
#line 307 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_access_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		  append_TDF(&(ZIc),1));
#line 12300 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: access1 */
			switch (CURRENT_TERMINAL) {
			  case lex_crd:
			    break;
			  default:
			    goto ZL1;
			}
			ADVANCE_LEXER;
		    }
		    break;
		  default:
		    goto ZL1;
		}
	    }
	    /* END OF INLINE: 665 */
	}
	break;
      case lex_access__cons:
	{
	    int ZIa;

	    /* BEGINNING OF ACTION: gencons1_dec */
	    {
#line 1179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.v;
#line 12328 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: access2 */
	    {
#line 313 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    if (strcmp(constructs[(ZIa)].name, "visible")==0) { g_has_vis = 1; }
#line 12337 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: access2 */
	    /* BEGINNING OF ACTION: gencons2 */
	    {
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (constructs[(ZIa)].f)();
#line 12345 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencons2 */
	}
	break;
      case lex_access__tok:
	{
	    PTR_Tokdec ZIa;

	    /* BEGINNING OF ACTION: gentok1_dec */
	    {
#line 1202 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa) = lex_v.val.tokname;
    (ZIa)->isused = 1;
#line 12360 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok1_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gentok2 */
	    {
#line 1207 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    expand_tok((ZIa), &(ZIa)->sort);
#line 12369 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gentok2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 12387 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZR627 (void)
{
  ZL2_627:;
    switch (CURRENT_TERMINAL) {
      case lex_comma:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;

	    /* BEGINNING OF ACTION: acc_l2_dec */
	    {
#line 293 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIc) = current_TDF;
    (ZIa) = *current_TDF;
    INIT_TDF(&(ZIb));
    RESET_TDF(&(ZIb));
#line 12412 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: acc_l2_dec */
	    ADVANCE_LEXER;
	    read_access ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: acc_l3 */
	    {
#line 300 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    INIT_TDF((ZIc));
    RESET_TDF((ZIc));
    o_add_accesses(append_TDF(&(ZIa),1), append_TDF(&(ZIb), 1));
    current_TDF->no = 1;
#line 12429 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: acc_l3 */
	    /* BEGINNING OF INLINE: 627 */
	    goto ZL2_627;
	    /* END OF INLINE: 627 */
	}
	/*UNREACHED*/
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR628 (void)
{
  ZL2_628:;
    switch (CURRENT_TERMINAL) {
      case lex_semi:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    /* BEGINNING OF ACTION: exp_sls3_dec */
	    {
#line 704 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 12463 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exp_sls3_dec */
	    ADVANCE_LEXER;
	    /* BEGINNING OF INLINE: 667 */
	    {
		switch (CURRENT_TERMINAL) {
		  case lex_arithop: case lex_case__term: case lex_character:
		  case lex_cons: case lex_exp__cons: case lex_exp__sort:
		  case lex_exp__tok: case lex_float__den: case lex_float__query:
		  case lex_hash: case lex_ident: case lex_int__den:
		  case lex_lab: case lex_let: case lex_line__term:
		  case lex_minus__term: case lex_ocurl: case lex_offset__query:
		  case lex_ord: case lex_osq: case lex_proc:
		  case lex_proc__query: case lex_ptr__query: case lex_qstring:
		  case lex_query: case lex_rep: case lex_signed__nat__cons:
		  case lex_signed__nat__sort: case lex_signed__nat__tok: case lex_size__term:
		  case lex_star: case lex_string__cons: case lex_string__sort:
		  case lex_string__tok: case lex_tag__cons: case lex_tag__sort:
		  case lex_tag__tok: case lex_var:
		    {
			read_exp ();
			if ((CURRENT_TERMINAL) == 130) {
			    RESTORE_LEXER;
			    goto ZL1;
			}
			/* BEGINNING OF ACTION: exp_sls4 */
			{
#line 708 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    if (lex_v.t == lex_semi) {
	current_TDF->no +=1;
	append_TDF(&(ZIa),1);
    } else {
	TDF stats;
	stats = *current_TDF;
	INIT_TDF(current_TDF);
	o_sequence(
	    { append_TDF(&stats,1); current_TDF->no = stats.no; },
	    append_TDF(&(ZIa),1));
	/* cheats LIST in o_sequence */
    }
#line 12506 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: exp_sls4 */
			/* BEGINNING OF INLINE: 628 */
			goto ZL2_628;
			/* END OF INLINE: 628 */
		    }
		    /*UNREACHED*/
		  default:
		    {
			/* BEGINNING OF ACTION: exp_sls5 */
			{
#line 724 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_top;
#line 12521 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: exp_sls5 */
			/* BEGINNING OF ACTION: exp_sls4 */
			{
#line 708 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    if (lex_v.t == lex_semi) {
	current_TDF->no +=1;
	append_TDF(&(ZIa),1);
    } else {
	TDF stats;
	stats = *current_TDF;
	INIT_TDF(current_TDF);
	o_sequence(
	    { append_TDF(&stats,1); current_TDF->no = stats.no; },
	    append_TDF(&(ZIa),1));
	/* cheats LIST in o_sequence */
    }
#line 12541 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
			}
			/* END OF ACTION: exp_sls4 */
			/* BEGINNING OF INLINE: 628 */
			goto ZL2_628;
			/* END OF INLINE: 628 */
		    }
		    /*UNREACHED*/
		}
	    }
	    /* END OF INLINE: 667 */
	}
	/*UNREACHED*/
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR629 (void)
{
  ZL2_629:;
    switch (CURRENT_TERMINAL) {
      case lex_comma:
	{
	    PTR_Tokdec ZIa;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: tok_fml1_dec */
	    {
#line 2383 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n = lex_v.val.name;
    (ZIa) = find_tok(n);
    if ((ZIa)!=(Tokdec*)0) MSG_token_parameter_name_unique(n);
    (ZIa) = xalloc(sizeof(*(ZIa))); NEW_IDNAME((ZIa)->idname, n, tok_ent);
    (ZIa)->isdeffed = 1; (ZIa)->isused = 0; (ZIa)->iskept=0;
    (ZIa)->next = (Tokdec*)0;
#line 12585 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tok_fml1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ident:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_colon:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRfull__sortname ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: tok_fml3 */
	    {
#line 2398 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZIa)->sort.ressort = g_sname;
    (ZIa)->sort.pars = (Tokpar*)0; /* no pars in formal pars */
    (ZIa)->next = g_tokformals;
    g_tokformals = (ZIa);
#line 12615 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: tok_fml3 */
	    /* BEGINNING OF INLINE: 629 */
	    goto ZL2_629;
	    /* END OF INLINE: 629 */
	}
	/*UNREACHED*/
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR630 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_eof:
	{
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: keeps1 */
	    {
#line 1366 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    int i;
    for(i=0; i<NO_OF_ENTITIES; i++) {
	INIT_TDF(lk_externs+i);
    }
#line 12649 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: keeps1 */
	    /* BEGINNING OF ACTION: keeps2 */
	    {
#line 1373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    CONT_STREAM(&units[tld2_unit].tdf, out_tdfint32(UL(1)));
    if(line_no_tok != -1) {
	current_TDF = lk_externs+tok_ent;
	o_make_linkextern(
	    out_tdfint32(UL(line_no_tok)),
		o_string_extern(
		    { out_tdfident_bytes("~exp_to_source"); }));
	current_TDF->no++;
	CONT_STREAM(&units[tld2_unit].tdf, out_tdfint32(UL(3)));
    }
    {
	Tokdec * k = tokdecs;
	while (k != (Tokdec*)0) {
	    if (!k->isdeffed || k->iskept) {
		int capname = capsule_name(&k->idname.name, tok_ent);
		char * n = k->idname.id;
		current_TDF = lk_externs+tok_ent;
		o_make_linkextern(out_tdfint32(UL(capname)),
		    o_string_extern({ out_tdfident_bytes(n); }));
		current_TDF->no++;
		CONT_STREAM(&units[tld2_unit].tdf,
		    { int i = k->isused + 2 + 4*k->isdeffed;
		      out_tdfint32(UL(i)); });
	    }
	    k = k->next;
	}
    }
    {
	Tagdec * k = tagdecs;
	while (k != (Tagdec*)0) {
	    if (!k->isdeffed || k->iskept) {
		int capname = capsule_name(&k->idname.name, tag_ent);
		char * n = k->idname.id;
		current_TDF = lk_externs+tag_ent;
		o_make_linkextern(out_tdfint32(UL(capname)),
		    o_string_extern({ out_tdfident_bytes(n); }));
		current_TDF->no++;
		CONT_STREAM(&units[tld2_unit].tdf,
		    { int i = k->isused + 2 + ((k->iscommon)?8:(4*k->isdeffed));
		      out_tdfint32(UL(i)); });
	    }
	    k = k->next;
	}
    }
    {
	Al_tagdec * k = al_tagdecs;
	while (k != (Al_tagdec*)0) {
	    if (!k->isdeffed || k->iskept) {
		int capname = capsule_name(&k->idname.name, al_tag_ent);
		char * n = k->idname.id;
		current_TDF = lk_externs+al_tag_ent;
		o_make_linkextern(out_tdfint32(UL(capname)),
		    o_string_extern({ out_tdfident_bytes(n); }));
		current_TDF->no++;
		CONT_STREAM(&units[tld2_unit].tdf,
		    { int i = k->isused + 2 + 4*k->isdeffed;
		      out_tdfint32(UL(i)); });
	    }
	    k = k->next;
	}
    }
    {
	int i;
	TDF caps;
	add_extra_toks();
	INIT_TDF(&caps);
	RESET_TDF(&caps);
	if (do_pp) success();
	if (HAS_MAGIC) {
	    out_basic_int(UL('T'), UI(8));
	    out_basic_int(UL('D'), UI(8));
	    out_basic_int(UL('F'), UI(8));
	    out_basic_int(UL('C'), UI(8));
	    out_tdfint32(MAJOR_NO);
	    out_tdfint32(MINOR_NO);
	    byte_align();
	}
	o_make_capsule(
	    {
		for(i=0; i<NO_OF_UNITS; i++) {
		    if(units[i].present) {
			char* n;
			n = unit_names[i];
			LIST_ELEM({ out_tdfident_bytes(n); });
		    }
		}
	    },
	    {
		for(i=0; i<NO_OF_ENTITIES; i++) {
		    char* n;
		    n = ent_names[i];
		    LIST_ELEM(
			o_make_capsule_link(
			    { out_tdfident_bytes(n);},
			    out_tdfint32(UL(capsule_names[i]))))
		}
	    },
	    {
		for(i=0; i<NO_OF_ENTITIES; i++) {
		    TDF * lks = lk_externs+i;
		    LIST_ELEM(
			o_make_extern_link(
			    { append_TDF(lks,1); current_TDF->no = lks->no; });
		    )
		}
	    },
	    {
		for(i=0; i<NO_OF_UNITS; i++) {
		    if(units[i].present) {
			LIST_ELEM(
			    o_make_group(LIST_ELEM(make_unit(i))););
		    }
		}
	    }
	);
	make_tdf_file(&caps, out_file);
    }
#line 12773 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: keeps2 */
	}
	break;
      case lex_keep:
	{
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: keeps1 */
	    {
#line 1366 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    int i;
    for(i=0; i<NO_OF_ENTITIES; i++) {
	INIT_TDF(lk_externs+i);
    }
#line 12796 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: keeps1 */
	    ZRkeep__list__opt ();
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      case 130:
		RESTORE_LEXER;
		goto ZL1;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    switch (CURRENT_TERMINAL) {
	      case lex_eof:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: keeps2 */
	    {
#line 1373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    CONT_STREAM(&units[tld2_unit].tdf, out_tdfint32(UL(1)));
    if(line_no_tok != -1) {
	current_TDF = lk_externs+tok_ent;
	o_make_linkextern(
	    out_tdfint32(UL(line_no_tok)),
		o_string_extern(
		    { out_tdfident_bytes("~exp_to_source"); }));
	current_TDF->no++;
	CONT_STREAM(&units[tld2_unit].tdf, out_tdfint32(UL(3)));
    }
    {
	Tokdec * k = tokdecs;
	while (k != (Tokdec*)0) {
	    if (!k->isdeffed || k->iskept) {
		int capname = capsule_name(&k->idname.name, tok_ent);
		char * n = k->idname.id;
		current_TDF = lk_externs+tok_ent;
		o_make_linkextern(out_tdfint32(UL(capname)),
		    o_string_extern({ out_tdfident_bytes(n); }));
		current_TDF->no++;
		CONT_STREAM(&units[tld2_unit].tdf,
		    { int i = k->isused + 2 + 4*k->isdeffed;
		      out_tdfint32(UL(i)); });
	    }
	    k = k->next;
	}
    }
    {
	Tagdec * k = tagdecs;
	while (k != (Tagdec*)0) {
	    if (!k->isdeffed || k->iskept) {
		int capname = capsule_name(&k->idname.name, tag_ent);
		char * n = k->idname.id;
		current_TDF = lk_externs+tag_ent;
		o_make_linkextern(out_tdfint32(UL(capname)),
		    o_string_extern({ out_tdfident_bytes(n); }));
		current_TDF->no++;
		CONT_STREAM(&units[tld2_unit].tdf,
		    { int i = k->isused + 2 + ((k->iscommon)?8:(4*k->isdeffed));
		      out_tdfint32(UL(i)); });
	    }
	    k = k->next;
	}
    }
    {
	Al_tagdec * k = al_tagdecs;
	while (k != (Al_tagdec*)0) {
	    if (!k->isdeffed || k->iskept) {
		int capname = capsule_name(&k->idname.name, al_tag_ent);
		char * n = k->idname.id;
		current_TDF = lk_externs+al_tag_ent;
		o_make_linkextern(out_tdfint32(UL(capname)),
		    o_string_extern({ out_tdfident_bytes(n); }));
		current_TDF->no++;
		CONT_STREAM(&units[tld2_unit].tdf,
		    { int i = k->isused + 2 + 4*k->isdeffed;
		      out_tdfint32(UL(i)); });
	    }
	    k = k->next;
	}
    }
    {
	int i;
	TDF caps;
	add_extra_toks();
	INIT_TDF(&caps);
	RESET_TDF(&caps);
	if (do_pp) success();
	if (HAS_MAGIC) {
	    out_basic_int(UL('T'), UI(8));
	    out_basic_int(UL('D'), UI(8));
	    out_basic_int(UL('F'), UI(8));
	    out_basic_int(UL('C'), UI(8));
	    out_tdfint32(MAJOR_NO);
	    out_tdfint32(MINOR_NO);
	    byte_align();
	}
	o_make_capsule(
	    {
		for(i=0; i<NO_OF_UNITS; i++) {
		    if(units[i].present) {
			char* n;
			n = unit_names[i];
			LIST_ELEM({ out_tdfident_bytes(n); });
		    }
		}
	    },
	    {
		for(i=0; i<NO_OF_ENTITIES; i++) {
		    char* n;
		    n = ent_names[i];
		    LIST_ELEM(
			o_make_capsule_link(
			    { out_tdfident_bytes(n);},
			    out_tdfint32(UL(capsule_names[i]))))
		}
	    },
	    {
		for(i=0; i<NO_OF_ENTITIES; i++) {
		    TDF * lks = lk_externs+i;
		    LIST_ELEM(
			o_make_extern_link(
			    { append_TDF(lks,1); current_TDF->no = lks->no; });
		    )
		}
	    },
	    {
		for(i=0; i<NO_OF_UNITS; i++) {
		    if(units[i].present) {
			LIST_ELEM(
			    o_make_group(LIST_ELEM(make_unit(i))););
		    }
		}
	    }
	);
	make_tdf_file(&caps, out_file);
    }
#line 12938 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: keeps2 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR632 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_addrop: case lex_arithop: case lex_equals:
      case lex_logop: case lex_minus__term: case lex_star:
	{
	    TDF ZIa;
	    TDF ZIb;
	    PTR_TDF ZIc;
	    PTR_char ZId;

	    /* BEGINNING OF ACTION: exp1_dec */
	    {
#line 603 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    (ZId) = lex_v.val.name;
    (ZIa) = *current_TDF;
    SET_TDF((ZIc), &(ZIb));
#line 12973 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: exp1_dec */
	    ZR672 (&ZIa, &ZIb, &ZIc, &ZId);
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRkeep__list__opt (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_access__tok: case lex_al__tag__tok: case lex_alignment__tok:
      case lex_bitfield__variety__tok: case lex_bool__tok: case lex_error__treatment__tok:
      case lex_exp__tok: case lex_floating__variety__tok: case lex_ident:
      case lex_label__tok: case lex_nat__tok: case lex_ntest__tok:
      case lex_rounding__mode__tok: case lex_shape__tok: case lex_signed__nat__tok:
      case lex_tag__tok: case lex_transfer__mode__tok: case lex_variety__tok:
	{
	    ZRkeep__list ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case 130:
	return;
      default:
	break;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZR633 (void)
{
  ZL2_633:;
    switch (CURRENT_TERMINAL) {
      case lex_colon:
	{
	    ADVANCE_LEXER;
	    ZRsigned__nat__body ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	}
	break;
      case lex_query:
	{
	    TDF ZIa;
	    TDF ZIb;
	    TDF ZIc;
	    PTR_TDF ZId;

	    ADVANCE_LEXER;
	    /* BEGINNING OF ACTION: gencond1_dec */
	    {
#line 1164 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    /* (ZIb), (ZIc) uninitialised */
    SET_TDF((ZId), &(ZIa));
#line 13052 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencond1_dec */
	    switch (CURRENT_TERMINAL) {
	      case lex_ord:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    read_exp ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gencond2 */
	    {
#line 1169 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIb));
#line 13073 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencond2 */
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRsigned__nat__body ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: gencond3 */
	    {
#line 1174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    SET_TDF((ZId), &(ZIc));
#line 13094 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: gencond3 */
	    switch (CURRENT_TERMINAL) {
	      case lex_comma:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	    ZRsigned__nat__body ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: signed_nat1 */
	    {
#line 1855 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZId));
    o_signed_nat_cond(append_TDF(&(ZIa),1), append_TDF(&(ZIb),1),
		      append_TDF(&(ZIc),1));
#line 13116 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat1 */
	    switch (CURRENT_TERMINAL) {
	      case lex_crd:
		break;
	      default:
		goto ZL1;
	    }
	    ADVANCE_LEXER;
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRal__tag__def (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	PTR_Al_tagdec ZIa;
	TDF ZIb;
	PTR_TDF ZIc;
	int ZId;

	switch (CURRENT_TERMINAL) {
	  case lex_al__tagdef:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	/* BEGINNING OF ACTION: al_tgdf1_dec */
	{
#line 361 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    char * n =lex_v.val.name;
    (ZIa) = find_al_tag(n);
    SELECT_UNIT(al_tagdef_unit);
    if ((ZIa)==(Al_tagdec*)0) {
	(ZIa)= xalloc(sizeof(*(ZIa))); (ZIa)->isdeffed =0; (ZIa)->iskept=0; (ZIa)->isused=0;
	NEW_IDNAME((ZIa)->idname, n, al_tag_ent);
	(ZIa)->next = al_tagdecs; al_tagdecs = (ZIa);
	(ZId) = 0;
    }
    else (ZId) = 1;
    if ((ZIa)->isdeffed) { MSG_al_tag_defined_twice(n); }
    (ZIa)->isdeffed = 1;
    SET_TDF((ZIc), &(ZIb));
#line 13175 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: al_tgdf1_dec */
	switch (CURRENT_TERMINAL) {
	  case lex_ident:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	switch (CURRENT_TERMINAL) {
	  case lex_equals:
	    break;
	  default:
	    goto ZL1;
	}
	ADVANCE_LEXER;
	read_alignment ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
	/* BEGINNING OF ACTION: al_tagdef2 */
	{
#line 349 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIc));
    o_make_al_tagdef( if ((ZId)) {
			  out_tdfint32(UL(non_local(&(ZIa)->idname.name,al_tag_ent)));
			  } else {
			      out_tdfint32(LOCNAME((ZIa)->idname));
			  },
			  append_TDF(&(ZIb), 1)
			);
    INC_LIST;
#line 13210 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: al_tagdef2 */
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

static void
ZRotagexp (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	TDF ZIa;
	PTR_TDF ZIb;

	/* BEGINNING OF ACTION: otagexp1_dec */
	{
#line 1648 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 13235 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: otagexp1_dec */
	read_exp ();
	ZR655 (&ZIa, &ZIb);
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

void
read_program (void)
{
    if ((CURRENT_TERMINAL) == 130) {
	return;
    }
    {
	ZRelement__list__opt ();
	ZR630 ();
	if ((CURRENT_TERMINAL) == 130) {
	    RESTORE_LEXER;
	    goto ZL1;
	}
    }
    return;
  ZL1:;
    {
	/* BEGINNING OF ACTION: syntax_error */
	{
#line 2493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    MSG_syntax_error_noparam();
#line 13273 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	}
	/* END OF ACTION: syntax_error */
    }
}

static void
ZR634 (void)
{
    switch (CURRENT_TERMINAL) {
      case lex_character: case lex_int__den:
	{
	    ZRinteger ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: signed_nat3 */
	    {
#line 1865 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    o_make_signed_nat(out_tdfbool(1), out_tdfint32(intvalue));
#line 13295 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat3 */
	}
	break;
      case lex_nat__cons: case lex_nat__sort: case lex_nat__tok:
	{
	    TDF ZIa;
	    PTR_TDF ZIb;

	    /* BEGINNING OF ACTION: signed_nat5_dec */
	    {
#line 1873 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    SET_TDF((ZIb), &(ZIa));
#line 13310 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat5_dec */
	    ZRnat__not__int ();
	    if ((CURRENT_TERMINAL) == 130) {
		RESTORE_LEXER;
		goto ZL1;
	    }
	    /* BEGINNING OF ACTION: signed_nat6 */
	    {
#line 1877 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

    RESET_TDF((ZIb));
    o_snat_from_nat(o_true, append_TDF(&(ZIa),1));
#line 13324 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"
	    }
	    /* END OF ACTION: signed_nat6 */
	}
	break;
      case 130:
	return;
      default:
	goto ZL1;
    }
    return;
  ZL1:;
    SAVE_LEXER (130);
    return;
}

/* BEGINNING OF TRAILER */

#line 2497 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/pl/syntax.act"

#line 13344 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/pl/syntax.c"

/* END OF FILE */


syntax highlighted by Code2HTML, v. 0.9.1