From e56a12f2a58a167b21b429b6aa9c09f2b4d21c2c Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Sun, 22 Jan 2017 23:36:09 +0100 Subject: [PATCH] Add python script to generate value_string from file with #defines --- tools/define-create-valstr.py | 39 +++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) create mode 100755 tools/define-create-valstr.py diff --git a/tools/define-create-valstr.py b/tools/define-create-valstr.py new file mode 100755 index 0000000..4f7db81 --- /dev/null +++ b/tools/define-create-valstr.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python + +from optparse import OptionParser +from pyparsing import * +from value_string import * + +# define the structure of a macro definition (the empty term is used +# to advance to the next non-whitespace character) +macroDef = "#define" + Word(alphas+"_",alphanums+"_").setResultsName("macro") + \ + empty + restOfLine.setResultsName("value") + +NL = Suppress( LineEnd() ) +restOfLineNL = restOfLine + NL + +LineComment = Literal('//') + restOfLineNL +Comment = cStyleComment | LineComment + +# doesn't work :/ +macroDef.ignore(Comment) + +parser = OptionParser() +parser.add_option("-n", "--name", dest="name", + help="Name of the value_string symbol to create") +parser.add_option("-f", "--flavor", dest="flavor", default='osmocom', + help="Flavor of generated C (osmocom, wireshark)") +parser.add_option("-w", "--weak-symbol", dest="weak", default=True, + help="Generate weak symbols") +(options, args) = parser.parse_args() +filename = args[0] + +wr = ValueStringWriter(flavor=options.flavor, weak=options.weak, includes=[filename]) + +with open(filename, 'r') as f: + res = macroDef.scanString(f.read()) + vdict = {} + wr.export_header() + for tokens, startPos, EndPos in res: + vdict[tokens.value] = tokens.macro + wr.export_value_str(options.name, vdict, sort_key=None)