bc: reorder functions, delete forward declarations, no code changes - part 2
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
b0e3761410
commit
cca79a0064
@ -379,8 +379,6 @@ typedef struct BcInstPtr {
|
|||||||
size_t len;
|
size_t len;
|
||||||
} BcInstPtr;
|
} BcInstPtr;
|
||||||
|
|
||||||
static int bc_id_cmp(const void *e1, const void *e2);
|
|
||||||
|
|
||||||
// BC_LEX_NEG is not used in lexing; it is only for parsing.
|
// BC_LEX_NEG is not used in lexing; it is only for parsing.
|
||||||
typedef enum BcLexType {
|
typedef enum BcLexType {
|
||||||
|
|
||||||
@ -656,34 +654,6 @@ typedef struct BcParse {
|
|||||||
|
|
||||||
} BcParse;
|
} BcParse;
|
||||||
|
|
||||||
#if ENABLE_BC
|
|
||||||
|
|
||||||
static BcStatus bc_lex_token(BcLex *l);
|
|
||||||
|
|
||||||
#define BC_PARSE_TOP_OP(p) (*((BcLexType *) bc_vec_top(&(p)->ops)))
|
|
||||||
#define BC_PARSE_LEAF(p, rparen) \
|
|
||||||
(((p) >= BC_INST_NUM && (p) <= BC_INST_SQRT) || (rparen) || \
|
|
||||||
(p) == BC_INST_INC_POST || (p) == BC_INST_DEC_POST)
|
|
||||||
|
|
||||||
// We can calculate the conversion between tokens and exprs by subtracting the
|
|
||||||
// position of the first operator in the lex enum and adding the position of the
|
|
||||||
// first in the expr enum. Note: This only works for binary operators.
|
|
||||||
#define BC_PARSE_TOKEN_INST(t) ((char) ((t) -BC_LEX_NEG + BC_INST_NEG))
|
|
||||||
|
|
||||||
static BcStatus bc_parse_expr(BcParse *p, uint8_t flags, BcParseNext next);
|
|
||||||
|
|
||||||
#endif // ENABLE_BC
|
|
||||||
|
|
||||||
#if ENABLE_DC
|
|
||||||
|
|
||||||
#define DC_PARSE_BUF_LEN ((int) (sizeof(uint32_t) * CHAR_BIT))
|
|
||||||
|
|
||||||
static BcStatus dc_lex_token(BcLex *l);
|
|
||||||
|
|
||||||
static BcStatus dc_parse_expr(BcParse *p, uint8_t flags);
|
|
||||||
|
|
||||||
#endif // ENABLE_DC
|
|
||||||
|
|
||||||
typedef struct BcProgram {
|
typedef struct BcProgram {
|
||||||
|
|
||||||
size_t len;
|
size_t len;
|
||||||
@ -1165,6 +1135,16 @@ static void bc_vec_free(void *vec)
|
|||||||
free(v->v);
|
free(v->v);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int bc_id_cmp(const void *e1, const void *e2)
|
||||||
|
{
|
||||||
|
return strcmp(((const BcId *) e1)->name, ((const BcId *) e2)->name);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void bc_id_free(void *id)
|
||||||
|
{
|
||||||
|
free(((BcId *) id)->name);
|
||||||
|
}
|
||||||
|
|
||||||
static size_t bc_map_find(const BcVec *v, const void *ptr)
|
static size_t bc_map_find(const BcVec *v, const void *ptr)
|
||||||
{
|
{
|
||||||
size_t low = 0, high = v->len;
|
size_t low = 0, high = v->len;
|
||||||
@ -2665,16 +2645,6 @@ err:
|
|||||||
}
|
}
|
||||||
#endif // ENABLE_DC
|
#endif // ENABLE_DC
|
||||||
|
|
||||||
static int bc_id_cmp(const void *e1, const void *e2)
|
|
||||||
{
|
|
||||||
return strcmp(((const BcId *) e1)->name, ((const BcId *) e2)->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
static void bc_id_free(void *id)
|
|
||||||
{
|
|
||||||
free(((BcId *) id)->name);
|
|
||||||
}
|
|
||||||
|
|
||||||
static BcStatus bc_func_insert(BcFunc *f, char *name, bool var)
|
static BcStatus bc_func_insert(BcFunc *f, char *name, bool var)
|
||||||
{
|
{
|
||||||
BcId a;
|
BcId a;
|
||||||
@ -3632,8 +3602,20 @@ static void bc_parse_create(BcParse *p, size_t func,
|
|||||||
}
|
}
|
||||||
|
|
||||||
#if ENABLE_BC
|
#if ENABLE_BC
|
||||||
|
|
||||||
|
#define BC_PARSE_TOP_OP(p) (*((BcLexType *) bc_vec_top(&(p)->ops)))
|
||||||
|
#define BC_PARSE_LEAF(p, rparen) \
|
||||||
|
(((p) >= BC_INST_NUM && (p) <= BC_INST_SQRT) || (rparen) || \
|
||||||
|
(p) == BC_INST_INC_POST || (p) == BC_INST_DEC_POST)
|
||||||
|
|
||||||
|
// We can calculate the conversion between tokens and exprs by subtracting the
|
||||||
|
// position of the first operator in the lex enum and adding the position of the
|
||||||
|
// first in the expr enum. Note: This only works for binary operators.
|
||||||
|
#define BC_PARSE_TOKEN_INST(t) ((char) ((t) -BC_LEX_NEG + BC_INST_NEG))
|
||||||
|
|
||||||
static BcStatus bc_parse_else(BcParse *p);
|
static BcStatus bc_parse_else(BcParse *p);
|
||||||
static BcStatus bc_parse_stmt(BcParse *p);
|
static BcStatus bc_parse_stmt(BcParse *p);
|
||||||
|
static BcStatus bc_parse_expr(BcParse *p, uint8_t flags, BcParseNext next);
|
||||||
|
|
||||||
static BcStatus bc_parse_operator(BcParse *p, BcLexType type, size_t start,
|
static BcStatus bc_parse_operator(BcParse *p, BcLexType type, size_t start,
|
||||||
size_t *nexprs, bool next)
|
size_t *nexprs, bool next)
|
||||||
@ -4971,9 +4953,13 @@ static BcStatus bc_parse_expression(BcParse *p, uint8_t flags)
|
|||||||
{
|
{
|
||||||
return bc_parse_expr(p, flags, bc_parse_next_read);
|
return bc_parse_expr(p, flags, bc_parse_next_read);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // ENABLE_BC
|
#endif // ENABLE_BC
|
||||||
|
|
||||||
#if ENABLE_DC
|
#if ENABLE_DC
|
||||||
|
|
||||||
|
#define DC_PARSE_BUF_LEN ((int) (sizeof(uint32_t) * CHAR_BIT))
|
||||||
|
|
||||||
static BcStatus dc_parse_register(BcParse *p)
|
static BcStatus dc_parse_register(BcParse *p)
|
||||||
{
|
{
|
||||||
BcStatus s;
|
BcStatus s;
|
||||||
@ -5196,6 +5182,7 @@ static void dc_parse_init(BcParse *p, size_t func)
|
|||||||
{
|
{
|
||||||
bc_parse_create(p, func, dc_parse_parse, dc_lex_token);
|
bc_parse_create(p, func, dc_parse_parse, dc_lex_token);
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif // ENABLE_DC
|
#endif // ENABLE_DC
|
||||||
|
|
||||||
static void common_parse_init(BcParse *p, size_t func)
|
static void common_parse_init(BcParse *p, size_t func)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user