xref: /freebsd/contrib/flex/src/options.c (revision e0c4386e7e71d93b0edc0c8fa156263fc4a8b0b6)
1 /* flex - tool to generate fast lexical analyzers */
2 
3 /*  Copyright (c) 1990 The Regents of the University of California. */
4 /*  All rights reserved. */
5 
6 /*  This code is derived from software contributed to Berkeley by */
7 /*  Vern Paxson. */
8 
9 /*  The United States Government has rights in this work pursuant */
10 /*  to contract no. DE-AC03-76SF00098 between the United States */
11 /*  Department of Energy and the University of California. */
12 
13 /*  This file is part of flex. */
14 
15 /*  Redistribution and use in source and binary forms, with or without */
16 /*  modification, are permitted provided that the following conditions */
17 /*  are met: */
18 
19 /*  1. Redistributions of source code must retain the above copyright */
20 /*     notice, this list of conditions and the following disclaimer. */
21 /*  2. Redistributions in binary form must reproduce the above copyright */
22 /*     notice, this list of conditions and the following disclaimer in the */
23 /*     documentation and/or other materials provided with the distribution. */
24 
25 /*  Neither the name of the University nor the names of its contributors */
26 /*  may be used to endorse or promote products derived from this software */
27 /*  without specific prior written permission. */
28 
29 /*  THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR */
30 /*  IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED */
31 /*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR */
32 /*  PURPOSE. */
33 
34 #include "options.h"
35 
36 /* Be sure to synchronize these options with those defined in "options.h",
37  * the giant switch() statement in "main.c", and the %option processing in
38  * "scan.l".
39  */
40 
41 
42 /* The command-line options, passed to scanopt_init() */
43 optspec_t flexopts[] = {
44 
45 	{"-7", OPT_7BIT, 0}
46 	,
47 	{"--7bit", OPT_7BIT, 0}
48 	,			/* Generate 7-bit scanner. */
49 	{"-8", OPT_8BIT, 0}
50 	,
51 	{"--8bit", OPT_8BIT, 0}
52 	,			/* Generate 8-bit scanner. */
53 	{"--align", OPT_ALIGN, 0}
54 	,			/* Trade off larger tables for better memory alignment. */
55 	{"--noalign", OPT_NO_ALIGN, 0}
56 	,
57 	{"--always-interactive", OPT_ALWAYS_INTERACTIVE, 0}
58 	,
59 	{"--array", OPT_ARRAY, 0}
60 	,
61 	{"-b", OPT_BACKUP, 0}
62 	,
63 	{"--backup", OPT_BACKUP, 0}
64 	,			/* Generate backing-up information to lex.backup. */
65 	{"-B", OPT_BATCH, 0}
66 	,
67 	{"--batch", OPT_BATCH, 0}
68 	,			/* Generate batch scanner (opposite of -I). */
69 	{"--bison-bridge", OPT_BISON_BRIDGE, 0}
70 	,			/* Scanner to be called by a bison pure parser. */
71 	{"--bison-locations", OPT_BISON_BRIDGE_LOCATIONS, 0}
72 	,			/* Scanner to be called by a bison pure parser. */
73 	{"-i", OPT_CASE_INSENSITIVE, 0}
74 	,
75 	{"--case-insensitive", OPT_CASE_INSENSITIVE, 0}
76 	,			/* Generate case-insensitive scanner. */
77 
78 		{"-C[aefFmr]", OPT_COMPRESSION,
79 	 "Specify degree of table compression (default is -Cem)"},
80 	{"-+", OPT_CPLUSPLUS, 0}
81 	,
82 	{"--c++", OPT_CPLUSPLUS, 0}
83 	,			/* Generate C++ scanner class. */
84 	{"-d", OPT_DEBUG, 0}
85 	,
86 	{"--debug", OPT_DEBUG, 0}
87 	,			/* Turn on debug mode in generated scanner. */
88 	{"--nodebug", OPT_NO_DEBUG, 0}
89 	,
90 	{"-s", OPT_NO_DEFAULT, 0}
91 	,
92 	{"--nodefault", OPT_NO_DEFAULT, 0}
93 	,			/* Suppress default rule to ECHO unmatched text. */
94 	{"--default", OPT_DEFAULT, 0}
95 	,
96 	{"-c", OPT_DONOTHING, 0}
97 	,			/* For POSIX lex compatibility. */
98 	{"-n", OPT_DONOTHING, 0}
99 	,			/* For POSIX lex compatibility. */
100 	{"--ecs", OPT_ECS, 0}
101 	,			/* Construct equivalence classes. */
102 	{"--noecs", OPT_NO_ECS, 0}
103 	,
104 	{"-F", OPT_FAST, 0}
105 	,
106 	{"--fast", OPT_FAST, 0}
107 	,			/* Same as -CFr. */
108 	{"-f", OPT_FULL, 0}
109 	,
110 	{"--full", OPT_FULL, 0}
111 	,			/* Same as -Cfr. */
112 	{"--header-file[=FILE]", OPT_HEADER_FILE, 0}
113 	,
114 	{"-?", OPT_HELP, 0}
115 	,
116 	{"-h", OPT_HELP, 0}
117 	,
118 	{"--help", OPT_HELP, 0}
119 	,			/* Produce this help message. */
120 	{"--hex", OPT_HEX, 0}
121 	,			/* Use hexadecimals in debug/trace outputs */
122 	{"-I", OPT_INTERACTIVE, 0}
123 	,
124 	{"--interactive", OPT_INTERACTIVE, 0}
125 	,			/* Generate interactive scanner (opposite of -B). */
126 	{"-l", OPT_LEX_COMPAT, 0}
127 	,
128 	{"--lex-compat", OPT_LEX_COMPAT, 0}
129 	,			/* Maximal compatibility with original lex. */
130 	{"-X", OPT_POSIX_COMPAT, 0}
131 	,
132 	{"--posix-compat", OPT_POSIX_COMPAT, 0}
133 	,			/* Maximal compatibility with POSIX lex. */
134         {"--preproc=NUM", OPT_PREPROC_LEVEL, 0}
135         ,
136 	{"-L", OPT_NO_LINE, 0}
137 	,			/* Suppress #line directives in scanner. */
138 	{"--noline", OPT_NO_LINE, 0}
139 	,			/* Suppress #line directives in scanner. */
140 	{"--main", OPT_MAIN, 0}
141 	,			/* use built-in main() function. */
142 	{"--nomain", OPT_NO_MAIN, 0}
143 	,
144 	{"--meta-ecs", OPT_META_ECS, 0}
145 	,			/* Construct meta-equivalence classes. */
146 	{"--nometa-ecs", OPT_NO_META_ECS, 0}
147 	,
148 	{"--never-interactive", OPT_NEVER_INTERACTIVE, 0}
149 	,
150 	{"-o FILE", OPT_OUTFILE, 0}
151 	,
152 	{"--outfile=FILE", OPT_OUTFILE, 0}
153 	,			/* Write to FILE (default is lex.yy.c) */
154 	{"-p", OPT_PERF_REPORT, 0}
155 	,
156 	{"--perf-report", OPT_PERF_REPORT, 0}
157 	,			/* Generate performance report to stderr. */
158 	{"--pointer", OPT_POINTER, 0}
159 	,
160 	{"-P PREFIX", OPT_PREFIX, 0}
161 	,
162 	{"--prefix=PREFIX", OPT_PREFIX, 0}
163 	,			/* Use PREFIX (default is yy) */
164 	{"-Dmacro", OPT_PREPROCDEFINE, 0}
165 	,			/* Define a preprocessor symbol. */
166 	{"--read", OPT_READ, 0}
167 	,			/* Use read(2) instead of stdio. */
168 	{"-R", OPT_REENTRANT, 0}
169 	,
170 	{"--reentrant", OPT_REENTRANT, 0}
171 	,			/* Generate a reentrant C scanner. */
172 	{"--noreentrant", OPT_NO_REENTRANT, 0}
173 	,
174 	{"--reject", OPT_REJECT, 0}
175 	,
176 	{"--noreject", OPT_NO_REJECT, 0}
177 	,
178 	{"-S FILE", OPT_SKEL, 0}
179 	,
180 	{"--skel=FILE", OPT_SKEL, 0}
181 	,			/* Use skeleton from FILE */
182 	{"--stack", OPT_STACK, 0}
183 	,
184 	{"--stdinit", OPT_STDINIT, 0}
185 	,
186 	{"--nostdinit", OPT_NO_STDINIT, 0}
187 	,
188 	{"-t", OPT_STDOUT, 0}
189 	,
190 	{"--stdout", OPT_STDOUT, 0}
191 	,			/* Write generated scanner to stdout. */
192 	{"-T", OPT_TRACE, 0}
193 	,
194 	{"--trace", OPT_TRACE, 0}
195 	,			/* Flex should run in trace mode. */
196 	{"--tables-file[=FILE]", OPT_TABLES_FILE, 0}
197 	,			/* Save tables to FILE */
198         {"--tables-verify", OPT_TABLES_VERIFY, 0}
199         ,                       /* Tables integrity check */
200 	{"--nounistd", OPT_NO_UNISTD_H, 0}
201 	,			/* Do not include unistd.h */
202 	{"-v", OPT_VERBOSE, 0}
203 	,
204 	{"--verbose", OPT_VERBOSE, 0}
205 	,			/* Write summary of scanner statistics to stdout. */
206 	{"-V", OPT_VERSION, 0}
207 	,
208 	{"--version", OPT_VERSION, 0}
209 	,			/* Report flex version. */
210 	{"--warn", OPT_WARN, 0}
211 	,
212 	{"-w", OPT_NO_WARN, 0}
213 	,
214 	{"--nowarn", OPT_NO_WARN, 0}
215 	,			/* Suppress warning messages. */
216 	{"--yyclass=NAME", OPT_YYCLASS, 0}
217 	,
218 	{"--yylineno", OPT_YYLINENO, 0}
219 	,
220 	{"--noyylineno", OPT_NO_YYLINENO, 0}
221 	,
222 
223 	{"--yymore", OPT_YYMORE, 0}
224 	,
225 	{"--noyymore", OPT_NO_YYMORE, 0}
226 	,
227 	{"--noyywrap", OPT_NO_YYWRAP, 0}
228 	,
229 	{"--yywrap", OPT_YYWRAP, 0}
230 	,
231 
232 	{"--nounput", OPT_NO_UNPUT, 0}
233 	,
234 	{"--noyy_push_state", OPT_NO_YY_PUSH_STATE, 0}
235 	,
236 	{"--noyy_pop_state", OPT_NO_YY_POP_STATE, 0}
237 	,
238 	{"--noyy_top_state", OPT_NO_YY_TOP_STATE, 0}
239 	,
240 	{"--noyy_scan_buffer", OPT_NO_YY_SCAN_BUFFER, 0}
241 	,
242 	{"--noyy_scan_bytes", OPT_NO_YY_SCAN_BYTES, 0}
243 	,
244 	{"--noyy_scan_string", OPT_NO_YY_SCAN_STRING, 0}
245 	,
246 	{"--noyyget_extra", OPT_NO_YYGET_EXTRA, 0}
247 	,
248 	{"--noyyset_extra", OPT_NO_YYSET_EXTRA, 0}
249 	,
250 	{"--noyyget_leng", OPT_NO_YYGET_LENG, 0}
251 	,
252 	{"--noyyget_text", OPT_NO_YYGET_TEXT, 0}
253 	,
254 	{"--noyyget_lineno", OPT_NO_YYGET_LINENO, 0}
255 	,
256 	{"--noyyset_lineno", OPT_NO_YYSET_LINENO, 0}
257 	,
258 	{"--noyyget_in", OPT_NO_YYGET_IN, 0}
259 	,
260 	{"--noyyset_in", OPT_NO_YYSET_IN, 0}
261 	,
262 	{"--noyyget_out", OPT_NO_YYGET_OUT, 0}
263 	,
264 	{"--noyyset_out", OPT_NO_YYSET_OUT, 0}
265 	,
266 	{"--noyyget_lval", OPT_NO_YYGET_LVAL, 0}
267 	,
268 	{"--noyyset_lval", OPT_NO_YYSET_LVAL, 0}
269 	,
270 	{"--noyyget_lloc", OPT_NO_YYGET_LLOC, 0}
271 	,
272 	{"--noyyset_lloc", OPT_NO_YYSET_LLOC, 0}
273 	,
274         {"--unsafe-no-m4-sect3-escape", OPT_NO_SECT3_ESCAPE, 0}
275         ,
276 	{0, 0, 0}		/* required final NULL entry. */
277 };
278 
279 /* vim:set tabstop=8 softtabstop=4 shiftwidth=4: */
280