| //===- ConfigLexer.h - ConfigLexer Declarations -----------------*- C++ -*-===// |
| // |
| // The LLVM Compiler Infrastructure |
| // |
| // This file was developed by Reid Spencer and is distributed under the |
| // University of Illinois Open Source License. See LICENSE.TXT for details. |
| // |
| //===----------------------------------------------------------------------===// |
| // |
| // This file declares the types and data needed by ConfigLexer.l |
| // |
| //===------------------------------------------------------------------------=== |
| #ifndef LLVM_TOOLS_LLVMC_CONFIGLEXER_H |
| #define LLVM_TOOLS_LLVMC_CONFIGLEXER_H |
| |
| #include <string> |
| #include <istream> |
| #include <cassert> |
| |
| namespace llvm { |
| |
| struct ConfigLexerInfo |
| { |
| int64_t IntegerVal; |
| std::string StringVal; |
| bool in_value; |
| unsigned lineNum; |
| }; |
| |
| extern ConfigLexerInfo ConfigLexerState; |
| |
| class InputProvider { |
| public: |
| InputProvider(const std::string& nm) { |
| name = nm; |
| errCount = 0; |
| } |
| virtual ~InputProvider(); |
| virtual unsigned read(char *buf, unsigned max_size) = 0; |
| virtual void error(const std::string& msg); |
| virtual void checkErrors(); |
| |
| private: |
| std::string name; |
| unsigned errCount; |
| }; |
| |
| extern InputProvider* ConfigLexerInput; |
| |
| enum ConfigLexerTokens { |
| EOFTOK = 0, ///< Returned by Configlex when we hit end of file |
| EOLTOK, ///< End of line |
| ERRORTOK, ///< Error token |
| ARGS_SUBST, ///< The substitution item %args% |
| BINDIR_SUBST, ///< The substitution item %bindir% |
| ASSEMBLY, ///< The value "assembly" (and variants) |
| ASSEMBLER, ///< The name "assembler" (and variants) |
| BYTECODE, ///< The value "bytecode" (and variants) |
| COMMAND, ///< The name "command" (and variants) |
| DEFS_SUBST, ///< The substitution item %defs% |
| EQUALS, ///< The equals sign, = |
| FALSETOK, ///< A boolean false value (false/no/off) |
| FOPTS_SUBST, ///< The substitution item %fOpts% |
| IN_SUBST, ///< The substitution item %in% |
| INCLS_SUBST, ///< The substitution item %incls% |
| INTEGER, ///< An integer |
| LANG, ///< The name "lang" (and variants) |
| LIBDIR_SUBST, ///< The substitution item %libdir% |
| LIBPATHS, ///< The name "libpaths" (and variants) |
| LIBS, ///< The name "libs" (and variants) |
| LIBS_SUBST, ///< The substitution item %libs% |
| LINKER, ///< The name "linker" (and variants) |
| LLVMGCCDIR_SUBST, ///< The substitution item %llvmgccdir% |
| LLVMGCCARCH_SUBST, ///< The substitution item %llvmgccarch% |
| LLVMGCC_SUBST, ///< The substitution item %llvmgcc% |
| LLVMGXX_SUBST, ///< The substitution item %llvmgxx% |
| LLVMCC1_SUBST, ///< The substitution item %llvmcc1% |
| LLVMCC1PLUS_SUBST, ///< The substitution item %llvmcc1plus% |
| MOPTS_SUBST, ///< The substitution item %Mopts% |
| NAME, ///< The name "name" (and variants) |
| OPT_SUBST, ///< The substitution item %opt% |
| OPTIMIZER, ///< The name "optimizer" (and variants) |
| OPTION, ///< A command line option |
| OPT1, ///< The name "opt1" (and variants) |
| OPT2, ///< The name "opt2" (and variants) |
| OPT3, ///< The name "opt3" (and variants) |
| OPT4, ///< The name "opt4" (and variants) |
| OPT5, ///< The name "opt5" (and variants) |
| OUT_SUBST, ///< The output substitution item %out% |
| OUTPUT, ///< The name "output" (and variants) |
| PREPROCESSES, ///< The name "preprocesses" (and variants) |
| PREPROCESSOR, ///< The name "preprocessor" (and variants) |
| REQUIRED, ///< The name "required" (and variants) |
| SEPARATOR, ///< A configuration item separator |
| SPACE, ///< Space between options |
| STATS_SUBST, ///< The stats substitution item %stats% |
| STRING, ///< A quoted string |
| TARGET_SUBST, ///< The substitition item %target% |
| TIME_SUBST, ///< The substitution item %time% |
| TRANSLATES, ///< The name "translates" (and variants) |
| TRANSLATOR, ///< The name "translator" (and variants) |
| TRUETOK, ///< A boolean true value (true/yes/on) |
| VERBOSE_SUBST, ///< The substitution item %verbose% |
| VERSION_TOK, ///< The name "version" (and variants) |
| WOPTS_SUBST ///< The %WOpts% substitution |
| }; |
| |
| extern ConfigLexerTokens Configlex(); |
| |
| } |
| |
| #endif |