標準入力の代わりに文字列から文字を読み取るパーサーとレクサーを (巧妙に) 生成しようとしています。
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);"
)
それでも機能しません。標準入力文字を待ちます。
ドキュメントには詳細が欠けているため、これをどのように解決できるかわかりません。
ありがとうございました