四則演算の続き。 面倒臭くなってきたのでかなりテキトー。
(defun ys:get-tokens (expression) (let (tokens) (while (string-match "[0-9]+\\|[-+*/()]" expression) (setq tokens (cons (match-string 0 expression) tokens)) (setq expression (replace-match "" nil t expression))) (reverse tokens)))
(defun ys:calc-subfunc (tokens) (let (token new-tokens) ;; かっこをはずす (while tokens (setq token (car tokens)) (setq tokens (cdr tokens)) (when (string= "(" token) (let (subtokens (depth 1)) (while (> depth 0) (unless tokens (error "かっこの対応がおかしいよ!")) (setq token (car tokens)) (setq tokens (cdr tokens)) (cond ((string= ")" token) (setq depth (1- depth))) ((string= "(" token) (setq depth (1+ depth)))) (when (> depth 0) (setq subtokens (cons token subtokens)))) (setq token (number-to-string (ys:calc-subfunc (reverse subtokens)))))) (when (string= ")" token) (error "かっこの対応がおかしいよ!")) (setq new-tokens (cons token new-tokens))) (setq tokens (reverse new-tokens)) (setq new-tokens nil) ;; *, / を計算する (let ((number (string-to-number (car tokens))) term) (setq tokens (cdr tokens)) (while tokens (setq token (car tokens)) (setq tokens (cdr tokens)) (if (not term) (cond ((string= "+" token) (setq term '+)) ((string= "-" token) (setq term '-)) ((string= "*" token) (setq term '*)) ((string= "/" token) (setq term '/)) (t (error "変なところに算術記号じゃない文字が?"))) (if (or (eq term '*) (eq term '/)) (progn (setq number (funcall term number (string-to-number token))) (setq term nil)) (setq new-tokens (cons term (cons number new-tokens))) (setq number (string-to-number token) term nil)))) (setq tokens (reverse (cons number new-tokens))) ;; +, - を計算する (let ((value (car tokens))) (setq tokens (cdr tokens)) (while tokens (setq term (car tokens)) (setq tokens (cdr tokens)) (setq number (car tokens)) (setq tokens (cdr tokens)) (setq value (funcall term value number))) value))))
(defun ys:calculation (expression) (ys:calc-subfunc (ys:get-tokens expression)))
あー、無駄な部分があるー。 でも放置。
UNIX 系 OS や Windows 上で動くウィンドウ・アプリケーション統合開発環境。 約 3 週間ぶりの version up。
Windows 向け GCC を中心とした開発環境。 所謂人柱版。
オレンジニュースから。 メモ。
7/13 発売予定のツアードキュメント DVD。
8/17 発売予定のライブ完全収録 DVD。
6/24 には NHK で“ポップジャム・ピュアサイド東京事変”という特番が予定されている模様。 楽しみだ。 :)