38 lines
835 B
Python
Executable File
38 lines
835 B
Python
Executable File
#!/usr/bin/env python
|
|
|
|
#
|
|
# Convert ETSI documents to an enum
|
|
#
|
|
|
|
import re, sys
|
|
|
|
def convert(string):
|
|
string = string.strip().replace(" ", "").rjust(8, "0")
|
|
var = 0
|
|
offset = 7
|
|
for char in string:
|
|
assert offset >= 0
|
|
var = var | (int(char) << offset)
|
|
offset = offset - 1
|
|
|
|
return var
|
|
|
|
def string(name):
|
|
name = name.replace(" ", "_")
|
|
name = name.replace('"', "")
|
|
name = name.replace('/', '_')
|
|
name = name.replace('(', '_')
|
|
name = name.replace(')', '_')
|
|
return "%s_%s" % (sys.argv[2], name.upper())
|
|
|
|
file = open(sys.argv[1])
|
|
|
|
|
|
for line in file:
|
|
m = re.match(r"[ \t]*(?P<value>[01 ]+)[ ]+(?P<name>[a-zA-Z /0-9()]+)", line[:-1])
|
|
|
|
if m:
|
|
print "\t%s\t\t= %d," % (string(m.groupdict()["name"]), convert(m.groupdict()["value"]))
|
|
else:
|
|
print line[:-1]
|