diff options
Diffstat (limited to 'TAO/TAO_IDL/fe/lex.yy.cpp')
-rw-r--r-- | TAO/TAO_IDL/fe/lex.yy.cpp | 2270 |
1 files changed, 2270 insertions, 0 deletions
diff --git a/TAO/TAO_IDL/fe/lex.yy.cpp b/TAO/TAO_IDL/fe/lex.yy.cpp new file mode 100644 index 00000000000..7d85e6951be --- /dev/null +++ b/TAO/TAO_IDL/fe/lex.yy.cpp @@ -0,0 +1,2270 @@ +#include <stdio.h> +# define U(x) x +# define NLSTATE yyprevious=YYNEWLINE +# define BEGIN yybgin = yysvec + 1 + +# define INITIAL 0 +# define YYLERR yysvec +# define YYSTATE (yyestate-yysvec-1) +# define YYOPTIM 1 +# define YYLMAX BUFSIZ +#ifndef __cplusplus +# define output(c) (void)putc(c,yyout) +#else +# define lex_output(c) (void)putc(c,yyout) +#endif + +#if defined(__cplusplus) || defined(__STDC__) + +#if defined(__cplusplus) && defined(__EXTERN_C__) +extern "C" { +#endif + int yyback(int *, int); + int yyinput(void); + int yylook(void); + void yyoutput(int); + int yyracc(int); + int yyreject(void); + void yyunput(int); + int yylex(void); +#ifdef YYLEX_E + void yywoutput(wchar_t); + wchar_t yywinput(void); +#endif +#ifndef yyless + int yyless(int); +#endif +#ifndef yywrap + int yywrap(void); +#endif +#ifdef LEXDEBUG + void allprint(char); + void sprint(char *); +#endif +#if defined(__cplusplus) && defined(__EXTERN_C__) +} +#endif + +#ifdef __cplusplus +extern "C" { +#endif + void exit(int); +#ifdef __cplusplus +} +#endif + +#endif +# define unput(c) {yytchar= (c);if(yytchar=='\n')yylineno--;*yysptr++=yytchar;} +# define yymore() (yymorfg=1) +#ifndef __cplusplus +# define input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) +#else +# define lex_input() (((yytchar=yysptr>yysbuf?U(*--yysptr):getc(yyin))==10?(yylineno++,yytchar):yytchar)==EOF?0:yytchar) +#endif +#define ECHO fprintf(yyout, "%s",yytext) +# define REJECT { nstr = yyreject(); goto yyfussy;} +int yyleng; +char yytext[YYLMAX]; +int yymorfg; +extern char *yysptr, yysbuf[]; +int yytchar; +FILE *yyin = {stdin}, *yyout = {stdout}; +extern int yylineno; +struct yysvf { + struct yywork *yystoff; + struct yysvf *yyother; + int *yystops;}; +struct yysvf *yyestate; +extern struct yysvf yysvec[], *yybgin; + +# line 4 "idl.ll" +/* + +COPYRIGHT + +Copyright 1992, 1993, 1994 Sun Microsystems, Inc. Printed in the United +States of America. All Rights Reserved. + +This product is protected by copyright and distributed under the following +license restricting its use. + +The Interface Definition Language Compiler Front End (CFE) is made +available for your use provided that you include this license and copyright +notice on all media and documentation and the software program in which +this product is incorporated in whole or part. You may copy and extend +functionality (but may not remove functionality) of the Interface +Definition Language CFE without charge, but you are not authorized to +license or distribute it to anyone else except as part of a product or +program developed by you or with the express written consent of Sun +Microsystems, Inc. ("Sun"). + +The names of Sun Microsystems, Inc. and any of its subsidiaries or +affiliates may not be used in advertising or publicity pertaining to +distribution of Interface Definition Language CFE as permitted herein. + +This license is effective until terminated by Sun for failure to comply +with this license. Upon termination, you shall destroy or return all code +and documentation for the Interface Definition Language CFE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED AS IS WITH NO WARRANTIES OF +ANY KIND INCLUDING THE WARRANTIES OF DESIGN, MERCHANTIBILITY AND FITNESS +FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR ARISING FROM A COURSE OF +DEALING, USAGE OR TRADE PRACTICE. + +INTERFACE DEFINITION LANGUAGE CFE IS PROVIDED WITH NO SUPPORT AND WITHOUT +ANY OBLIGATION ON THE PART OF Sun OR ANY OF ITS SUBSIDIARIES OR AFFILIATES +TO ASSIST IN ITS USE, CORRECTION, MODIFICATION OR ENHANCEMENT. + +SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES SHALL HAVE NO LIABILITY WITH +RESPECT TO THE INFRINGEMENT OF COPYRIGHTS, TRADE SECRETS OR ANY PATENTS BY +INTERFACE DEFINITION LANGUAGE CFE OR ANY PART THEREOF. + +IN NO EVENT WILL SUN OR ANY OF ITS SUBSIDIARIES OR AFFILIATES BE LIABLE FOR +ANY LOST REVENUE OR PROFITS OR OTHER SPECIAL, INDIRECT AND CONSEQUENTIAL +DAMAGES, EVEN IF SUN HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. + +Use, duplication, or disclosure by the government is subject to +restrictions as set forth in subparagraph (c)(1)(ii) of the Rights in +Technical Data and Computer Software clause at DFARS 252.227-7013 and FAR +52.227-19. + +Sun, Sun Microsystems and the Sun logo are trademarks or registered +trademarks of Sun Microsystems, Inc. + +SunSoft, Inc. +2550 Garcia Avenue +Mountain View, California 94043 + +NOTE: + +SunOS, SunSoft, Sun, Solaris, Sun Microsystems or the Sun logo are +trademarks or registered trademarks of Sun Microsystems, Inc. + + */ + + +# line 68 "idl.ll" +/* + * idl.ll - Lexical scanner for IDL 1.1 + */ + +#include "idl.h" +#include "idl_extern.h" + +#include "fe_private.h" + +#include <y.tab.hh> + +#include <string.h> + +static char idl_escape_reader(char *); +static double idl_atof(char *); +static long idl_atoi(char *, long); +static void idl_parse_line_and_file(char *); +static void idl_store_pragma(char *); + +// HPUX has yytext typed to unsigned char *. We make sure here that +// we'll always use char * +static char *__yytext = (char *) yytext; + +# define YYNEWLINE 10 +yylex(){ +int nstr; extern int yyprevious; +#ifdef __cplusplus +/* to avoid CC and lint complaining yyfussy not being used ...*/ +static int __lex_hack = 0; +if (__lex_hack) goto yyfussy; +#endif +while((nstr = yylook()) >= 0) +yyfussy: switch(nstr){ +case 0: +if(yywrap()) return(0); break; +case 1: + +# line 94 "idl.ll" + return MODULE; +break; +case 2: + +# line 95 "idl.ll" + return RAISES; +break; +case 3: + +# line 96 "idl.ll" +return READONLY; +break; +case 4: + +# line 97 "idl.ll" +return ATTRIBUTE; +break; +case 5: + +# line 98 "idl.ll" +return EXCEPTION; +break; +case 6: + +# line 99 "idl.ll" + return CONTEXT; +break; +case 7: + +# line 100 "idl.ll" +return INTERFACE; +break; +case 8: + +# line 101 "idl.ll" + return CONST; +break; +case 9: + +# line 102 "idl.ll" + return TYPEDEF; +break; +case 10: + +# line 103 "idl.ll" + return STRUCT; +break; +case 11: + +# line 104 "idl.ll" + return ENUM; +break; +case 12: + +# line 105 "idl.ll" + return STRING; +break; +case 13: + +# line 106 "idl.ll" +return WSTRING; +break; +case 14: + +# line 107 "idl.ll" +return SEQUENCE; +break; +case 15: + +# line 108 "idl.ll" + return UNION; +break; +case 16: + +# line 109 "idl.ll" + return SWITCH; +break; +case 17: + +# line 110 "idl.ll" + return CASE; +break; +case 18: + +# line 111 "idl.ll" + return DEFAULT; +break; +case 19: + +# line 112 "idl.ll" + return FLOAT; +break; +case 20: + +# line 113 "idl.ll" + return DOUBLE; +break; +case 21: + +# line 114 "idl.ll" + return LONG; +break; +case 22: + +# line 115 "idl.ll" + return SHORT; +break; +case 23: + +# line 116 "idl.ll" +return UNSIGNED; +break; +case 24: + +# line 117 "idl.ll" + return CHAR; +break; +case 25: + +# line 118 "idl.ll" + return WCHAR; +break; +case 26: + +# line 119 "idl.ll" + return BOOLEAN; +break; +case 27: + +# line 120 "idl.ll" + return OCTET; +break; +case 28: + +# line 121 "idl.ll" + return VOID; +break; +case 29: + +# line 123 "idl.ll" + return TRUETOK; +break; +case 30: + +# line 124 "idl.ll" + return FALSETOK; +break; +case 31: + +# line 126 "idl.ll" + return INOUT; +break; +case 32: + +# line 127 "idl.ll" + return IN; +break; +case 33: + +# line 128 "idl.ll" + return OUT; +break; +case 34: + +# line 129 "idl.ll" + return ONEWAY; +break; +case 35: + +# line 131 "idl.ll" + return LEFT_SHIFT; +break; +case 36: + +# line 132 "idl.ll" + return RIGHT_SHIFT; +break; +case 37: + +# line 133 "idl.ll" + { + yylval.strval = "::"; + return SCOPE_DELIMITOR; + } +break; +case 38: + +# line 138 "idl.ll" +{ + char *z = (char *) malloc(strlen(__yytext) + 1); + strcpy(z, __yytext); + yylval.strval = z; + return IDENTIFIER; +} +break; +case 39: + +# line 145 "idl.ll" + { + yylval.dval = idl_atof(__yytext); + return FLOATING_PT_LITERAL; + } +break; +case 40: + +# line 149 "idl.ll" + { + yylval.dval = idl_atof(__yytext); + return FLOATING_PT_LITERAL; + } +break; +case 41: + +# line 154 "idl.ll" +{ + yylval.ival = idl_atoi(__yytext, 10); + return INTEGER_LITERAL; + } +break; +case 42: + +# line 158 "idl.ll" +{ + yylval.ival = idl_atoi(__yytext, 16); + return INTEGER_LITERAL; + } +break; +case 43: + +# line 162 "idl.ll" +{ + yylval.ival = idl_atoi(__yytext, 8); + return INTEGER_LITERAL; + } +break; +case 44: + +# line 167 "idl.ll" +{ + __yytext[strlen(__yytext)-1] = '\0'; + yylval.sval = new String(__yytext + 1); + return STRING_LITERAL; + } +break; +case 45: + +# line 172 "idl.ll" + { + yylval.cval = __yytext[1]; + return CHARACTER_LITERAL; + } +break; +case 46: + +# line 176 "idl.ll" +{ + // octal character constant + yylval.cval = idl_escape_reader(__yytext + 1); + return CHARACTER_LITERAL; + } +break; +case 47: + +# line 181 "idl.ll" +{ + yylval.cval = idl_escape_reader(__yytext + 1); + return CHARACTER_LITERAL; + } +break; +case 48: + +# line 185 "idl.ll" +{/* remember pragma */ + idl_global->set_lineno(idl_global->lineno() + 1); + idl_store_pragma(__yytext); + } +break; +case 49: + +# line 189 "idl.ll" + { + idl_parse_line_and_file(__yytext); + } +break; +case 50: + +# line 192 "idl.ll" + { + idl_parse_line_and_file(__yytext); + } +break; +case 51: + +# line 195 "idl.ll" +{ + idl_parse_line_and_file(__yytext); + } +break; +case 52: + +# line 198 "idl.ll" +{ + /* ignore cpp ident */ + idl_global->set_lineno(idl_global->lineno() + 1); + } +break; +case 53: + +# line 202 "idl.ll" +{ + /* ignore comments */ + idl_global->set_lineno(idl_global->lineno() + 1); + } +break; +case 54: + +# line 206 "idl.ll" + { + for(;;) { + char c = yyinput(); + if (c == '*') { + char next = yyinput(); + if (next == '/') + break; + else + yyunput(c); + if (c == '\n') + idl_global->set_lineno(idl_global->lineno() + 1); + } + } + } +break; +case 55: + +# line 220 "idl.ll" + ; +break; +case 56: + +# line 221 "idl.ll" + { + idl_global->set_lineno(idl_global->lineno() + 1); + } +break; +case 57: + +# line 224 "idl.ll" + return __yytext[0]; +break; +case -1: +break; +default: +(void)fprintf(yyout,"bad switch yylook %d",nstr); +} return(0); } +/* end of yylex */ + /* subroutines */ + +/* + * Strip down a name to the last component, i.e. everything after the last + * '/' character + */ +static char * +stripped_name(UTL_String *fn) +{ + char *n = fn->get_string(); + long l; + + if (n == NULL) + return NULL; + l = strlen(n); + for (n += l; l > 0 && *n != '/'; l--, n--); + if (*n == '/') n++; + return n; +} + +/* + * Parse a #line statement generated by the C preprocessor + */ +static void +idl_parse_line_and_file(char *buf) +{ + char *r = buf; + char *h; + UTL_String *nm; + + /* Skip initial '#' */ + if (*r != '#') { + return; + } + + /* Find line number */ + for (r++; *r == ' ' || *r == '\t'; r++); + h = r; + for (; *r != '\0' && *r != ' ' && *r != '\t'; r++); + *r++ = 0; + idl_global->set_lineno(idl_atoi(h, 10)); + + /* Find file name, if present */ + for (; *r != '"'; r++) { + if (*r == '\n' || *r == '\0') + return; + } + h = ++r; + for (; *r != '"'; r++); + *r = 0; + if (*h == '\0') + idl_global->set_filename(new String("standard input")); + else + idl_global->set_filename(new String(h)); + + idl_global->set_in_main_file( + (idl_global->filename()->compare(idl_global->real_filename())) ? + I_TRUE : + I_FALSE + ); + /* + * If it's an import file store the stripped name for the BE to use + */ + if (!(idl_global->in_main_file()) && idl_global->import()) { + nm = new UTL_String(stripped_name(idl_global->filename())); + idl_global->store_include_file_name(nm); + } +} + +/* + * Store a #pragma line into the list of pragmas + */ +static void +idl_store_pragma(char *buf) +{ + char *cp = buf + 1; + while(*cp != 'p') + cp++; + while(*cp != ' ' && *cp != '\t') + cp++; + while(*cp == ' ' || *cp == '\t') + cp++; + char pragma[80]; + char *pp = pragma; + while(*cp != '\n') { + *pp++ = *cp++; + } + *pp = 0; + if (strcmp(pragma, "import") == 0) { + idl_global->set_import(I_TRUE); + return; + } + if (strcmp(pragma, "include") == 0) { + idl_global->set_import(I_FALSE); + return; + } + UTL_StrList *p = idl_global->pragmas(); + if (p == NULL) + idl_global->set_pragmas(new UTL_StrList(new String(buf), NULL)); + else { + p->nconc(new UTL_StrList(new String(buf), NULL)); + idl_global->set_pragmas(p); + } +} + +/* + * idl_atoi - Convert a string of digits into an integer according to base b + */ +static long +idl_atoi(char *s, long b) +{ + long r = 0; + long negative = 0; + + if (*s == '-') { + negative = 1; + s++; + } + if (b == 8 && *s == '0') + s++; + else if (b == 16 && *s == '0' && (*(s + 1) == 'x' || *(s + 1) == 'X')) + s += 2; + + for (; *s; s++) + if (*s <= '9' && *s >= '0') + r = (r * b) + (*s - '0'); + else if (b > 10 && *s <= 'f' && *s >= 'a') + r = (r * b) + (*s - 'a' + 10); + else if (b > 10 && *s <= 'F' && *s >= 'A') + r = (r * b) + (*s - 'A' + 10); + else + break; + + if (negative) + r *= -1; + + return r; +} + +/* + * Convert a string to a float; atof doesn't seem to work, always. + */ +static double +idl_atof(char *s) +{ + char *h = s; + double d = 0.0; + double f = 0.0; + double e, k; + long neg = 0, negexp = 0; + + if (*s == '-') { + neg = 1; + s++; + } + while (*s >= '0' && *s <= '9') { + d = (d * 10) + *s - '0'; + s++; + } + if (*s == '.') { + s++; + e = 10; + while (*s >= '0' && *s <= '9') { + d += (*s - '0') / (e * 1.0); + e *= 10; + s++; + } + } + if (*s == 'e' || *s == 'E') { + s++; + if (*s == '-') { + negexp = 1; + s++; + } else if (*s == '+') + s++; + e = 0; + while (*s >= '0' && *s <= '9') { + e = (e * 10) + *s - '0'; + s++; + } + if (e > 0) { + for (k = 1; e > 0; k *= 10, e--); + if (negexp) + d /= k; + else + d *= k; + } + } + + if (neg) d *= -1.0; + + return d; +} + +/* + * Convert (some) escaped characters into their ascii values + */ +static char +idl_escape_reader( + char *str +) +{ + if (str[0] != '\\') { + return str[0]; + } + + switch (str[1]) { + case 'n': + return '\n'; + case 't': + return '\t'; + case 'v': + return '\v'; + case 'b': + return '\b'; + case 'r': + return '\r'; + case 'f': + return '\f'; + case 'a': + return '\a'; + case '\\': + return '\\'; + case '\?': + return '?'; + case '\'': + return '\''; + case '"': + return '"'; + case 'x': + { + // hex value + for (int i = 2; str[i] != '\0' && isxdigit(str[i]); i++) { + continue; + } + char save = str[i]; + str[i] = '\0'; + char out = (char)idl_atoi(&str[2], 16); + str[i] = save; + return out; + } + break; + default: + // check for octal value + if (str[1] >= '0' && str[1] <= '7') { + for (int i = 1; str[i] >= '0' && str[i] <= '7'; i++) { + continue; + } + char save = str[i]; + str[i] = '\0'; + char out = (char)idl_atoi(&str[1], 8); + str[i] = save; + return out; + } else { + return str[1] - 'a'; + } + break; + } +} +int yyvstop[] = { +0, + +55, +0, + +55, +0, + +57, +0, + +55, +57, +0, + +56, +0, + +57, +0, + +57, +0, + +57, +0, + +57, +0, + +43, +57, +0, + +41, +57, +0, + +57, +0, + +57, +0, + +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +38, +57, +0, + +57, +0, + +55, +0, + +44, +0, + +43, +0, + +41, +0, + +54, +0, + +39, +0, + +43, +0, + +37, +0, + +35, +0, + +36, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +32, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +51, +0, + +45, +0, + +45, +0, + +53, +0, + +39, +0, + +40, +0, + +42, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +33, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +47, +0, + +46, +47, +0, + +39, +0, + +40, +0, + +38, +0, + +29, +38, +0, + +38, +0, + +38, +0, + +17, +38, +0, + +24, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +11, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +21, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +28, +38, +0, + +38, +0, + +38, +0, + +46, +0, + +30, +38, +0, + +38, +0, + +38, +0, + +8, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +19, +38, +0, + +31, +38, +0, + +38, +0, + +38, +0, + +27, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +22, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +15, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +50, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +20, +38, +0, + +38, +0, + +38, +0, + +1, +38, +0, + +34, +38, +0, + +2, +38, +0, + +38, +0, + +38, +0, + +12, +38, +0, + +10, +38, +0, + +16, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +49, +0, + +38, +0, + +26, +38, +0, + +6, +38, +0, + +18, +38, +0, + +38, +0, + +38, +0, + +38, +0, + +38, +0, + +9, +38, +0, + +38, +0, + +25, +38, +0, + +38, +0, + +52, +0, + +38, +0, + +38, +0, + +38, +0, + +3, +38, +0, + +14, +38, +0, + +23, +38, +0, + +38, +0, + +4, +38, +0, + +5, +38, +0, + +7, +38, +0, + +13, +38, +0, + +48, +0, +0}; +# define YYTYPE unsigned char +struct yywork { YYTYPE verify, advance; } yycrank[] = { +0,0, 0,0, 1,3, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 0,0, 1,4, 1,5, +0,0, 4,35, 0,0, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 0,0, 0,0, 1,6, +4,35, 0,0, 0,0, 0,0, +1,7, 0,0, 0,0, 0,0, +1,3, 0,0, 1,8, 84,129, +1,9, 1,10, 1,11, 38,88, +89,133, 0,0, 0,0, 9,42, +0,0, 1,11, 0,0, 1,12, +9,43, 1,13, 0,0, 1,14, +0,0, 0,0, 1,15, 11,44, +0,0, 11,41, 1,15, 1,16, +1,15, 12,49, 13,50, 14,51, +130,129, 1,15, 16,53, 0,0, +0,0, 99,140, 0,0, 0,0, +0,0, 1,17, 0,0, 0,0, +53,98, 1,15, 11,47, 0,0, +0,0, 0,0, 17,54, 98,139, +1,3, 54,99, 1,18, 1,19, +1,20, 1,21, 1,22, 1,23, +0,0, 6,36, 1,24, 0,0, +0,0, 1,25, 1,26, 58,103, +1,27, 6,36, 6,36, 1,28, +1,29, 1,30, 1,31, 1,32, +1,33, 2,34, 11,47, 19,56, +23,64, 2,7, 21,60, 20,57, +18,55, 22,62, 24,65, 2,8, +25,66, 2,9, 20,58, 26,67, +21,61, 30,77, 6,37, 22,63, +27,68, 20,59, 31,78, 32,79, +2,12, 28,71, 2,13, 6,36, +2,14, 28,72, 33,80, 27,69, +6,36, 6,36, 41,44, 55,100, +41,41, 56,101, 27,70, 57,102, +6,36, 29,73, 59,104, 60,105, +29,74, 61,106, 33,81, 62,107, +63,108, 6,36, 2,17, 64,109, +66,112, 6,36, 6,36, 6,36, +29,75, 41,47, 67,113, 29,76, +6,36, 7,38, 68,114, 2,18, +2,19, 2,20, 2,21, 2,22, +2,23, 7,38, 7,0, 2,24, +6,36, 65,110, 2,25, 2,26, +69,115, 2,27, 65,111, 6,36, +2,28, 2,29, 2,30, 2,31, +2,32, 2,33, 70,116, 71,117, +72,118, 41,47, 73,119, 74,120, +75,121, 76,122, 7,38, 46,46, +46,46, 46,46, 46,46, 46,46, +46,46, 46,46, 46,46, 7,38, +77,123, 78,124, 79,126, 80,127, +7,38, 7,38, 81,128, 86,131, +87,132, 100,141, 101,142, 78,125, +7,38, 102,143, 103,144, 104,145, +104,146, 105,147, 106,148, 107,149, +108,150, 7,38, 109,151, 110,152, +111,153, 7,38, 7,38, 7,38, +112,154, 113,155, 114,156, 115,157, +7,38, 8,40, 8,41, 8,41, +8,41, 8,41, 8,41, 8,41, +8,41, 8,41, 8,41, 117,158, +7,38, 118,159, 119,160, 120,161, +7,39, 122,164, 10,44, 7,38, +10,45, 10,45, 10,45, 10,45, +10,45, 10,45, 10,45, 10,45, +10,46, 10,46, 123,165, 124,166, +125,167, 126,168, 127,169, 128,170, +131,172, 47,95, 132,173, 47,95, +139,176, 10,47, 47,96, 47,96, +47,96, 47,96, 47,96, 47,96, +47,96, 47,96, 47,96, 47,96, +91,134, 141,177, 142,178, 145,179, +146,180, 121,162, 147,181, 148,182, +10,48, 91,135, 91,135, 91,135, +91,135, 91,135, 91,135, 91,135, +91,135, 121,163, 150,183, 151,184, +152,185, 10,47, 153,186, 155,187, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 156,188, 157,189, +158,190, 159,191, 160,192, 161,193, +10,48, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 162,194, +163,195, 164,196, 165,197, 15,52, +166,198, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 15,52, +15,52, 15,52, 15,52, 34,82, +34,83, 93,136, 167,199, 93,136, +169,200, 170,201, 93,137, 93,137, +93,137, 93,137, 93,137, 93,137, +93,137, 93,137, 93,137, 93,137, +39,89, 172,204, 173,205, 43,43, +175,174, 177,206, 34,84, 178,207, +39,89, 39,0, 171,202, 43,43, +43,92, 180,208, 96,138, 181,209, +182,210, 183,211, 186,212, 187,213, +96,138, 189,214, 34,85, 34,85, +34,85, 34,85, 34,85, 34,85, +34,85, 34,85, 34,85, 34,85, +171,203, 39,89, 190,215, 191,216, +43,43, 192,217, 39,90, 194,218, +195,219, 196,220, 39,89, 197,221, +199,222, 43,43, 96,138, 39,91, +39,91, 200,223, 43,43, 43,43, +96,138, 137,94, 201,224, 39,89, +204,226, 205,227, 43,43, 137,94, +206,228, 207,229, 208,230, 209,231, +39,89, 211,232, 212,233, 43,43, +39,89, 39,89, 39,89, 43,43, +43,43, 43,43, 216,234, 39,89, +217,235, 221,236, 43,43, 34,86, +222,237, 223,238, 224,239, 227,241, +228,242, 137,94, 34,87, 39,89, +232,243, 233,244, 43,43, 137,94, +234,245, 235,246, 39,89, 237,247, +239,248, 43,43, 44,44, 44,44, +44,44, 44,44, 44,44, 44,44, +44,44, 44,44, 44,44, 44,44, +95,96, 95,96, 95,96, 95,96, +95,96, 95,96, 95,96, 95,96, +95,96, 95,96, 242,250, 44,93, +44,94, 243,251, 244,252, 248,253, +241,249, 45,44, 44,94, 45,45, +45,45, 45,45, 45,45, 45,45, +45,45, 45,45, 45,45, 45,46, +45,46, 136,137, 136,137, 136,137, +136,137, 136,137, 136,137, 136,137, +136,137, 136,137, 136,137, 241,249, +45,47, 0,0, 0,0, 44,93, +44,94, 85,83, 0,0, 0,0, +0,0, 0,0, 44,94, 0,0, +0,0, 0,0, 0,0, 203,225, +48,97, 48,97, 48,97, 48,97, +48,97, 48,97, 48,97, 48,97, +48,97, 48,97, 0,0, 85,130, +0,0, 0,0, 0,0, 129,129, +45,47, 48,97, 48,97, 48,97, +48,97, 48,97, 48,97, 129,129, +129,129, 0,0, 0,0, 85,85, +85,85, 85,85, 85,85, 85,85, +85,85, 85,85, 85,85, 85,85, +85,85, 203,203, 203,203, 203,203, +203,203, 203,203, 203,203, 203,203, +203,203, 203,203, 203,203, 0,0, +129,171, 48,97, 48,97, 48,97, +48,97, 48,97, 48,97, 0,0, +0,0, 129,129, 0,0, 0,0, +0,0, 0,0, 129,129, 129,129, +0,0, 0,0, 226,226, 0,0, +0,0, 0,0, 129,129, 0,0, +0,0, 0,0, 226,226, 226,240, +0,0, 0,0, 0,0, 129,129, +0,0, 0,0, 135,174, 129,129, +129,129, 129,129, 0,0, 0,0, +0,0, 0,0, 129,129, 135,175, +135,175, 135,175, 135,175, 135,175, +135,175, 135,175, 135,175, 226,226, +0,0, 0,0, 129,129, 0,0, +0,0, 0,0, 0,0, 249,249, +226,226, 129,129, 0,0, 0,0, +0,0, 226,226, 226,226, 249,249, +249,254, 0,0, 0,0, 0,0, +0,0, 226,226, 0,0, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 0,0, 226,226, 0,0, +0,0, 0,0, 226,226, 226,226, +226,226, 0,0, 0,0, 0,0, +249,249, 226,226, 0,0, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 249,249, 0,0, 0,0, +0,0, 226,226, 249,249, 249,249, +0,0, 0,0, 0,0, 0,0, +226,226, 0,0, 249,249, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 0,0, 0,0, 249,249, +0,0, 0,0, 0,0, 249,249, +249,249, 249,249, 0,0, 0,0, +0,0, 0,0, 249,249, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 0,0, 249,249, 0,0, +0,0, 0,0, 0,0, 0,0, +0,0, 249,249, 0,0, 0,0, +0,0}; +struct yysvf yysvec[] = { +0, 0, 0, +yycrank+-1, 0, yyvstop+1, +yycrank+-86, yysvec+1, yyvstop+3, +yycrank+0, 0, yyvstop+5, +yycrank+4, 0, yyvstop+7, +yycrank+0, 0, yyvstop+10, +yycrank+-104, 0, yyvstop+12, +yycrank+-180, 0, yyvstop+14, +yycrank+209, 0, yyvstop+16, +yycrank+13, 0, yyvstop+18, +yycrank+228, 0, yyvstop+20, +yycrank+21, yysvec+8, yyvstop+23, +yycrank+15, 0, yyvstop+26, +yycrank+14, 0, yyvstop+28, +yycrank+13, 0, yyvstop+30, +yycrank+284, 0, yyvstop+32, +yycrank+13, yysvec+15, yyvstop+35, +yycrank+12, yysvec+15, yyvstop+38, +yycrank+12, yysvec+15, yyvstop+41, +yycrank+12, yysvec+15, yyvstop+44, +yycrank+30, yysvec+15, yyvstop+47, +yycrank+25, yysvec+15, yyvstop+50, +yycrank+19, yysvec+15, yyvstop+53, +yycrank+16, yysvec+15, yyvstop+56, +yycrank+20, yysvec+15, yyvstop+59, +yycrank+21, yysvec+15, yyvstop+62, +yycrank+24, yysvec+15, yyvstop+65, +yycrank+41, yysvec+15, yyvstop+68, +yycrank+48, yysvec+15, yyvstop+71, +yycrank+60, yysvec+15, yyvstop+74, +yycrank+16, yysvec+15, yyvstop+77, +yycrank+32, yysvec+15, yyvstop+80, +yycrank+32, yysvec+15, yyvstop+83, +yycrank+51, yysvec+15, yyvstop+86, +yycrank+398, 0, yyvstop+89, +yycrank+0, yysvec+4, yyvstop+91, +yycrank+0, yysvec+6, 0, +yycrank+0, 0, yyvstop+93, +yycrank+12, 0, 0, +yycrank+-423, 0, 0, +yycrank+0, yysvec+10, yyvstop+95, +yycrank+108, yysvec+8, yyvstop+97, +yycrank+0, 0, yyvstop+99, +yycrank+-426, 0, 0, +yycrank+474, 0, yyvstop+101, +yycrank+503, 0, yyvstop+103, +yycrank+167, yysvec+45, 0, +yycrank+250, 0, 0, +yycrank+540, 0, 0, +yycrank+0, 0, yyvstop+105, +yycrank+0, 0, yyvstop+107, +yycrank+0, 0, yyvstop+109, +yycrank+0, yysvec+15, yyvstop+111, +yycrank+12, yysvec+15, yyvstop+113, +yycrank+12, yysvec+15, yyvstop+115, +yycrank+39, yysvec+15, yyvstop+117, +yycrank+46, yysvec+15, yyvstop+119, +yycrank+44, yysvec+15, yyvstop+121, +yycrank+14, yysvec+15, yyvstop+123, +yycrank+52, yysvec+15, yyvstop+125, +yycrank+61, yysvec+15, yyvstop+127, +yycrank+48, yysvec+15, yyvstop+129, +yycrank+50, yysvec+15, yyvstop+131, +yycrank+69, yysvec+15, yyvstop+133, +yycrank+60, yysvec+15, yyvstop+135, +yycrank+82, yysvec+15, yyvstop+137, +yycrank+62, yysvec+15, yyvstop+140, +yycrank+78, yysvec+15, yyvstop+142, +yycrank+66, yysvec+15, yyvstop+144, +yycrank+95, yysvec+15, yyvstop+146, +yycrank+90, yysvec+15, yyvstop+148, +yycrank+102, yysvec+15, yyvstop+150, +yycrank+111, yysvec+15, yyvstop+152, +yycrank+97, yysvec+15, yyvstop+154, +yycrank+100, yysvec+15, yyvstop+156, +yycrank+98, yysvec+15, yyvstop+158, +yycrank+108, yysvec+15, yyvstop+160, +yycrank+112, yysvec+15, yyvstop+162, +yycrank+120, yysvec+15, yyvstop+164, +yycrank+121, yysvec+15, yyvstop+166, +yycrank+123, yysvec+15, yyvstop+168, +yycrank+114, yysvec+15, yyvstop+170, +yycrank+0, yysvec+34, 0, +yycrank+0, 0, yyvstop+172, +yycrank+13, yysvec+34, 0, +yycrank+567, 0, 0, +yycrank+131, 0, 0, +yycrank+118, 0, 0, +yycrank+0, 0, yyvstop+174, +yycrank+13, 0, 0, +yycrank+0, yysvec+89, yyvstop+176, +yycrank+269, 0, 0, +yycrank+0, 0, yyvstop+178, +yycrank+366, 0, 0, +yycrank+0, 0, yyvstop+180, +yycrank+484, 0, 0, +yycrank+368, yysvec+95, yyvstop+182, +yycrank+0, yysvec+48, yyvstop+184, +yycrank+12, yysvec+15, yyvstop+186, +yycrank+12, yysvec+15, yyvstop+188, +yycrank+119, yysvec+15, yyvstop+190, +yycrank+126, yysvec+15, yyvstop+192, +yycrank+136, yysvec+15, yyvstop+194, +yycrank+124, yysvec+15, yyvstop+196, +yycrank+124, yysvec+15, yyvstop+198, +yycrank+144, yysvec+15, yyvstop+200, +yycrank+144, yysvec+15, yyvstop+202, +yycrank+134, yysvec+15, yyvstop+204, +yycrank+143, yysvec+15, yyvstop+206, +yycrank+149, yysvec+15, yyvstop+208, +yycrank+130, yysvec+15, yyvstop+210, +yycrank+147, yysvec+15, yyvstop+212, +yycrank+149, yysvec+15, yyvstop+214, +yycrank+136, yysvec+15, yyvstop+216, +yycrank+153, yysvec+15, yyvstop+218, +yycrank+136, yysvec+15, yyvstop+220, +yycrank+0, yysvec+15, yyvstop+222, +yycrank+152, yysvec+15, yyvstop+225, +yycrank+169, yysvec+15, yyvstop+227, +yycrank+153, yysvec+15, yyvstop+229, +yycrank+157, yysvec+15, yyvstop+231, +yycrank+208, yysvec+15, yyvstop+233, +yycrank+157, yysvec+15, yyvstop+235, +yycrank+185, yysvec+15, yyvstop+237, +yycrank+176, yysvec+15, yyvstop+239, +yycrank+183, yysvec+15, yyvstop+241, +yycrank+189, yysvec+15, yyvstop+243, +yycrank+193, yysvec+15, yyvstop+245, +yycrank+177, yysvec+15, yyvstop+247, +yycrank+-602, 0, 0, +yycrank+42, 0, 0, +yycrank+191, 0, 0, +yycrank+197, 0, 0, +yycrank+0, 0, yyvstop+249, +yycrank+0, 0, yyvstop+251, +yycrank+631, 0, 0, +yycrank+513, 0, 0, +yycrank+407, yysvec+136, yyvstop+254, +yycrank+0, 0, yyvstop+256, +yycrank+227, yysvec+15, yyvstop+258, +yycrank+0, yysvec+15, yyvstop+260, +yycrank+204, yysvec+15, yyvstop+263, +yycrank+209, yysvec+15, yyvstop+265, +yycrank+0, yysvec+15, yyvstop+267, +yycrank+0, yysvec+15, yyvstop+270, +yycrank+195, yysvec+15, yyvstop+273, +yycrank+211, yysvec+15, yyvstop+275, +yycrank+197, yysvec+15, yyvstop+277, +yycrank+207, yysvec+15, yyvstop+279, +yycrank+0, yysvec+15, yyvstop+281, +yycrank+214, yysvec+15, yyvstop+284, +yycrank+211, yysvec+15, yyvstop+286, +yycrank+212, yysvec+15, yyvstop+288, +yycrank+216, yysvec+15, yyvstop+290, +yycrank+0, yysvec+15, yyvstop+292, +yycrank+223, yysvec+15, yyvstop+295, +yycrank+226, yysvec+15, yyvstop+297, +yycrank+246, yysvec+15, yyvstop+299, +yycrank+243, yysvec+15, yyvstop+301, +yycrank+234, yysvec+15, yyvstop+303, +yycrank+245, yysvec+15, yyvstop+305, +yycrank+231, yysvec+15, yyvstop+307, +yycrank+265, yysvec+15, yyvstop+309, +yycrank+277, yysvec+15, yyvstop+311, +yycrank+278, yysvec+15, yyvstop+313, +yycrank+278, yysvec+15, yyvstop+315, +yycrank+270, yysvec+15, yyvstop+317, +yycrank+307, yysvec+15, yyvstop+319, +yycrank+0, yysvec+15, yyvstop+321, +yycrank+298, yysvec+15, yyvstop+324, +yycrank+308, yysvec+15, yyvstop+326, +yycrank+424, 0, 0, +yycrank+315, 0, 0, +yycrank+323, 0, 0, +yycrank+0, 0, yyvstop+328, +yycrank+389, 0, 0, +yycrank+0, yysvec+15, yyvstop+330, +yycrank+331, yysvec+15, yyvstop+333, +yycrank+334, yysvec+15, yyvstop+335, +yycrank+0, yysvec+15, yyvstop+337, +yycrank+317, yysvec+15, yyvstop+340, +yycrank+331, yysvec+15, yyvstop+342, +yycrank+339, yysvec+15, yyvstop+344, +yycrank+325, yysvec+15, yyvstop+346, +yycrank+0, yysvec+15, yyvstop+348, +yycrank+0, yysvec+15, yyvstop+351, +yycrank+340, yysvec+15, yyvstop+354, +yycrank+342, yysvec+15, yyvstop+356, +yycrank+0, yysvec+15, yyvstop+358, +yycrank+324, yysvec+15, yyvstop+361, +yycrank+343, yysvec+15, yyvstop+363, +yycrank+349, yysvec+15, yyvstop+365, +yycrank+351, yysvec+15, yyvstop+367, +yycrank+0, yysvec+15, yyvstop+369, +yycrank+360, yysvec+15, yyvstop+372, +yycrank+348, yysvec+15, yyvstop+374, +yycrank+361, yysvec+15, yyvstop+376, +yycrank+366, yysvec+15, yyvstop+378, +yycrank+0, yysvec+15, yyvstop+380, +yycrank+358, yysvec+15, yyvstop+383, +yycrank+378, yysvec+15, yyvstop+385, +yycrank+368, yysvec+15, yyvstop+387, +yycrank+0, 0, yyvstop+389, +yycrank+577, 0, 0, +yycrank+364, 0, 0, +yycrank+372, 0, 0, +yycrank+367, yysvec+15, yyvstop+391, +yycrank+375, yysvec+15, yyvstop+393, +yycrank+370, yysvec+15, yyvstop+395, +yycrank+371, yysvec+15, yyvstop+397, +yycrank+0, yysvec+15, yyvstop+399, +yycrank+384, yysvec+15, yyvstop+402, +yycrank+393, yysvec+15, yyvstop+404, +yycrank+0, yysvec+15, yyvstop+406, +yycrank+0, yysvec+15, yyvstop+409, +yycrank+0, yysvec+15, yyvstop+412, +yycrank+390, yysvec+15, yyvstop+415, +yycrank+401, yysvec+15, yyvstop+417, +yycrank+0, yysvec+15, yyvstop+419, +yycrank+0, yysvec+15, yyvstop+422, +yycrank+0, yysvec+15, yyvstop+425, +yycrank+399, yysvec+15, yyvstop+428, +yycrank+403, yysvec+15, yyvstop+430, +yycrank+389, yysvec+15, yyvstop+432, +yycrank+403, yysvec+15, yyvstop+434, +yycrank+0, 0, yyvstop+436, +yycrank+-653, 0, 0, +yycrank+410, 0, 0, +yycrank+392, yysvec+15, yyvstop+438, +yycrank+0, yysvec+15, yyvstop+440, +yycrank+0, yysvec+15, yyvstop+443, +yycrank+0, yysvec+15, yyvstop+446, +yycrank+401, yysvec+15, yyvstop+449, +yycrank+414, yysvec+15, yyvstop+451, +yycrank+395, yysvec+15, yyvstop+453, +yycrank+416, yysvec+15, yyvstop+455, +yycrank+0, yysvec+15, yyvstop+457, +yycrank+419, yysvec+15, yyvstop+460, +yycrank+0, yysvec+15, yyvstop+462, +yycrank+425, yysvec+15, yyvstop+465, +yycrank+0, 0, yyvstop+467, +yycrank+539, 0, 0, +yycrank+441, yysvec+15, yyvstop+469, +yycrank+435, yysvec+15, yyvstop+471, +yycrank+445, yysvec+15, yyvstop+473, +yycrank+0, yysvec+15, yyvstop+475, +yycrank+0, yysvec+15, yyvstop+478, +yycrank+0, yysvec+15, yyvstop+481, +yycrank+431, yysvec+15, yyvstop+484, +yycrank+-694, 0, 0, +yycrank+0, yysvec+15, yyvstop+486, +yycrank+0, yysvec+15, yyvstop+489, +yycrank+0, yysvec+15, yyvstop+492, +yycrank+0, yysvec+15, yyvstop+495, +yycrank+0, 0, yyvstop+498, +0, 0, 0}; +struct yywork *yytop = yycrank+789; +struct yysvf *yybgin = yysvec+1; +char yymatch[] = { + 0, 1, 1, 1, 1, 1, 1, 1, + 1, 9, 10, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 9, 1, 34, 1, 1, 1, 1, 1, + 1, 1, 1, 43, 1, 43, 1, 1, + 48, 49, 49, 49, 49, 49, 49, 49, + 56, 56, 1, 1, 1, 1, 1, 1, + 1, 65, 65, 65, 65, 69, 70, 71, + 71, 71, 71, 71, 76, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 88, 71, 71, 1, 1, 1, 1, 95, + 1, 65, 65, 65, 65, 69, 70, 71, + 71, 71, 71, 71, 76, 71, 71, 71, + 71, 71, 71, 71, 71, 71, 71, 71, + 88, 71, 71, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, 1, 1, +0}; +char yyextra[] = { +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0,0,0,0,0,0,0,0, +0}; +/* Copyright (c) 1989 AT&T */ +/* All Rights Reserved */ + +/* THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF AT&T */ +/* The copyright notice above does not evidence any */ +/* actual or intended publication of such source code. */ + +#pragma ident "@(#)ncform 6.8 95/02/11 SMI" + +int yylineno =1; +# define YYU(x) x +# define NLSTATE yyprevious=YYNEWLINE +struct yysvf *yylstate [YYLMAX], **yylsp, **yyolsp; +char yysbuf[YYLMAX]; +char *yysptr = yysbuf; +int *yyfnd; +extern struct yysvf *yyestate; +int yyprevious = YYNEWLINE; +#if defined(__cplusplus) || defined(__STDC__) +int yylook(void) +#else +yylook() +#endif +{ + register struct yysvf *yystate, **lsp; + register struct yywork *yyt; + struct yysvf *yyz; + int yych, yyfirst; + struct yywork *yyr; +# ifdef LEXDEBUG + int debug; +# endif + char *yylastch; + /* start off machines */ +# ifdef LEXDEBUG + debug = 0; +# endif + yyfirst=1; + if (!yymorfg) + yylastch = yytext; + else { + yymorfg=0; + yylastch = yytext+yyleng; + } + for(;;){ + lsp = yylstate; + yyestate = yystate = yybgin; + if (yyprevious==YYNEWLINE) yystate++; + for (;;){ +# ifdef LEXDEBUG + if(debug)fprintf(yyout,"state %d\n",yystate-yysvec-1); +# endif + yyt = yystate->yystoff; + if(yyt == yycrank && !yyfirst){ /* may not be any transitions */ + yyz = yystate->yyother; + if(yyz == 0)break; + if(yyz->yystoff == yycrank)break; + } +#ifndef __cplusplus + *yylastch++ = yych = input(); +#else + *yylastch++ = yych = lex_input(); +#endif + if(yylastch > &yytext[YYLMAX]) { + fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); + exit(1); + } + yyfirst=0; + tryagain: +# ifdef LEXDEBUG + if(debug){ + fprintf(yyout,"char "); + allprint(yych); + putchar('\n'); + } +# endif + yyr = yyt; + if ( (int)yyt > (int)yycrank){ + yyt = yyr + yych; + if (yyt <= yytop && yyt->verify+yysvec == yystate){ + if(yyt->advance+yysvec == YYLERR) /* error transitions */ + {unput(*--yylastch);break;} + *lsp++ = yystate = yyt->advance+yysvec; + if(lsp > &yylstate[YYLMAX]) { + fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); + exit(1); + } + goto contin; + } + } +# ifdef YYOPTIM + else if((int)yyt < (int)yycrank) { /* r < yycrank */ + yyt = yyr = yycrank+(yycrank-yyt); +# ifdef LEXDEBUG + if(debug)fprintf(yyout,"compressed state\n"); +# endif + yyt = yyt + yych; + if(yyt <= yytop && yyt->verify+yysvec == yystate){ + if(yyt->advance+yysvec == YYLERR) /* error transitions */ + {unput(*--yylastch);break;} + *lsp++ = yystate = yyt->advance+yysvec; + if(lsp > &yylstate[YYLMAX]) { + fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); + exit(1); + } + goto contin; + } + yyt = yyr + YYU(yymatch[yych]); +# ifdef LEXDEBUG + if(debug){ + fprintf(yyout,"try fall back character "); + allprint(YYU(yymatch[yych])); + putchar('\n'); + } +# endif + if(yyt <= yytop && yyt->verify+yysvec == yystate){ + if(yyt->advance+yysvec == YYLERR) /* error transition */ + {unput(*--yylastch);break;} + *lsp++ = yystate = yyt->advance+yysvec; + if(lsp > &yylstate[YYLMAX]) { + fprintf(yyout,"Input string too long, limit %d\n",YYLMAX); + exit(1); + } + goto contin; + } + } + if ((yystate = yystate->yyother) && (yyt= yystate->yystoff) != yycrank){ +# ifdef LEXDEBUG + if(debug)fprintf(yyout,"fall back to state %d\n",yystate-yysvec-1); +# endif + goto tryagain; + } +# endif + else + {unput(*--yylastch);break;} + contin: +# ifdef LEXDEBUG + if(debug){ + fprintf(yyout,"state %d char ",yystate-yysvec-1); + allprint(yych); + putchar('\n'); + } +# endif + ; + } +# ifdef LEXDEBUG + if(debug){ + fprintf(yyout,"stopped at %d with ",*(lsp-1)-yysvec-1); + allprint(yych); + putchar('\n'); + } +# endif + while (lsp-- > yylstate){ + *yylastch-- = 0; + if (*lsp != 0 && (yyfnd= (*lsp)->yystops) && *yyfnd > 0){ + yyolsp = lsp; + if(yyextra[*yyfnd]){ /* must backup */ + while(yyback((*lsp)->yystops,-*yyfnd) != 1 && lsp > yylstate){ + lsp--; + unput(*yylastch--); + } + } + yyprevious = YYU(*yylastch); + yylsp = lsp; + yyleng = yylastch-yytext+1; + yytext[yyleng] = 0; +# ifdef LEXDEBUG + if(debug){ + fprintf(yyout,"\nmatch "); + sprint(yytext); + fprintf(yyout," action %d\n",*yyfnd); + } +# endif + return(*yyfnd++); + } + unput(*yylastch); + } + if (yytext[0] == 0 /* && feof(yyin) */) + { + yysptr=yysbuf; + return(0); + } +#ifndef __cplusplus + yyprevious = yytext[0] = input(); + if (yyprevious>0) + output(yyprevious); +#else + yyprevious = yytext[0] = lex_input(); + if (yyprevious>0) + lex_output(yyprevious); +#endif + yylastch=yytext; +# ifdef LEXDEBUG + if(debug)putchar('\n'); +# endif + } + } +#if defined(__cplusplus) || defined(__STDC__) +int yyback(int *p, int m) +#else +yyback(p, m) + int *p; +#endif +{ + if (p==0) return(0); + while (*p) { + if (*p++ == m) + return(1); + } + return(0); +} + /* the following are only used in the lex library */ +#if defined(__cplusplus) || defined(__STDC__) +int yyinput(void) +#else +yyinput() +#endif +{ +#ifndef __cplusplus + return(input()); +#else + return(lex_input()); +#endif + } +#if defined(__cplusplus) || defined(__STDC__) +void yyoutput(int c) +#else +yyoutput(c) + int c; +#endif +{ +#ifndef __cplusplus + output(c); +#else + lex_output(c); +#endif + } +#if defined(__cplusplus) || defined(__STDC__) +void yyunput(int c) +#else +yyunput(c) + int c; +#endif +{ + unput(c); + } |