1 /*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License, Version 1.0 only
6 * (the "License"). You may not use this file except in compliance
7 * with the License.
8 *
9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 * or http://www.opensolaris.org/os/licensing.
11 * See the License for the specific language governing permissions
12 * and limitations under the License.
13 *
14 * When distributing Covered Code, include this CDDL HEADER in each
15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 * If applicable, add the following below this CDDL HEADER, with the
17 * fields enclosed by brackets "[]" replaced with your own identifying
18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 *
20 * CDDL HEADER END
21 */
22 /* Copyright (c) 1989 AT&T */
23 /* All Rights Reserved */
24
25
26 #include <stdio.h>
27
28 #ifdef EUC
29 #include <euc.h>
30 #include <widec.h>
31 #include <limits.h>
32 #endif
33
34
35 #ifndef JLSLEX
36 #pragma weak yyinput
37 #pragma weak yyleng
38 #pragma weak yytext
39 #pragma weak yyunput
40
41 #define CHR char
42 #define YYTEXT yytext
43 #define YYLENG yyleng
44 #define YYINPUT yyinput
45 #define YYUNPUT yyunput
46 #define YYOUTPUT yyoutput
47 #define YYREJECT yyreject
48 #endif
49
50 #ifdef WOPTION
51 #pragma weak yyinput
52 #pragma weak yyleng
53 #pragma weak yytext
54 #pragma weak yyunput
55
56 #define CHR wchar_t
57 #define YYTEXT yytext
58 #define YYLENG yyleng
59 #define YYINPUT yyinput
60 #define YYUNPUT yyunput
61 #define YYOUTPUT yyoutput
62 #define YYREJECT yyreject_w
63 #endif
64
65 #ifdef EOPTION
66 #pragma weak yyleng
67 #pragma weak yytext
68 #pragma weak yywinput
69 #pragma weak yywleng
70 #pragma weak yywtext
71 #pragma weak yywunput
72
73 #define CHR wchar_t
74 #define YYTEXT yywtext
75 #define YYLENG yywleng
76 #define YYINPUT yywinput
77 #define YYUNPUT yywunput
78 #define YYOUTPUT yywoutput
79 #define YYREJECT yyreject_e
80 extern unsigned char yytext[];
81 extern int yyleng;
82 #endif
83
84 #pragma weak yyback
85 extern int yyback(int *, int);
86 extern int YYINPUT(void);
87 extern void YYUNPUT(int);
88 #ifdef EUC
89 static int yyracc(int);
90 #else
91 extern int yyracc(int);
92 #endif
93 #ifdef EOPTION
94 extern size_t wcstombs(char *, const wchar_t *, size_t);
95 #endif
96
97 #pragma weak yyout
98 extern FILE *yyout, *yyin;
99
100 #pragma weak yyfnd
101 #pragma weak yyprevious
102 extern int yyprevious, *yyfnd;
103
104 #pragma weak yyextra
105 extern char yyextra[];
106
107 extern int YYLENG;
108 extern CHR YYTEXT[];
109
110 #pragma weak yylsp
111 #pragma weak yylstate
112 #pragma weak yyolsp
113 extern struct {int *yyaa, *yybb; int *yystops; } *yylstate[], **yylsp, **yyolsp;
114
115 int
YYREJECT(void)116 YYREJECT(void)
117 {
118 for (; yylsp < yyolsp; yylsp++)
119 YYTEXT[YYLENG++] = YYINPUT();
120 if (*yyfnd > 0)
121 return (yyracc(*yyfnd++));
122 while (yylsp-- > yylstate) {
123 YYUNPUT(YYTEXT[YYLENG-1]);
124 YYTEXT[--YYLENG] = 0;
125 if (*yylsp != 0 && (yyfnd = (*yylsp)->yystops) && *yyfnd > 0)
126 return (yyracc(*yyfnd++));
127 }
128 #ifdef EOPTION
129 yyleng = wcstombs((char *)yytext, YYTEXT, YYLENG*MB_LEN_MAX);
130 #endif
131 if (YYTEXT[0] == 0)
132 return (0);
133 YYLENG = 0;
134 #ifdef EOPTION
135 yyleng = 0;
136 #endif
137 return (-1);
138 }
139
140 int
yyracc(int m)141 yyracc(int m)
142 {
143 yyolsp = yylsp;
144 if (yyextra[m]) {
145 while (yyback((*yylsp)->yystops, -m) != 1 && yylsp > yylstate) {
146 yylsp--;
147 YYUNPUT(YYTEXT[--YYLENG]);
148 }
149 }
150 yyprevious = YYTEXT[YYLENG-1];
151 YYTEXT[YYLENG] = 0;
152 #ifdef EOPTION
153 yyleng = wcstombs((char *)yytext, YYTEXT, YYLENG*MB_LEN_MAX);
154 #endif
155 return (m);
156 }
157