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