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