Slide 87
Slide 87 text
def s_ident(scanner, token): return token
def s_operator(scanner, token): return "op%s" % token
def s_float(scanner, token): return float(token)
def s_int(scanner, token): return int(token)
scanner = re.Scanner([
(r"[a-zA-Z_]\w*", s_ident), (r"\d+\.\d*", s_float),
(r"\d+", s_int), (r"=|\+|-|\*|/", s_operator),
(r"\s+", None),
])
print(scanner.scan("sum = 3*foo + 312.50 + bar"))
# (['sum', 'op=', 3, 'op*', 'foo', 'op+', 312.5, 'op+', 'bar'], '')