#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
Благодаря Martijn, я попытался запустить код. Я получаю сообщение об ошибке. line = tranform (строка) NameError: имя 'tranform' не определено – user2532296