📄 constraint_y.cpp
字号:
// Constraint_y.cpp,v 1.10 2003/12/02 16:46:11 parsons Exp
// ========================================================================
//
// = LIBRARY
// orbsvcs
//
// = FILENAME
// constraint.y
//
// = AUTHOR
// Seth Widoff <sbw1@cs.wustl.edu>
//
// ========================================================================
#include "ace/OS_NS_string.h"
#include "Constraint_Interpreter.h"
#include "Constraint_Nodes.h"
//#define YYDEBUG 1
# define TAO_GT 257
# define TAO_GE 258
# define TAO_LT 259
# define TAO_LE 260
# define TAO_EQ 261
# define TAO_NE 262
# define TAO_EXIST 263
# define TAO_AND 264
# define TAO_OR 265
# define TAO_NOT 266
# define TAO_IN 267
# define TAO_TWIDDLE 268
# define TAO_BOOLEAN 269
# define TAO_PLUS 270
# define TAO_MINUS 271
# define TAO_MULT 272
# define TAO_DIV 273
# define TAO_UMINUS 274
# define TAO_NUMBER 275
# define TAO_RPAREN 276
# define TAO_LPAREN 277
# define TAO_IDENT 278
# define TAO_STRING 279
# define TAO_UNKNOWN 280
# define TAO_UNSIGNED 281
# define TAO_SIGNED 282
# define TAO_DOUBLE 283
# define TAO_CONSTRAINT 284
# define TAO_SEQUENCE 285
# define TAO_WITH 286
# define TAO_MAX 287
# define TAO_MIN 288
# define TAO_FIRST 289
# define TAO_RANDOM 290
#ifdef __cplusplus
#ifndef yyerror
void yyerror(const char *);
#endif
#ifndef yylex
#ifdef __EXTERN_C__
extern "C" { int yylex(void); }
#else
int yylex(void);
#endif
#endif
int yyparse(void);
#endif
#define yyclearin yychar = -1
#define yyerrok yyerrflag = 0
extern int yychar;
extern int yyerrflag;
YYSTYPE yylval;
YYSTYPE yyval;
typedef int yytabelem;
#ifndef YYMAXDEPTH
#define YYMAXDEPTH 150
#endif
#if YYMAXDEPTH > 0
int yy_yys[YYMAXDEPTH], *yys = yy_yys;
YYSTYPE yy_yyv[YYMAXDEPTH], *yyv = yy_yyv;
#else /* user does initial allocation */
int *yys;
YYSTYPE *yyv;
#endif
static int yymaxdepth = YYMAXDEPTH;
# define YYERRCODE 256
//extern int yydebug = 1;
yytabelem yyexca[] ={
-1, 1,
0, -1,
-2, 0,
};
# define YYNPROD 38
# define YYLAST 93
yytabelem yyact[]={
19, 54, 44, 16, 45, 19, 24, 37, 22, 38,
39, 24, 21, 22, 18, 20, 23, 21, 25, 18,
20, 23, 36, 7, 6, 5, 8, 9, 19, 60,
26, 16, 40, 41, 24, 25, 22, 38, 39, 15,
21, 11, 18, 20, 23, 32, 33, 34, 35, 30,
31, 14, 10, 17, 13, 12, 4, 3, 1, 2,
0, 0, 0, 0, 0, 27, 28, 29, 0, 0,
42, 0, 48, 49, 50, 51, 52, 53, 43, 47,
58, 59, 46, 0, 0, 0, 0, 0, 0, 0,
56, 57, 55 };
yytabelem yypact[]={
-263,-10000000, -230,-10000000, -234, -235, -235, -235,-10000000,-10000000,
-10000000, -212, -245, -261, -240,-10000000, -258,-10000000, -235, -276,
-10000000,-10000000, -271,-10000000,-10000000, -235, -235, -230, -230, -230,
-235, -235, -235, -235, -235, -235, -277, -235, -235, -235,
-235, -235,-10000000, -247,-10000000,-10000000, -234,-10000000,-10000000,-10000000,
-10000000,-10000000,-10000000,-10000000,-10000000, -233, -240, -240,-10000000,-10000000,
-10000000 };
yytabelem yypgo[]={
0, 58, 57, 59, 56, 52, 41, 55, 54, 51,
39, 53 };
yytabelem yyr1[]={
0, 1, 1, 2, 2, 2, 2, 2, 3, 3,
4, 4, 5, 5, 5, 5, 5, 5, 5, 6,
6, 7, 7, 8, 8, 8, 9, 9, 9, 10,
10, 11, 11, 11, 11, 11, 11, 11 };
yytabelem yyr2[]={
0, 3, 3, 5, 5, 5, 3, 3, 7, 3,
7, 3, 7, 7, 7, 7, 7, 7, 3, 7,
3, 7, 3, 7, 7, 3, 7, 7, 3, 5,
3, 7, 5, 3, 3, 5, 3, 3 };
yytabelem yychk[]={
-10000000, -1, -3, -2, -4, 288, 287, 286, 289, 290,
-5, -6, -7, -8, -9, -10, 266, -11, 277, 263,
278, 275, 271, 279, 269, 265, 264, -3, -3, -3,
261, 262, 257, 258, 259, 260, 267, 268, 270, 271,
272, 273, -11, -3, 278, 275, -4, -5, -6, -6,
-6, -6, -6, -6, 278, -8, -9, -9, -10, -10,
276 };
yytabelem yydef[]={
0, -2, 1, 2, 9, 0, 0, 0, 6, 7,
11, 18, 20, 22, 25, 28, 0, 30, 0, 0,
33, 34, 0, 36, 37, 0, 0, 3, 4, 5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 29, 0, 32, 35, 8, 10, 12, 13,
14, 15, 16, 17, 19, 21, 23, 24, 26, 27,
31 };
typedef struct
#ifdef __cplusplus
yytoktype
#endif
{ char *t_name; int t_val; } yytoktype;
#ifndef YYDEBUG
# define YYDEBUG 0 /* don't allow debugging */
#endif
#if YYDEBUG
yytoktype yytoks[] =
{
"TAO_GT", 257,
"TAO_GE", 258,
"TAO_LT", 259,
"TAO_LE", 260,
"TAO_EQ", 261,
"TAO_NE", 262,
"TAO_EXIST", 263,
"TAO_AND", 264,
"TAO_OR", 265,
"TAO_NOT", 266,
"TAO_IN", 267,
"TAO_TWIDDLE", 268,
"TAO_BOOLEAN", 269,
"TAO_PLUS", 270,
"TAO_MINUS", 271,
"TAO_MULT", 272,
"TAO_DIV", 273,
"TAO_UMINUS", 274,
"TAO_NUMBER", 275,
"TAO_RPAREN", 276,
"TAO_LPAREN", 277,
"TAO_IDENT", 278,
"TAO_STRING", 279,
"TAO_UNKNOWN", 280,
"TAO_UNSIGNED", 281,
"TAO_SIGNED", 282,
"TAO_DOUBLE", 283,
"TAO_CONSTRAINT", 284,
"TAO_SEQUENCE", 285,
"TAO_WITH", 286,
"TAO_MAX", 287,
"TAO_MIN", 288,
"TAO_FIRST", 289,
"TAO_RANDOM", 290,
"-unknown-", -1 /* ends search */
};
char * yyreds[] =
{
"-no such reduction-",
"constraint : bool_or",
"constraint : preference",
"preference : TAO_MIN bool_or",
"preference : TAO_MAX bool_or",
"preference : TAO_WITH bool_or",
"preference : TAO_FIRST",
"preference : TAO_RANDOM",
"bool_or : bool_or TAO_OR bool_and",
"bool_or : bool_and",
"bool_and : bool_and TAO_AND bool_compare",
"bool_and : bool_compare",
"bool_compare : expr_in TAO_EQ expr_in",
"bool_compare : expr_in TAO_NE expr_in",
"bool_compare : expr_in TAO_GT expr_in",
"bool_compare : expr_in TAO_GE expr_in",
"bool_compare : expr_in TAO_LT expr_in",
"bool_compare : expr_in TAO_LE expr_in",
"bool_compare : expr_in",
"expr_in : expr_twiddle TAO_IN TAO_IDENT",
"expr_in : expr_twiddle",
"expr_twiddle : expr TAO_TWIDDLE expr",
"expr_twiddle : expr",
"expr : expr TAO_PLUS term",
"expr : expr TAO_MINUS term",
"expr : term",
"term : term TAO_MULT factor_not",
"term : term TAO_DIV factor_not",
"term : factor_not",
"factor_not : TAO_NOT factor",
"factor_not : factor",
"factor : TAO_LPAREN bool_or TAO_RPAREN",
"factor : TAO_EXIST TAO_IDENT",
"factor : TAO_IDENT",
"factor : TAO_NUMBER",
"factor : TAO_MINUS TAO_NUMBER",
"factor : TAO_STRING",
"factor : TAO_BOOLEAN",
};
#endif /* YYDEBUG */
/*
* Copyright (c) 1993 by Sun Microsystems, Inc.
*/
//#pragma ident "@(#)yaccpar 6.12 93/06/07 SMI"
/*
** Skeleton parser driver for yacc output
*/
/*
** yacc user known macros and defines
*/
#define YYERROR goto yyerrlab
#define YYACCEPT return(0)
#define YYABORT return(1)
#define YYBACKUP( newtoken, newvalue )\
{\
if ( yychar >= 0 || ( yyr2[ yytmp ] >> 1 ) != 1 )\
{\
yyerror( "syntax error - cannot backup" );\
goto yyerrlab;\
}\
yychar = newtoken;\
yystate = *yyps;\
yylval = newvalue;\
goto yynewstate;\
}
#define YYRECOVERING() (!!yyerrflag)
#define YYNEW(type) malloc(sizeof(type) * yynewmax)
#define YYCOPY(to, from, type) \
(type *) ACE_OS::memcpy(to, (char *) from, yynewmax * sizeof(type))
#define YYENLARGE( from, type) \
(type *) realloc((char *) from, yynewmax * sizeof(type))
#ifndef YYDEBUG
# define YYDEBUG 1 /* make debugging available */
#endif
/*
** user known globals
*/
int yydebug; /* set to 1 to get debugging */
/*
** driver internal defines
*/
#define YYFLAG (-10000000)
/*
** global variables used by the parser
*/
YYSTYPE *yypv; /* top of value stack */
int *yyps; /* top of state stack */
int yystate; /* current state */
int yytmp; /* extra var (lasts between blocks) */
int yynerrs; /* number of errors */
int yyerrflag; /* error recovery flag */
int yychar; /* current input token number */
#ifdef YYNMBCHARS
#define YYLEX() yycvtok(yylex())
/*
** yycvtok - return a token if i is a wchar_t value that exceeds 255.
** If i<255, i itself is the token. If i>255 but the neither
** of the 30th or 31st bit is on, i is already a token.
*/
#if defined(__STDC__) || defined(__cplusplus)
int yycvtok(int i)
#else
int yycvtok(i) int i;
#endif
{
int first = 0;
int last = YYNMBCHARS - 1;
int mid;
wchar_t j;
if(i&0x60000000){/*Must convert to a token. */
if( yymbchars[last].character < i ){
return i;/*Giving up*/
}
while ((last>=first)&&(first>=0)) {/*Binary search loop*/
mid = (first+last)/2;
j = yymbchars[mid].character;
if( j==i ){/*Found*/
return yymbchars[mid].tvalue;
}else if( j<i ){
first = mid + 1;
}else{
last = mid -1;
}
}
/*No entry in the table.*/
return i;/* Giving up.*/
}else{/* i is already a token. */
return i;
}
}
#else/*!YYNMBCHARS*/
#define YYLEX() yylex()
#endif/*!YYNMBCHARS*/
/*
** yyparse - return 0 if worked, 1 if syntax error not recovered from
*/
#if defined(__STDC__) || defined(__cplusplus)
int yyparse(void)
#else
int yyparse()
#endif
{
register YYSTYPE *yypvt = 0; /* top of value stack for $vars */
#if defined(__cplusplus) || defined(lint)
/*
hacks to please C++ and lint - goto's inside switch should never be
executed; yypvt is set to 0 to avoid "used before set" warning.
*/
static int __yaccpar_lint_hack__ = 0;
switch (__yaccpar_lint_hack__)
{
case 1: goto yyerrlab;
case 2: goto yynewstate;
}
yypvt = 0;
#endif
/*
** Initialize externals - yyparse may be called more than once
*/
yypv = &yyv[-1];
yyps = &yys[-1];
yystate = 0;
yytmp = 0;
yynerrs = 0;
yyerrflag = 0;
yychar = -1;
#if YYMAXDEPTH <= 0
if (yymaxdepth <= 0)
{
if ((yymaxdepth = YYEXPAND(0)) <= 0)
{
yyerror("yacc initialization error");
YYABORT;
}
}
#endif
{
register YYSTYPE *yy_pv; /* top of value stack */
register int *yy_ps; /* top of state stack */
register int yy_state; /* current state */
register int yy_n; /* internal state number info */
goto yystack; /* moved from 6 lines above to here to please C++ */
/*
** get globals into registers.
** branch to here only if YYBACKUP was called.
*/
yynewstate:
yy_pv = yypv;
yy_ps = yyps;
yy_state = yystate;
goto yy_newstate;
/*
** get globals into registers.
** either we just started, or we just finished a reduction
*/
yystack:
yy_pv = yypv;
yy_ps = yyps;
yy_state = yystate;
/*
** top of for (;;) loop while no reductions done
*/
yy_stack:
/*
** put a state and value onto the stacks
*/
#if YYDEBUG
/*
** if debugging, look up token value in list of value vs.
** name pairs. 0 and negative (-1) are special values.
** Note: linear search is used since time is not a real
** consideration while debugging.
*/
if ( yydebug )
{
register int yy_i;
printf( "State %d, token ", yy_state );
if ( yychar == 0 )
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -