我們試圖生成(在guile中)一個解析器和一個從字符串中讀取字符而不是標準輸入的詞法分析器。Scheme - LALR解析器生成 - 從字符串輸入
我們開始修改在 http://code.google.com/p/lalr-scm/source/browse/trunk/calc.scm?r=52
包含在代碼計算器例子的問題似乎是以下行:
(let* ((location (make-source-location "*stdin*"
(port-line (current-input-port))
(port-column (current-input-port)) -1 -1))
我們試圖定義一個新的輸入端口:
(let* ((location (make-source-location "*stdin*"
(port-line (open-input-string program))
(port-column (open-input-string program)) -1 -1))
和變量程序被定義爲這樣:
(define program
"int x = 2;
int y = 0;
y= x*(2+3);"
)
但它不起作用,它仍然等待標準輸入字符。
該文件缺乏細節,所以我們無法弄清楚我們如何解決這個問題。
謝謝
Chris Jester-Young關於Scheme中大部分I/O如何使用當前輸入端口作爲默認設置的說明現在就位於此處。你需要顯式地將你的字符串端口傳遞給每個I/O函數。請參閱「read-char」文檔,例如:http://www.gnu.org/software/guile/manual/guile.html#Reading。請注意,'port'參數在括號中:這是「可選參數」的文檔記號。 – dyoo