#define _LEX_H
/* Lex get_char() return values */
-#define L_EOF (-1)
-#define L_EOL (-2)
+#define L_EOF (-1)
+#define L_EOL (-2)
/* Internal tokens */
-#define T_NONE 100
+#define T_NONE 100
/* Tokens returned by get_token() */
-#define T_EOF 101
-#define T_NUMBER 102
-#define T_IPADDR 103
-#define T_IDENTIFIER 104
-#define T_UNQUOTED_STRING 105
-#define T_QUOTED_STRING 106
-#define T_BOB 108 /* begin block */
-#define T_EOB 109 /* end of block */
-#define T_EQUALS 110
-#define T_COMMA 111
-#define T_EOL 112
-#define T_SEMI 113
-#define T_ERROR 200
+#define T_EOF 101
+#define T_NUMBER 102
+#define T_IPADDR 103
+#define T_IDENTIFIER 104
+#define T_UNQUOTED_STRING 105
+#define T_QUOTED_STRING 106
+#define T_BOB 108 /* begin block */
+#define T_EOB 109 /* end of block */
+#define T_EQUALS 110
+#define T_COMMA 111
+#define T_EOL 112
+#define T_SEMI 113
+#define T_ERROR 200
/*
* The following will be returned only if
* the appropriate expect flag has been set
*/
-#define T_PINT32 114 /* positive integer */
-#define T_PINT32_RANGE 115 /* positive integer range */
-#define T_INT32 116 /* integer */
-#define T_INT64 117 /* 64 bit integer */
-#define T_NAME 118 /* name max 128 chars */
-#define T_STRING 119 /* string */
+#define T_PINT32 114 /* positive integer */
+#define T_PINT32_RANGE 115 /* positive integer range */
+#define T_INT32 116 /* integer */
+#define T_INT64 117 /* 64 bit integer */
+#define T_NAME 118 /* name max 128 chars */
+#define T_STRING 119 /* string */
-#define T_ALL 0 /* no expectations */
+#define T_ALL 0 /* no expectations */
/* Lexical state */
enum lex_state {
};
/* Lex scan options */
-#define LOPT_NO_IDENT 0x1 /* No Identifiers -- use string */
+#define LOPT_NO_IDENT 0x1 /* No Identifiers -- use string */
/* Lexical context */
typedef struct s_lex_context {
- struct s_lex_context *next; /* pointer to next lexical context */
- int options; /* scan options */
- char *fname; /* filename */
- FILE *fd; /* file descriptor */
- char line[MAXSTRING]; /* input line */
- char str[MAXSTRING]; /* string being scanned */
- int str_len; /* length of string */
- int line_no; /* file line number */
- int col_no; /* char position on line */
- enum lex_state state; /* lex_state variable */
- int ch; /* last char/L_VAL returned by get_char */
+ struct s_lex_context *next; /* pointer to next lexical context */
+ int options; /* scan options */
+ char *fname; /* filename */
+ FILE *fd; /* file descriptor */
+ char line[MAXSTRING]; /* input line */
+ char str[MAXSTRING]; /* string being scanned */
+ int str_len; /* length of string */
+ int line_no; /* file line number */
+ int col_no; /* char position on line */
+ int begin_line_no; /* line no of beginning of string */
+ enum lex_state state; /* lex_state variable */
+ int ch; /* last char/L_VAL returned by get_char */
int token;
uint32_t pint32_val;
uint32_t pint32_val2;
int32_t int32_val;
int64_t int64_val;
void (*scan_error)(char *file, int line, struct s_lex_context *lc, char *msg, ...);
- void *caller_ctx; /* caller private data */
+ void *caller_ctx; /* caller private data */
} LEX;
typedef void (LEX_ERROR_HANDLER)(char *file, int line, LEX *lc, char *msg, ...);