簡體   English   中英

從Prolog中讀取字符串(從文件中)

[英]Reading a string (from a file) in Prolog

我在Prolog中編寫了詞法分析器和解析器。 它通過其AST統一字符串。 這是我正在從事的編譯器/解釋器項目的一部分。 自然,我現在想從文件中讀取字符串以對其進行解析。 但是,我為此找到的謂詞為read ,並且它僅讀取Prolog原子和謂詞,例如帶有

hello.

我一直在攪動double_quotes設置,但沒有成功。

我希望能夠讀取類似這樣的文件

let id = \x.x in id (S (S Z))

然后將此字符串發送到解析謂詞。

您可以使用read_line_to_codes/2read_line_to_codes/3 下面是一個示例程序,該程序從stdin讀取單獨的行並將其打印到stdout

read_lines([H|T]) :-
  read_line_to_codes(user_input, H), H \= end_of_file, read_lines(T).
read_lines([]).

write_lines([]).
write_lines([H|T]) :-
  writef("%s\n", [H]), write_lines(T).

main :-
  read_lines(X), write_lines(X).

(這使用writef/2進行打印。)還有read_stream_to_codes/2read_stream_to_codes/3 ,它們與行無關。 以下代碼將所有來自stdin的輸入一次打印到stdout:

main :-
  read_stream_to_codes(user_input, X), writef("%s", [X]).

當然,也可以從文件中讀取而不是從stdin中讀取。 有關更多信息,請參見readutil庫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM