Guest User

recursive parsec

a guest
Aug 20th, 2018
197
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.71 KB | None | 0 0
  1. #! /usr/bin/env python3
  2. import parsec as psc
  3. digit = psc.regex("[0-9]")
  4.  
  5.  
  6. def number():
  7.   @psc.Parser
  8.   def number_parser(text, index):
  9.     res = (digit + number())(text, index)
  10.     return res if res.status else digit(text, index)
  11.   return number_parser
  12.  
  13. try:
  14.   _ = number().parse("42423")
  15.   print(_)
  16. except RecursionError as _:
  17.   print("Recursion!")
  18.  
  19. @psc.Parser
  20. def number(text, index):
  21.   return ((digit + number) ^ digit)(text, index)
  22.  
  23. try:
  24.   print(number.parse("42423"))
  25. except RecursionError as _:
  26.   print("Recursion!")
  27.  
  28. @psc.generate
  29. def number():
  30.   r = yield (digit + number) ^ digit
  31.   return r
  32.  
  33. try:
  34.   print(number.parse("42423"))
  35. except RecursionError as _:
  36.   print("Recursion!")
Advertisement
Add Comment
Please, Sign In to add comment