#define
行は定数を作成します。それらのためにPythonで変数を作成するだけです:
STDIN_BASEADDRESS = 0x40600000
STDOUT_BASEADDRESS = 0x40600000
# ******************************************************************
# Definitions for driver UARTLITE
XPAR_XUARTLITE_NUM_INSTANCES = 1
したがって、その部分を削除して、等号#define
を挿入するだけです。=
正規表現のセットがその仕事をします:
import re
from functools import partial
replacements = (
partial(re.compile(r'\s*#define ([A-Z_]+) (.*)').sub, r'\1 = \2'),
partial(re.compile(r'\s*/\*\s*(.*?)\s*\*/').sub, r'# \1'),
)
for line in inputsequence:
for transform in replacements:
line = transform(line)
print line
デモ:
>>> import re
>>> from functools import partial
>>> replacements = (
... partial(re.compile(r'\s*#define ([A-Z_]+) (.*)').sub, r'\1 = \2'),
... partial(re.compile(r'\s*/\*\s*(.*?)\s*\*/').sub, r'# \1'),
... )
>>> for line in inputsequence:
... for transform in replacements:
... line = transform(line)
... print line
...
STDIN_BASEADDRESS = 0x40600000
STDOUT_BASEADDRESS = 0x40600000
# ****************************************************************
# Definitions for driver UARTLITE
XPAR_XUARTLITE_NUM_INSTANCES = 1
それでも定義を関数に変換したい場合は、置換パターンを調整するだけです:
partial(re.compile(r'\s*#define ([A-Z_]+) (.*)').sub, r'def \1():\n return \2'),
その結果:
def STDIN_BASEADDRESS():
return 0x40600000
def STDOUT_BASEADDRESS():
return 0x40600000
# ****************************************************************
# Definitions for driver UARTLITE
def XPAR_XUARTLITE_NUM_INSTANCES():
return 1