(defvar *new-constituent-traits* (let ((table (copy-trait-table *default-constituent-traits*))) (setf (find-traits #\_ table) (list (find-trait :alphabetic) (find-trait :decimal-separator)) (find-traits #\~ table) (list (find-trait :alphabetic) (find-trait :ratio-marker)) (find-traits #\⨁ table) (list (find-trait :alphabetic) (find-trait :plus-sign)) (find-traits #\: table) (list (find-trait :alphabetic)) (find-traits #\> table) (list (find-trait :package-marker))) table)) (let ((*constituent-trait-table* *new-constituent-traits*)) (read-from-string "(⨁1_234_567~7_654_321 foo:bar >keyword)")) ;; (1234567/7654321 |FOO:BAR| :KEYWORD) ;; 39