/*
* Automatically generated from the files:
* /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.sid
* and
* /mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act
* by:
* /mnt/gmirror/ports/lang/TenDRA/work/tendra/obj/utilities/sid/sid
*/
/* BEGINNING OF HEADER */
#line 57 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
/*
* Copyright (c) 2004, The Tendra Project <http://www.ten15.org/>
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice unmodified, this list of conditions, and the following
* disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
* IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
* IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
* NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
* Crown Copyright (c) 1997
*
* This TenDRA(r) Computer Program is subject to Copyright
* owned by the United Kingdom Secretary of State for Defence
* acting through the Defence Evaluation and Research Agency
* (DERA). It is made available to Recipients with a
* royalty-free licence for its use, reproduction, transfer
* to other parties and amendment for any purpose not excluding
* product development provided that any such use et cetera
* shall be deemed to be acceptance of the following conditions:-
*
* (1) Its Recipients shall ensure that this Notice is
* reproduced upon any copies or amended versions of it;
*
* (2) Any amended version of it shall be clearly marked to
* show both the nature of and the organisation responsible
* for the relevant amendment or amendments;
*
* (3) Its onward transfer from a recipient to another
* party shall be deemed to be that party's acceptance of
* these conditions;
*
* (4) DERA gives no warranty or assurance as to its
* quality or suitability for any purpose and DERA accepts
* no liability whatsoever in relation to any use to which
* it may be put.
*
* $TenDRA: tendra/src/utilities/calculus/syntax.act,v 1.4 2004/03/12 03:08:04 bp Exp $
*/
#include "config.h"
#include "calculus.h"
#include "common.h"
#include "cstring.h"
#include "extra.h"
#include "lex.h"
#include "msgcat.h"
#include "syntax.h"
#include "type_ops.h"
/*
* PARSER TYPES
*
* These types give the implementations of the various types used
* in the syntax.
*/
typedef LIST ( ARGUMENT_P ) ARGUMENT_P_LIST;
typedef LIST ( COMPONENT_P ) COMPONENT_P_LIST;
typedef LIST ( ECONST_P ) ECONST_P_LIST;
typedef LIST ( ENUM_P ) ENUM_P_LIST;
typedef LIST ( FIELD_P ) FIELD_P_LIST;
typedef LIST ( IDENTITY_P ) IDENTITY_P_LIST;
typedef LIST ( MAP_P ) MAP_P_LIST;
typedef LIST ( PRIMITIVE_P ) PRIMITIVE_P_LIST;
typedef LIST ( STRUCTURE_P ) STRUCTURE_P_LIST;
typedef LIST ( UNION_P ) UNION_P_LIST;
/*
* COUNTER VARIABLES
*
* The variable enum_value is used to determine the value of enumerators.
* enum_max is used to record the maximum value of enum_value. Both are
* reset to zero at the end of each enumeration type. no_fields is used
* to count the number of field in each union. It is reset to zero at
* the end of each union type.
*/
static number enum_value = 0;
static number enum_max = 0;
static int no_fields = 0;
static LIST ( ECONST_P ) enum_list = NULL_list ( ECONST_P );
/*
* COMPILATION MODE
*
* We allow unreached code in the automatically generated sections.
*/
#if FS_TENDRA
#pragma TenDRA begin
#ifndef OLD_PRODUCER
#pragma TenDRA unreachable code allow
#endif
#endif
#line 132 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
/* BEGINNING OF FUNCTION DECLARATIONS */
static void ZR254 (number, number *);
static void ZRimport_Hitem (void);
static void ZR258 (number, number *);
static void ZRprimary_Hexp (number *);
static void ZR262 (number, number *);
static void ZR264 (int *);
static void ZR265 (int *);
static void ZR268 (CLASS_ID_P *);
static void ZR269 (string *);
static void ZRextra_Hlist (void);
static void ZRclass_Hid (CLASS_ID_P *);
static void ZRnew_Hitem_Hlist (void);
extern void extra_calculus (void);
static void ZRunion_Hlist (UNION_P_LIST *);
static void ZRshift_Hexp (number *);
static void ZRcomponent_Hdecl (TYPE_P, COMPONENT_P_LIST *);
static void ZRadd_Hexp (number *);
static void ZRstructure_Hsingle (STRUCTURE_P_LIST *);
static void ZRmap_Hlist (MAP_P_LIST *);
static void ZRprimitive_Hdefn (CLASS_ID_P, PRIMITIVE_P *);
static void ZRunary_Hexp (number *);
static void ZRand_Hexp (number *);
static void ZRargument_Hdecl (TYPE_P, ARGUMENT_P_LIST *);
static void ZRold_Hunit (void);
static void ZRenumerator_Hlist (ECONST_P_LIST *);
static void ZRcomponent_Hgroup (COMPONENT_P_LIST *);
static void ZRnew_Hunit (void);
static void ZRidentity_Hdefn (CLASS_ID_P, IDENTITY_P *);
static void ZRmult_Hexp (number *);
extern void read_calculus (void);
static void ZRtype (TYPE_P *);
static void ZRstructure_Hdefn (CLASS_ID_P, string, STRUCTURE_P *);
static void ZRcomponent_Hlist (COMPONENT_P_LIST *);
static void ZRextended_Htype (TYPE_P *);
static void ZRprimitive_Hlist (PRIMITIVE_P_LIST *);
static void ZR209 (string *);
static void ZRargument_Hlist (ARGUMENT_P_LIST *);
static void ZRexpression (number *);
static void ZRxor_Hexp (number *);
static void ZRidentity_Hlist (IDENTITY_P_LIST *);
static void ZRor_Hexp (number *);
static void ZRunion_Hsingle (UNION_P_LIST *);
static void ZRstructure_Hlist (STRUCTURE_P_LIST *);
static void ZRunion_Hdefn_Hold (CLASS_ID_P, UNION_P *);
static void ZRenum_Hsingle (ENUM_P_LIST *);
static void ZRfield_Hid_Hlist (int, FIELD_P_LIST *);
static void ZR242 (number, number *);
static void ZRfield_Hlist (FIELD_P_LIST *);
static void ZRunion_Hdefn_Hnew (CLASS_ID_P, UNION_P *);
static void ZR246 (number, number *);
static void ZR250 (number, number *);
/* BEGINNING OF STATIC VARIABLES */
/* BEGINNING OF FUNCTION DEFINITIONS */
static void
ZR254 (number ZI252, number *ZO253)
{
number ZI253;
ZL2_254:;
switch (CURRENT_TERMINAL) {
case lex_lshift:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRadd_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-lshift */
{
#line 483 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = (ZI252) << (ZIp);
#line 216 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-lshift */
/* BEGINNING OF INLINE: 254 */
ZI252 = ZIn;
goto ZL2_254;
/* END OF INLINE: 254 */
}
/*UNREACHED*/
case lex_rshift:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRadd_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-rshift */
{
#line 487 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = (ZI252) >> (ZIp);
#line 241 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-rshift */
/* BEGINNING OF INLINE: 254 */
ZI252 = ZIn;
goto ZL2_254;
/* END OF INLINE: 254 */
}
/*UNREACHED*/
default:
{
ZI253 = ZI252;
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO253 = ZI253;
}
static void
ZRimport_Hitem (void)
{
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
string ZIa;
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIa = string_copy ( token_buff );
#line 282 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR269 (&ZIa);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
return;
ZL1:;
SAVE_LEXER (49);
return;
}
static void
ZR258 (number ZI256, number *ZO257)
{
number ZI257;
ZL2_258:;
switch (CURRENT_TERMINAL) {
case lex_minus:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRmult_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-minus */
{
#line 479 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = (ZI256) - (ZIp);
#line 325 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-minus */
/* BEGINNING OF INLINE: 258 */
ZI256 = ZIn;
goto ZL2_258;
/* END OF INLINE: 258 */
}
/*UNREACHED*/
case lex_plus:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRmult_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-plus */
{
#line 475 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = (ZI256) + (ZIp);
#line 350 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-plus */
/* BEGINNING OF INLINE: 258 */
ZI256 = ZIn;
goto ZL2_258;
/* END OF INLINE: 258 */
}
/*UNREACHED*/
default:
{
ZI257 = ZI256;
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO257 = ZI257;
}
static void
ZRprimary_Hexp (number *ZOn)
{
number ZIn;
switch (CURRENT_TERMINAL) {
case lex_identifier:
{
string ZIe;
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIe = string_copy ( token_buff );
#line 390 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: exp-id */
{
#line 427 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
number n = 0;
LIST ( ECONST_P ) p = enum_list;
while ( !IS_NULL_list ( p ) ) {
ECONST_P q = DEREF_ptr ( HEAD_list ( p ) );
string s = DEREF_string ( ec_name ( q ) );
if ( streq ( s, (ZIe) ) ) {
n = DEREF_number ( ec_value ( q ) );
break;
}
p = TAIL_list ( p );
}
if ( IS_NULL_list ( p ) ) {
MSG_unknown_enumerator ((ZIe));
}
(ZIn) = n;
#line 413 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-id */
}
break;
case lex_number:
{
/* BEGINNING OF EXTRACT: number */
{
#line 234 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIn = token_value;
#line 425 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: number */
ADVANCE_LEXER;
}
break;
case lex_open_Hround:
{
ADVANCE_LEXER;
ZRexpression (&ZIn);
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
case lex_question:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: exp-crt */
{
#line 423 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = enum_value - 1;
#line 455 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-crt */
}
break;
case 49:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOn = ZIn;
}
static void
ZR262 (number ZI260, number *ZO261)
{
number ZI261;
ZL2_262:;
switch (CURRENT_TERMINAL) {
case lex_div:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRunary_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-div */
{
#line 457 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
if ( (ZIp) == 0 ) {
MSG_division_by_zero ();
(ZIn) = 0;
} else {
(ZIn) = (ZI260) / (ZIp);
}
#line 501 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-div */
/* BEGINNING OF INLINE: 262 */
ZI260 = ZIn;
goto ZL2_262;
/* END OF INLINE: 262 */
}
/*UNREACHED*/
case lex_rem:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRunary_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-rem */
{
#line 466 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
if ( (ZIp) == 0 ) {
MSG_division_by_zero ();
(ZIn) = 0;
} else {
(ZIn) = (ZI260) % (ZIp);
}
#line 531 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-rem */
/* BEGINNING OF INLINE: 262 */
ZI260 = ZIn;
goto ZL2_262;
/* END OF INLINE: 262 */
}
/*UNREACHED*/
case lex_star:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRunary_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-mult */
{
#line 453 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = (ZI260) * (ZIp);
#line 556 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-mult */
/* BEGINNING OF INLINE: 262 */
ZI260 = ZIn;
goto ZL2_262;
/* END OF INLINE: 262 */
}
/*UNREACHED*/
default:
{
ZI261 = ZI260;
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO261 = ZI261;
}
static void
ZR264 (int *ZOn)
{
int ZIn;
switch (CURRENT_TERMINAL) {
case lex_colon:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: three */
{
#line 263 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = 3;
#line 594 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: three */
}
break;
default:
{
/* BEGINNING OF ACTION: one */
{
#line 261 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = 1;
#line 605 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: one */
}
break;
case 49:
return;
}
*ZOn = ZIn;
}
static void
ZR265 (int *ZOn)
{
int ZIn;
switch (CURRENT_TERMINAL) {
case lex_hash:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: two */
{
#line 262 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = 2;
#line 629 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: two */
}
break;
default:
{
/* BEGINNING OF ACTION: one */
{
#line 261 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = 1;
#line 640 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: one */
}
break;
case 49:
return;
}
*ZOn = ZIn;
}
static void
ZR268 (CLASS_ID_P *ZI267)
{
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_list: case lex_ptr:
case lex_stack: case lex_vec: case lex_vec_Hptr:
{
IDENTITY_P ZIq;
IDENTITY_P_LIST ZIr;
IDENTITY_P_LIST ZIi;
ZRidentity_Hdefn (*ZI267, &ZIq);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: null-identity */
{
#line 600 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( IDENTITY_P );
#line 672 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-identity */
/* BEGINNING OF ACTION: join-identity */
{
#line 630 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIi) );
#line 680 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-identity */
/* BEGINNING OF ACTION: add-identity */
{
#line 1139 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->identities = APPEND_list ( algebra->identities, (ZIi) );
#line 688 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: add-identity */
}
break;
case lex_string:
{
PRIMITIVE_P ZIq;
PRIMITIVE_P_LIST ZIr;
PRIMITIVE_P_LIST ZIp;
ZRprimitive_Hdefn (*ZI267, &ZIq);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: null-primitive */
{
#line 559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( PRIMITIVE_P );
#line 709 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-primitive */
/* BEGINNING OF ACTION: join-primitive */
{
#line 589 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 717 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-primitive */
/* BEGINNING OF ACTION: add-primitive */
{
#line 1128 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->primitives = APPEND_list ( algebra->primitives, (ZIp) );
#line 725 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: add-primitive */
}
break;
case 49:
return;
default:
goto ZL1;
}
return;
ZL1:;
SAVE_LEXER (49);
return;
}
static void
ZR269 (string *ZIa)
{
switch (CURRENT_TERMINAL) {
case lex_colon_Hcolon:
{
string ZIi;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIi = string_copy ( token_buff );
#line 757 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: import-one */
{
#line 1088 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
import_type ( (*ZIa), (ZIi) );
#line 770 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: import-one */
}
break;
default:
{
/* BEGINNING OF ACTION: import-all */
{
#line 1077 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
import_algebra ( (*ZIa) );
#line 782 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: import-all */
}
break;
case 49:
return;
}
return;
ZL1:;
SAVE_LEXER (49);
return;
}
static void
ZRextra_Hlist (void)
{
ZL2_extra_Hlist:;
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_list: case lex_ptr:
case lex_stack: case lex_vec: case lex_vec_Hptr:
{
TYPE_P ZIt;
ZRtype (&ZIt);
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: make-extra */
{
#line 1066 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
UNUSED ( (ZIt) );
#line 822 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-extra */
/* BEGINNING OF INLINE: extra-list */
goto ZL2_extra_Hlist;
/* END OF INLINE: extra-list */
}
/*UNREACHED*/
case 49:
return;
default:
break;
}
return;
ZL1:;
SAVE_LEXER (49);
return;
}
static void
ZRclass_Hid (CLASS_ID_P *ZOi)
{
CLASS_ID_P ZIi;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
int ZIn;
string ZIc;
string ZIa;
/* BEGINNING OF INLINE: 157 */
{
switch (CURRENT_TERMINAL) {
case lex_colon:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: two */
{
#line 262 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = 2;
#line 864 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: two */
}
break;
case lex_hash:
{
ADVANCE_LEXER;
ZR264 (&ZIn);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: zero */
{
#line 260 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = 0;
#line 885 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: zero */
}
break;
}
}
/* END OF INLINE: 157 */
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIc = string_copy ( token_buff );
#line 900 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF INLINE: 160 */
{
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIa = string_copy ( token_buff );
#line 921 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
default:
{
/* BEGINNING OF ACTION: default-name */
{
#line 296 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIa) = (ZIc);
#line 945 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: default-name */
}
break;
}
}
/* END OF INLINE: 160 */
/* BEGINNING OF ACTION: make-class-id */
{
#line 308 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIi) = MAKE_ptr ( SIZE_cid );
MAKE_cid ( (ZIc), (ZIa), (ZIn), ( string ) crt_file_name, crt_line_no, (ZIi) );
#line 959 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-class-id */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOi = ZIi;
}
static void
ZRnew_Hitem_Hlist (void)
{
ZL2_new_Hitem_Hlist:;
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_enum: case lex_struct:
case lex_union: case lex_import: case lex_colon:
case lex_hash:
{
/* BEGINNING OF INLINE: 231 */
{
switch (CURRENT_TERMINAL) {
case lex_import:
{
ADVANCE_LEXER;
ZRimport_Hitem ();
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
case lex_identifier: case lex_colon: case lex_hash:
{
CLASS_ID_P ZI267;
ZRclass_Hid (&ZI267);
switch (CURRENT_TERMINAL) {
case lex_equal:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR268 (&ZI267);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_enum:
{
ENUM_P_LIST ZIe;
ZRenum_Hsingle (&ZIe);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: add-enum */
{
#line 1150 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->enumerations = APPEND_list ( algebra->enumerations, (ZIe) );
#line 1035 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: add-enum */
}
break;
case lex_struct:
{
STRUCTURE_P_LIST ZIs;
ZRstructure_Hsingle (&ZIs);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: add-structure */
{
#line 1161 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->structures = APPEND_list ( algebra->structures, (ZIs) );
#line 1054 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: add-structure */
}
break;
case lex_union:
{
UNION_P_LIST ZIu;
ZRunion_Hsingle (&ZIu);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: add-union */
{
#line 1172 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->unions = APPEND_list ( algebra->unions, (ZIu) );
#line 1073 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: add-union */
}
break;
default:
goto ZL1;
}
}
/* END OF INLINE: 231 */
/* BEGINNING OF INLINE: new-item-list */
goto ZL2_new_Hitem_Hlist;
/* END OF INLINE: new-item-list */
}
/*UNREACHED*/
case 49:
return;
default:
break;
}
return;
ZL1:;
SAVE_LEXER (49);
return;
}
void
extra_calculus (void)
{
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
ZRextra_Hlist ();
switch (CURRENT_TERMINAL) {
case lex_eof:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
return;
ZL1:;
{
/* BEGINNING OF ACTION: syntax-error */
{
#line 283 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
MSG_syntax_error ();
#line 1126 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: syntax-error */
}
}
static void
ZRunion_Hlist (UNION_P_LIST *ZOp)
{
UNION_P_LIST ZIp;
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_colon: case lex_hash:
{
CLASS_ID_P ZIi;
UNION_P ZIq;
UNION_P_LIST ZIr;
ZRclass_Hid (&ZIi);
ZRunion_Hdefn_Hold (ZIi, &ZIq);
ZRunion_Hlist (&ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: join-union */
{
#line 1054 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 1156 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-union */
}
break;
default:
{
/* BEGINNING OF ACTION: null-union */
{
#line 971 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = NULL_list ( UNION_P );
#line 1168 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-union */
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRshift_Hexp (number *ZO253)
{
number ZI253;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
number ZIn;
ZRadd_Hexp (&ZIn);
ZR254 (ZIn, &ZI253);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO253 = ZI253;
}
static void
ZRcomponent_Hdecl (TYPE_P ZIt, COMPONENT_P_LIST *ZOp)
{
COMPONENT_P_LIST ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
string ZIi;
string ZIv;
COMPONENT_P ZIq;
COMPONENT_P_LIST ZIr;
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIi = string_copy ( token_buff );
#line 1231 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF INLINE: 196 */
{
switch (CURRENT_TERMINAL) {
case lex_equal:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 246 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIv = string_copy ( token_buff );
#line 1252 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
default:
{
/* BEGINNING OF ACTION: null-string */
{
#line 272 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIv) = NULL;
#line 1269 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-string */
}
break;
}
}
/* END OF INLINE: 196 */
/* BEGINNING OF ACTION: make-component */
{
#line 722 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIq) = MAKE_ptr ( SIZE_cmp );
MAKE_cmp ( (ZIi), (ZIt), (ZIv), (ZIq) );
#line 1283 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-component */
/* BEGINNING OF INLINE: 198 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRcomponent_Hdecl (ZIt, &ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: null-component */
{
#line 710 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( COMPONENT_P );
#line 1306 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-component */
}
break;
}
}
/* END OF INLINE: 198 */
/* BEGINNING OF ACTION: join-component */
{
#line 735 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 1319 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-component */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRadd_Hexp (number *ZO257)
{
number ZI257;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
number ZIn;
ZRmult_Hexp (&ZIn);
ZR258 (ZIn, &ZI257);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO257 = ZI257;
}
static void
ZRstructure_Hsingle (STRUCTURE_P_LIST *ZOp)
{
STRUCTURE_P_LIST ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
CLASS_ID_P ZIi;
string ZIj;
STRUCTURE_P ZIq;
STRUCTURE_P_LIST ZIr;
switch (CURRENT_TERMINAL) {
case lex_struct:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRclass_Hid (&ZIi);
switch (CURRENT_TERMINAL) {
case lex_equal:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR209 (&ZIj);
ZRstructure_Hdefn (ZIi, ZIj, &ZIq);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: null-structure */
{
#line 758 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( STRUCTURE_P );
#line 1400 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-structure */
/* BEGINNING OF ACTION: join-structure */
{
#line 801 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 1408 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-structure */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRmap_Hlist (MAP_P_LIST *ZOp)
{
MAP_P_LIST ZIp;
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_string: case lex_list:
case lex_ptr: case lex_stack: case lex_vec:
case lex_vec_Hptr:
{
TYPE_P ZIt;
int ZIn;
string ZIi;
ARGUMENT_P_LIST ZIa;
MAP_P ZIq;
MAP_P_LIST ZIr;
ZRextended_Htype (&ZIt);
/* BEGINNING OF INLINE: 216 */
{
switch (CURRENT_TERMINAL) {
case lex_hash:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: one */
{
#line 261 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = 1;
#line 1448 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: one */
}
break;
default:
{
/* BEGINNING OF ACTION: zero */
{
#line 260 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = 0;
#line 1459 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: zero */
}
break;
case 49:
RESTORE_LEXER;
goto ZL1;
}
}
/* END OF INLINE: 216 */
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIi = string_copy ( token_buff );
#line 1477 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF INLINE: 217 */
{
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_string: case lex_list:
case lex_ptr: case lex_stack: case lex_vec:
case lex_vec_Hptr:
{
ZRargument_Hlist (&ZIa);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: null-argument */
{
#line 889 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIa) = NULL_list ( ARGUMENT_P );
#line 1513 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-argument */
}
break;
}
}
/* END OF INLINE: 217 */
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: make-map */
{
#line 948 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIq) = MAKE_ptr ( SIZE_map );
MAKE_map ( (ZIi), (ZIn), (ZIt), (ZIa), (ZIq) );
#line 1534 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-map */
ZRmap_Hlist (&ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: join-map */
{
#line 960 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 1547 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-map */
}
break;
default:
{
/* BEGINNING OF ACTION: null-map */
{
#line 936 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = NULL_list ( MAP_P );
#line 1559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-map */
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRprimitive_Hdefn (CLASS_ID_P ZIi, PRIMITIVE_P *ZOp)
{
PRIMITIVE_P ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
string ZIs;
switch (CURRENT_TERMINAL) {
case lex_string:
/* BEGINNING OF EXTRACT: string */
{
#line 246 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIs = string_copy ( token_buff );
#line 1593 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: string */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: make-primitive */
{
#line 570 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
TYPE r;
TYPE_P t;
(ZIp) = MAKE_ptr ( SIZE_prim );
MAKE_prim ( (ZIi), (ZIs), (ZIp) );
t = MAKE_ptr ( SIZE_type );
MAKE_type_primitive ( 0, (ZIp), r );
COPY_type ( t, r );
IGNORE register_type ( t );
#line 1620 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-primitive */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRunary_Hexp (number *ZOn)
{
number ZIn;
switch (CURRENT_TERMINAL) {
case lex_compl:
{
number ZIm;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_number:
/* BEGINNING OF EXTRACT: number */
{
#line 234 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIm = token_value;
#line 1650 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: number */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: exp-compl */
{
#line 449 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = ~(ZIm);
#line 1663 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-compl */
}
break;
case lex_minus:
{
number ZIm;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_number:
/* BEGINNING OF EXTRACT: number */
{
#line 234 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIm = token_value;
#line 1680 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: number */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: exp-neg */
{
#line 445 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = -(ZIm);
#line 1693 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-neg */
}
break;
case lex_plus:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_number:
/* BEGINNING OF EXTRACT: number */
{
#line 234 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIn = token_value;
#line 1708 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: number */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
case lex_identifier: case lex_number: case lex_open_Hround:
case lex_question:
{
ZRprimary_Hexp (&ZIn);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 49:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOn = ZIn;
}
static void
ZRand_Hexp (number *ZO249)
{
number ZI249;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
number ZIn;
ZRshift_Hexp (&ZIn);
ZR250 (ZIn, &ZI249);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO249 = ZI249;
}
static void
ZRargument_Hdecl (TYPE_P ZIt, ARGUMENT_P_LIST *ZOp)
{
ARGUMENT_P_LIST ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
string ZIi;
ARGUMENT_P ZIq;
ARGUMENT_P_LIST ZIr;
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIi = string_copy ( token_buff );
#line 1787 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: make-argument */
{
#line 900 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIq) = MAKE_ptr ( SIZE_arg );
MAKE_arg ( (ZIi), (ZIt), (ZIq) );
#line 1801 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-argument */
/* BEGINNING OF INLINE: 212 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRargument_Hdecl (ZIt, &ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: null-argument */
{
#line 889 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( ARGUMENT_P );
#line 1824 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-argument */
}
break;
}
}
/* END OF INLINE: 212 */
/* BEGINNING OF ACTION: join-argument */
{
#line 913 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 1837 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-argument */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRold_Hunit (void)
{
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
string ZIm;
PRIMITIVE_P_LIST ZIp;
IDENTITY_P_LIST ZIi;
STRUCTURE_P_LIST ZIs;
UNION_P_LIST ZIu;
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIm = string_copy ( token_buff );
#line 1869 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: set-main */
{
#line 1100 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
string nm = (ZIm);
if ( !new_format ) MSG_old_style_algebra_syntax ();
if ( find_algebra ( nm ) ) {
MSG_algebra_already_defined (nm);
}
algebra->name = nm;
#line 1887 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: set-main */
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_primitives:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRprimitive_Hlist (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: add-primitive */
{
#line 1128 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->primitives = APPEND_list ( algebra->primitives, (ZIp) );
#line 1921 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: add-primitive */
switch (CURRENT_TERMINAL) {
case lex_identities:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRidentity_Hlist (&ZIi);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: add-identity */
{
#line 1139 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->identities = APPEND_list ( algebra->identities, (ZIi) );
#line 1948 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: add-identity */
switch (CURRENT_TERMINAL) {
case lex_structures:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRstructure_Hlist (&ZIs);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: add-structure */
{
#line 1161 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->structures = APPEND_list ( algebra->structures, (ZIs) );
#line 1975 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: add-structure */
switch (CURRENT_TERMINAL) {
case lex_unions:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRunion_Hlist (&ZIu);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: add-union */
{
#line 1172 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->unions = APPEND_list ( algebra->unions, (ZIu) );
#line 2002 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: add-union */
switch (CURRENT_TERMINAL) {
case lex_extras:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRextra_Hlist ();
switch (CURRENT_TERMINAL) {
case lex_hash:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
return;
ZL1:;
SAVE_LEXER (49);
return;
}
static void
ZRenumerator_Hlist (ECONST_P_LIST *ZOp)
{
ECONST_P_LIST ZIp;
switch (CURRENT_TERMINAL) {
case lex_identifier:
{
string ZIs;
ECONST_P ZIq;
ECONST_P_LIST ZIr;
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIs = string_copy ( token_buff );
#line 2054 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
ADVANCE_LEXER;
/* BEGINNING OF INLINE: 187 */
{
switch (CURRENT_TERMINAL) {
case lex_equal:
{
number ZIn;
ADVANCE_LEXER;
ZRexpression (&ZIn);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: set-econst */
{
#line 548 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
enum_value = (ZIn);
#line 2076 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: set-econst */
}
break;
default:
break;
}
}
/* END OF INLINE: 187 */
/* BEGINNING OF ACTION: make-econst */
{
#line 521 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
number v = enum_value++;
if ( v > enum_max ) enum_max = v;
(ZIq) = MAKE_ptr ( SIZE_ec );
MAKE_ec ( (ZIs), v, (ZIq) );
CONS_ptr ( (ZIq), enum_list, enum_list );
#line 2095 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-econst */
/* BEGINNING OF INLINE: 188 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRenumerator_Hlist (&ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: null-econst */
{
#line 510 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( ECONST_P );
#line 2118 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-econst */
}
break;
}
}
/* END OF INLINE: 188 */
/* BEGINNING OF ACTION: join-econst */
{
#line 537 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 2131 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-econst */
}
break;
default:
{
/* BEGINNING OF ACTION: null-econst */
{
#line 510 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = NULL_list ( ECONST_P );
#line 2143 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-econst */
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRcomponent_Hgroup (COMPONENT_P_LIST *ZOp)
{
COMPONENT_P_LIST ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
switch (CURRENT_TERMINAL) {
case lex_open_Hbrace:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRcomponent_Hlist (&ZIp);
switch (CURRENT_TERMINAL) {
case lex_close_Hbrace:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRnew_Hunit (void)
{
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
string ZIm;
switch (CURRENT_TERMINAL) {
case lex_algebra:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: set-new-unit */
{
#line 1194 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
new_format = 1;
#line 2216 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: set-new-unit */
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIm = string_copy ( token_buff );
#line 2226 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: set-main */
{
#line 1100 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
string nm = (ZIm);
if ( !new_format ) MSG_old_style_algebra_syntax ();
if ( find_algebra ( nm ) ) {
MSG_algebra_already_defined (nm);
}
algebra->name = nm;
#line 2244 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: set-main */
/* BEGINNING OF INLINE: 233 */
{
switch (CURRENT_TERMINAL) {
case lex_open_Hround:
{
number ZIa;
number ZIb;
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_number:
/* BEGINNING OF EXTRACT: number */
{
#line 234 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIa = token_value;
#line 2263 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: number */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_dot:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_number:
/* BEGINNING OF EXTRACT: number */
{
#line 234 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIb = token_value;
#line 2285 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: number */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_close_Hround:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: set-version */
{
#line 1116 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
algebra->major_no = ( int ) (ZIa);
algebra->minor_no = ( int ) (ZIb);
#line 2306 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: set-version */
}
break;
default:
break;
}
}
/* END OF INLINE: 233 */
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRnew_Hitem_Hlist ();
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
return;
ZL1:;
SAVE_LEXER (49);
return;
}
static void
ZRidentity_Hdefn (CLASS_ID_P ZIi, IDENTITY_P *ZOp)
{
IDENTITY_P ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
TYPE_P ZIt;
ZRtype (&ZIt);
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: make-identity */
{
#line 611 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
TYPE r;
TYPE_P t;
(ZIp) = MAKE_ptr ( SIZE_ident );
MAKE_ident ( (ZIi), (ZIt), (ZIp) );
t = MAKE_ptr ( SIZE_type );
MAKE_type_ident ( 0, (ZIp), r );
COPY_type ( t, r );
IGNORE register_type ( t );
#line 2369 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-identity */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRmult_Hexp (number *ZO261)
{
number ZI261;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
number ZIn;
ZRunary_Hexp (&ZIn);
ZR262 (ZIn, &ZI261);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO261 = ZI261;
}
void
read_calculus (void)
{
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
/* BEGINNING OF ACTION: set-old-unit */
{
#line 1183 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
new_format = 0;
#line 2419 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: set-old-unit */
/* BEGINNING OF INLINE: 236 */
{
switch (CURRENT_TERMINAL) {
case lex_algebra:
{
ZRnew_Hunit ();
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case lex_identifier:
{
ZRold_Hunit ();
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
goto ZL1;
}
}
/* END OF INLINE: 236 */
switch (CURRENT_TERMINAL) {
case lex_eof:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
return;
ZL1:;
{
/* BEGINNING OF ACTION: syntax-error */
{
#line 283 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
MSG_syntax_error ();
#line 2464 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: syntax-error */
}
}
static void
ZRtype (TYPE_P *ZOt)
{
TYPE_P ZIt;
switch (CURRENT_TERMINAL) {
case lex_identifier:
{
string ZIi;
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIi = string_copy ( token_buff );
#line 2485 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: find-type */
{
#line 331 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIt) = find_type ( algebra, (ZIi) );
#line 2494 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: find-type */
}
break;
case lex_list:
{
TYPE_P ZIs;
ADVANCE_LEXER;
ZRtype (&ZIs);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: list-type */
{
#line 353 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIt) = compound_type ( type_list_tag, (ZIs), 0 );
#line 2514 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: list-type */
}
break;
case lex_ptr:
{
TYPE_P ZIs;
ADVANCE_LEXER;
ZRtype (&ZIs);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: ptr-type */
{
#line 342 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIt) = compound_type ( type_ptr_tag, (ZIs), 0 );
#line 2534 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: ptr-type */
}
break;
case lex_stack:
{
TYPE_P ZIs;
ADVANCE_LEXER;
ZRtype (&ZIs);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: stack-type */
{
#line 364 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIt) = compound_type ( type_stack_tag, (ZIs), 0 );
#line 2554 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: stack-type */
}
break;
case lex_vec:
{
TYPE_P ZIs;
ADVANCE_LEXER;
ZRtype (&ZIs);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: vec-type */
{
#line 375 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIt) = compound_type ( type_vec_tag, (ZIs), 0 );
#line 2574 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: vec-type */
}
break;
case lex_vec_Hptr:
{
TYPE_P ZIs;
ADVANCE_LEXER;
ZRtype (&ZIs);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: vec-ptr-type */
{
#line 386 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIt) = compound_type ( type_vec_ptr_tag, (ZIs), 0 );
#line 2594 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: vec-ptr-type */
}
break;
case 49:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
{
/* BEGINNING OF ACTION: error-type */
{
#line 411 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
MSG_type_expected ();
(ZIt) = find_type ( algebra, "ERROR!" );
#line 2613 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: error-type */
}
ZL0:;
*ZOt = ZIt;
}
static void
ZRstructure_Hdefn (CLASS_ID_P ZIi, string ZIj, STRUCTURE_P *ZOp)
{
STRUCTURE_P ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
COMPONENT_P_LIST ZIc;
ZRcomponent_Hgroup (&ZIc);
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: make-structure */
{
#line 770 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
TYPE r;
TYPE_P t;
string nm = (ZIj);
STRUCTURE_P str = NULL_ptr ( STRUCTURE );
if ( nm ) {
r = DEREF_type ( find_type ( algebra, nm ) );
if ( IS_type_structure ( r ) ) {
str = DEREF_ptr ( type_structure_struc ( r ) );
(ZIc) = ADD_list ( DEREF_list ( str_defn ( str ) ), (ZIc),
SIZE_ptr ( COMPONENT ) );
} else {
MSG_cant_inherit_from (nm);
}
}
(ZIp) = MAKE_ptr ( SIZE_str );
MAKE_str ( (ZIi), str, (ZIc), 0, (ZIp) );
t = MAKE_ptr ( SIZE_type );
MAKE_type_structure ( 0, (ZIp), r );
COPY_type ( t, r );
IGNORE register_type ( t );
#line 2667 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-structure */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRcomponent_Hlist (COMPONENT_P_LIST *ZOp)
{
COMPONENT_P_LIST ZIp;
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_list: case lex_ptr:
case lex_stack: case lex_vec: case lex_vec_Hptr:
{
TYPE_P ZIt;
COMPONENT_P_LIST ZIq;
COMPONENT_P_LIST ZIr;
ZRtype (&ZIt);
ZRcomponent_Hdecl (ZIt, &ZIq);
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRcomponent_Hlist (&ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: link-component */
{
#line 747 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = APPEND_list ( (ZIq), (ZIr) );
#line 2714 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: link-component */
}
break;
default:
{
/* BEGINNING OF ACTION: null-component */
{
#line 710 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = NULL_list ( COMPONENT_P );
#line 2726 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-component */
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRextended_Htype (TYPE_P *ZOt)
{
TYPE_P ZIt;
switch (CURRENT_TERMINAL) {
case lex_string:
{
string ZIs;
/* BEGINNING OF EXTRACT: string */
{
#line 246 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIs = string_copy ( token_buff );
#line 2757 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: string */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: quoted-type */
{
#line 397 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
TYPE r;
(ZIt) = MAKE_ptr ( SIZE_type );
MAKE_type_quote ( 0, (ZIs), r );
COPY_type ( (ZIt), r );
#line 2769 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: quoted-type */
}
break;
case lex_identifier: case lex_list: case lex_ptr:
case lex_stack: case lex_vec: case lex_vec_Hptr:
{
ZRtype (&ZIt);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
case 49:
return;
default:
goto ZL1;
}
goto ZL0;
ZL1:;
{
/* BEGINNING OF ACTION: error-type */
{
#line 411 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
MSG_type_expected ();
(ZIt) = find_type ( algebra, "ERROR!" );
#line 2798 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: error-type */
}
ZL0:;
*ZOt = ZIt;
}
static void
ZRprimitive_Hlist (PRIMITIVE_P_LIST *ZOp)
{
PRIMITIVE_P_LIST ZIp;
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_colon: case lex_hash:
{
CLASS_ID_P ZIi;
PRIMITIVE_P ZIq;
PRIMITIVE_P_LIST ZIr;
ZRclass_Hid (&ZIi);
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRprimitive_Hdefn (ZIi, &ZIq);
ZRprimitive_Hlist (&ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: join-primitive */
{
#line 589 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 2840 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-primitive */
}
break;
default:
{
/* BEGINNING OF ACTION: null-primitive */
{
#line 559 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = NULL_list ( PRIMITIVE_P );
#line 2852 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-primitive */
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZR209 (string *ZOj)
{
string ZIj;
switch (CURRENT_TERMINAL) {
case lex_identifier:
{
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIj = string_copy ( token_buff );
#line 2881 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_plus:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
default:
{
/* BEGINNING OF ACTION: null-identifier */
{
#line 320 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIj) = NULL;
#line 2901 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-identifier */
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOj = ZIj;
}
static void
ZRargument_Hlist (ARGUMENT_P_LIST *ZOp)
{
ARGUMENT_P_LIST ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
TYPE_P ZIt;
ARGUMENT_P_LIST ZIq;
ARGUMENT_P_LIST ZIr;
ZRextended_Htype (&ZIt);
ZRargument_Hdecl (ZIt, &ZIq);
/* BEGINNING OF INLINE: 214 */
{
switch (CURRENT_TERMINAL) {
case lex_semicolon:
{
ADVANCE_LEXER;
ZRargument_Hlist (&ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: null-argument */
{
#line 889 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( ARGUMENT_P );
#line 2952 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-argument */
}
break;
case 49:
RESTORE_LEXER;
goto ZL1;
}
}
/* END OF INLINE: 214 */
/* BEGINNING OF ACTION: link-argument */
{
#line 925 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = APPEND_list ( (ZIq), (ZIr) );
#line 2968 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: link-argument */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRexpression (number *ZOn)
{
number ZIn;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
ZRor_Hexp (&ZIn);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOn = ZIn;
}
static void
ZRxor_Hexp (number *ZO245)
{
number ZI245;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
number ZIn;
ZRand_Hexp (&ZIn);
ZR246 (ZIn, &ZI245);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO245 = ZI245;
}
static void
ZRidentity_Hlist (IDENTITY_P_LIST *ZOp)
{
IDENTITY_P_LIST ZIp;
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_colon: case lex_hash:
{
CLASS_ID_P ZIi;
IDENTITY_P ZIq;
IDENTITY_P_LIST ZIr;
ZRclass_Hid (&ZIi);
switch (CURRENT_TERMINAL) {
case lex_colon:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRidentity_Hdefn (ZIi, &ZIq);
ZRidentity_Hlist (&ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: join-identity */
{
#line 630 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 3063 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-identity */
}
break;
default:
{
/* BEGINNING OF ACTION: null-identity */
{
#line 600 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = NULL_list ( IDENTITY_P );
#line 3075 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-identity */
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRor_Hexp (number *ZO241)
{
number ZI241;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
number ZIn;
ZRxor_Hexp (&ZIn);
ZR242 (ZIn, &ZI241);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO241 = ZI241;
}
static void
ZRunion_Hsingle (UNION_P_LIST *ZOp)
{
UNION_P_LIST ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
CLASS_ID_P ZIi;
UNION_P ZIq;
UNION_P_LIST ZIr;
switch (CURRENT_TERMINAL) {
case lex_union:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRclass_Hid (&ZIi);
ZRunion_Hdefn_Hnew (ZIi, &ZIq);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: null-union */
{
#line 971 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( UNION_P );
#line 3148 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-union */
/* BEGINNING OF ACTION: join-union */
{
#line 1054 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 3156 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-union */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRstructure_Hlist (STRUCTURE_P_LIST *ZOp)
{
STRUCTURE_P_LIST ZIp;
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_colon: case lex_hash:
{
CLASS_ID_P ZIi;
string ZIj;
STRUCTURE_P ZIq;
STRUCTURE_P_LIST ZIr;
ZRclass_Hid (&ZIi);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: null-identifier */
{
#line 320 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIj) = NULL;
#line 3191 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-identifier */
ZRstructure_Hdefn (ZIi, ZIj, &ZIq);
ZRstructure_Hlist (&ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: join-structure */
{
#line 801 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 3205 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-structure */
}
break;
default:
{
/* BEGINNING OF ACTION: null-structure */
{
#line 758 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = NULL_list ( STRUCTURE_P );
#line 3217 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-structure */
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRunion_Hdefn_Hold (CLASS_ID_P ZIi, UNION_P *ZOp)
{
UNION_P ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
COMPONENT_P_LIST ZIc;
FIELD_P_LIST ZIf;
MAP_P_LIST ZIm;
string ZIj;
/* BEGINNING OF INLINE: 219 */
{
switch (CURRENT_TERMINAL) {
case lex_open_Hbrace:
{
ZRcomponent_Hgroup (&ZIc);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: null-component */
{
#line 710 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIc) = NULL_list ( COMPONENT_P );
#line 3266 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-component */
}
break;
}
}
/* END OF INLINE: 219 */
/* BEGINNING OF INLINE: 220 */
{
switch (CURRENT_TERMINAL) {
case lex_identifier: case lex_hash:
{
ZRfield_Hlist (&ZIf);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: null-field */
{
#line 812 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIf) = NULL_list ( FIELD_P );
#line 3293 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-field */
}
break;
}
}
/* END OF INLINE: 220 */
switch (CURRENT_TERMINAL) {
case lex_with:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_maps:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_open_Hsquare:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRmap_Hlist (&ZIm);
switch (CURRENT_TERMINAL) {
case lex_close_Hsquare:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: null-identifier */
{
#line 320 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIj) = NULL;
#line 3338 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-identifier */
/* BEGINNING OF ACTION: make-union */
{
#line 983 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
TYPE r;
TYPE_P t;
int tag = 0;
string nm = (ZIj);
FIELD_P_LIST p = (ZIf);
UNION_P un = NULL_ptr ( UNION );
/* Deal with overall inheritance */
if ( nm ) {
r = DEREF_type ( find_type ( algebra, nm ) );
if ( IS_type_onion ( r ) ) {
un = DEREF_ptr ( type_onion_un ( r ) );
(ZIc) = ADD_list ( DEREF_list ( un_s_defn ( un ) ), (ZIc),
SIZE_ptr ( COMPONENT ) );
(ZIf) = ADD_list ( DEREF_list ( un_u_defn ( un ) ), p,
SIZE_ptr ( FIELD ) );
(ZIm) = ADD_list ( DEREF_list ( un_map ( un ) ), (ZIm),
SIZE_ptr ( MAP ) );
tag = DEREF_int ( un_no_fields ( un ) );
no_fields += tag;
} else {
MSG_cant_inherit_from (nm);
}
}
/* Deal with inheritance of fields and field tags */
while ( !IS_NULL_list ( p ) ) {
FIELD_P q = DEREF_ptr ( HEAD_list ( p ) );
FIELD_P b = DEREF_ptr ( fld_base ( q ) );
if ( !IS_NULL_ptr ( b ) ) {
int ok = 0;
FIELD_P_LIST pp = (ZIf);
string n = DEREF_string ( fld_name ( b ) );
while ( !IS_NULL_list ( pp ) ) {
FIELD_P qq = DEREF_ptr ( HEAD_list ( pp ) );
string nn = DEREF_string ( fld_name ( qq ) );
if ( streq ( n, nn ) ) {
COMPONENT_P_LIST cc = DEREF_list ( fld_defn ( qq ) );
COMPONENT_P_LIST c = DEREF_list ( fld_defn ( q ) );
c = ADD_list ( cc, c, SIZE_ptr ( COMPONENT ) );
COPY_list ( fld_defn ( q ), c );
COPY_ptr ( fld_base ( q ), qq );
ok = 1;
break;
}
pp = TAIL_list ( pp );
}
if ( !ok ) MSG_cant_find_field (n);
}
COPY_int ( fld_tag ( q ), tag++ );
p = TAIL_list ( p );
}
/* Construct output */
(ZIp) = MAKE_ptr ( SIZE_un );
MAKE_un ( (ZIi), un, (ZIc), (ZIf), (ZIm), no_fields, (ZIp) );
no_fields = 0;
t = MAKE_ptr ( SIZE_type );
MAKE_type_onion ( 0, (ZIp), r );
COPY_type ( t, r );
IGNORE register_type ( t );
#line 3406 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-union */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRenum_Hsingle (ENUM_P_LIST *ZOp)
{
ENUM_P_LIST ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
int ZIl;
CLASS_ID_P ZIi;
ECONST_P_LIST ZIf;
ECONST_P_LIST ZIe;
ENUM_P ZIq;
ENUM_P_LIST ZIr;
switch (CURRENT_TERMINAL) {
case lex_enum:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF INLINE: 190 */
{
switch (CURRENT_TERMINAL) {
case lex_exclaim:
{
ADVANCE_LEXER;
/* BEGINNING OF ACTION: zero */
{
#line 260 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIl) = 0;
#line 3451 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: zero */
}
break;
default:
{
/* BEGINNING OF ACTION: one */
{
#line 261 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIl) = 1;
#line 3462 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: one */
}
break;
}
}
/* END OF INLINE: 190 */
ZRclass_Hid (&ZIi);
switch (CURRENT_TERMINAL) {
case lex_equal:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF INLINE: 192 */
{
switch (CURRENT_TERMINAL) {
case lex_identifier:
{
string ZIj;
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIj = string_copy ( token_buff );
#line 3493 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
ADVANCE_LEXER;
/* BEGINNING OF ACTION: get-enum */
{
#line 653 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
string nm = (ZIj);
TYPE r = DEREF_type ( find_type ( algebra, nm ) );
if ( IS_type_enumeration ( r ) ) {
ENUM_P en = DEREF_ptr ( type_enumeration_en ( r ) );
(ZIf) = DEREF_list ( en_consts ( en ) );
enum_value = DEREF_number ( en_order ( en ) );
enum_max = enum_value;
} else {
MSG_cant_inherit_from (nm);
(ZIf) = NULL_list ( ECONST_P );
}
#line 3512 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: get-enum */
switch (CURRENT_TERMINAL) {
case lex_plus:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
default:
{
/* BEGINNING OF ACTION: null-econst */
{
#line 510 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIf) = NULL_list ( ECONST_P );
#line 3531 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-econst */
}
break;
}
}
/* END OF INLINE: 192 */
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 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: make-enum */
{
#line 675 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
TYPE r;
TYPE_P t;
(ZIe) = ADD_list ( (ZIf), (ZIe), SIZE_ptr ( ECONST ) );
(ZIq) = MAKE_ptr ( SIZE_en );
MAKE_en ( (ZIi), (ZIe), enum_max + 1, (ZIl), (ZIq) );
enum_value = 0;
enum_max = 0;
DESTROY_list ( enum_list, SIZE_ptr ( ECONST ) );
enum_list = NULL_list ( ECONST_P );
t = MAKE_ptr ( SIZE_type );
MAKE_type_enumeration ( 0, (ZIq), r );
COPY_type ( t, r );
IGNORE register_type ( t );
#line 3581 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-enum */
/* BEGINNING OF ACTION: null-enum */
{
#line 641 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( ENUM_P );
#line 3589 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-enum */
/* BEGINNING OF ACTION: join-enum */
{
#line 699 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 3597 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-enum */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRfield_Hid_Hlist (int ZIn, FIELD_P_LIST *ZOp)
{
FIELD_P_LIST ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
string ZIi;
COMPONENT_P_LIST ZIc;
FIELD_P ZIq;
FIELD_P_LIST ZIr;
switch (CURRENT_TERMINAL) {
case lex_identifier:
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIi = string_copy ( token_buff );
#line 3630 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: null-component */
{
#line 710 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIc) = NULL_list ( COMPONENT_P );
#line 3643 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-component */
/* BEGINNING OF ACTION: make-field */
{
#line 824 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIq) = MAKE_ptr ( SIZE_fld );
MAKE_fld ( (ZIi), 0, (ZIn), 0, NULL_ptr ( FIELD ), (ZIc), (ZIq) );
no_fields++;
#line 3653 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-field */
/* BEGINNING OF INLINE: 206 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRfield_Hid_Hlist (ZIn, &ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: null-field */
{
#line 812 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( FIELD_P );
#line 3676 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-field */
}
break;
}
}
/* END OF INLINE: 206 */
/* BEGINNING OF ACTION: join-field */
{
#line 837 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
CONS_ptr ( (ZIq), (ZIr), (ZIp) );
#line 3689 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: join-field */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZR242 (number ZI240, number *ZO241)
{
number ZI241;
ZL2_242:;
switch (CURRENT_TERMINAL) {
case lex_or:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRxor_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-or */
{
#line 499 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = (ZI240) | (ZIp);
#line 3724 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-or */
/* BEGINNING OF INLINE: 242 */
ZI240 = ZIn;
goto ZL2_242;
/* END OF INLINE: 242 */
}
/*UNREACHED*/
default:
{
ZI241 = ZI240;
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO241 = ZI241;
}
static void
ZRfield_Hlist (FIELD_P_LIST *ZOp)
{
FIELD_P_LIST ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
int ZIn;
FIELD_P_LIST ZIq;
string ZIj;
COMPONENT_P_LIST ZIc;
FIELD_P_LIST ZIr;
/* BEGINNING OF INLINE: 208 */
{
switch (CURRENT_TERMINAL) {
case lex_hash:
{
ADVANCE_LEXER;
ZR265 (&ZIn);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: zero */
{
#line 260 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = 0;
#line 3783 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: zero */
}
break;
}
}
/* END OF INLINE: 208 */
ZRfield_Hid_Hlist (ZIn, &ZIq);
switch (CURRENT_TERMINAL) {
case lex_arrow:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZR209 (&ZIj);
ZRcomponent_Hgroup (&ZIc);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: set-field-cmp */
{
#line 860 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
int n = 0;
FIELD_P_LIST p = (ZIq);
FIELD_P b = NULL_ptr ( FIELD );
if ( (ZIj) ) {
b = MAKE_ptr ( SIZE_fld );
MAKE_fld ( (ZIj), 0, 0, 0, NULL_ptr ( FIELD ),
NULL_list ( COMPONENT_P ), b );
}
while ( !IS_NULL_list ( p ) ) {
FIELD_P q = DEREF_ptr ( HEAD_list ( p ) );
COPY_ptr ( fld_base ( q ), b );
COPY_list ( fld_defn ( q ), (ZIc) );
p = TAIL_list ( p );
n++;
}
if ( n >= 2 ) {
FIELD_P q = DEREF_ptr ( HEAD_list ( (ZIq) ) );
COPY_int ( fld_set ( q ), n );
}
#line 3831 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: set-field-cmp */
/* BEGINNING OF INLINE: 210 */
{
switch (CURRENT_TERMINAL) {
case lex_comma:
{
ADVANCE_LEXER;
ZRfield_Hlist (&ZIr);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
}
break;
default:
{
/* BEGINNING OF ACTION: null-field */
{
#line 812 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIr) = NULL_list ( FIELD_P );
#line 3854 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-field */
}
break;
}
}
/* END OF INLINE: 210 */
/* BEGINNING OF ACTION: link-field */
{
#line 848 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIp) = APPEND_list ( (ZIq), (ZIr) );
#line 3867 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: link-field */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZRunion_Hdefn_Hnew (CLASS_ID_P ZIi, UNION_P *ZOp)
{
UNION_P ZIp;
if ((CURRENT_TERMINAL) == 49) {
return;
}
{
COMPONENT_P_LIST ZIc;
string ZIj;
FIELD_P_LIST ZIf;
MAP_P_LIST ZIm;
switch (CURRENT_TERMINAL) {
case lex_equal:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF INLINE: 222 */
{
switch (CURRENT_TERMINAL) {
case lex_open_Hbrace:
{
ZRcomponent_Hgroup (&ZIc);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: null-identifier */
{
#line 320 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIj) = NULL;
#line 3915 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-identifier */
}
break;
case lex_identifier:
{
/* BEGINNING OF ACTION: null-component */
{
#line 710 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIc) = NULL_list ( COMPONENT_P );
#line 3927 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-component */
/* BEGINNING OF EXTRACT: identifier */
{
#line 222 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
ZIj = string_copy ( token_buff );
#line 3935 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF EXTRACT: identifier */
ADVANCE_LEXER;
}
break;
default:
goto ZL1;
}
}
/* END OF INLINE: 222 */
switch (CURRENT_TERMINAL) {
case lex_plus:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_open_Hbrace:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRfield_Hlist (&ZIf);
switch (CURRENT_TERMINAL) {
case lex_close_Hbrace:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF INLINE: 223 */
{
switch (CURRENT_TERMINAL) {
case lex_colon:
{
ADVANCE_LEXER;
switch (CURRENT_TERMINAL) {
case lex_open_Hsquare:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
ZRmap_Hlist (&ZIm);
switch (CURRENT_TERMINAL) {
case lex_close_Hsquare:
break;
case 49:
RESTORE_LEXER;
goto ZL1;
default:
goto ZL1;
}
ADVANCE_LEXER;
}
break;
default:
{
/* BEGINNING OF ACTION: null-map */
{
#line 936 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIm) = NULL_list ( MAP_P );
#line 4004 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: null-map */
}
break;
}
}
/* END OF INLINE: 223 */
switch (CURRENT_TERMINAL) {
case lex_semicolon:
break;
default:
goto ZL1;
}
ADVANCE_LEXER;
/* BEGINNING OF ACTION: make-union */
{
#line 983 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
TYPE r;
TYPE_P t;
int tag = 0;
string nm = (ZIj);
FIELD_P_LIST p = (ZIf);
UNION_P un = NULL_ptr ( UNION );
/* Deal with overall inheritance */
if ( nm ) {
r = DEREF_type ( find_type ( algebra, nm ) );
if ( IS_type_onion ( r ) ) {
un = DEREF_ptr ( type_onion_un ( r ) );
(ZIc) = ADD_list ( DEREF_list ( un_s_defn ( un ) ), (ZIc),
SIZE_ptr ( COMPONENT ) );
(ZIf) = ADD_list ( DEREF_list ( un_u_defn ( un ) ), p,
SIZE_ptr ( FIELD ) );
(ZIm) = ADD_list ( DEREF_list ( un_map ( un ) ), (ZIm),
SIZE_ptr ( MAP ) );
tag = DEREF_int ( un_no_fields ( un ) );
no_fields += tag;
} else {
MSG_cant_inherit_from (nm);
}
}
/* Deal with inheritance of fields and field tags */
while ( !IS_NULL_list ( p ) ) {
FIELD_P q = DEREF_ptr ( HEAD_list ( p ) );
FIELD_P b = DEREF_ptr ( fld_base ( q ) );
if ( !IS_NULL_ptr ( b ) ) {
int ok = 0;
FIELD_P_LIST pp = (ZIf);
string n = DEREF_string ( fld_name ( b ) );
while ( !IS_NULL_list ( pp ) ) {
FIELD_P qq = DEREF_ptr ( HEAD_list ( pp ) );
string nn = DEREF_string ( fld_name ( qq ) );
if ( streq ( n, nn ) ) {
COMPONENT_P_LIST cc = DEREF_list ( fld_defn ( qq ) );
COMPONENT_P_LIST c = DEREF_list ( fld_defn ( q ) );
c = ADD_list ( cc, c, SIZE_ptr ( COMPONENT ) );
COPY_list ( fld_defn ( q ), c );
COPY_ptr ( fld_base ( q ), qq );
ok = 1;
break;
}
pp = TAIL_list ( pp );
}
if ( !ok ) MSG_cant_find_field (n);
}
COPY_int ( fld_tag ( q ), tag++ );
p = TAIL_list ( p );
}
/* Construct output */
(ZIp) = MAKE_ptr ( SIZE_un );
MAKE_un ( (ZIi), un, (ZIc), (ZIf), (ZIm), no_fields, (ZIp) );
no_fields = 0;
t = MAKE_ptr ( SIZE_type );
MAKE_type_onion ( 0, (ZIp), r );
COPY_type ( t, r );
IGNORE register_type ( t );
#line 4084 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: make-union */
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZOp = ZIp;
}
static void
ZR246 (number ZI244, number *ZO245)
{
number ZI245;
ZL2_246:;
switch (CURRENT_TERMINAL) {
case lex_xor:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRand_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-xor */
{
#line 495 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = (ZI244) ^ (ZIp);
#line 4119 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-xor */
/* BEGINNING OF INLINE: 246 */
ZI244 = ZIn;
goto ZL2_246;
/* END OF INLINE: 246 */
}
/*UNREACHED*/
default:
{
ZI245 = ZI244;
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO245 = ZI245;
}
static void
ZR250 (number ZI248, number *ZO249)
{
number ZI249;
ZL2_250:;
switch (CURRENT_TERMINAL) {
case lex_and:
{
number ZIp;
number ZIn;
ADVANCE_LEXER;
ZRshift_Hexp (&ZIp);
if ((CURRENT_TERMINAL) == 49) {
RESTORE_LEXER;
goto ZL1;
}
/* BEGINNING OF ACTION: exp-and */
{
#line 491 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
(ZIn) = (ZI248) & (ZIp);
#line 4167 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
}
/* END OF ACTION: exp-and */
/* BEGINNING OF INLINE: 250 */
ZI248 = ZIn;
goto ZL2_250;
/* END OF INLINE: 250 */
}
/*UNREACHED*/
default:
{
ZI249 = ZI248;
}
break;
case 49:
return;
}
goto ZL0;
ZL1:;
SAVE_LEXER (49);
return;
ZL0:;
*ZO249 = ZI249;
}
/* BEGINNING OF TRAILER */
#line 1199 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/src/utilities/calculus/syntax.act"
#line 4196 "/mnt/gmirror/ports/lang/TenDRA/work/tendra/obj//utilities/calculus/syntax.c"
/* END OF FILE */
syntax highlighted by Code2HTML, v. 0.9.1