/*
* Automatically generated from the files:
* /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.sid
* and
* /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act
* by:
* /mnt/gmirror/ports/lang/TenDRA/work/tendra/obj/utilities/sid/sid
*/
/* BEGINNING OF HEADER */
#line 39 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
/*
* Copyright (c) 2002, 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/tspec/syntax.act,v 1.9 2005/10/31 10:17:01 stefanf Exp $
*/
#include "config.h"
#include "cstring.h"
#include "msgcat.h"
#include "object.h"
#include "hash.h"
#include "lex.h"
#include "name.h"
#include "syntax.h"
#include "type.h"
#include "utility.h"
#include "variable.h"
/*
* PARSER TYPES
*
* These types give the implementations of the various types used
* in the syntax.
*/
typedef char *SID_STRING;
typedef type *SID_TYPE;
typedef struct {
char *iname;
char *ename;
int ivers;
int evers;
} SID_IDENTIFIER;
/*
* CURRENT FIELD NAME
*
* The name of the current structure is stored during a +FIELD
* construct.
*/
static char *crt_field_name = null;
static int anon_no = 0;
/*
* CV-QUALIFIER NAMES
*
* This table gives the mapping between the values used to represent
* cv-qualifiers in the parser and the qualifier names used in the
* internal representation.
*/
static char *cv_qualifier [] = {
null, "const", "restrict", "const restrict",
"volatile", "const volatile", "const restrict volatile"
};
/*
* COMPILATION MODE
*
* We allow unreached code in the automatically generated sections.
*/
#ifdef __TenDRA__
#pragma TenDRA begin
#pragma TenDRA unreachable code allow
#pragma TenDRA variable analysis off
#endif
#line 140 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
/* BEGINNING OF FUNCTION DECLARATIONS */
static void ZRsimple_Htype (SID_TYPE *);
static void ZRparameter_Hdeclaration (SID_TYPE *);
static void ZRnat_Hdeclarator_Hlist (SID_COMMAND *);
static void ZRtype_Hdeclarator_Hlist (SID_COMMAND *);
static void ZRfunction_Hoperator (SID_TYPE *);
static void ZRexp_Hdeclarator_Hlist (int, SID_TYPE, int, SID_COMMAND *);
static void ZRsubset_Hkey (SID_STRING *);
static void ZRmacro_Hparam_Hdeclaration (SID_TYPE *);
static void ZRifdef_Hmacro_Hname (SID_STRING *);
static void ZRdefine_Hparam_Hlist (SID_STRING *);
static void ZR287 (SID_TYPE *);
static void ZRdeclarator (SID_IDENTIFIER *, SID_TYPE *);
static void ZRidentifier (SID_IDENTIFIER *);
static void ZRsubset_Hcommand (SID_COMMAND *);
static void ZRqualified_Htype (SID_TYPE *);
static void ZRabstract_Hdeclarator (SID_STRING *, SID_TYPE *);
static void ZRparameter_Hlist (SID_TYPE *);
static void ZRinternal_Hname (SID_STRING *, int *);
static void ZR308 (SID_STRING, SID_TYPE, SID_STRING *, SID_TYPE *);
static void ZRmacro_Hoperator (SID_TYPE *);
static void ZRenumerator_Hlist (SID_COMMAND *);
static void ZRexternal_Hname (SID_STRING *, int *);
static void ZRtype_Hqualifier (unsigned *);
static void ZRtype_Hkey (int *);
static void ZRtype_Hqualifier_Hopt (unsigned *);
static void ZRconstant_Hvalue (SID_STRING *);
static void ZR318 (SID_IDENTIFIER, SID_TYPE, SID_IDENTIFIER *, SID_TYPE *);
static void ZRspec_Hcommand (SID_COMMAND *);
static void ZRfunc_Hcommand (int *);
static void ZR320 (SID_STRING *, SID_STRING *);
static void ZR321 (SID_STRING *, SID_STRING *, SID_STRING *);
static void ZRarray_Hoperator (SID_TYPE *);
static void ZR322 (SID_COMMAND *);
static void ZR323 (int *, SID_COMMAND *);
static void ZRmacro_Hparam_Hlist (SID_TYPE *);
static void ZR324 (SID_STRING *, int *, SID_IDENTIFIER *);
static void ZR325 (SID_STRING *);
static void ZR328 (SID_STRING *, SID_STRING *);
static void ZRenum_Hcommand (int *);
static void ZRenumerator (SID_COMMAND *);
static void ZR329 (int *);
static void ZRfield_Hdeclarator_Hlist (SID_TYPE, SID_TYPE, SID_COMMAND *);
static void ZR330 (int *);
static void ZRfield_Hexact (int *);
static void ZR333 (SID_TYPE *, SID_TYPE *);
static void ZR335 (SID_TYPE *);
static void ZRcommand_Hlist (SID_COMMAND *);
static void ZR338 (SID_STRING *, SID_TYPE *, SID_STRING *, SID_TYPE *);
static void ZR339 (SID_TYPE *);
static void ZR340 (int *);
static void ZRdirect_Hdeclarator (SID_IDENTIFIER *, SID_TYPE *);
static void ZRtype_Hcommand (int *);
static void ZRtext_Hcommand (SID_COMMAND *);
static void ZR347 (SID_IDENTIFIER *, SID_IDENTIFIER *, SID_TYPE *);
static void ZRname_Hversion (int *);
static void ZR348 (int *);
static void ZRdirect_Habstract_Hdeclarator (SID_STRING *, SID_TYPE *);
static void ZRfield_Hdeclarator (SID_IDENTIFIER *, SID_TYPE *);
static void ZRvariable_Hcommand (void);
static void ZR349 (int *);
static void ZR350 (SID_TYPE *);
static void ZR351 (SID_STRING *);
static void ZRdefine_Hparam_Hclause (SID_STRING *);
static void ZRexp_Hcommand (int *);
static void ZR352 (SID_STRING *);
static void ZRif_Hcommand (SID_COMMAND *, SID_STRING *);
static void ZR353 (SID_STRING *);
static void ZR354 (SID_STRING *);
static void ZRbitfield_Hoperator (SID_TYPE *);
static void ZRuse_Hsubset_Hname (SID_STRING *);
extern void read_spec (SID_COMMAND *);
static void ZRmacro_Hdeclarator (SID_IDENTIFIER *, SID_TYPE *);
static void ZRsubset_Hname (SID_STRING *);
static void ZRbuiltin_Htype (unsigned *);
static void ZRobject_Hqualifier (int *);
static void ZRfield_Hlist (SID_TYPE, SID_COMMAND *);
static void ZRptr_Hoperator (SID_TYPE *);
static void ZRtype_Hkeyword (unsigned *);
/* BEGINNING OF STATIC VARIABLES */
/* BEGINNING OF FUNCTION DEFINITIONS */
static void
ZRsimple_Htype (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_char: case lex_double: case lex_float:
case lex_int: case lex_long: case lex_short:
case lex_signed: case lex_unsigned: case lex_void:
{
unsigned ZIb;
ZRbuiltin_Htype (&ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_builtin */
{
#line 361 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = basic_type ((ZIb));
#line 250 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_builtin */
}
break;
case lex_name: case lex_enum: case lex_struct:
case lex_union:
{
int ZItag;
SID_STRING ZInm;
ZRtype_Hkey (&ZItag);
switch (CURRENT_TERMINAL) {
case lex_name:
/* BEGINNING OF EXTRACT: name */
{
#line 238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZInm = token_value;
#line 268 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: name */
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: type_name */
{
#line 365 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = find_type ((ZInm), any_version, (ZItag), 1);
#line 284 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_name */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRparameter_Hdeclaration (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_TYPE ZIs;
SID_STRING ZInm;
SID_TYPE ZIp;
ZRqualified_Htype (&ZIs);
ZRabstract_Hdeclarator (&ZInm, &ZIp);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZIp), (ZIs));
#line 326 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF ACTION: param_name */
{
#line 437 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
UNUSED ((ZInm));
#line 334 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: param_name */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRnat_Hdeclarator_Hlist (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_IDENTIFIER ZIid;
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ZRidentifier (&ZIid);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: declare_nat */
{
#line 731 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_exp ((ZIid).iname, (ZIid).ivers, OBJ_NAT);
(ZIa) = make_token ((ZIid).ename, (ZIid).evers, p, OBJ_NAT);
#line 370 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_nat */
/* BEGINNING OF INLINE: 251 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRnat_Hdeclarator_Hlist (&ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = null;
#line 393 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
break;
}
}
/* END OF INLINE: 251 */
/* BEGINNING OF ACTION: command_join */
{
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = join_object ((ZIa), (ZIb));
#line 406 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_join */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZRtype_Hdeclarator_Hlist (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
int ZItag;
SID_IDENTIFIER ZIid;
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ZRtype_Hcommand (&ZItag);
ZRidentifier (&ZIid);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: declare_type */
{
#line 766 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
type *t = make_type ((ZIid).iname, (ZIid).ivers, (ZItag));
(ZIa) = make_token ((ZIid).ename, (ZIid).evers, t->u.obj, OBJ_TYPE);
#line 444 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_type */
/* BEGINNING OF INLINE: 263 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRtype_Hdeclarator_Hlist (&ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = null;
#line 467 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
break;
}
}
/* END OF INLINE: 263 */
/* BEGINNING OF ACTION: command_join */
{
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = join_object ((ZIa), (ZIb));
#line 480 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_join */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZRfunction_Hoperator (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR335 (&ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRexp_Hdeclarator_Hlist (int ZIcmd, SID_TYPE ZIs, int ZIlv, SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_IDENTIFIER ZIid;
SID_TYPE ZIp;
SID_TYPE ZIu;
SID_TYPE ZIt;
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ZRdeclarator (&ZIid, &ZIp);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIu) = inject_type ((ZIp), (ZIs));
#line 548 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF ACTION: type_lvalue */
{
#line 407 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((ZIu), (ZIlv));
#line 556 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_lvalue */
/* BEGINNING OF ACTION: declare_exp */
{
#line 704 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_exp ((ZIid).iname, (ZIid).ivers, (ZIcmd));
p->u.u_type = check_type ((ZIt), (ZIcmd));
(ZIa) = make_token ((ZIid).ename, (ZIid).evers, p, (ZIcmd));
#line 566 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_exp */
/* BEGINNING OF INLINE: 229 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRexp_Hdeclarator_Hlist (ZIcmd, ZIs, ZIlv, &ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = null;
#line 589 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
break;
}
}
/* END OF INLINE: 229 */
/* BEGINNING OF ACTION: command_join */
{
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = join_object ((ZIa), (ZIb));
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_join */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZRsubset_Hkey (SID_STRING *ZOkey)
{
SID_STRING ZIkey;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
ADVANCE_LEXER;
ZR351 (&ZIkey);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: subset_both */
{
#line 559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIkey) = "11";
#line 636 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: subset_both */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOkey = ZIkey;
}
static void
ZRmacro_Hparam_Hdeclaration (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
int ZIlv;
SID_TYPE ZIs;
SID_STRING ZInm;
SID_TYPE ZIp;
SID_TYPE ZIu;
ZRobject_Hqualifier (&ZIlv);
ZRqualified_Htype (&ZIs);
ZRabstract_Hdeclarator (&ZInm, &ZIp);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIu) = inject_type ((ZIp), (ZIs));
#line 679 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF ACTION: type_lvalue */
{
#line 407 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((ZIu), (ZIlv));
#line 687 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_lvalue */
/* BEGINNING OF ACTION: param_name */
{
#line 437 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
UNUSED ((ZInm));
#line 695 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: param_name */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRifdef_Hmacro_Hname (SID_STRING *ZOc)
{
SID_STRING ZIc;
switch (CURRENT_TERMINAL) {
case lex_building:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: cond_building */
{
#line 478 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = BUILDING_MACRO;
#line 721 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cond_building */
}
break;
case lex_name:
{
/* BEGINNING OF EXTRACT: name */
{
#line 238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIc = token_value;
#line 732 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: name */
ADVANCE_LEXER;
}
break;
case lex_protect:
{
SID_STRING ZIa;
SID_STRING ZIb;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIa = token_value;
#line 757 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_comma:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIb = token_value;
#line 778 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: cond_protect */
{
#line 482 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = macro_name (PROTECT_PREFIX, (ZIa), (ZIb), NULL);
#line 798 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cond_protect */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZRdefine_Hparam_Hlist (SID_STRING *ZOp)
{
SID_STRING ZIp;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_STRING ZI326;
switch (CURRENT_TERMINAL) {
case lex_name:
/* BEGINNING OF EXTRACT: name */
{
#line 238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZI326 = token_value;
#line 833 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: name */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR328 (&ZI326, &ZIp);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZR287 (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
ZRmacro_Hoperator (&ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: type_none */
{
#line 357 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = null;
#line 877 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_none */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRdeclarator (SID_IDENTIFIER *ZOid, SID_TYPE *ZOt)
{
SID_IDENTIFIER ZIid;
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_name: case lex_open_Hround:
{
ZRdirect_Hdeclarator (&ZIid, &ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_star:
{
SID_TYPE ZIp;
SID_TYPE ZIs;
ZRptr_Hoperator (&ZIp);
ZRdeclarator (&ZIid, &ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZIs), (ZIp));
#line 925 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOid = ZIid;
*ZOt = ZIt;
}
static void
ZRidentifier (SID_IDENTIFIER *ZOid)
{
SID_IDENTIFIER ZIid;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_STRING ZInm;
int ZIv;
ZRinternal_Hname (&ZInm, &ZIv);
ZR324 (&ZInm, &ZIv, &ZIid);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOid = ZIid;
}
static void
ZRsubset_Hcommand (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_STRING ZIs;
SID_COMMAND ZIa;
SID_COMMAND ZIb;
switch (CURRENT_TERMINAL) {
case lex_set:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRsubset_Hname (&ZIs);
switch (CURRENT_TERMINAL) {
case lex_assign:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: begin_subset */
{
#line 606 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_subset ((ZIs));
info *i = p->u.u_info;
if (i->subset) {
char *nm = subset_name (i->api, i->file, NULL);
object *q = search_hash (subsets, nm, no_version);
update_time (p, q);
}
(ZIa) = crt_object;
crt_object = p;
#line 1015 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: begin_subset */
switch (CURRENT_TERMINAL) {
case lex_open_Hbrace:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRcommand_Hlist (&ZIb);
switch (CURRENT_TERMINAL) {
case lex_close_Hbrace:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: end_subset */
{
#line 618 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = crt_object;
if (p) p->u.u_info->elements = (ZIb);
(ZIc) = make_object (NULL, OBJ_SET);
(ZIc)->u.u_obj = p;
crt_object = (ZIa);
#line 1045 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: end_subset */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZRqualified_Htype (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_name: case lex_char: case lex_double:
case lex_enum: case lex_float: case lex_int:
case lex_long: case lex_short: case lex_signed:
case lex_struct: case lex_union: case lex_unsigned:
case lex_void:
{
SID_TYPE ZI331;
ZRsimple_Htype (&ZI331);
ZR333 (&ZI331, &ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_const: case lex_restrict: case lex_volatile:
{
unsigned ZIcv;
SID_TYPE ZIs;
ZRtype_Hqualifier (&ZIcv);
ZRsimple_Htype (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_qualify */
{
#line 402 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((ZIs), TYPE_QUALIFIER);
(ZIt)->v.str = cv_qualifier [(ZIcv)];
#line 1096 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_qualify */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRabstract_Hdeclarator (SID_STRING *ZOnm, SID_TYPE *ZOt)
{
SID_STRING ZInm;
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
default:
{
ZRdirect_Habstract_Hdeclarator (&ZInm, &ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_star:
{
SID_TYPE ZIp;
SID_TYPE ZIs;
ZRptr_Hoperator (&ZIp);
ZRabstract_Hdeclarator (&ZInm, &ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZIs), (ZIp));
#line 1146 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOnm = ZInm;
*ZOt = ZIt;
}
static void
ZRparameter_Hlist (SID_TYPE *ZOp)
{
SID_TYPE ZIp;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_TYPE ZIt;
SID_TYPE ZIq;
ZRparameter_Hdeclaration (&ZIt);
/* BEGINNING OF INLINE: 155 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZR339 (&ZIq);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: type_list_none */
{
#line 418 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIq) = null;
#line 1196 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_list_none */
}
break;
case 75:
RESTORE_LEXER;
goto ZL1;
}
}
/* END OF INLINE: 155 */
/* BEGINNING OF ACTION: type_list_cons */
{
#line 427 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIp) = make_subtype ((ZIt), TYPE_LIST);
(ZIp)->v.next = (ZIq);
#line 1213 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_list_cons */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRinternal_Hname (SID_STRING *ZOnm, int *ZOv)
{
SID_STRING ZInm;
int ZIv;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_STRING ZIa;
switch (CURRENT_TERMINAL) {
case lex_name:
/* BEGINNING OF EXTRACT: name */
{
#line 238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIa = token_value;
#line 1243 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: name */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRname_Hversion (&ZIv);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: field_name */
{
#line 511 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
if (crt_field_name) {
(ZInm) = string_printf ("%s.%s", crt_field_name, (ZIa));
} else {
(ZInm) = (ZIa);
}
#line 1265 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: field_name */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOnm = ZInm;
*ZOv = ZIv;
}
static void
ZR308 (SID_STRING ZI304, SID_TYPE ZI305, SID_STRING *ZO306, SID_TYPE *ZO307)
{
SID_STRING ZI306;
SID_TYPE ZI307;
ZL2_308:;
switch (CURRENT_TERMINAL) {
case lex_open_Hsquare:
{
SID_STRING ZInm;
SID_TYPE ZIs;
SID_TYPE ZIt;
ZInm = ZI304;
ZRarray_Hoperator (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZI305), (ZIs));
#line 1303 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF INLINE: 308 */
ZI304 = ZInm;
ZI305 = ZIt;
goto ZL2_308;
/* END OF INLINE: 308 */
}
/*UNREACHED*/
default:
{
ZI306 = ZI304;
ZI307 = ZI305;
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZO306 = ZI306;
*ZO307 = ZI307;
}
static void
ZRmacro_Hoperator (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR350 (&ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRenumerator_Hlist (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ZRenumerator (&ZIa);
/* BEGINNING OF INLINE: 222 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRenumerator_Hlist (&ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = null;
#line 1394 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
break;
case 75:
RESTORE_LEXER;
goto ZL1;
}
}
/* END OF INLINE: 222 */
/* BEGINNING OF ACTION: command_join */
{
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = join_object ((ZIa), (ZIb));
#line 1410 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_join */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZRexternal_Hname (SID_STRING *ZOnm, int *ZOv)
{
SID_STRING ZInm;
int ZIv;
switch (CURRENT_TERMINAL) {
case lex_name:
{
SID_STRING ZIa;
SID_STRING ZIb;
/* BEGINNING OF EXTRACT: name */
{
#line 238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIa = token_value;
#line 1438 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: name */
ADVANCE_LEXER;
ZRname_Hversion (&ZIv);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: field_name */
{
#line 511 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
if (crt_field_name) {
(ZIb) = string_printf ("%s.%s", crt_field_name, (ZIa));
} else {
(ZIb) = (ZIa);
}
#line 1456 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: field_name */
/* BEGINNING OF ACTION: token_name */
{
#line 519 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZInm) = token_name ((ZIb));
#line 1464 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: token_name */
}
break;
case lex_string:
{
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZInm = token_value;
#line 1475 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
ADVANCE_LEXER;
ZRname_Hversion (&ZIv);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOnm = ZInm;
*ZOv = ZIv;
}
static void
ZRtype_Hqualifier (unsigned *ZOcv)
{
unsigned ZIcv;
switch (CURRENT_TERMINAL) {
case lex_const:
{
unsigned ZIa;
ADVANCE_LEXER;
ZRtype_Hqualifier_Hopt (&ZIa);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: cv_const */
{
#line 336 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
if ((ZIa) & 1) MSG_duplicate_type_qualifier ();
(ZIcv) = ((ZIa) | 1);
#line 1522 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cv_const */
}
break;
case lex_restrict:
{
unsigned ZIa;
ADVANCE_LEXER;
ZRtype_Hqualifier_Hopt (&ZIa);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: cv_restrict */
{
#line 341 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
if ((ZIa) & 2) MSG_duplicate_type_qualifier ();
(ZIcv) = ((ZIa) | 2);
#line 1543 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cv_restrict */
}
break;
case lex_volatile:
{
unsigned ZIa;
ADVANCE_LEXER;
ZRtype_Hqualifier_Hopt (&ZIa);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: cv_volatile */
{
#line 346 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
if ((ZIa) & 4) MSG_duplicate_type_qualifier ();
(ZIcv) = ((ZIa) | 4);
#line 1564 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cv_volatile */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOcv = ZIcv;
}
static void
ZRtype_Hkey (int *ZOtag)
{
int ZItag;
switch (CURRENT_TERMINAL) {
case lex_enum:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_enum_tag */
{
#line 298 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_ENUM_TAG;
#line 1595 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_enum_tag */
}
break;
case lex_struct:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_struct_tag */
{
#line 296 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_STRUCT_TAG;
#line 1607 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_struct_tag */
}
break;
case lex_union:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_union_tag */
{
#line 297 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_UNION_TAG;
#line 1619 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_union_tag */
}
break;
default:
{
/* BEGINNING OF ACTION: key_type */
{
#line 295 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_GENERIC;
#line 1630 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_type */
}
break;
case 75:
return;
}
*ZOtag = ZItag;
}
static void
ZRtype_Hqualifier_Hopt (unsigned *ZOcv)
{
unsigned ZIcv;
switch (CURRENT_TERMINAL) {
case lex_const: case lex_restrict: case lex_volatile:
{
ZRtype_Hqualifier (&ZIcv);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: cv_none */
{
#line 332 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcv) = 0;
#line 1663 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cv_none */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOcv = ZIcv;
}
static void
ZRconstant_Hvalue (SID_STRING *ZOs)
{
SID_STRING ZIs;
switch (CURRENT_TERMINAL) {
case lex_exclaim:
{
SID_STRING ZIa;
ADVANCE_LEXER;
ZRconstant_Hvalue (&ZIa);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: value_not */
{
#line 456 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIs) = string_concat ("!", (ZIa));
#line 1700 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: value_not */
}
break;
case lex_insert:
{
/* BEGINNING OF EXTRACT: insert */
{
#line 243 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 1711 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: insert */
ADVANCE_LEXER;
}
break;
case lex_minus:
{
SID_STRING ZIa;
ADVANCE_LEXER;
ZRconstant_Hvalue (&ZIa);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: value_negate */
{
#line 452 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIs) = string_concat ("-", (ZIa));
#line 1732 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: value_negate */
}
break;
case lex_name:
{
SID_STRING ZIa;
/* BEGINNING OF EXTRACT: name */
{
#line 238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIa = token_value;
#line 1745 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: name */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: value_nat */
{
#line 460 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = search_hash (exps, (ZIa), any_version);
if (p == null) {
MSG_undefined_nat ((ZIa));
} else if (p->objtype != OBJ_NAT) {
MSG_not_a_nat ((ZIa));
}
(ZIs) = (ZIa);
#line 1760 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: value_nat */
}
break;
case lex_number:
{
/* BEGINNING OF EXTRACT: number */
{
#line 239 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 1771 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: number */
ADVANCE_LEXER;
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOs = ZIs;
}
static void
ZR318 (SID_IDENTIFIER ZI312, SID_TYPE ZI313, SID_IDENTIFIER *ZO316, SID_TYPE *ZO317)
{
SID_IDENTIFIER ZI316;
SID_TYPE ZI317;
ZL2_318:;
switch (CURRENT_TERMINAL) {
case lex_open_Hround: case lex_open_Hsquare:
{
SID_IDENTIFIER ZIid;
ZIid = ZI312;
/* BEGINNING OF INLINE: 334 */
{
switch (CURRENT_TERMINAL) {
case lex_open_Hsquare:
{
SID_TYPE ZIs;
SID_TYPE ZIt;
ZRarray_Hoperator (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZI313), (ZIs));
#line 1821 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF INLINE: 318 */
ZI312 = ZIid;
ZI313 = ZIt;
goto ZL2_318;
/* END OF INLINE: 318 */
}
/*UNREACHED*/
case lex_open_Hround:
{
SID_TYPE ZIs;
SID_TYPE ZIt;
ZRfunction_Hoperator (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZI313), (ZIs));
#line 1846 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF INLINE: 318 */
ZI312 = ZIid;
ZI313 = ZIt;
goto ZL2_318;
/* END OF INLINE: 318 */
}
/*UNREACHED*/
default:
goto ZL1;
}
}
/* END OF INLINE: 334 */
}
/*UNREACHED*/
default:
{
ZI316 = ZI312;
ZI317 = ZI313;
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZO316 = ZI316;
*ZO317 = ZI317;
}
static void
ZRspec_Hcommand (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
switch (CURRENT_TERMINAL) {
case lex_base_Hapi:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: declare_base */
{
#line 660 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = null;
#line 1895 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_base */
}
break;
case lex_define:
{
SID_IDENTIFIER ZIid;
SID_STRING ZIp;
SID_STRING ZIs;
ADVANCE_LEXER;
ZRidentifier (&ZIid);
ZRdefine_Hparam_Hclause (&ZIp);
ZRconstant_Hvalue (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: declare_define */
{
#line 676 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
char *def;
object *p = make_exp ((ZIid).iname, (ZIid).ivers, OBJ_DEFINE);
if ((ZIp)) {
if (*(ZIp)) {
def = string_printf ("(%s) %s", (ZIp), (ZIs));
} else {
def = string_printf ("() %s", (ZIs));
}
} else {
def = string_printf (" %s", (ZIs));
}
p->u.u_str = def;
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, p, OBJ_EXTERN);
#line 1931 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_define */
}
break;
case lex_enumerate:
{
int ZItag;
SID_IDENTIFIER ZIid;
SID_COMMAND ZIe;
ADVANCE_LEXER;
ZRenum_Hcommand (&ZItag);
ZRidentifier (&ZIid);
switch (CURRENT_TERMINAL) {
case lex_assign:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_open_Hbrace:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRenumerator_Hlist (&ZIe);
switch (CURRENT_TERMINAL) {
case lex_close_Hbrace:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: declare_enum */
{
#line 692 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
type *t = make_type ((ZIid).iname, (ZIid).ivers, (ZItag));
t->v.obj2 = (ZIe);
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, t->u.obj, OBJ_TYPE);
#line 1980 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_enum */
}
break;
case lex_field:
{
int ZItag;
SID_IDENTIFIER ZIid;
int ZIe;
SID_TYPE ZIt;
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ADVANCE_LEXER;
ZRtype_Hcommand (&ZItag);
ZRidentifier (&ZIid);
ZRfield_Hexact (&ZIe);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: begin_field */
{
#line 784 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = find_type ((ZIid).iname, any_version, (ZItag), 0);
if ((ZIt) == null) {
(ZIt) = make_type ((ZIid).iname, (ZIid).ivers, (ZItag));
(ZIa) = make_token ((ZIid).ename, (ZIid).evers, (ZIt)->u.obj, OBJ_TYPE);
} else {
(ZIa) = null;
}
(ZIt) = expand_type ((ZIt));
switch ((ZIt)->id) {
case TYPE_STRUCT :
case TYPE_UNION :
case TYPE_STRUCT_TAG :
case TYPE_UNION_TAG : {
break;
}
default : {
MSG_illegal_field_type ((ZIid).iname);
break;
}
}
crt_field_name = (ZIt)->u.obj->name;
#line 2027 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: begin_field */
switch (CURRENT_TERMINAL) {
case lex_open_Hbrace:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRfield_Hlist (ZIt, &ZIb);
switch (CURRENT_TERMINAL) {
case lex_close_Hbrace:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: end_field */
{
#line 808 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
if ((ZIe)) {
if ((ZIt)->v.obj2) {
char *nm = crt_field_name;
MSG_redefinition_of_type (nm);
}
if ((ZIb) == null) {
MSG_empty_struct_union_definition ();
} else {
(ZIt)->v.obj2 = (ZIb);
}
if ((ZIa) == null) {
/* This is a hack, do properly later */
(ZIc) = make_object (NULL, OBJ_TYPE);
(ZIc)->u.u_type = (ZIt);
if (streq ((ZIc)->filename, (ZIt)->u.obj->filename)) {
(ZIt)->state = 1;
} else {
(ZIt)->state = 3;
}
} else {
(ZIc) = (ZIa);
}
} else {
(ZIc) = join_object ((ZIa), (ZIb));
}
crt_field_name = null;
#line 2078 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: end_field */
}
break;
case lex_implement:
{
int ZIcmd;
SID_STRING ZIs;
SID_STRING ZIkey;
ADVANCE_LEXER;
/* BEGINNING OF ACTION: cmd_implement */
{
#line 588 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcmd) = OBJ_IMPLEMENT;
#line 2094 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cmd_implement */
ZRsubset_Hname (&ZIs);
ZRsubset_Hkey (&ZIkey);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: include_subset */
{
#line 626 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_subset ((ZIs));
update_time (crt_object, p);
(ZIc) = make_object ((ZIkey), (ZIcmd));
(ZIc)->u.u_obj = p;
#line 2111 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: include_subset */
}
break;
case lex_macro:
{
int ZIlv;
SID_TYPE ZIs;
SID_IDENTIFIER ZIid;
SID_TYPE ZIp;
SID_TYPE ZIu;
SID_TYPE ZIv;
SID_TYPE ZIq;
SID_TYPE ZIt;
ADVANCE_LEXER;
ZRobject_Hqualifier (&ZIlv);
ZRqualified_Htype (&ZIs);
ZRmacro_Hdeclarator (&ZIid, &ZIp);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIu) = inject_type ((ZIp), (ZIs));
#line 2140 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF ACTION: type_lvalue */
{
#line 407 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIv) = make_subtype ((ZIu), (ZIlv));
#line 2148 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_lvalue */
ZR287 (&ZIq);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZIq), (ZIv));
#line 2161 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF ACTION: declare_macro */
{
#line 722 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p;
int cmd = OBJ_MACRO;
if ((ZIt)->id != TYPE_PROC) cmd = OBJ_EXP;
p = make_exp ((ZIid).iname, (ZIid).ivers, cmd);
p->u.u_type = check_type ((ZIt), cmd);
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, p, cmd);
#line 2174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_macro */
}
break;
case lex_nat:
{
ADVANCE_LEXER;
ZRnat_Hdeclarator_Hlist (&ZIc);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_statement:
{
SID_IDENTIFIER ZIid;
SID_TYPE ZIt;
ADVANCE_LEXER;
ZRidentifier (&ZIid);
ZR287 (&ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: declare_stmt */
{
#line 754 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_exp ((ZIid).iname, (ZIid).ivers, OBJ_STATEMENT);
p->u.u_type = check_type ((ZIt), OBJ_STATEMENT);
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, p, OBJ_STATEMENT);
#line 2208 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_stmt */
}
break;
case lex_token:
{
SID_IDENTIFIER ZIid;
SID_STRING ZIs;
ADVANCE_LEXER;
ZRidentifier (&ZIid);
switch (CURRENT_TERMINAL) {
case lex_insert:
/* BEGINNING OF EXTRACT: insert */
{
#line 243 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 2226 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: insert */
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: declare_token */
{
#line 760 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_exp ((ZIid).iname, (ZIid).ivers, OBJ_TOKEN);
p->u.u_str = (ZIs);
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, p, OBJ_TOKEN);
#line 2244 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_token */
}
break;
case lex_type:
{
ADVANCE_LEXER;
ZRtype_Hdeclarator_Hlist (&ZIc);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_typedef:
{
ADVANCE_LEXER;
ZR322 (&ZIc);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_use:
{
int ZIcmd;
ADVANCE_LEXER;
/* BEGINNING OF ACTION: cmd_use */
{
#line 589 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcmd) = OBJ_USE;
#line 2278 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cmd_use */
ZR323 (&ZIcmd, &ZIc);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_constant: case lex_exp:
{
int ZIcmd;
int ZIlv1;
int ZIlv;
SID_TYPE ZIt;
ZRexp_Hcommand (&ZIcmd);
ZRobject_Hqualifier (&ZIlv1);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: key_exp */
{
#line 311 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
if ((ZIcmd) == OBJ_CONST) {
if ((ZIlv1) == TYPE_LVALUE) {
MSG_constant_cant_be_lvalue ();
}
(ZIlv) = TYPE_RVALUE;
} else if ((ZIcmd) == OBJ_EXTERN) {
(ZIlv) = TYPE_LVALUE;
} else {
(ZIlv) = (ZIlv1);
}
#line 2315 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_exp */
ZRqualified_Htype (&ZIt);
ZRexp_Hdeclarator_Hlist (ZIcmd, ZIt, ZIlv, &ZIc);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_func:
{
int ZIcmd;
SID_TYPE ZIs;
SID_IDENTIFIER ZIid;
SID_TYPE ZIp;
SID_TYPE ZIt;
ZRfunc_Hcommand (&ZIcmd);
ZRqualified_Htype (&ZIs);
ZRdeclarator (&ZIid, &ZIp);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZIp), (ZIs));
#line 2346 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF ACTION: declare_func */
{
#line 716 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_exp ((ZIid).iname, (ZIid).ivers, (ZIcmd));
p->u.u_type = check_type ((ZIt), OBJ_FUNC);
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, p, (ZIcmd));
#line 2356 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_func */
}
break;
case lex_set:
{
ZRsubset_Hcommand (&ZIc);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZRfunc_Hcommand (int *ZOcmd)
{
int ZIcmd;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
switch (CURRENT_TERMINAL) {
case lex_func:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR348 (&ZIcmd);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOcmd = ZIcmd;
}
static void
ZR320 (SID_STRING *ZIa, SID_STRING *ZOs)
{
SID_STRING ZIs;
switch (CURRENT_TERMINAL) {
case lex_comma:
{
SID_STRING ZIb;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIb = token_value;
#line 2430 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR321 (ZIa, &ZIb, &ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: api_name */
{
#line 562 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIs) = subset_name ((*ZIa), NULL, NULL);
#line 2452 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: api_name */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOs = ZIs;
}
static void
ZR321 (SID_STRING *ZIa, SID_STRING *ZIb, SID_STRING *ZOs)
{
SID_STRING ZIs;
switch (CURRENT_TERMINAL) {
case lex_comma:
{
SID_STRING ZIc;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIc = token_value;
#line 2485 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: subset_name */
{
#line 570 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
if ((*ZIb) [0] == 0) (*ZIb) = null;
(ZIs) = subset_name ((*ZIa), (*ZIb), (ZIc));
#line 2499 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: subset_name */
}
break;
default:
{
/* BEGINNING OF ACTION: file_name */
{
#line 566 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIs) = subset_name ((*ZIa), (*ZIb), NULL);
#line 2511 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: file_name */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOs = ZIs;
}
static void
ZRarray_Hoperator (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_STRING ZIa;
switch (CURRENT_TERMINAL) {
case lex_open_Hsquare:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF INLINE: 141 */
{
switch (CURRENT_TERMINAL) {
case lex_name: case lex_number: case lex_insert:
case lex_exclaim: case lex_minus:
{
ZRconstant_Hvalue (&ZIa);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: value_none */
{
#line 448 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIa) = "";
#line 2565 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: value_none */
}
break;
}
}
/* END OF INLINE: 141 */
switch (CURRENT_TERMINAL) {
case lex_close_Hsquare:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: type_array */
{
#line 382 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((type *) null, TYPE_ARRAY);
(ZIt)->v.str = (ZIa);
#line 2586 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_array */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZR322 (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
switch (CURRENT_TERMINAL) {
case lex_promote:
{
SID_TYPE ZIt;
SID_IDENTIFIER ZIid;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRqualified_Htype (&ZIt);
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRidentifier (&ZIid);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: declare_promote */
{
#line 736 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
type *t = make_type ((ZIid).iname, (ZIid).ivers, TYPE_PROMOTE);
type *s = expand_type ((ZIt));
switch (s->id) {
case TYPE_INT :
case TYPE_SIGNED :
case TYPE_UNSIGNED : {
break;
}
default : {
MSG_non_integral_promotion_type ();
break;
}
}
t->v.next = s;
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, t->u.obj, OBJ_EXTERN);
#line 2652 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_promote */
}
break;
case lex_special:
{
SID_STRING ZIs;
SID_TYPE ZIt;
SID_IDENTIFIER ZIid;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 2677 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: type_special */
{
#line 369 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = special_type ((ZIs));
#line 2697 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_special */
ZRidentifier (&ZIid);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: declare_typedef */
{
#line 771 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
type *t = make_type ((ZIid).iname, (ZIid).ivers, TYPE_DEFINED);
t->v.next = check_type ((ZIt), OBJ_TYPE);
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, t->u.obj, OBJ_EXTERN);
#line 2712 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_typedef */
}
break;
case lex_name: case lex_char: case lex_const:
case lex_double: case lex_enum: case lex_float:
case lex_int: case lex_long: case lex_restrict:
case lex_short: case lex_signed: case lex_struct:
case lex_union: case lex_unsigned: case lex_void:
case lex_volatile:
{
SID_TYPE ZIs;
SID_IDENTIFIER ZIid;
SID_TYPE ZIp;
SID_TYPE ZIt;
ZRqualified_Htype (&ZIs);
ZRdeclarator (&ZIid, &ZIp);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZIp), (ZIs));
#line 2740 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF ACTION: declare_typedef */
{
#line 771 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
type *t = make_type ((ZIid).iname, (ZIid).ivers, TYPE_DEFINED);
t->v.next = check_type ((ZIt), OBJ_TYPE);
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, t->u.obj, OBJ_EXTERN);
#line 2750 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_typedef */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZR323 (int *ZIcmd, SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
switch (CURRENT_TERMINAL) {
case lex_string:
{
SID_STRING ZIs;
SID_STRING ZIkey;
ZRsubset_Hname (&ZIs);
ZRsubset_Hkey (&ZIkey);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: include_subset */
{
#line 626 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_subset ((ZIs));
update_time (crt_object, p);
(ZIc) = make_object ((ZIkey), (*ZIcmd));
(ZIc)->u.u_obj = p;
#line 2793 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: include_subset */
}
break;
case lex_open_Hround:
{
SID_STRING ZIs;
SID_STRING ZIkey1;
SID_STRING ZIkey;
ZRuse_Hsubset_Hname (&ZIs);
ZRsubset_Hkey (&ZIkey1);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: subset_next */
{
#line 560 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIkey) = string_concat ((ZIkey1), "G");
#line 2814 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: subset_next */
/* BEGINNING OF ACTION: include_subset */
{
#line 626 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_subset ((ZIs));
update_time (crt_object, p);
(ZIc) = make_object ((ZIkey), (*ZIcmd));
(ZIc)->u.u_obj = p;
#line 2825 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: include_subset */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZRmacro_Hparam_Hlist (SID_TYPE *ZOp)
{
SID_TYPE ZIp;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_TYPE ZIt;
SID_TYPE ZIq;
ZRmacro_Hparam_Hdeclaration (&ZIt);
/* BEGINNING OF INLINE: 163 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRmacro_Hparam_Hlist (&ZIq);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: type_list_none */
{
#line 418 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIq) = null;
#line 2876 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_list_none */
}
break;
case 75:
RESTORE_LEXER;
goto ZL1;
}
}
/* END OF INLINE: 163 */
/* BEGINNING OF ACTION: type_list_cons */
{
#line 427 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIp) = make_subtype ((ZIt), TYPE_LIST);
(ZIp)->v.next = (ZIq);
#line 2893 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_list_cons */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZR324 (SID_STRING *ZInm, int *ZIv, SID_IDENTIFIER *ZOid)
{
SID_IDENTIFIER ZIid;
switch (CURRENT_TERMINAL) {
case lex_or:
{
SID_STRING ZItnm;
int ZItv;
ADVANCE_LEXER;
ZRexternal_Hname (&ZItnm, &ZItv);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: make_id */
{
#line 523 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIid).iname = (*ZInm);
(ZIid).ivers = (*ZIv);
(ZIid).ename = (ZItnm);
(ZIid).evers = (ZItv);
#line 2930 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: make_id */
}
break;
default:
{
SID_STRING ZItnm;
/* BEGINNING OF ACTION: token_name */
{
#line 519 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItnm) = token_name ((*ZInm));
#line 2944 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: token_name */
/* BEGINNING OF ACTION: make_id */
{
#line 523 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIid).iname = (*ZInm);
(ZIid).ivers = (*ZIv);
(ZIid).ename = (ZItnm);
(ZIid).evers = (*ZIv);
#line 2955 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: make_id */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOid = ZIid;
}
static void
ZR325 (SID_STRING *ZOp)
{
SID_STRING ZIp;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: param_empty */
{
#line 494 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIp) = "";
#line 2984 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: param_empty */
}
break;
case lex_name:
{
ZRdefine_Hparam_Hlist (&ZIp);
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZR328 (SID_STRING *ZI326, SID_STRING *ZOp)
{
SID_STRING ZIp;
switch (CURRENT_TERMINAL) {
case lex_comma:
{
SID_STRING ZIq;
ADVANCE_LEXER;
ZRdefine_Hparam_Hlist (&ZIq);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: param_join */
{
#line 496 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIp) = string_printf ("%s, %s", (*ZI326), (ZIq));
#line 3038 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: param_join */
}
break;
default:
{
ZIp = *ZI326;
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRenum_Hcommand (int *ZOtag)
{
int ZItag;
switch (CURRENT_TERMINAL) {
case lex_enum:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_enum_tag */
{
#line 298 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_ENUM_TAG;
#line 3072 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_enum_tag */
}
break;
default:
{
/* BEGINNING OF ACTION: key_enum */
{
#line 301 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_ENUM;
#line 3083 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_enum */
}
break;
case 75:
return;
}
*ZOtag = ZItag;
}
static void
ZRenumerator (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_IDENTIFIER ZIid;
SID_STRING ZIs;
ZRidentifier (&ZIid);
/* BEGINNING OF INLINE: 220 */
{
switch (CURRENT_TERMINAL) {
case lex_equal:
{
ADVANCE_LEXER;
ZRconstant_Hvalue (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: value_none */
{
#line 448 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIs) = "";
#line 3127 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: value_none */
}
break;
case 75:
RESTORE_LEXER;
goto ZL1;
}
}
/* END OF INLINE: 220 */
/* BEGINNING OF ACTION: declare_enumerator */
{
#line 698 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p = make_exp ((ZIid).iname, (ZIid).ivers, OBJ_ENUMVAL);
p->u.u_str = (ZIs);
(ZIc) = make_token ((ZIid).ename, (ZIid).evers, p, OBJ_EXTERN);
#line 3145 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_enumerator */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZR329 (int *ZOcmd)
{
int ZIcmd;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
ADVANCE_LEXER;
ZR330 (&ZIcmd);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: cmd_exp */
{
#line 583 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcmd) = OBJ_EXP;
#line 3179 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cmd_exp */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOcmd = ZIcmd;
}
static void
ZRfield_Hdeclarator_Hlist (SID_TYPE ZIm, SID_TYPE ZIs, SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_IDENTIFIER ZIid;
SID_TYPE ZIp;
SID_TYPE ZIt;
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ZRfield_Hdeclarator (&ZIid, &ZIp);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZIp), (ZIs));
#line 3220 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
/* BEGINNING OF ACTION: declare_field */
{
#line 710 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
type *t = check_type ((ZIt), OBJ_FIELD);
field *f = make_field ((ZIid).iname, (ZIid).ivers, (ZIm), t);
(ZIa) = make_token ((ZIid).ename, (ZIid).evers, f->obj, OBJ_FIELD);
#line 3230 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_field */
/* BEGINNING OF INLINE: 239 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRfield_Hdeclarator_Hlist (ZIm, ZIs, &ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = null;
#line 3253 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
break;
}
}
/* END OF INLINE: 239 */
/* BEGINNING OF ACTION: command_join */
{
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = join_object ((ZIa), (ZIb));
#line 3266 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_join */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZR330 (int *ZOcmd)
{
int ZIcmd;
switch (CURRENT_TERMINAL) {
case lex_const:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: cmd_constant */
{
#line 582 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcmd) = OBJ_CONST;
#line 3298 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cmd_constant */
}
break;
case lex_extern:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: cmd_exp_extern */
{
#line 584 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcmd) = OBJ_EXTERN;
#line 3317 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cmd_exp_extern */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOcmd = ZIcmd;
}
static void
ZRfield_Hexact (int *ZOe)
{
int ZIe;
switch (CURRENT_TERMINAL) {
case lex_assign:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: bool_true */
{
#line 257 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIe) = 1;
#line 3348 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: bool_true */
}
break;
default:
{
/* BEGINNING OF ACTION: bool_false */
{
#line 256 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIe) = 0;
#line 3359 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: bool_false */
}
break;
case 75:
return;
}
*ZOe = ZIe;
}
static void
ZR333 (SID_TYPE *ZI331, SID_TYPE *ZOt)
{
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_const: case lex_restrict: case lex_volatile:
{
unsigned ZIcv;
ZRtype_Hqualifier (&ZIcv);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_qualify */
{
#line 402 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((*ZI331), TYPE_QUALIFIER);
(ZIt)->v.str = cv_qualifier [(ZIcv)];
#line 3391 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_qualify */
}
break;
default:
{
ZIt = *ZI331;
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZR335 (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
{
SID_TYPE ZIp;
ADVANCE_LEXER;
/* BEGINNING OF ACTION: type_list_empty */
{
#line 422 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
MSG_empty_parameter_list ();
(ZIp) = null;
#line 3429 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_list_empty */
/* BEGINNING OF ACTION: type_func */
{
#line 392 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((type *) null, TYPE_PROC);
(ZIt)->v.next = (ZIp);
#line 3438 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_func */
}
break;
case lex_name: case lex_char: case lex_const:
case lex_double: case lex_enum: case lex_float:
case lex_int: case lex_long: case lex_restrict:
case lex_short: case lex_signed: case lex_struct:
case lex_union: case lex_unsigned: case lex_void:
case lex_volatile:
{
SID_TYPE ZIp;
ZRparameter_Hlist (&ZIp);
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: type_func */
{
#line 392 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((type *) null, TYPE_PROC);
(ZIt)->v.next = (ZIp);
#line 3469 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_func */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRcommand_Hlist (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
ZL2_command_Hlist:;
switch (CURRENT_TERMINAL) {
case lex_base_Hapi: case lex_constant: case lex_define:
case lex_enumerate: case lex_exp: case lex_field:
case lex_func: case lex_implement: case lex_macro:
case lex_nat: case lex_set: case lex_statement:
case lex_token: case lex_type: case lex_typedef:
case lex_use:
{
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ZRspec_Hcommand (&ZIa);
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRcommand_Hlist (&ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: command_join */
{
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = join_object ((ZIa), (ZIb));
#line 3525 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_join */
}
break;
case lex_comment: case lex_insert: case lex_build_Hinsert:
case lex_if: case lex_ifdef: case lex_ifndef:
{
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ZRtext_Hcommand (&ZIa);
ZRcommand_Hlist (&ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: command_join */
{
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = join_object ((ZIa), (ZIb));
#line 3547 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_join */
}
break;
case lex_variable: case lex_info:
{
ZRvariable_Hcommand ();
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF INLINE: command-list */
goto ZL2_command_Hlist;
/* END OF INLINE: command-list */
}
/*UNREACHED*/
default:
{
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = null;
#line 3577 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZR338 (SID_STRING *ZI336, SID_TYPE *ZI337, SID_STRING *ZO306, SID_TYPE *ZO307)
{
SID_STRING ZI306;
SID_TYPE ZI307;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
SID_TYPE ZIs;
SID_TYPE ZIt;
ZRfunction_Hoperator (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((*ZI337), (ZIs));
#line 3615 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
ZR308 (*ZI336, ZIt, &ZI306, &ZI307);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
ZR308 (*ZI336, *ZI337, &ZI306, &ZI307);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZO306 = ZI306;
*ZO307 = ZI307;
}
static void
ZR339 (SID_TYPE *ZOq)
{
SID_TYPE ZIq;
switch (CURRENT_TERMINAL) {
case lex_ellipsis:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: type_list_ellipsis */
{
#line 432 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIq) = make_subtype (type_ellipsis, TYPE_LIST);
(ZIq)->v.next = null;
#line 3661 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_list_ellipsis */
}
break;
case lex_name: case lex_char: case lex_const:
case lex_double: case lex_enum: case lex_float:
case lex_int: case lex_long: case lex_restrict:
case lex_short: case lex_signed: case lex_struct:
case lex_union: case lex_unsigned: case lex_void:
case lex_volatile:
{
ZRparameter_Hlist (&ZIq);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOq = ZIq;
}
static void
ZR340 (int *ZOtag)
{
int ZItag;
switch (CURRENT_TERMINAL) {
case lex_arith:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_arith */
{
#line 306 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_ARITH;
#line 3713 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_arith */
}
break;
case lex_float:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_float */
{
#line 305 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_FLOAT;
#line 3732 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_float */
}
break;
case lex_int:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_int */
{
#line 302 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_INT;
#line 3751 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_int */
}
break;
case lex_scalar:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_scalar */
{
#line 307 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_SCALAR;
#line 3770 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_scalar */
}
break;
case lex_signed:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_signed */
{
#line 303 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_SIGNED;
#line 3789 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_signed */
}
break;
case lex_struct:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_struct */
{
#line 299 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_STRUCT;
#line 3808 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_struct */
}
break;
case lex_union:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_union */
{
#line 300 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_UNION;
#line 3827 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_union */
}
break;
case lex_unsigned:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_unsigned */
{
#line 304 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_UNSIGNED;
#line 3846 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_unsigned */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOtag = ZItag;
}
static void
ZRdirect_Hdeclarator (SID_IDENTIFIER *ZO316, SID_TYPE *ZO317)
{
SID_IDENTIFIER ZI316;
SID_TYPE ZI317;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
SID_IDENTIFIER ZIid;
SID_TYPE ZIt;
ADVANCE_LEXER;
ZRdeclarator (&ZIid, &ZIt);
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR318 (ZIid, ZIt, &ZI316, &ZI317);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_name:
{
SID_IDENTIFIER ZIid;
SID_TYPE ZIt;
ZRidentifier (&ZIid);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_none */
{
#line 357 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = null;
#line 3910 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_none */
ZR318 (ZIid, ZIt, &ZI316, &ZI317);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZO316 = ZI316;
*ZO317 = ZI317;
}
static void
ZRtype_Hcommand (int *ZOtag)
{
int ZItag;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
ADVANCE_LEXER;
ZR340 (&ZItag);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_struct:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_struct_tag */
{
#line 296 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_STRUCT_TAG;
#line 3957 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_struct_tag */
}
break;
case lex_union:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_union_tag */
{
#line 297 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_UNION_TAG;
#line 3969 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_union_tag */
}
break;
default:
{
/* BEGINNING OF ACTION: key_type */
{
#line 295 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZItag) = TYPE_GENERIC;
#line 3980 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_type */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOtag = ZItag;
}
static void
ZRtext_Hcommand (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
switch (CURRENT_TERMINAL) {
case lex_build_Hinsert:
{
SID_STRING ZIs;
/* BEGINNING OF EXTRACT: build-insert */
{
#line 244 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 4010 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: build-insert */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: declare_build_insert */
{
#line 672 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = make_object ((ZIs), OBJ_TEXT_SRC);
#line 4019 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_build_insert */
}
break;
case lex_comment:
{
SID_STRING ZIs;
/* BEGINNING OF EXTRACT: comment */
{
#line 242 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 4032 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: comment */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: declare_comment */
{
#line 664 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = make_object ((ZIs), OBJ_TEXT_INCL);
#line 4041 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_comment */
}
break;
case lex_insert:
{
SID_STRING ZIs;
/* BEGINNING OF EXTRACT: insert */
{
#line 243 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 4054 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: insert */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: declare_insert */
{
#line 668 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = make_object ((ZIs), OBJ_TEXT_INCL);
#line 4063 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: declare_insert */
}
break;
case lex_if: case lex_ifdef: case lex_ifndef:
{
SID_COMMAND ZIi;
SID_STRING ZIs;
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ZRif_Hcommand (&ZIi, &ZIs);
ZRcommand_Hlist (&ZIa);
/* BEGINNING OF INLINE: 293 */
{
switch (CURRENT_TERMINAL) {
case lex_else:
{
ADVANCE_LEXER;
ZRcommand_Hlist (&ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = null;
#line 4097 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
break;
case 75:
RESTORE_LEXER;
goto ZL1;
}
}
/* END OF INLINE: 293 */
switch (CURRENT_TERMINAL) {
case lex_endif:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: command_endif */
{
#line 859 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p, *q;
p = join_object ((ZIi), (ZIa));
if ((ZIb)) {
q = make_object ((ZIs), OBJ_IF);
q->u.u_num = CMD_ELSE;
p = join_object (p, q);
p = join_object (p, (ZIb));
}
q = make_object ((ZIs), OBJ_IF);
q->u.u_num = CMD_ENDIF;
(ZIc) = join_object (p, q);
#line 4130 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_endif */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZR347 (SID_IDENTIFIER *ZI345, SID_IDENTIFIER *ZOid, SID_TYPE *ZOt)
{
SID_IDENTIFIER ZIid;
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_colon:
{
ZRbitfield_Hoperator (&ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
ZIid = *ZI345;
}
break;
default:
{
SID_TYPE ZI344;
/* BEGINNING OF ACTION: type_none */
{
#line 357 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZI344) = null;
#line 4174 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_none */
ZR318 (*ZI345, ZI344, &ZIid, &ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOid = ZIid;
*ZOt = ZIt;
}
static void
ZRname_Hversion (int *ZOv)
{
int ZIv;
switch (CURRENT_TERMINAL) {
case lex_dot:
{
SID_STRING ZIn;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_number:
/* BEGINNING OF EXTRACT: number */
{
#line 239 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIn = token_value;
#line 4213 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: number */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: version_number */
{
#line 545 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIv) = atoi ((ZIn));
#line 4226 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: version_number */
}
break;
default:
{
/* BEGINNING OF ACTION: version_none */
{
#line 541 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIv) = no_version;
#line 4238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: version_none */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOv = ZIv;
}
static void
ZR348 (int *ZOcmd)
{
int ZIcmd;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
ADVANCE_LEXER;
ZR349 (&ZIcmd);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: cmd_func */
{
#line 585 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcmd) = OBJ_FUNC;
#line 4276 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cmd_func */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOcmd = ZIcmd;
}
static void
ZRdirect_Habstract_Hdeclarator (SID_STRING *ZO306, SID_TYPE *ZO307)
{
SID_STRING ZI306;
SID_TYPE ZI307;
switch (CURRENT_TERMINAL) {
case lex_name:
{
SID_STRING ZInm;
SID_TYPE ZIt;
/* BEGINNING OF EXTRACT: name */
{
#line 238 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZInm = token_value;
#line 4308 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: name */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: type_none */
{
#line 357 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = null;
#line 4317 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_none */
ZR308 (ZInm, ZIt, &ZI306, &ZI307);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_open_Hround:
{
SID_STRING ZI336;
SID_TYPE ZI337;
ADVANCE_LEXER;
ZRabstract_Hdeclarator (&ZI336, &ZI337);
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR338 (&ZI336, &ZI337, &ZI306, &ZI307);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
SID_STRING ZInm;
SID_TYPE ZIt;
/* BEGINNING OF ACTION: name_none */
{
#line 507 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZInm) = null;
#line 4361 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: name_none */
/* BEGINNING OF ACTION: type_none */
{
#line 357 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = null;
#line 4369 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_none */
ZR308 (ZInm, ZIt, &ZI306, &ZI307);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZO306 = ZI306;
*ZO307 = ZI307;
}
static void
ZRfield_Hdeclarator (SID_IDENTIFIER *ZOid, SID_TYPE *ZOt)
{
SID_IDENTIFIER ZIid;
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
SID_IDENTIFIER ZI341;
SID_TYPE ZI342;
ADVANCE_LEXER;
ZRdeclarator (&ZI341, &ZI342);
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR318 (ZI341, ZI342, &ZIid, &ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_colon:
{
ZRbitfield_Hoperator (&ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: id_anon */
{
#line 530 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
char *nm = string_printf ("%s%d", HIDDEN_NAME, anon_no++);
if (crt_field_name) {
nm = string_printf ("%s.%s", crt_field_name, nm);
}
(ZIid).iname = nm;
(ZIid).ivers = no_version;
(ZIid).ename = token_name (nm);
(ZIid).evers = no_version;
#line 4441 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: id_anon */
}
break;
case lex_name:
{
SID_IDENTIFIER ZI345;
ZRidentifier (&ZI345);
ZR347 (&ZI345, &ZIid, &ZIt);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_star:
{
SID_TYPE ZIp;
SID_TYPE ZIs;
ZRptr_Hoperator (&ZIp);
ZRdeclarator (&ZIid, &ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZIs), (ZIp));
#line 4474 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOid = ZIid;
*ZOt = ZIt;
}
static void
ZRvariable_Hcommand (void)
{
switch (CURRENT_TERMINAL) {
case lex_info:
{
SID_STRING ZIs;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 4508 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
case lex_variable:
{
SID_STRING ZInm;
/* BEGINNING OF EXTRACT: variable */
{
#line 241 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZInm = token_value;
#line 4526 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: variable */
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_equal:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR354 (&ZInm);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
default:
goto ZL1;
}
return;
ZL1:;
SAVE_LEXER (75);
return;
}
static void
ZR349 (int *ZOcmd)
{
int ZIcmd;
switch (CURRENT_TERMINAL) {
case lex_extern:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: cmd_func_extern */
{
#line 586 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcmd) = OBJ_EXTERN;
#line 4575 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cmd_func_extern */
}
break;
case lex_weak:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: cmd_func_weak */
{
#line 587 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcmd) = OBJ_WEAK;
#line 4594 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cmd_func_weak */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOcmd = ZIcmd;
}
static void
ZR350 (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
{
SID_TYPE ZIp;
ADVANCE_LEXER;
/* BEGINNING OF ACTION: type_list_none */
{
#line 418 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIp) = null;
#line 4628 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_list_none */
/* BEGINNING OF ACTION: type_macro */
{
#line 397 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((type *) null, TYPE_PROC);
(ZIt)->v.next = (ZIp);
#line 4637 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_macro */
}
break;
case lex_name: case lex_char: case lex_const:
case lex_double: case lex_enum: case lex_float:
case lex_int: case lex_long: case lex_lvalue:
case lex_restrict: case lex_short: case lex_signed:
case lex_struct: case lex_union: case lex_unsigned:
case lex_void: case lex_volatile:
{
SID_TYPE ZIp;
ZRmacro_Hparam_Hlist (&ZIp);
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: type_macro */
{
#line 397 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((type *) null, TYPE_PROC);
(ZIt)->v.next = (ZIp);
#line 4668 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_macro */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZR351 (SID_STRING *ZOkey)
{
SID_STRING ZIkey;
switch (CURRENT_TERMINAL) {
case lex_exclaim:
{
ADVANCE_LEXER;
ZR352 (&ZIkey);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_question:
{
ADVANCE_LEXER;
ZR353 (&ZIkey);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOkey = ZIkey;
}
static void
ZRdefine_Hparam_Hclause (SID_STRING *ZOp)
{
SID_STRING ZIp;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
ADVANCE_LEXER;
ZR325 (&ZIp);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: param_none */
{
#line 493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIp) = null;
#line 4747 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: param_none */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRexp_Hcommand (int *ZOcmd)
{
int ZIcmd;
switch (CURRENT_TERMINAL) {
case lex_constant:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: cmd_constant */
{
#line 582 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIcmd) = OBJ_CONST;
#line 4776 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: cmd_constant */
}
break;
case lex_exp:
{
ADVANCE_LEXER;
ZR329 (&ZIcmd);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOcmd = ZIcmd;
}
static void
ZR352 (SID_STRING *ZOkey)
{
SID_STRING ZIkey;
switch (CURRENT_TERMINAL) {
case lex_exclaim:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: subset_both */
{
#line 559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIkey) = "11";
#line 4824 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: subset_both */
}
break;
case lex_question:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: subset_first */
{
#line 557 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIkey) = "10";
#line 4843 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: subset_first */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOkey = ZIkey;
}
static void
ZRif_Hcommand (SID_COMMAND *ZOc, SID_STRING *ZOs)
{
SID_COMMAND ZIc;
SID_STRING ZIs;
switch (CURRENT_TERMINAL) {
case lex_if:
{
ADVANCE_LEXER;
ZRconstant_Hvalue (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: command_if */
{
#line 844 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = make_object ((ZIs), OBJ_IF);
(ZIc)->u.u_num = CMD_IF;
#line 4882 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_if */
}
break;
case lex_ifdef:
{
ADVANCE_LEXER;
ZRifdef_Hmacro_Hname (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: command_ifdef */
{
#line 849 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = make_object ((ZIs), OBJ_IF);
(ZIc)->u.u_num = CMD_IFDEF;
#line 4901 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_ifdef */
}
break;
case lex_ifndef:
{
ADVANCE_LEXER;
ZRifdef_Hmacro_Hname (&ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: command_ifndef */
{
#line 854 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = make_object ((ZIs), OBJ_IF);
(ZIc)->u.u_num = CMD_IFNDEF;
#line 4920 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_ifndef */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
*ZOs = ZIs;
}
static void
ZR353 (SID_STRING *ZOkey)
{
SID_STRING ZIkey;
switch (CURRENT_TERMINAL) {
case lex_exclaim:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: subset_second */
{
#line 558 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIkey) = "01";
#line 4959 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: subset_second */
}
break;
case lex_question:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: subset_none */
{
#line 556 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIkey) = "00";
#line 4978 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: subset_none */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOkey = ZIkey;
}
static void
ZR354 (SID_STRING *ZInm)
{
switch (CURRENT_TERMINAL) {
case lex_minus:
{
SID_STRING ZIs;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_number:
/* BEGINNING OF EXTRACT: number */
{
#line 239 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 5011 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: number */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: variable_minus */
{
#line 648 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
set_integer ((*ZInm), -atoi ((ZIs)));
#line 5024 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: variable_minus */
}
break;
case lex_number:
{
SID_STRING ZIs;
/* BEGINNING OF EXTRACT: number */
{
#line 239 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 5037 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: number */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: variable_plus */
{
#line 644 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
set_integer ((*ZInm), atoi ((ZIs)));
#line 5046 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: variable_plus */
}
break;
case lex_string:
{
SID_STRING ZIs;
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIs = token_value;
#line 5059 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: variable_string */
{
#line 640 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
set_string ((*ZInm), (ZIs));
#line 5068 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: variable_string */
}
break;
case 75:
return;
default:
goto ZL1;
}
return;
ZL1:;
SAVE_LEXER (75);
return;
}
static void
ZRbitfield_Hoperator (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_STRING ZIa;
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRconstant_Hvalue (&ZIa);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_bitfield */
{
#line 387 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((type *) null, TYPE_BITFIELD);
(ZIt)->v.str = (ZIa);
#line 5113 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_bitfield */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRuse_Hsubset_Hname (SID_STRING *ZOs)
{
SID_STRING ZIs;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_STRING ZIa;
SID_STRING ZIb;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIa = token_value;
#line 5150 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_comma:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIb = token_value;
#line 5178 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: file_name */
{
#line 566 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIs) = subset_name ((ZIa), (ZIb), NULL);
#line 5191 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: file_name */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOs = ZIs;
}
void
read_spec (SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
ZRsubset_Hcommand (&ZIc);
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_eof:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
goto ZL0;
ZL1:;
{
/* BEGINNING OF ACTION: syntax_error */
{
#line 881 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
MSG_syntax_error ();
#line 5239 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: syntax_error */
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = null;
#line 5247 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
ZL0:;
*ZOc = ZIc;
}
static void
ZRmacro_Hdeclarator (SID_IDENTIFIER *ZOid, SID_TYPE *ZOt)
{
SID_IDENTIFIER ZIid;
SID_TYPE ZIt;
switch (CURRENT_TERMINAL) {
case lex_name:
{
ZRidentifier (&ZIid);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_none */
{
#line 357 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = null;
#line 5274 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_none */
}
break;
case lex_star:
{
SID_TYPE ZIp;
SID_TYPE ZIs;
ZRptr_Hoperator (&ZIp);
ZRmacro_Hdeclarator (&ZIid, &ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_inject */
{
#line 373 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = inject_type ((ZIs), (ZIp));
#line 5295 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_inject */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOid = ZIid;
*ZOt = ZIt;
}
static void
ZRsubset_Hname (SID_STRING *ZOs)
{
SID_STRING ZIs;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
SID_STRING ZIa;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 240 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
ZIa = token_value;
#line 5331 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR320 (&ZIa, &ZIs);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOs = ZIs;
}
static void
ZRbuiltin_Htype (unsigned *ZOb)
{
unsigned ZIb;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
unsigned ZIa;
unsigned ZIc;
ZRtype_Hkeyword (&ZIa);
/* BEGINNING OF INLINE: 102 */
{
switch (CURRENT_TERMINAL) {
case lex_char: case lex_double: case lex_float:
case lex_int: case lex_long: case lex_short:
case lex_signed: case lex_unsigned: case lex_void:
{
unsigned ZId;
ZRbuiltin_Htype (&ZId);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: btype_join */
{
#line 276 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
while ((ZIa) & (ZId)) {
if ((ZIa) == BTYPE_LONG && allow_long_long) {
(ZIa) = BTYPE_LLONG;
} else {
MSG_duplicate_type_specifier ();
break;
}
}
(ZIc) = ((ZIa) | (ZId));
#line 5393 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_join */
}
break;
default:
{
ZIc = ZIa;
}
break;
case 75:
RESTORE_LEXER;
goto ZL1;
}
}
/* END OF INLINE: 102 */
ZIb = ZIc;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOb = ZIb;
}
static void
ZRobject_Hqualifier (int *ZOlv)
{
int ZIlv;
switch (CURRENT_TERMINAL) {
case lex_lvalue:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: key_lvalue */
{
#line 308 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIlv) = TYPE_LVALUE;
#line 5432 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_lvalue */
}
break;
default:
{
/* BEGINNING OF ACTION: key_rvalue */
{
#line 309 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIlv) = TYPE_RVALUE;
#line 5443 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: key_rvalue */
}
break;
case 75:
return;
}
*ZOlv = ZIlv;
}
static void
ZRfield_Hlist (SID_TYPE ZIm, SID_COMMAND *ZOc)
{
SID_COMMAND ZIc;
switch (CURRENT_TERMINAL) {
case lex_if: case lex_ifdef: case lex_ifndef:
{
SID_COMMAND ZIi;
SID_STRING ZIs;
SID_COMMAND ZIa;
SID_COMMAND ZIb;
SID_COMMAND ZIc1;
SID_COMMAND ZIc2;
ZRif_Hcommand (&ZIi, &ZIs);
ZRfield_Hlist (ZIm, &ZIa);
/* BEGINNING OF INLINE: 242 */
{
switch (CURRENT_TERMINAL) {
case lex_else:
{
ADVANCE_LEXER;
ZRfield_Hlist (ZIm, &ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = null;
#line 5491 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
break;
case 75:
RESTORE_LEXER;
goto ZL1;
}
}
/* END OF INLINE: 242 */
switch (CURRENT_TERMINAL) {
case lex_endif:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: command_endif */
{
#line 859 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
object *p, *q;
p = join_object ((ZIi), (ZIa));
if ((ZIb)) {
q = make_object ((ZIs), OBJ_IF);
q->u.u_num = CMD_ELSE;
p = join_object (p, q);
p = join_object (p, (ZIb));
}
q = make_object ((ZIs), OBJ_IF);
q->u.u_num = CMD_ENDIF;
(ZIc1) = join_object (p, q);
#line 5524 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_endif */
ZRfield_Hlist (ZIm, &ZIc2);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: command_join */
{
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = join_object ((ZIc1), (ZIc2));
#line 5537 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_join */
}
break;
case lex_name: case lex_char: case lex_const:
case lex_double: case lex_enum: case lex_float:
case lex_int: case lex_long: case lex_restrict:
case lex_short: case lex_signed: case lex_struct:
case lex_union: case lex_unsigned: case lex_void:
case lex_volatile:
{
SID_TYPE ZIt;
SID_COMMAND ZIa;
SID_COMMAND ZIb;
ZRqualified_Htype (&ZIt);
ZRfield_Hdeclarator_Hlist (ZIm, ZIt, &ZIa);
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
case 75:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRfield_Hlist (ZIm, &ZIb);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: command_join */
{
#line 602 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = join_object ((ZIa), (ZIb));
#line 5575 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_join */
}
break;
default:
{
/* BEGINNING OF ACTION: command_none */
{
#line 598 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIc) = null;
#line 5587 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: command_none */
}
break;
case 75:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOc = ZIc;
}
static void
ZRptr_Hoperator (SID_TYPE *ZOt)
{
SID_TYPE ZIt;
if ((CURRENT_TERMINAL) == 75) {
return;
}
{
unsigned ZIcv;
switch (CURRENT_TERMINAL) {
case lex_star:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRtype_Hqualifier_Hopt (&ZIcv);
if ((CURRENT_TERMINAL) == 75) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: type_ptr */
{
#line 377 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIt) = make_subtype ((type *) null, TYPE_PTR);
(ZIt)->v.str = cv_qualifier [(ZIcv)];
#line 5632 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: type_ptr */
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOt = ZIt;
}
static void
ZRtype_Hkeyword (unsigned *ZOb)
{
unsigned ZIb;
switch (CURRENT_TERMINAL) {
case lex_char:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: btype_char */
{
#line 266 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = BTYPE_CHAR;
#line 5657 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_char */
}
break;
case lex_double:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: btype_double */
{
#line 273 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = BTYPE_DOUBLE;
#line 5669 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_double */
}
break;
case lex_float:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: btype_float */
{
#line 272 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = BTYPE_FLOAT;
#line 5681 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_float */
}
break;
case lex_int:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: btype_int */
{
#line 268 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = BTYPE_INT;
#line 5693 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_int */
}
break;
case lex_long:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: btype_long */
{
#line 269 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = BTYPE_LONG;
#line 5705 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_long */
}
break;
case lex_short:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: btype_short */
{
#line 267 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = BTYPE_SHORT;
#line 5717 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_short */
}
break;
case lex_signed:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: btype_signed */
{
#line 270 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = BTYPE_SIGNED;
#line 5729 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_signed */
}
break;
case lex_unsigned:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: btype_unsigned */
{
#line 271 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = BTYPE_UNSIGNED;
#line 5741 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_unsigned */
}
break;
case lex_void:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: btype_void */
{
#line 274 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
(ZIb) = BTYPE_VOID;
#line 5753 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
}
/* END OF ACTION: btype_void */
}
break;
case 75:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (75);
return;
ZL0:;
*ZOb = ZIb;
}
/* BEGINNING OF TRAILER */
#line 886 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/tools/tspec/syntax.act"
#line 5775 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//tools/tspec/syntax.c"
/* END OF FILE */
syntax highlighted by Code2HTML, v. 0.9.1