[PATCHv3 0/5] perf expr: Add flex scanner

From: Jiri Olsa
Date: Fri Feb 28 2020 - 04:36:29 EST


hi,
while preparing changes for user defined metric expressions
I also moved the expression manual parser to flex.

The reason is to have an easy and reasonable way to support
and parse multiple user-defined metric expressions from
command line or file.

I was posponing the change, but I just saw another update to
the expr manual scanner (from Kajol Jain), so cherry picked
just the expr flex code changes to get it out.

Kajol Jain,
I think it should ease up your change for unknown values marked
by '?'. Would you consider rebasing your changes on top of this?


v3 changes:
- keep the EXPR_MAX_OTHER not too high (Andi)
- add normalize call to flexer, so we have all symbols covered [kajoljain]

v2 changes:
- handle special chars properly
- fix return value for expr__parse

Available also in:
git://git.kernel.org/pub/scm/linux/kernel/git/jolsa/perf.git
perf/metric_flex

thanks,
jirka


---
Jiri Olsa (5):
perf expr: Add expr.c object
perf expr: Move expr lexer to flex
perf expr: Increase EXPR_MAX_OTHER
perf expr: Straighten expr__parse/expr__find_other interface
perf expr: Make expr__parse return -1 on error

tools/perf/tests/expr.c | 10 +++----
tools/perf/util/Build | 11 +++++++-
tools/perf/util/expr.c | 112 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/perf/util/expr.h | 8 ++----
tools/perf/util/expr.l | 114 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
tools/perf/util/expr.y | 185 +++++++++++++++++++++----------------------------------------------------------------------------------------------------
tools/perf/util/stat-shadow.c | 4 +--
7 files changed, 276 insertions(+), 168 deletions(-)
create mode 100644 tools/perf/util/expr.c
create mode 100644 tools/perf/util/expr.l