저는 현재 DCG를 사용하여 SWI Prolog 에서 IPv4 점선 쿼드 문자열을 받아들이 기위한 작은 프로그램을 설정하려고합니다 (휴일 동안 안전 지대에서 벗어나나요? 예, 할 수 있습니다!). 아마 한 시간 정도 더 걸릴 것 같지만 독자 중 누군가가 이미 준비를 마쳤을 수도 있습니다. 이 경우 IPv6 주소 문자열을 공격 할 수 있습니다 .
이 스 니펫 에서 SWISH에 대해 대답 해 보겠습니다.
링크가 휘발성 인 경우 코드는 다음과 같습니다.
:- use_module(library(dcg/basics)).
atom_ipv4(A, IPV4) :- atom_codes(A, Cs), phrase(ipv4(IPV4), Cs).
ipv4(D) -->
dotted(D).
ipv4(range(D, R)) -->
dotted(D), "/", integer(R).
dotted(address(A, B, C, D)) -->
octet(A), ".", octet(B), ".", octet(C), ".", octet(D).
octet(A) --> integer(A), {A < 256}.
참고 : 사양은 16 진수 등을 허용하기 때문에이 스 니펫으로 캡처 한 것보다 더 복잡합니다. 제 목적은 라이브러리 (dcg / basics)의 가용성을 지적하는 것입니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다