Tutorial 3 Building an AST with Node
まんま
>>> from lepl import * >>> symbol = Token('[^0-9a-zA-Z \t\r\n]') >>> value = Token(UnsignedFloat()) >>> negfloat = lambda x: -float(x) >>> number = Or(value >> float, ... ~symbol('-') & value >> negfloat) >>> expr = Delayed() >>> add = number & symbol('+') & expr > Node >>> sub = number & symbol('-') & expr > Node >>> expr += add | sub | number >>> expr.parse('1+2-3 +4-5') [Node(...)] >>> ast = expr.parse('1+2-3 +4-5')[0] >>> print(ast) Node +- 1.0 +- '+' `- Node +- 2.0 +- '-' `- Node +- 3.0 +- '+' `- Node +- 4.0 +- '-' `- 5.0