2
我正在嘗試製作一個將@this轉換爲「this」的閱讀器宏。 這是我目前有:在Lisp閱讀器宏中讀取字符串輸入
(defun string-reader (stream char)
(declare (ignore char))
(format nil "\"~a\"" (read-line stream t nil t))
)
(set-macro-character #\@ #'string-reader)
的問題是,這要求我把一個換行符曾經@this後。我也嘗試過(讀取),但這只是返回未設置的變量測試。我不能硬編碼@符號後的字符數,因爲我不知道會有多少字符。有沒有什麼辦法解決這一問題?
編輯:是否只有這樣才能循環讀取char和peek-char,直到讀到#),#\ space或#\ Newline?
是否可以允許它包括數字和冒號? – iHuman
@iHuman第二個版本接受任何東西..例如'@; test =>「; test」'。 – Sylwester