fix parser, add functions
This commit is contained in:
parent
14477d73b0
commit
0426bb04ac
1
main.c
1
main.c
@ -16,7 +16,6 @@ int main(int argc, char *argv[]) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
parser_init(&parser);
|
||||
node = parser_parse(&parser, argv[1], "x");
|
||||
|
||||
if (!node) {
|
||||
|
||||
@ -20,6 +20,17 @@ MAKE_FUNCTION_1_ARG(atan)
|
||||
MAKE_FUNCTION_1_ARG(sinh)
|
||||
MAKE_FUNCTION_1_ARG(cosh)
|
||||
MAKE_FUNCTION_1_ARG(tanh)
|
||||
MAKE_FUNCTION_1_ARG(floor)
|
||||
MAKE_FUNCTION_1_ARG(ceil)
|
||||
|
||||
static double mf_sgn(const double *args) {
|
||||
if (args[0] < 0.0)
|
||||
return -1.0;
|
||||
else if (args[0] > 0.0)
|
||||
return 1.0;
|
||||
else
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
static double mf_min(const double *args) {
|
||||
if (args[0] < args[1])
|
||||
@ -57,6 +68,9 @@ const struct math_function *fns_get(void) {
|
||||
{ "min", 2, mf_min },
|
||||
{ "max", 2, mf_max },
|
||||
{ "mod", 2, mf_mod },
|
||||
{ "sgn", 1, mf_sgn },
|
||||
{ "floor", 1, mf_floor },
|
||||
{ "ceil", 1, mf_ceil },
|
||||
{ NULL }
|
||||
};
|
||||
|
||||
|
||||
5
parser.c
5
parser.c
@ -300,11 +300,8 @@ int parse_n_expressions(struct parser *parser, struct expr_node **out_nodes, siz
|
||||
return 1;
|
||||
}
|
||||
|
||||
void parser_init(struct parser *parser) {
|
||||
error_buffer_init(&parser->eb);
|
||||
}
|
||||
|
||||
int parser_parse_n(struct parser *parser, const char *str, const char *variable_name, struct expr_node **out_nodes, size_t n) {
|
||||
error_buffer_init(&parser->eb);
|
||||
lex_init(&parser->lexer, str, variable_name);
|
||||
|
||||
if (!parse_n_expressions(parser, out_nodes, n)) {
|
||||
|
||||
1
parser.h
1
parser.h
@ -9,7 +9,6 @@ struct parser {
|
||||
struct error_buffer eb;
|
||||
};
|
||||
|
||||
void parser_init(struct parser *parser);
|
||||
int parser_parse_n(struct parser *parser, const char *str, const char *variable_name, struct expr_node **out_nodes, size_t n);
|
||||
struct expr_node *parser_parse(struct parser *parser, const char *str, const char *variable_name);
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user