mirror of https://github.com/lianthony/NT4.0
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.
221 lines
4.8 KiB
221 lines
4.8 KiB
%{ /* <-- needed */
|
|
///*++
|
|
//
|
|
//Copyright (c) 1992-1996 Microsoft Corporation
|
|
//
|
|
//Module Name:
|
|
//
|
|
// miblex.l
|
|
//
|
|
//Abstract:
|
|
//
|
|
// This file is the FLEX specification for the MIB compiler.
|
|
//
|
|
//Environment:
|
|
//
|
|
// User Mode - Win32
|
|
//
|
|
//Revision History:
|
|
//
|
|
// 10-May-1996 DonRyan
|
|
// Removed banner from Technology Dynamics, Inc.
|
|
//
|
|
//--*/
|
|
|
|
#include<string.h>
|
|
|
|
#ifdef WIN32 /* if compiling for NT */
|
|
#include<io.h>
|
|
#endif
|
|
|
|
#include "mibyacc.h" /* for defines for token ids */
|
|
#include "mibcc.h" /* for global variables */
|
|
|
|
|
|
//#define DONTSUCKEXPORTS
|
|
//#define DONTSUCKIMPORTS
|
|
|
|
extern int yy_init; /* whether we need to initialize */
|
|
|
|
void mark_flex_to_init(void) {
|
|
yy_init = 1;
|
|
}
|
|
|
|
BOOL warning_level(unsigned int nLevel) {
|
|
if (nWarningLevel >= nLevel)
|
|
return TRUE;
|
|
else
|
|
return FALSE;
|
|
}
|
|
|
|
void comment (void)
|
|
{
|
|
char c, lastc=' ';
|
|
while(c = (char) input()) {
|
|
if ('\n' == c) { /* line feed ends a comment */
|
|
// increment the number of lines seen
|
|
lineno++;
|
|
break;
|
|
}
|
|
if ((lastc == '-') && (c == '-')) { /* two dashes ends a comment */
|
|
break;
|
|
}
|
|
lastc = c;
|
|
}
|
|
}
|
|
|
|
void string (void)
|
|
{
|
|
char c;
|
|
while(c = (char) input()) {
|
|
if ('\"' == c)
|
|
break;
|
|
if ('\n' == c) /* keep track of line feeds */
|
|
lineno++;
|
|
}
|
|
}
|
|
|
|
void suckUpImports (void)
|
|
{
|
|
char c;
|
|
if (warning_level(2)) {
|
|
fprintf (error_out, "warning : IMPORTS on line %i not supported (ignored)\n", lineno);
|
|
}
|
|
while(c = (char) input()) {
|
|
if (';' == c)
|
|
break;
|
|
if ('\n' == c) /* keep track of line feeds */
|
|
lineno++;
|
|
}
|
|
}
|
|
|
|
void suckUpExports (void)
|
|
{
|
|
char c;
|
|
if (warning_level(2)) {
|
|
fprintf (error_out, "warning : EXPORTS on line %i not supported (ignored)\n", lineno);
|
|
}
|
|
while(c = (char) input()) {
|
|
if (';' == c)
|
|
break;
|
|
if ('\n' == c) /* keep track of line feeds */
|
|
lineno++;
|
|
}
|
|
}
|
|
|
|
%}
|
|
|
|
A [Aa]
|
|
B [Bb]
|
|
C [Cc]
|
|
D [Dd]
|
|
E [Ee]
|
|
F [Ff]
|
|
G [Gg]
|
|
H [Hh]
|
|
I [Ii]
|
|
J [Jj]
|
|
K [Kk]
|
|
L [Ll]
|
|
M [Mm]
|
|
N [Nn]
|
|
O [Oo]
|
|
P [Pp]
|
|
Q [Qq]
|
|
R [Rr]
|
|
S [Ss]
|
|
T [Tt]
|
|
U [Uu]
|
|
V [Vv]
|
|
W [Ww]
|
|
X [Xx]
|
|
Y [Yy]
|
|
Z [Zz]
|
|
ALPHA [a-zA-ZÀ-ÿ]
|
|
DIGIT [0-9]
|
|
SEXIT [0-5]
|
|
HEXALPHA [a-fA-F]
|
|
OCTECT ({DIGIT}|{DIGIT}{DIGIT}|1{DIGIT}{DIGIT}|2{SEXIT}{SEXIT})
|
|
%%
|
|
\n { lineno++; /* line feed */ }
|
|
\f { /* form feed */ }
|
|
\r { /* carriage return (no line feed) */ }
|
|
\v { /* vertical tab */ }
|
|
[ \t\32] { /* white space */ }
|
|
ACCESS { return (kwACCESS); }
|
|
BEGIN { return (kwBEGIN); }
|
|
CHOICE { return (kwCHOICE); }
|
|
COUNTER { return (kwCOUNTER); }
|
|
DEFAULT { return (kwDEFAULT); }
|
|
DEFINITIONS { return (kwDEFINITIONS); }
|
|
DEFVAL { return (kwDEFVAL); }
|
|
DEPRECATED { return (kwDEPRECATED); }
|
|
DESCRIPTION { return (kwDESCRIPTION); }
|
|
END { return (kwEND); }
|
|
ENTERPRISE { return (kwENTERPRISE); }
|
|
EXPORTS {
|
|
#ifdef DONTSUCKEXPORTS
|
|
return (kwEXPORTS);
|
|
#else
|
|
suckUpExports ();
|
|
#endif
|
|
}
|
|
FROM { return (kwFROM); }
|
|
GAUGE { return (kwGAUGE); }
|
|
IDENTIFIER { return (kwIDENTIFIER); }
|
|
IMPLICIT { return (kwIMPLICIT); }
|
|
IMPORTS {
|
|
#ifdef DONTSUCKIMPORTS
|
|
return (kwIMPORTS);
|
|
#else
|
|
suckUpImports ();
|
|
#endif
|
|
}
|
|
INDEX { return (kwINDEX); }
|
|
INTEGER { return (kwINTEGER); }
|
|
IPADDRESS { return (kwIPADDRESS); }
|
|
MANDATORY { return (kwMANDATORY); }
|
|
MACRO { return (kwMACRO); }
|
|
NETWORKADDRESS { return (kwNETWORKADDRESS); }
|
|
NOT-ACCESSIBLE { return (kwNOT_ACCESSIBLE); }
|
|
NOTATION { return (kwNOTATION); }
|
|
NULL { return (kwNULL); }
|
|
OBJECT { return (kwOBJECT); }
|
|
OBJECT-TYPE { return (kwOBJECT_TYPE); }
|
|
OBSOLETE { return (kwOBSOLETE); }
|
|
OCTET { return (kwOCTET); }
|
|
OF { return (kwOF); }
|
|
OPAQUE { return (kwOPAQUE); }
|
|
OPTIONAL { return (kwOPTIONAL); }
|
|
READ-ONLY { return (kwREAD_ONLY); }
|
|
READ-WRITE { return (kwREAD_WRITE); }
|
|
REFERENCE { return (kwREFERENCE); }
|
|
SEQUENCE { return (kwSEQUENCE); }
|
|
{S}{I}{Z}{E} { return (kwSIZE); }
|
|
STATUS { return (kwSTATUS); }
|
|
STRING { return (kwSTRING); }
|
|
SYNTAX { return (kwSYNTAX); }
|
|
TIMETICKS { return (kwTIMETICKS); }
|
|
TRAP-TYPE { return (kwTRAP_TYPE); }
|
|
TYPE { return (kwTYPE); }
|
|
VARIABLES { return (kwVARIABLES); }
|
|
VALUE { return (kwVALUE); }
|
|
WRITE-ONLY { return (kwWRITE_ONLY); }
|
|
".." { return (tokDOTDOT); }
|
|
"::=" { return (tokIS); }
|
|
{ALPHA}([_-]|{ALPHA}|{DIGIT})* { strcpy (yylval.strval, yytext);
|
|
return (tokNAME); }
|
|
{OCTECT}\.{OCTECT}\.{OCTECT}\.{OCTECT} { return (tokIP); }
|
|
{DIGIT}({DIGIT})* { yylval.numval = atol (yytext);
|
|
return (tokNUMBER); }
|
|
\'(0|1)*\'{B} { return (tokBINARYSTR); }
|
|
\'({DIGIT}|{HEXALPHA})*\'{H} { return (tokHEXSTR); }
|
|
\" { string (); return (tokSTRING); }
|
|
"--" { comment (); }
|
|
"(" |
|
|
")" |
|
|
"," |
|
|
"{" |
|
|
"}" { return (yytext[0]); }
|
|
. { return (yytext[0]); /* return the bad character */ }
|
|
|