0
문장 목록을 반복하여보고 문법적으로 올바른지 확인하려고합니다. 문장은 단어 목록입니다. 그 모습은 다음과 같습니다 :DCG의 "임의 용어"chracter (_)가 예상대로 작동하지 않습니다.
verifySen([]).
verifySen([H|T]) :-
sentence(H,[]),
verifySen(T).
여기서 verifySen에는 목록이 제공됩니다. sentence(H,[])
은 무언가가 유효한 문장인지 확인하려고 시도합니다. 문제가있는 곳입니다. 나의 현재 DCG는 다음과 같습니다
sentence --> subject_phrase, verb_phrase, {write('this IS a valid sentence'), nl}.
sentence --> anything, {write('this is NOT a valid sentence'),nl}.
anything --> [_], anything.
...
코드 뭔가 가 유효한 문장 경우에 대한을 작동하지만 실패하고 뭔가 잘못된 문장 때 오류가 발생합니다. 나는 stream '<stream>(000..random numbers...)' does not exist.
누구든지 조언을 제공 할 수 있습니까?
'[you, run]'이 (가) 유효한 문장이라고 가정합니다. 그럼 당신에 따르면'[당신, 실행, xxxx]'는 유효한 문장이 아니지만 그래도 당신은 그것이 하나라는 것을 쓸 것입니다! 이 테스트를 한 레벨 위에 작성하면 이런 일이 발생하지 않습니다. 그리고 항상 문법에 대한 인터페이스로'phrase (sentence, H)'를 사용하십시오. – false
\t'sentence -> subject_phrase, verb_phrase, {write ('this is a sentence'), nl}로 변경하십시오. \t 문장 -> [_],!, {쓰기 ('이것은 문장이 아닙니다.), nl}'입니다. 문제가 해결 되었습니까? Trace는 문장이 문장이 아니라는 것을 올바르게 발견했지만, 다시 말하지만 첫 단어가없는 문장을 보여줍니다. 이 작업은 [_]을 사용하거나 커팅을 사용하지 않는 것과 관련이 있습니까? – nhz
'{}'을 문법 규칙에 넣지 마십시오! – false