Changeset View
Changeset View
Standalone View
Standalone View
sys/ddb/db_lex.h
Show All 32 Lines | |||||
/* | /* | ||||
* Author: David B. Golub, Carnegie Mellon University | * Author: David B. Golub, Carnegie Mellon University | ||||
* Date: 7/90 | * Date: 7/90 | ||||
*/ | */ | ||||
/* | /* | ||||
* Lexical analyzer. | * Lexical analyzer. | ||||
*/ | */ | ||||
/* | |||||
* Options and flags can configure db_read_token() => db_lex() behavior. | |||||
* | |||||
* When a radix other than DRT_DEFAULT_RADIX is used, it overrides | |||||
* auto-detection, as well as the user-specified db_radix, in db_lex() of | |||||
* 'tNUMBER' tokens. | |||||
*/ | |||||
enum { | |||||
/* Infer or use db_radix using the old logic. */ | |||||
DRT_DEFAULT_RADIX = 0, | |||||
/* The following set an explicit base for tNUMBER lex. */ | |||||
DRT_OCTAL, | |||||
DRT_DECIMAL, | |||||
DRT_HEXADECIMAL, | |||||
}; | |||||
#define DRT_RADIX_MASK 0x3 | |||||
/* | |||||
* Flag bit powers of two for db_read_token_flags. | |||||
* The low 2 bits are reserved for radix selection. | |||||
*/ | |||||
enum { | |||||
_DRT_WSPACE = 2, | |||||
}; | |||||
#ifndef BIT | |||||
#define BIT(n) (1ull << (n)) | |||||
#endif | |||||
enum { | |||||
DRT_WSPACE = BIT(_DRT_WSPACE), | |||||
}; | |||||
#define DRT_VALID_FLAGS_MASK ((int)DRT_RADIX_MASK | DRT_WSPACE) | |||||
void db_flush_lex(void); | void db_flush_lex(void); | ||||
char *db_get_line(void); | char *db_get_line(void); | ||||
void db_inject_line(const char *command); | void db_inject_line(const char *command); | ||||
int db_read_line(void); | int db_read_line(void); | ||||
int db_read_token(void); | int db_read_token_flags(int); | ||||
void db_unread_token(int t); | void db_unread_token(int t); | ||||
static inline int db_read_token(void) | |||||
markj: Style: the function name should appear on a new line. | |||||
{ | |||||
return (db_read_token_flags(0)); | |||||
} | |||||
extern db_expr_t db_tok_number; | extern db_expr_t db_tok_number; | ||||
#define TOK_STRING_SIZE 120 | #define TOK_STRING_SIZE 120 | ||||
extern char db_tok_string[TOK_STRING_SIZE]; | extern char db_tok_string[TOK_STRING_SIZE]; | ||||
#define tEOF (-1) | #define tEOF (-1) | ||||
#define tEOL 1 | #define tEOL 1 | ||||
#define tNUMBER 2 | #define tNUMBER 2 | ||||
#define tIDENT 3 | #define tIDENT 3 | ||||
Show All 23 Lines | |||||
#define tGREATER_EQ 27 | #define tGREATER_EQ 27 | ||||
#define tBIT_AND 28 | #define tBIT_AND 28 | ||||
#define tBIT_OR 29 | #define tBIT_OR 29 | ||||
#define tLOG_AND 30 | #define tLOG_AND 30 | ||||
#define tLOG_OR 31 | #define tLOG_OR 31 | ||||
#define tSTRING 32 | #define tSTRING 32 | ||||
#define tQUESTION 33 | #define tQUESTION 33 | ||||
#define tBIT_NOT 34 | #define tBIT_NOT 34 | ||||
#define tWSPACE 35 | |||||
#endif /* !_DDB_DB_LEX_H_ */ | #endif /* !_DDB_DB_LEX_H_ */ |
Style: the function name should appear on a new line.