# Lexical Analysor (mainly for config files)

    #ifndef HTLEX_H
    #define HTLEX_H

    #include "HTUtils.h"

    #ifdef SHORT_NAMES
    #define	lex_verb	lex_verbose
    #endif /*SHORT_NAMES*/

    typedef enum {
        LEX_NONE,		/* Internally used	*/
        LEX_EOF,		/* End of file		*/
        LEX_REC_SEP,	/* Record separator	*/
        LEX_FIELD_SEP,	/* Field separator	*/
        LEX_ITEM_SEP,	/* List item separator	*/
        LEX_OPEN_PAREN,	/* Group start tag	*/
        LEX_CLOSE_PAREN,	/* Group end tag	*/
        LEX_AT_SIGN,	/* Address qualifier	*/
        LEX_ALPH_STR,	/* Alphanumeric string	*/
        LEX_TMPL_STR	/* Template string	*/
    } LexItem;

    extern char lex_buffer[];	/* Read lexical string		*/
    extern int lex_line;		/* Line number in source file	*/

## Get Next Lexical Item

If returns `LEX_ALPH_STR` or `LEX_TMPL_STR` the string is in global buffer `lex_buffer.`

    PUBLIC LexItem lex PARAMS((FILE * fp));

## Push Back Latest Item

    PUBLIC void unlex PARAMS((LexItem lex_item));

## Get the Name for Lexical Item

    PUBLIC char *lex_verbose PARAMS((LexItem lex_item));

    #endif /* not HTLEX_H */

End of file HTLex.h.