mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2025-01-17 10:46:33 +00:00
26226a9772
Adding expr flex code instead of the manual parser code. So it's easily extensible in upcoming changes. The new flex code is in flex.l object and gets compiled like all the other flexers we use. It's defined as flex reentrant parser. It's used by both expr__parse and expr__find_other interfaces by separating the starting point. There's no intended change of functionality ;-) the test expr is passing. Signed-off-by: Jiri Olsa <jolsa@kernel.org> Reviewed-by: Andi Kleen <ak@linux.intel.com> Cc: Alexander Shishkin <alexander.shishkin@linux.intel.com> Cc: John Garry <john.garry@huawei.com> Cc: Kajol Jain <kjain@linux.ibm.com> Cc: Michael Petlan <mpetlan@redhat.com> Cc: Namhyung Kim <namhyung@kernel.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Ravi Bangoria <ravi.bangoria@linux.ibm.com> Link: http://lore.kernel.org/lkml/20200228093616.67125-3-jolsa@kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
25 lines
563 B
C
25 lines
563 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
#ifndef PARSE_CTX_H
|
|
#define PARSE_CTX_H 1
|
|
|
|
#define EXPR_MAX_OTHER 15
|
|
#define MAX_PARSE_ID EXPR_MAX_OTHER
|
|
|
|
struct parse_id {
|
|
const char *name;
|
|
double val;
|
|
};
|
|
|
|
struct parse_ctx {
|
|
int num_ids;
|
|
struct parse_id ids[MAX_PARSE_ID];
|
|
};
|
|
|
|
void expr__ctx_init(struct parse_ctx *ctx);
|
|
void expr__add_id(struct parse_ctx *ctx, const char *id, double val);
|
|
int expr__parse(double *final_val, struct parse_ctx *ctx, const char **pp);
|
|
int expr__find_other(const char *p, const char *one, const char ***other,
|
|
int *num_other);
|
|
|
|
#endif
|