dcg

    1

    1답변

    주어진 상황에서 유효한 산술 표현식이 무엇인지 정의하는 문맥없는 문법이 주어졌습니다. 그리고 문제는 그것을 haskell과 Prolog에 쓰는 것입니다. 다음은 CFG입니다. Expr ::= lit(i) | add(Expr, Expr) | sub(Expr, Expr) 하스켈에서는 매우 간단합니다. 난 그냥 데이터 형식을 사용하여 그것을 Expr이라고

    1

    1답변

    만약 내가 이와 같은 프로그램을 가지고 있고 그것을 따르는 사람이 쉼표를 가지지 않기를 원한다면 어떻게해야합니까? DCG를 사용하는 것이 가장 좋습니다? 어떻게 작동할까요? male(bob). male(dave). male(fred). male(dereck). likes(bob,cake). likes(bob, pie). likes(bob, a

    1

    1답변

    ^borrow$ ^\$500$ 문자열을 구문 분석하여 [borrow, $500] 목록에 추가해야합니다. 내가 쓴 문법 지금까지 내가 토큰 내부 \$이 없을 때 작동 어느 :- use_module(library(dcg/basics)). write_list([]). write_list([H|T]) :- atom_codes(S, H), write(S), n

    1

    1답변

    나는 0과 1의 개수 차이가 짝수 여야하는 오른쪽 선형 문맥 자유 문법을 작성하려고합니다. 예를 들어 : 010001 = 4 - 2 = 2 (even) 나는 similar problem했다. 아마도 도움이 될 것입니다! 나는 프롤로그에 그것을 쓰려고 노력하고있다. 나는 다른 10 개의 운동을했지만 이것은 나에게 너무 어렵다. 그것을하는 방법에 대한 아이

    0

    1답변

    내가 이런리스트의 시작 부분과 끝 부분에 같은 요소가있는 경우에 해당하는 술어 sandwich(L)해야 : sandwich([a,a,b,c,d,a,a]). 당신이 좀 도와 주 시겠어요를? 감사합니다.

    1

    1답변

    내가 같은 몇 가지 기본 규칙, 프롤로그에서 영어 언어에 대한 문법을 ​​작성하려고 오전 문법 성명서는 다음과 같습니다 : noun(X, woman(X)) --> [woman]. iv(Y, snort(Y)) --> [snorts]. 나는 분실했습니다. 이게 무슨 뜻입니까? 변수 X이 반복되는 이유는 무엇입니까?

    0

    1답변

    타격하지와 문제 : zero(1) --> [0], !. zero(N) --> { N < 1 }, [], !. zero(N) --> zero(1), { M is N - 1 }, zero(M). 그것은 긍정적 인 테스트 케이스에 대한 제대로 작

    1

    1답변

    아래 문법을 테스트했을 때 aabccc을 받아 들일 수있는 한정 구문 문법이 있지만 받아 들일 수 있었던 유일한 문자열은 abc입니다. 나는 왼손 재귀를 제거 했으므로 무슨 일이 일어날 지 잘 모르겠다. 또한 s --> x, y, z. x --> [a], x. x --> [a]. y --> [b], y. y --> [b]. z --> [c], z.

    1

    2답변

    나는 확실한 문법 안에서 통일의 개념을 이해하려고 애쓰는 중입니다. 누군가가 다음 DCG에서 어떻게 대답 하는지를 단계별로 설명 할 수 있습니다. s --> symbols(Sem,a), symbols(Sem,b). symbols(s(end),S) --> [S]. symbols(s(Sem),S) --> [S], symbols(Sem,S). 대답은 a

    2

    1답변

    은 문법이다. 및 테스트 S ([a, a, b, c, c, c], []). true를 반환해야합니다. 내 코드에서 목록 요소를 검사하기 위해 일치 규칙을 정의했습니다. match(H,[H|T],T). na(X0,X1):-match(a,X0,X2). nb(X0,X1):-match(b,X0,X2). nc(X0,X1):-match(c,X0,X2). ns