• Andi Kleen's avatar
    perf tools: Add a simple expression parser for JSON · 07516736
    Andi Kleen authored
    Add a simple expression parser good enough to parse JSON relation
    expressions. The parser is implemented using bison.
    
    This is just intended as an simple parser for internal usage in the
    event lists, not the beginning of a "perf scripting language"
    
    v2: Use expr__ prefix instead of expr_
        Support multiple free variables for parser
    
    Committer note:
    
    The v2 patch had:
    
      %define api.pure full
    
    In expr.y, that is a feature introduced in bison 2.7, to have reentrant
    parsers, not using global variables, which would make tools/perf stop
    building with the bison version shipped in older distros, so Andi
    realised that the other parsers (e.g. parse-events.y) were using:
    
      %pure-parser
    
    Which is present in older versions of bison and fits the bill.
    
    I added:
    
      CFLAGS_expr-bison.o += -DYYENABLE_NLS=0 -DYYLTYPE_IS_TRIVIAL=0 -w
    
    To finally make it build, copying what was there for pmu-bison.o,
    another parser.
    Signed-off-by: default avatarAndi Kleen <ak@linux.intel.com>
    Acked-by: default avatarJiri Olsa <jolsa@kernel.org>
    Link: http://lkml.kernel.org/r/20170320201711.14142-8-andi@firstfloor.org
    [ stdlib.h is needed in tests/expr.c for free() fixing build in systems such as ubuntu:16.04-x-s390 ]
    Signed-off-by: default avatarArnaldo Carvalho de Melo <acme@redhat.com>
    07516736
expr.h 548 Bytes