Вопросы по теме 'dcg'

Как узнать, выполняет ли Prolog оптимизацию хвостового вызова
Используя разрабатываемую версию SWI Prolog (Win x64), я написал предикат DCG для детерминированного лексера (размещенного на github ) (таким образом, все внешние предикаты не оставляют точек выбора): read_token(parser(Grammar, Tables),...
1006 просмотров

DCG, правая рекурсия и как это ясно выразить
Я прочитал много предложенных вопросов, но я все еще застрял в своей проблеме обучения прямо сейчас, я пытаюсь написать простой синтаксический анализатор s-выражений Lisp, и я не могу понять, как решить рекурсивный характер s-выражения без связывая...
150 просмотров
schedule 14.02.2024

Последовательные элементы в списке
Я блокирую предикат кода на Prolog . Мне нужно закодировать эти два предиката: Если я позвоню: 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] ......
2071 просмотров
schedule 05.04.2024

как определить (иногда) рекурсивные деревья пролога
Мне нужно разобрать два разных типа предложений, но пока я дам им простые имена. По сути, у меня есть два дерева синтаксического анализа 1. A --> A , pp A --> dv, np 2. A --> tv, np Надеюсь, это имеет смысл, я просто понятия не...
61 просмотров
schedule 06.04.2024

извлечь определение класса из файла, используя dcg в прологе
Может ли кто-нибудь помочь мне создать грамматику пролога простого определения класса. Это пример правила DCG, которое я написал. :- use_module(library(pio)). %classrule(Z) -->class,letter(X),letters(L),{name(Z,[X|L])}. classrule(Z)...
33 просмотров
schedule 06.12.2022

Пролог — объединение списков в деревьях
Мне нужно написать предикат ListInTree(T,X), который верен, когда T — это дерево со списком в каждом узле, а X — это объединение всех списков (при условии посещения в предварительном порядке). Я действительно не могу понять, как использовать...
387 просмотров
schedule 10.06.2024

О смешивании сопрограмм Пролога (заморозить/2, когда/2) и DCG
В моем предыдущем ответе на недавний вопрос " Тест двоичного дерева поиска Prolog — сравнение родительских узлов нежелательных родителей ", я предложил смешать lazy_chain/2 , который использует prolog-coroutining ... :- use_module (...
84 просмотров

Разбор строковых литералов в Прологе
Я использую грамматики с определенными предложениями для разбора строковых литералов в Прологе, но это грамматическое правило может анализировать только строковые литералы, содержащие алфавитные символы: string_literal(S) --> "\"", symbol(S),...
1379 просмотров
schedule 17.09.2022

Как создать список доступных шагов в сетке?
У меня есть сетка 5x5, которая описывается max_size(5, 5) . Мне нужно создать список всех ячеек из этого описания, используя DCG. Вот код, который у меня есть до сих пор: :- use_module(library(clpfd)). map_size(5, 5). natnum(0). natnum(X)...
72 просмотров
schedule 29.01.2024

Вызов фразы/2 в списке правил грамматики, а не в списке атомов
С такой грамматикой: as --> []. as --> [a], as. b(b(a)) --> as. c(X) --> b(X). phrase(b(X), [a, a]) и phrase(c(X), [a, a]) работают без проблем. Оба возвращают X = b(a). . Но можно ли унифицировать что-то подобное?...
45 просмотров
schedule 01.11.2022