2013-03-22 2 views
2

Мне нужно экспортировать в файл программу Prolog, выраженную с использованием произвольного представления выражений в Java. Идея заключается в том, что после этого интерпретатор Prolog должен иметь возможность проконсультироваться с сгенерированным файлом. Мой вопрос о правильном способе написания в файле Java Strings, представляющем атомные термины.Правила экранирования Atom в Prolog

Например, если строка имеет место в середине, она должна быть в одинарные кавычки в файле:

  привет мир     становится     «привет мир»

И экспортер должен учитывать символы, которые следует избегать:

  «     становится   „\“»

Может кто-то момент меня к месту были эти правила определены ?, и: Могу ли я считать, что эти правила соблюдались основные реализаторов Prolog? (Я имею в виду, что программа Prolog, созданная после этих правил, будет правильно проанализирована большинством интерпретаторов Prolog?).

ответ

4

Точное место для этого стандарта, ISO/IEC 13211-1: 1995, quoted_token (* 6.4.2 *). См. this answer, как получить его за 30 долларов США.

Точный синтаксис довольно сложный из-за множества дополнительных функций, таких как линии продолжения и т. П. Если вы только пишете атомы, которые следует читать Prolog, все будет немного проще. Также в этой ситуации вы всегда можете процитировать, что делает запись еще немного проще.

Некоторые вещи, чтобы быть в курсе:

только простые пространства может происходить как макет в цитируемом атома. Все остальные пространства должны быть экранированы как \t, \n (abrftnv). Многие системы принимают и другие макеты, но они отличаются друг от друга очень крошечными деталями.

Обратная косая черта и цитата должны быть экранированы.

Символы вне диапазона ASCII для печати зависят от PCS, поддерживаемого системой. В соответствующей системе сопроводительная документация должна определять, как классифицируются дополнительные символы (расширенные символы). Качество документации варьируется в широком диапазоне.

В любом случае проверьте свой интерфейс также с GNU-Prolog от 1.4.1 вверх. На сегодняшний день не известно различий между GNU 1.4.1+ и стандартом в отношении синтаксиса.

Адрес some 240+ syntax related test cases. Пожалуйста, сообщите о любом недосмотре!

1

Практический совет: если вы выпустили writeq с вашим Прологом, с данными, о которых вам нужно знать, вы получите котировки вокруг, когда потребуется.

+0

спасибо за подсказку, знаете ли вы, что writeq поддерживается большинством интерпретаторов Prolog? – Sergio

+0

Да, это практичный способ написать сложный термин, который можно прочитать. И это часть стандарта ISO. – CapelliC

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