- for n, t in re.findall(r'\((.*?), *(.*?)\)', args):
- sargs.append(Arg(n, t))
- sim = Simcall(name, handler == 'H',
- Arg('result', rest), sargs, ans)
+ if not re.match(r"^\s*$", args):
+ for arg in re.split(",", args):
+ args = args.strip()
+ match = re.match(r"^(.*?)\s*?(\S+)$", arg)
+ t, n = match.groups()
+ t = t.strip()
+ n = n.strip()
+ sargs.append(Arg(n, t))
+ if ret == "void":
+ ans = "Proc"
+ else:
+ ans = "Func"
+ handler = True
+ if attrs:
+ attrs = attrs[2:-2]
+ for attr in re.split(",", attrs):
+ if attr == "block":
+ ans = "Blck"
+ elif attr == "nohandler":
+ handler = False
+ else:
+ assert False, "Unknown attribute %s in: %s" % (attr, line)
+ sim = Simcall(name, handler, Arg('result', ret), sargs, ans)