2010-11-07 3 views
3

Это может показаться странным, но он используется в парсер, я хочу, чтобы иметь возможность разобрать что-то в видеКак написать квадратную скобку в прологе?

Foo [бар]

Так что это будет представлено в виде списка как:

[Foo, [, бар, [] Может быть, такое слово будет написано в ВСО, как:

x --> id [[] arg []] 

Проблема в том, что квадратная скобка является зарезервированным символом, поэтому как я могу представить это в прологе?

ответ

4

Можете ли вы не обрабатывать свои квадратные скобки как атомы (т. Е. '[' и ']'), а также все остальное?

Как насчет для например:

label1(T) --> id(X), label2(Y), {T =.. [X, Y]}. 
label2(Y) --> ['['], innerexp(Y), [']']. 
id(X) --> [X]. 
innerexp(Y) --> [Y]. 

Исполнение:

?- phrase(label1(T), [foo, '[', bar, ']'], Rem). 
T = foo(bar), 
Rem = []. 
+0

Как бы я читал в квадратных скобках из файла и помещал их в одну запятую? – Tom

+0

, который работает трюк, спасибо товарищу! – Tom

0

"[" (в кавычках) делают трюк?

+0

Нет, это не так. – Tom

+0

А хорошо. Я не могу думать ни о чем другом, извините. – Cameron

Смежные вопросы