Convert function arguments.
This commit is contained in:
parent
37bc124046
commit
451f6247f3
|
@ -35,12 +35,12 @@ class Lexer:
|
|||
# Need to be sorted longest to shortest.
|
||||
('ignore', re.compile(r'[ \t]')),
|
||||
('string', re.compile(r'"([^\\]|(\\.))*?"', re.M)),
|
||||
('varexp', re.compile(r'\${[-_0-9a-z/A-Z.]+}')),
|
||||
('id', re.compile('''[,-><${}=+_0-9a-z/A-Z@.*]+''')),
|
||||
('eol', re.compile(r'\n')),
|
||||
('comment', re.compile(r'\#.*')),
|
||||
('lparen', re.compile(r'\(')),
|
||||
('rparen', re.compile(r'\)')),
|
||||
('varexp', re.compile(r'\${[-_0-9a-z/A-Z.]+}')),
|
||||
]
|
||||
|
||||
def lex(self, code):
|
||||
|
@ -133,12 +133,32 @@ class Parser():
|
|||
yield(self.statement())
|
||||
|
||||
class Converter:
|
||||
ignored_funcs = {'cmake_minimum_required' : True}
|
||||
ignored_funcs = {'cmake_minimum_required' : True,
|
||||
'enable_testing' : True,
|
||||
'include' : True}
|
||||
def __init__(self, cmake_root):
|
||||
self.cmake_root = cmake_root
|
||||
self.indent_unit = ' '
|
||||
self.indent_level = 0
|
||||
|
||||
def convert_args(self, args):
|
||||
res = []
|
||||
for i in args:
|
||||
if i.tid == 'id':
|
||||
res.append("'%s'" % i.value)
|
||||
elif i.tid == 'varexp':
|
||||
res.append('%s' % i.value)
|
||||
elif i.tid == 'string':
|
||||
res.append("'%s'" % i.value)
|
||||
else:
|
||||
print(i)
|
||||
raise RuntimeError('Unknown arg type.')
|
||||
if len(res) > 1:
|
||||
return '[' + ', '.join(res) + ']'
|
||||
if len(res) == 1:
|
||||
return res[0]
|
||||
return ''
|
||||
|
||||
def write_entry(self, outfile, t):
|
||||
if t.name in Converter.ignored_funcs:
|
||||
return
|
||||
|
@ -167,6 +187,9 @@ class Converter:
|
|||
args.append(l)
|
||||
args = ["'%s'" % i for i in args]
|
||||
line = 'project(' + ', '.join(args) + ')'
|
||||
elif t.name == 'set':
|
||||
varname = t.args[0].value.lower()
|
||||
line = '%s = %s\n' % (varname, self.convert_args(t.args[1:]))
|
||||
else:
|
||||
line = '''# %s''' % t.name
|
||||
outfile.write(indent)
|
||||
|
|
Loading…
Reference in New Issue