【发布时间】:2014-09-02 22:20:09
【问题描述】:
我需要将字符串^borrow$ ^\$500$ 解析到列表[borrow, $500] 中。我目前写的语法是
:- use_module(library(dcg/basics)).
write_list([]).
write_list([H|T]) :- atom_codes(S, H), write(S), nl, write_list(T).
% Grammar.
tags([Tag|Rest]) --> string(_), tag(Tag), tags(Rest).
tags([]) --> string(_).
tag(Tag) --> "^", tag_contents(Tag), "$".
tag_contents(Tag) --> string(Tag).
当我在令牌中没有\$ 时有效:
?- phrase(tags(T), "^pisica$ ^catel$"), write_list(T).
pisica
catel
?- phrase(tags(T), "^borrow$ ^\\$500$"), write_list(T).
borrow
\
用 Prolog DCG 解析这种转义序列的最佳做法是什么?
【问题讨论】:
标签: parsing prolog swi-prolog dcg