diff options
Diffstat (limited to 'src/lex.h')
-rw-r--r-- | src/lex.h | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/src/lex.h b/src/lex.h new file mode 100644 index 0000000..2105d0e --- /dev/null +++ b/src/lex.h @@ -0,0 +1,115 @@ +/** + * @file lex.h + * @author Joe Wingbermuehle + * @date 2004-2006 + * + * @brief XML lexer header file. + * + */ + +#ifndef LEX_H +#define LEX_H + +/** Tokens. + * Note that any change made to this typedef must be reflected in + * TOKEN_MAP in lex.c. + */ +typedef enum { + + TOK_INVALID, + + TOK_ACTIVEBACKGROUND, + TOK_ACTIVEFOREGROUND, + TOK_BACKGROUND, + TOK_BORDERSTYLE, + TOK_CLASS, + TOK_CLOCK, + TOK_CLOCKSTYLE, + TOK_CLOSE, + TOK_DESKTOPS, + TOK_DOCK, + TOK_DOUBLECLICKSPEED, + TOK_DOUBLECLICKDELTA, + TOK_EXIT, + TOK_FOCUSMODEL, + TOK_FONT, + TOK_FOREGROUND, + TOK_GROUP, + TOK_HEIGHT, + TOK_ICONPATH, + TOK_INCLUDE, + TOK_JWM, + TOK_KEY, + TOK_KILL, + TOK_LAYER, + TOK_MAXIMIZE, + TOK_MENU, + TOK_MENUSTYLE, + TOK_MINIMIZE, + TOK_MOUSE, + TOK_MOVE, + TOK_MOVEMODE, + TOK_NAME, + TOK_OPTION, + TOK_OUTLINE, + TOK_PAGER, + TOK_PAGERSTYLE, + TOK_POPUP, + TOK_POPUPSTYLE, + TOK_PROGRAM, + TOK_RESIZE, + TOK_RESIZEMODE, + TOK_RESTART, + TOK_RESTARTCOMMAND, + TOK_ROOTMENU, + TOK_SENDTO, + TOK_SEPARATOR, + TOK_SHADE, + TOK_SHUTDOWNCOMMAND, + TOK_SNAPMODE, + TOK_STARTUPCOMMAND, + TOK_STICK, + TOK_SWALLOW, + TOK_TASKLISTSTYLE, + TOK_TASKLIST, + TOK_THEME, + TOK_THEMEPATH, + TOK_TRAY, + TOK_TRAYBUTTON, + TOK_TRAYBUTTONSTYLE, + TOK_TRAYSTYLE, + TOK_WIDTH + +} TokenType; + +/** Structure to represent an XML attribute. */ +typedef struct AttributeNode { + + char *name; /**< The name of the attribute. */ + char *value; /**< The value for the attribute. */ + struct AttributeNode *next; /**< The next attribute in the list. */ + +} AttributeNode; + +/** Structure to represent an XML tag. */ +typedef struct TokenNode { + + TokenType type; + char *invalidName; + char *value; + char *fileName; + int line; + struct AttributeNode *attributes; + struct TokenNode *parent; + struct TokenNode *subnodeHead, *subnodeTail; + struct TokenNode *next; + +} TokenNode; + +TokenNode *Tokenize(const char *line, const char *fileName); + +const char *GetTokenName(const TokenNode *tp); +const char *GetTokenTypeName(TokenType type); + +#endif + |