/* * 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 * 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 */