IPv4地址的Prolog定语从句语法程序

标签 prolog dcg

我目前正在尝试设置一个小程序来接受SWI Prolog 中的IPv4点分四元组字符串。使用DCGs (在假期期间走出舒适区?是的,我可以!)。这可能还需要我一个小时左右的时间,但也许读者中的某个人已经准备好了。在这种情况下我可以攻击IPv6 address strings .

最佳答案

我会尝试在 SWISH 上回答 this snippet

这是代码,以防链接不稳定......

:- 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}.

注意:当然,该规范比此代码段捕获的规范更复杂,因为它允许十六进制,等等……我的目的是指出库的可用性(dcg/basics)

关于IPv4地址的Prolog定语从句语法程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27548229/

相关文章:

Prolog:如何在添加之前检查数据库中是否存在项目?

functional-programming - 通过 DCG 在 Prolog 中使用镜头,可能与否?

prolog - DCG 惯用短语偏好

regex - 正则表达式匹配序言

python - 索引错误: list index out of range for pyswip library

prolog - 将命令纳入谓词解析

prolog - 将列表划分为序言中的一个点

prolog - 如何在 Prolog 中创建这个 DCG?

prolog - 关于序言如何工作的误解

解析 Prolog 中的表达式并返回抽象语法