2013-03-22 2 views
2

Java에서 임의의 용어 표현을 사용하여 표현 된 Prolog 프로그램을 파일로 내 보내야합니다. 아이디어는 Prolog 인터프리터가 나중에 생성 된 파일을 참조 할 수 있어야한다는 것입니다. 제 질문은 원자 용어를 나타내는 Java Strings 파일에 올바른 방법을 쓰는 것입니다.Prolog에서의 원자 탈출 규칙

  안녕하세요 세계     이     이된다 '안녕하세요 세계 : 문자열 중간에 공백이 있으면

는 예를 들어,이 파일에서 작은 따옴표로 묶어야한다

수출자는 탈출해야 할 문자를 고려해야합니다.

  '       된다'을 \ ''

는 사람이 곳으로 날 지점 수 이러한 규칙은 지정된?되고 있었다 : 나는이 규칙이 주요 프롤로그 구현 존경한다고 가정 할 수 있습니까? (이 규칙에 따라 생성 된 Prolog 프로그램은 대부분의 Prolog 인터프리터가 올바르게 구문 분석 할 수 있습니까?).

답변

4

정확한 위치는 ISO/IEC 13211-1 : 1995, quoted_token (* 6.4.2 *) 표준입니다. this answer USD 30에 대해 알아 보는 방법을 참조하십시오.

정확한 구문은 연속 선과 같은 많은 추가 기능으로 인해 상당히 복잡합니다. Prolog에 의해 읽혀 져야하는 원자만을 쓰고 있다면, 조금 더 쉬워진다. 또한 그 상황에서, 당신은 언제나 인용 할 수 있으며, 이것은 조금 더 간단하게 다시 쓰게 만듭니다.

단순한 공간이 인용 원자의 레이아웃으로 발생할 수

어떤 것들은 알고 있어야합니다. 다른 모든 공간은 \t, \n (abrftnv)처럼 이스케이프해야합니다. 많은 시스템은 다른 레이아웃도 허용하지만 아주 작은 세부 사항에서 서로 다릅니다.

백 슬래시 및 견적을 이스케이프 처리해야합니다.

인쇄 가능한 ASCII 범위를 벗어나는 문자는 시스템에서 지원하는 PCS에 따라 다릅니다. 부합 시스템에서 첨부 문서는 추가 문자 (확장 문자)가 분류되는 방법을 정의해야합니다. 문서의 품질은 광범위합니다.

어쨌든 1.4.1부터 GNU-Prolog로 인터페이스를 테스트하십시오. 현재까지 구문에 관한 한 GNU 1.4.1 이상과 표준 사이에는 차이가 없습니다.

여기에 some 240+ syntax related test cases입니다. 어떤보고라도보고하십시오!

1

실용적인 힌트 : Prolog와 함께 writeq을 발행 할 경우 알아야 할 데이터가 있으면 필요할 때마다 인용 부호가 표시됩니다.

+0

힌트를 보내 주셔서 감사합니다. writeq가 대부분의 Prolog 인터프리터에서 지원되는지 알고 계십니까? – Sergio

+0

예, 읽을 수있는 복잡한 용어를 작성하는 실용적인 방법입니다. 그리고 그것은 ISO 표준의 일부입니다. – CapelliC