diff options
author | Brad King <brad.king@kitware.com> | 2003-12-08 18:36:59 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2003-12-08 18:36:59 (GMT) |
commit | 00ae7ea261b634196ff5f77b995cbef0305ea31c (patch) | |
tree | b2d33bf877abb4dbd6a0c6d71615ae4e97e9093a /Source/cmListFileLexer.h | |
parent | 380ee8ca363a70e2763b6e77c36108f1b372837d (diff) | |
download | CMake-00ae7ea261b634196ff5f77b995cbef0305ea31c.zip CMake-00ae7ea261b634196ff5f77b995cbef0305ea31c.tar.gz CMake-00ae7ea261b634196ff5f77b995cbef0305ea31c.tar.bz2 |
ENH: Using lex-based tokenizer and a simple recursive-descent parser in place of the old hand-coded parser for CMake listfiles.
Diffstat (limited to 'Source/cmListFileLexer.h')
-rw-r--r-- | Source/cmListFileLexer.h | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/Source/cmListFileLexer.h b/Source/cmListFileLexer.h new file mode 100644 index 0000000..dea8b7d --- /dev/null +++ b/Source/cmListFileLexer.h @@ -0,0 +1,60 @@ +/*========================================================================= + + Program: CMake - Cross-Platform Makefile Generator + Module: $RCSfile$ + Language: C++ + Date: $Date$ + Version: $Revision$ + + Copyright (c) 2002 Kitware, Inc., Insight Consortium. All rights reserved. + See Copyright.txt or http://www.cmake.org/HTML/Copyright.html for details. + + This software is distributed WITHOUT ANY WARRANTY; without even + the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR + PURPOSE. See the above copyright notices for more information. + +=========================================================================*/ +#ifndef cmListFileLexer_h +#define cmListFileLexer_h + +typedef enum cmListFileLexer_Type_e +{ + cmListFileLexer_Token_None, + cmListFileLexer_Token_Newline, + cmListFileLexer_Token_Identifier, + cmListFileLexer_Token_ParenLeft, + cmListFileLexer_Token_ParenRight, + cmListFileLexer_Token_ArgumentUnquoted, + cmListFileLexer_Token_ArgumentQuoted, + cmListFileLexer_Token_Error +} cmListFileLexer_Type; + +typedef struct cmListFileLexer_Token_s cmListFileLexer_Token; +struct cmListFileLexer_Token_s +{ + cmListFileLexer_Type type; + char* text; + int length; + int line; + int column; +}; + +typedef struct cmListFileLexer_s cmListFileLexer; + +#ifdef __cplusplus +extern "C" +{ +#endif + +cmListFileLexer* cmListFileLexer_New(); +int cmListFileLexer_SetFileName(cmListFileLexer*, const char*); +cmListFileLexer_Token* cmListFileLexer_Scan(cmListFileLexer*); +long cmListFileLexer_GetCurrentLine(cmListFileLexer*); +long cmListFileLexer_GetCurrentColumn(cmListFileLexer*); +void cmListFileLexer_Delete(cmListFileLexer*); + +#ifdef __cplusplus +} /* extern "C" */ +#endif + +#endif |