タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

evalとcommon-lispに関するjoan9のブックマーク (1)

  • マクロ内でevalするべきでない理由 - Random Notes

    答え:レキシカル環境が無視されるから。 実例で解説しよう。CL-Yaccというライブラリがある。名前の通りyaccをCommon Lispにポートしたものだ。実装は単純明快で、背景となる理論を知っていればすんなり読めるはずだ。 CL-Yaccはdefine-parserというマクロを提供しており、ユーザーはこれを用いてパーサーを定義する。以下に簡単な四則演算パーサーの例を示す。 1 2 3 4 5 6 7 8 9 10 (yacc:define-parser *parser* (:start-symbol expression) (:terminals (integer + - * /)) (expression (expression + expression (lambda (a _ b) (declare (ignore _)) (+ a b))) (expression - exp

  • 1