From 2adcbed9fc11b197cac666f35c182b337552b3b1 Mon Sep 17 00:00:00 2001 From: NĂ©lio Laranjeiro Date: Wed, 26 Oct 2011 11:49:20 +0200 Subject: cesar/maximus/python/lib/cesar: add a header defines parser --- cesar/maximus/python/lib/cesar/defineparser.py | 38 ++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 cesar/maximus/python/lib/cesar/defineparser.py (limited to 'cesar/maximus') diff --git a/cesar/maximus/python/lib/cesar/defineparser.py b/cesar/maximus/python/lib/cesar/defineparser.py new file mode 100644 index 0000000000..e5f7c4518c --- /dev/null +++ b/cesar/maximus/python/lib/cesar/defineparser.py @@ -0,0 +1,38 @@ +#!/usr/bin/python + +############################################################################# +# Copyright (C) 2011 Spidcom +############################################################################# + +def define_parser (filename): + """ + Get constant defines into a python dict. + param filename : the string to parse the file. + return a dict containing the defines. + + Supported defines: + #define FOO 2 + #define BAR FOO + + Not supported defines: All Macros set to check values, computes values, + etc... + """ + import os + import re + # Read the file. + fd = open (filename, 'r') + f = fd.read () + fd.close () + defines = \ + re.findall (r'(?m)^#define\s+([A-Z_0-9]+)\s+((?:0x)?[0-9A-Z_]+)\s*$', + f) + defs = {} + defines_dict = dict (defines) + for i in defines: + a = i[0] + if re.match (r'^[A-Z][A-Z_0-9]*$', i[1]): + b = defines_dict[i[1]] + else: + b = i[1] + defs[a] = int (b, 0) + return defs -- cgit v1.2.3