読者です 読者をやめる 読者になる 読者になる

似てるけどちょっと違うアプローチ

(defun a-todo-to-lisp ( a-todo )
  (cl-ppcre:register-groups-bind
          (section detail estimate)
          ("(\\++)\\S*([^,]*)(.*)" a-todo)
          (list
            (let ((sum 0 ))
                  (cl-ppcre:do-matches (s e "\\+" section)
                                       (incf sum (- e s)))
                  sum)
            detail
            (let ((str-estimate (cl-ppcre:scan-to-strings "[0-9]+" estimate)))
              (if (null str-estimate) 0
                (read-from-string str-estimate))))))

cl-ppcre をつかって、+++なんとか,20 みたいなのを (3 "なんとか" 20) に置き換えた。タブを使ってレベルを分けるのとちょっとにているけど、違うアプローチで簡単に解析した。う~ん。一気に、構文解析している。いいのか?わるいのか?

汎用性はないな。