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