Advertisement
Guest User

Untitled

a guest
Mar 4th, 2018
107
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.27 KB | None | 0 0
  1. (de mnorm (Email)
  2. (let (c (chop Email) Email ())
  3. (while (or (unless c (rollback) (throw 'parse "no @")) (<> "@" (car c))) ## processing local part
  4. (when (= (car c) "\\") (do 2 (push 'Email (pop 'c))))
  5. (when (= (car c) "(")
  6. (while (or (unless c (rollback) (throw 'parse "unmatched paran")) (<> (car c) ")" ) )
  7. (pop 'c)
  8. )
  9. (pop 'c)
  10. )
  11. (when (= (car c) "\"")
  12. (push 'Email (pop 'c))
  13. (while (<> "\"" (car c))
  14. (push 'Email (pop 'c))
  15. )
  16. )
  17. (if (= "+" (car c))
  18. (while (<> "@" (car c))
  19. (pop 'c)
  20. )
  21. (push 'Email (pop 'c))
  22. )
  23. )
  24. (when (=0 (length Email)) (rollback) (throw 'parse "no local part"))
  25. (when (=0 (dec (length c))) (rollback) (throw 'parse "no host part"))
  26. (pack (reverse Email) c)
  27. )
  28. )
  29.  
  30. (class +MInd)
  31. (dm has> (Val X)
  32. (extra Val
  33. (if (= Val (mnorm Val)) (mnorm X) X) ) )
  34.  
  35. (dm rel> (Obj Old New Hook)
  36. (extra Obj (mnorm Old) (mnorm New) Hook) )
  37.  
  38. (dm rel?> (Obj Val Hook)
  39. (let V (mnorm Val)
  40. (or (not V) (extra Obj V Hook)) ) )
  41.  
  42. (dm lose> (Obj Val Hook)
  43. (extra Obj (mnorm Val) Hook) )
  44.  
  45. (dm keep> (Obj Val Hook)
  46. (extra Obj (mnorm Val) Hook) )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement