mirror of https://github.com/lumapu/ahoy.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.1 KiB
40 lines
1.1 KiB
import re
|
|
import os
|
|
import queue
|
|
|
|
def error(msg):
|
|
print("ERROR: " + msg)
|
|
exit()
|
|
|
|
def check(inp, lst, pattern):
|
|
q = queue.LifoQueue()
|
|
out = []
|
|
keep = True
|
|
for line in inp:
|
|
x = re.findall(pattern, line)
|
|
if len(x) > 0:
|
|
if line.find("ENDIF_") != -1:
|
|
if not q.empty():
|
|
e = q.get()
|
|
if e[0] == x[0]:
|
|
keep = e[1]
|
|
elif line.find("IF_") != -1:
|
|
q.put((x[0], keep))
|
|
if keep is True:
|
|
keep = x[0] in lst
|
|
elif line.find("E") != -1:
|
|
if q.empty():
|
|
error("(ELSE) missing open statement!")
|
|
e = q.get()
|
|
q.put(e)
|
|
if e[1] is True:
|
|
keep = not keep
|
|
else:
|
|
if keep is True:
|
|
out.append(line)
|
|
return out
|
|
|
|
def conv(inp, lst):
|
|
#print(lst)
|
|
out = check(inp, lst, r'\/\*(?:IF_|ELS|ENDIF_)([A-Z0-9\-_]+)?\*\/')
|
|
return check(out, lst, r'\<\!\-\-(?:IF_|ELS|ENDIF_)([A-Z0-9\-_]+)?\-\-\>')
|
|
|