DCG (грамматики с определенными предложениями) - это компактный способ описания списков в Прологе.
3 ответа

Последовательные элементы в списке

Я блокирую предикат для кодирования в Прологе. Мне нужно кодировать эти два предиката: Если я позвоню: u([a,b,c,d,e,f], X). это даст X=[a,b], X=[b,c], X=[c,d]... Если я позвоню: v([a,b,c,d,e,f], X). это даст X=[a,b], X=[c,d], X=[e,f]... Большое спас…
08 июн '14 в 13:12
2 ответа

Пролог, реконструировать деревья BST из списка по порядку

Мы хорошо знаем inorder реализация для дерева BST. inorder(nil, []). inorder(t(Root, L, R), List) :- inorder(L, ListLeft), inorder(R, ListRight), append(ListLeft, [Root|ListRight], List). Однако возможно ли это сделать для списка? Я имею в виду реко…
20 май '16 в 11:50
1 ответ

Заменить термин с переменной в прологе

У меня есть DCG в Прологе, который я могу запросить так: q(Tree, [name, of, company], []). и получить ответ, который показывает мне путь, использованный для анализа запроса: Tree = q(['company (Class)', 'name (Attribute)']) Теперь я хотел бы задать …
09 апр '12 в 19:44
2 ответа

Проблемы с DCG (Пролог)

Я пытаюсь разработать это простое задание DCG (Пролог) для моего курса. Проблема заключается в создании DCG. Я уже определил Вселенную Дискурса в моем коде. Но этот вопрос немного вводит меня в заблуждение. Согласно тому, что я прочитал и знаю, испо…
22 май '13 в 17:53
4 ответа

Формулировка в прологе

В настоящее время у меня есть следующая проблема, которую я хочу решить с помощью Пролога. Это простой пример, который будет легко решить в Java/C/ что угодно. Моя проблема в том, что я считаю, что слишком привязан к мышлению Java, чтобы фактически …
05 окт '10 в 20:23
4 ответа

Переполнение стека в правиле грамматики Prolog DCG: как обрабатывать большие списки эффективно или лениво

Я разбираю довольно простой формат файла, состоящий из ряда строк, каждая строка имеет несколько полей, разделенных пробелами, который выглядит следующим образом: l 0x9823 1 s 0x1111 3 l 0x1111 12 ⋮ Я использую SWI-Prolog. Это DCG у меня так далеко:…
17 окт '12 в 17:19
1 ответ

Написание парологического пролога

Я пытаюсь написать простой парсер для грамматики. Синтаксическому анализатору не нужно создавать дерево разбора, он распознается только в том случае, если предложение соответствует грамматике. Пока у меня есть следующие предикаты, использующие нотац…
03 май '12 в 14:58
0 ответов

Синтаксическая ошибка в представлении DCG в Прологе?

Я пишу грамматику для игрового моделирования с использованием DCG пролога. Я предполагаю, что логика верна, я получаю следующие синтаксические ошибки. program --> envsetup, commands. envsetup --> boardsize, obstacles, itinerary, character. boa…
12 май '15 в 20:11
3 ответа

Есть ли способ или алгоритм для преобразования DCG в обычные определенные предложения в Прологе?

Я новичок в Прологе, и я пытаюсь понять, как грамматика может быть переведена в обычное определенное предложение из DCG. Я понял, что нотация DCG - просто синтаксический сахар для нормальных определенных предложений в Прологе. Я начал изображать нек…
01 май '15 в 19:16
1 ответ

Пролог, ошибка при запросе ложного утверждения

input :- read_line_to_codes(user_input, Input), string_to_atom(Input,Atoms), atomic_list_concat(Alist, ' ', Atoms), phrase(sentence(S), Alist), action(S). statement(Rule) --> [Noun, 'is', 'a', Object], { Rule =.. [Object, Noun]}. statement1(Rule)…
23 апр '13 в 15:56
4 ответа

Проверьте, является ли строка подстрокой в ​​Прологе

Есть ли способ проверить, является ли строка подстрокой другой строки в Прологе? Я попытался преобразовать строку в список символов и впоследствии проверить, является ли первый набор подмножеством второго, что не кажется достаточно ограничительным. …
27 ноя '13 в 18:40
1 ответ

DCG состояние реализации алгоритма

Расстояние между длинной последовательностью и короткой последовательностью - это минимальное расстояние между короткой последовательностью и любой подпоследовательностью длинной последовательности, равное длине короткой последовательности. Расстоян…
1 ответ

Напишите грамматику Prolog DCG, которая обрабатывает среднее значение предложения, а также построит его дерево разбора.

У меня есть эта грамматика DCG, которая понимает и соглашается с такими фразами, как: [Джон, Пейнтс] и [Джон, Лайк, Мэри], управляя семантическим значением непосредственно в грамматике DCG с помощью параметров sentence2(VP) --> noun_phrase2(Actor…
21 май '13 в 16:08
3 ответа

Разбор в прологе без среза?

Я нашел этот хороший фрагмент для разбора LISP в Прологе ( отсюда): ws --> [W], { code_type(W, space) }, ws. ws --> []. parse(String, Expr) :- phrase(expressions(Expr), String). expressions([E|Es]) --> ws, expression(E), ws, !, % single sol…
15 июн '11 в 13:37
3 ответа

Пролог получает голову и хвост струны

Я пытаюсь обернуть свой мозг вокруг Пролога в первый раз (SWI-Пролог), и я борюсь с тем, что, я уверен, является основами. Я пытаюсь взять строку, такую ​​как "пирог", и распечатать военную натовскую орфографию, чтобы она выглядела примерно так: spe…
13 апр '16 в 16:45
1 ответ

Определенный раздел Грамматики, как проверить, является ли строка символом?

Мне кажется, это хорошо, но это всегда дает ложь... и я не могу понять, почему. letter(X) --> [C], {"a"=<C, C=<"z", name(X,[C])}. Спасибо.
16 апр '17 в 11:13
2 ответа

Как мне указать DCG для действительного номера?

Я пытаюсь указать DCG для действительного числа, которое будет использоваться следующим образом: value(Number) --> valid_number(Number). В основном, проверка, является ли указанное значение числовым (это также может быть переменная, поэтому необх…
30 сен '15 в 16:14
3 ответа

Удаление пробелов из строк в Прологе

Я написал парсер в прологе. Я еще не закончил. Это часть кода. Следующим шагом является уничтожение всех пробелов в строке. parse(Source, Tree) :- kill_whitespace(Source, CleanInput), % remove whitespaces actual_parse(CleanInput, Tree). actual_parse…
16 янв '13 в 19:17
1 ответ

Проблема с рекурсией, не затрагивающая базовый вариант

Я работаю над следующим DCG: zero(1) --> [0], !. zero(N) --> { N < 1 }, [], !. zero(N) --> zero(1), { M is N - 1 }, zero(M). Он работает правильно для положительных тестовых случаев, например ?- phrase(zero(5), A). A = [0, 0, 0, 0, 0]. ?…
19 дек '14 в 21:55
1 ответ

Каков общий шаблон для создания dcg для ввода файла?

Кажется, мне всегда трудно писать DCG для разбора входных файлов. Но, похоже, все должно быть просто? Есть какие-нибудь советы или хитрости, чтобы думать об этой проблеме? Для конкретного примера, скажем, я хочу разобрать файл fasta. ( https://en.wi…
11 июл '15 в 12:06