You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
282 lines
7.8 KiB
282 lines
7.8 KiB
//
|
|
|
|
// Copyright (c) 1997-2001 Microsoft Corporation, All Rights Reserved
|
|
//
|
|
const ABSENT = 257;
|
|
const ANY = 258;
|
|
const APPLICATION = 259;
|
|
const BAR = 260;
|
|
const BGIN = 261;
|
|
const BIT = 262;
|
|
const BITSTRING = 263;
|
|
const _BOOLEAN = 264;
|
|
const BY = 265;
|
|
const CCE = 266;
|
|
const CHOICE = 267;
|
|
const COMMA = 268;
|
|
const COMPONENT = 269;
|
|
const COMPONENTS = 270;
|
|
const COMPONENTSOF = 271;
|
|
const CONTROL = 272;
|
|
const DECODER = 273;
|
|
const DEFAULT = 274;
|
|
const DEFINED = 275;
|
|
const DEFINITIONS = 276;
|
|
const DOT = 277;
|
|
const DOTDOT = 278;
|
|
const DOTDOTDOT = 279;
|
|
const ENCODER = 280;
|
|
const ENCRYPTED = 281;
|
|
const END = 282;
|
|
const ENUMERATED = 283;
|
|
const EXPORTS = 284;
|
|
const EXPLICIT = 285;
|
|
const FALSE_VAL = 286;
|
|
const FROM = 287;
|
|
const ID = 288;
|
|
const IDENTIFIER = 289;
|
|
const IMPLICIT = 290;
|
|
const IMPORTS = 291;
|
|
const INCLUDES = 292;
|
|
const INTEGER = 293;
|
|
const LANGLE = 294;
|
|
const LBRACE = 295;
|
|
const LBRACKET = 296;
|
|
const LITNUMBER = 297;
|
|
const LIT_HEX_STRING = 298;
|
|
const LIT_BINARY_STRING = 299;
|
|
const LITSTRING = 300;
|
|
const LPAREN = 301;
|
|
const MIN = 302;
|
|
const MAX = 303;
|
|
const NAME = 304;
|
|
const NIL = 305;
|
|
const OBJECT = 306;
|
|
const OCTET = 307;
|
|
const OCTETSTRING = 308;
|
|
const OF = 309;
|
|
const PARAMETERTYPE = 310;
|
|
const PREFIXES = 311;
|
|
const PRESENT = 312;
|
|
const PRINTER = 313;
|
|
const PRIVATE = 314;
|
|
const RBRACE = 315;
|
|
const RBRACKET = 316;
|
|
const REAL = 317;
|
|
const RPAREN = 318;
|
|
const SECTIONS = 319;
|
|
const SEMICOLON = 320;
|
|
const SEQUENCE = 321;
|
|
const SEQUENCEOF = 322;
|
|
const SET = 323;
|
|
const _SIZE = 324;
|
|
const STRING = 325;
|
|
const TAGS = 326;
|
|
const TRUE_VAL = 327;
|
|
const UNIVERSAL = 328;
|
|
const WITH = 329;
|
|
const PLUSINFINITY = 330;
|
|
const MINUSINFINITY = 331;
|
|
const MODULEID = 332;
|
|
const LASTUPDATE = 333;
|
|
const ORGANIZATION = 334;
|
|
const CONTACTINFO = 335;
|
|
const DESCRIPTION = 336;
|
|
const REVISION = 337;
|
|
const OBJECTIDENT = 338;
|
|
const STATUS = 339;
|
|
const REFERENCE = 340;
|
|
const OBJECTYPE = 341;
|
|
const SYNTAX = 342;
|
|
const BITSXX = 343;
|
|
const UNITS = 344;
|
|
const MAXACCESS = 345;
|
|
const ACCESS = 346;
|
|
const INDEX = 347;
|
|
const IMPLIED = 348;
|
|
const AUGMENTS = 349;
|
|
const DEFVAL = 350;
|
|
const NOTIFY = 351;
|
|
const OBJECTS = 352;
|
|
const TRAPTYPE = 353;
|
|
const ENTERPRISE = 354;
|
|
const VARIABLES = 355;
|
|
const TEXTCONV = 356;
|
|
const DISPLAYHINT = 357;
|
|
const OBJECTGROUP = 358;
|
|
const NOTIFYGROUP = 359;
|
|
const NOTIFICATIONS = 360;
|
|
const MODCOMP = 361;
|
|
const MODULE = 362;
|
|
const MANDATORY = 363;
|
|
const GROUP = 364;
|
|
const WSYNTAX = 365;
|
|
const MINACCESS = 366;
|
|
const AGENTCAP = 367;
|
|
const PRELEASE = 368;
|
|
const SUPPORTS = 369;
|
|
const INCLUDING = 370;
|
|
const VARIATION = 371;
|
|
const CREATION = 372;
|
|
typedef union {
|
|
void *yy_void;
|
|
SIMCNumberInfo *yy_number;
|
|
int yy_int;
|
|
long yy_long;
|
|
SIMCModule *yy_module;
|
|
CList <SIMCModule *, SIMCModule *> *yy_module_list;
|
|
SIMCSymbolReference *yy_symbol_ref;
|
|
SIMCNameInfo * yy_name;
|
|
SIMCHexStringInfo *yy_hex_string;
|
|
SIMCBinaryStringInfo *yy_binary_string;
|
|
SIMCAccessInfo *yy_access;
|
|
SIMCAccessInfoV2 *yy_accessV2;
|
|
SIMCStatusInfo *yy_status;
|
|
SIMCStatusInfoV2 *yy_statusV2;
|
|
SIMCObjectIdentityStatusInfo *yy_object_identity_status;
|
|
SIMCNotificationTypeStatusInfo *yy_notification_type_status;
|
|
SIMCIndexInfo *yy_index;
|
|
SIMCIndexInfoV2 *yy_indexV2;
|
|
SIMCVariablesList *yy_variables_list;
|
|
SIMCObjectsList *yy_objects_list;
|
|
SIMCRangeOrSizeItem *yy_range_or_size_item;
|
|
SIMCRangeList *yy_range_list;
|
|
SIMCNamedNumberItem *yy_named_number_item;
|
|
SIMCNamedNumberList *yy_named_number_list;
|
|
SIMCDefValInfo *yy_def_val;
|
|
} YYSTYPE;
|
|
extern YYSTYPE yylval;
|
|
|
|
// C++ YACC parser header
|
|
// Copyright 1991 by Mortice Kern Systems Inc. All rights reserved.
|
|
//
|
|
// yy_parse => class defining a parsing object
|
|
// yy_parse needs a class yy_scan, which defines the scanner.
|
|
// %prefix or option -p xx determines name of this class; if not used,
|
|
// defaults to 'yy_scan'
|
|
//
|
|
// constructor fills in the tables for this grammar; give it a size
|
|
// to determine size of state and value stacks. Default is 150 entries.
|
|
// destructor discards those state and value stacks
|
|
//
|
|
// int yy_parse::yyparse(yy_scan *) invokes parse; if this returns,
|
|
// it can be recalled to continue parsing at last point.
|
|
// void yy_parse::yyreset() can be called to reset the parse;
|
|
// call yyreset() before yy_parse::yyparse(yy_scan *)
|
|
#include <stdio.h> // uses printf(), et cetera
|
|
#include <stdlib.h> // uses exit()
|
|
|
|
const YYERRCODE = 256; // YACC 'error' value
|
|
|
|
// You can use these macros in your action code
|
|
#define YYERROR goto yyerrlabel
|
|
#define YYACCEPT YYRETURN(0)
|
|
#define YYABORT YYRETURN(1)
|
|
#define YYRETURN(val) return(val)
|
|
|
|
#if YYDEBUG
|
|
typedef struct yyNamedType_tag { /* Tokens */
|
|
char * name; /* printable name */
|
|
short token; /* token # */
|
|
short type; /* token type */
|
|
} yyNamedType;
|
|
typedef struct yyTypedRules_tag { /* Typed rule table */
|
|
char * name; /* compressed rule string */
|
|
short type; /* rule result type */
|
|
} yyTypedRules;
|
|
#endif
|
|
|
|
#ifdef YACC_WINDOWS
|
|
|
|
// include all windows prototypes, macros, constants, etc.
|
|
|
|
#include <windows.h>
|
|
|
|
// the following is the handle to the current
|
|
// instance of a windows program. The user
|
|
// program calling yyparse must supply this!
|
|
|
|
extern HANDLE hInst;
|
|
|
|
#endif /* YACC_WINDOWS */
|
|
|
|
|
|
class yy_parse {
|
|
protected:
|
|
|
|
#ifdef YACC_WINDOWS
|
|
|
|
// protected member function for actual scanning
|
|
|
|
int win_yyparse(yy_scan * ps); // parse with given scanner
|
|
|
|
#endif /* YACC_WINDOWS */
|
|
|
|
int mustfree; // set if tables should be deleted
|
|
int size; // size of state and value stacks
|
|
int reset; // if set, reset state
|
|
short yyi; // table index
|
|
short yystate; // current state
|
|
|
|
short * stateStack; // states stack
|
|
YYSTYPE * valueStack; // values stack
|
|
short * yyps; // top of state stack
|
|
YYSTYPE * yypv; // top of value stack
|
|
|
|
YYSTYPE yylval; // saved yylval
|
|
YYSTYPE yyval; // $
|
|
YYSTYPE * yypvt; // $n
|
|
int yychar; // current token
|
|
int yyerrflag; // error flag
|
|
int yynerrs; // error count
|
|
#if YYDEBUG
|
|
int done; // set from trace to stop parse
|
|
int rule, npop; // reduction rule # and length
|
|
short * typeStack; // type stack to mirror valueStack[]
|
|
short * yytp; // top of type stack
|
|
char * yygetState(int); // read 'states.out'
|
|
#endif
|
|
public:
|
|
#if YYDEBUG
|
|
// C++ has trouble with initialized arrays inside classes
|
|
static long * States; // pointer to yyStates[]
|
|
static yyTypedRules * Rules; // pointer to yyRules[]
|
|
static yyNamedType * TokenTypes; // pointer to yyTokenTypes[]
|
|
static int yyntoken; // number of tokens
|
|
static int yynvar; // number of variables (nonterminals)
|
|
static int yynstate; // number of YACC-generated states
|
|
static int yynrule; // number of rules in grammar
|
|
|
|
char* yyptok(int); // printable token string
|
|
int yyExpandName(int, int, char *, int);
|
|
// expand encoded string
|
|
virtual int yyGetType(int); // return type of token
|
|
virtual void yyShowRead(); // see newly read token
|
|
virtual void yyShowState(); // see state, value stacks
|
|
virtual void yyShowReduce(); // see reduction
|
|
virtual void yyShowGoto(); // see goto
|
|
virtual void yyShowShift(); // see shift
|
|
virtual void yyShowErrRecovery(); // see error recovery
|
|
virtual void yyShowErrDiscard(); // see token discard in error
|
|
#endif
|
|
yy_scan* scan; // pointer to scanner
|
|
int yydebug; // if set, tracing if compiled with YYDEBUG=1
|
|
|
|
yy_parse(int = 150); // constructor for this grammar
|
|
yy_parse(int, short *, YYSTYPE *); // another constructor
|
|
|
|
~yy_parse(); // destructor
|
|
|
|
int yyparse(yy_scan * ps); // parse with given scanner
|
|
|
|
void yyreset() { reset = 1; } // restore state for next yyparse()
|
|
|
|
void setdebug(int y) { yydebug = y; }
|
|
|
|
// The following are useful in user actions:
|
|
|
|
void yyerrok() { yyerrflag = 0; } // clear error
|
|
void yyclearin() { yychar = -1; } // clear input
|
|
int YYRECOVERING() { return yyerrflag != 0; }
|
|
};
|
|
// end of .hpp header
|