158 lines
4.7 KiB
C
158 lines
4.7 KiB
C
/*
|
|
* CDE - Common Desktop Environment
|
|
*
|
|
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
|
|
*
|
|
* These libraries and programs are free software; you can
|
|
* redistribute them and/or modify them under the terms of the GNU
|
|
* Lesser General Public License as published by the Free Software
|
|
* Foundation; either version 2 of the License, or (at your option)
|
|
* any later version.
|
|
*
|
|
* These libraries and programs are distributed in the hope that
|
|
* they will be useful, but WITHOUT ANY WARRANTY; without even the
|
|
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
|
|
* PURPOSE. See the GNU Lesser General Public License for more
|
|
* details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public
|
|
* License along with these librararies and programs; if not, write
|
|
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
|
|
* Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
/*
|
|
* @OSF_COPYRIGHT@
|
|
* COPYRIGHT NOTICE
|
|
* Copyright (c) 1990, 1991, 1992, 1993 Open Software Foundation, Inc.
|
|
* ALL RIGHTS RESERVED (MOTIF). See the file named COPYRIGHT.MOTIF for
|
|
* the full copyright text.
|
|
*/
|
|
/*
|
|
* HISTORY
|
|
*/
|
|
/* $XConsortium: UilSarDef.h /main/10 1995/07/14 09:36:55 drk $ */
|
|
|
|
/*
|
|
* (c) Copyright 1989, 1990, DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. */
|
|
|
|
/*
|
|
**++
|
|
** FACILITY:
|
|
**
|
|
** User Interface Language Compiler (UIL)
|
|
**
|
|
** ABSTRACT:
|
|
**
|
|
** This include file defines the interface to the UIL parser.
|
|
** UIL uses YACC as its parsing tool.
|
|
**
|
|
**--
|
|
**/
|
|
|
|
#ifndef UilSarDef_h
|
|
#define UilSarDef_h
|
|
|
|
|
|
|
|
/*
|
|
** Format of a value on YACC value stack. This is also the form of a
|
|
** token created by the lexical analyzer.
|
|
*/
|
|
|
|
#define sar_k_null_frame 0 /* tag for an epsilon production */
|
|
#define sar_k_token_frame 1 /* tag for a token frame */
|
|
#define sar_k_value_frame 2 /* tag for a value frame */
|
|
#define sar_k_module_frame 3 /* tag for module frame */
|
|
#define sar_k_object_frame 4 /* tag for object frame */
|
|
#define sar_k_root_frame 5 /* tag for root frame */
|
|
|
|
typedef struct
|
|
{
|
|
src_source_record_type *az_source_record; /* actual record where token exists */
|
|
unsigned char b_source_pos; /* the character in az_source_record
|
|
where this token begins */
|
|
unsigned char b_source_end; /* the character in az_source_record
|
|
where this token ends */
|
|
unsigned char b_tag; /* tag of stack frame */
|
|
unsigned char b_type; /* for tokens - token number
|
|
for value - the data type */
|
|
unsigned short b_flags; /* used by value */
|
|
unsigned char b_direction; /* used by value */
|
|
unsigned char b_charset; /* used by value */
|
|
union
|
|
{
|
|
/* must be capable of holding a pointer */
|
|
long l_integer; /* integer value*/
|
|
sym_entry_type *az_symbol_entry; /* symbol entry */
|
|
key_keytable_entry_type
|
|
*az_keyword_entry; /* keyword entry */
|
|
} value;
|
|
} yystype;
|
|
|
|
|
|
/*
|
|
** Macros for moving source information to and from parse stack frames
|
|
*/
|
|
|
|
#define _sar_move_source_info( _target, _source ) \
|
|
{ \
|
|
yystype *__target; \
|
|
yystype *__source; \
|
|
\
|
|
__target = (_target); __source = (_source); \
|
|
__target->az_source_record = __source->az_source_record;\
|
|
__target->b_source_pos = __source->b_source_pos; \
|
|
__target->b_source_end = __source->b_source_end; \
|
|
}
|
|
|
|
#define _sar_move_source_info_2( _target, _source ) \
|
|
{ \
|
|
sym_entry_header_type *__target; \
|
|
sym_entry_header_type *__source; \
|
|
\
|
|
__target = (_target); __source = (_source); \
|
|
\
|
|
__target->az_src_rec = __source->az_src_rec; \
|
|
__target->b_src_pos = __source->b_src_pos; \
|
|
__target->b_end_pos = __source->b_end_pos; \
|
|
}
|
|
|
|
|
|
#define _sar_save_source_info( _target, _src_beg, _src_end ) \
|
|
{ \
|
|
sym_entry_header_type *__target; \
|
|
XmConst yystype *__src_end; \
|
|
\
|
|
__target = (_target); \
|
|
__src_end = (_src_end); \
|
|
\
|
|
__target->az_src_rec = __src_end->az_source_record; \
|
|
__target->b_src_pos = __src_end->b_source_pos; \
|
|
__target->b_end_pos = __src_end->b_source_end; \
|
|
}
|
|
|
|
#define _sar_save_source_pos( _target, _src ) \
|
|
{ \
|
|
sym_entry_header_type *__target; \
|
|
XmConst yystype *__src; \
|
|
\
|
|
__target = (_target); __src = (_src); \
|
|
\
|
|
__target->az_src_rec = __src->az_source_record; \
|
|
__target->b_src_pos = __src->b_source_pos; \
|
|
__target->b_end_pos = __src->b_source_end; \
|
|
}
|
|
|
|
#define _sar_source_position( _source ) \
|
|
_source->az_source_record, \
|
|
_source->b_source_pos
|
|
|
|
#define _sar_source_pos2( _source ) \
|
|
_source->header.az_src_rec, \
|
|
_source->header.b_src_pos
|
|
|
|
|
|
|
|
#endif /* UilSarDef_h */
|
|
/* DON'T ADD STUFF AFTER THIS #endif */
|