Add python script to generate value_string from file with #defines
This commit is contained in:
parent
d248204bb7
commit
e56a12f2a5
|
@ -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)
|
Loading…
Reference in New Issue