Вопросы по теме 'dcg'
Как узнать, выполняет ли Prolog оптимизацию хвостового вызова
Используя разрабатываемую версию SWI Prolog (Win x64), я написал предикат DCG для детерминированного лексера (размещенного на github ) (таким образом, все внешние предикаты не оставляют точек выбора):
read_token(parser(Grammar, Tables),...
1006 просмотров
schedule
03.06.2024
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 просмотров
schedule
03.02.2024
Разбор строковых литералов в Прологе
Я использую грамматики с определенными предложениями для разбора строковых литералов в Прологе, но это грамматическое правило может анализировать только строковые литералы, содержащие алфавитные символы:
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