JSON的SWI Prolog语法
我盯着swi prolog手册看,不懂语法()中的一些内容,也找不出合适的搜索词。 这是什么意思JSON的SWI Prolog语法,json,prolog,swi-prolog,Json,Prolog,Swi Prolog,我盯着swi prolog手册看,不懂语法()中的一些内容,也找不出合适的搜索词。 这是什么意思name='Demo term', 这个呢[day=@null 这是什么?members=[1,2,3] 这些是特殊语法还是奇怪的原子?这种语法其实没有什么特别之处: json/1是一个复合术语,列表是唯一的参数 该列表包含条目 name='Demo term' created=json([day=@null,month='12',year=2007]) confirm=@true members=
name='Demo term',
这个呢<代码>[day=@null
这是什么?members=[1,2,3]
这些是特殊语法还是奇怪的原子?这种语法其实没有什么特别之处:
json/1
是一个复合术语,列表是唯一的参数
该列表包含条目
name='Demo term'
created=json([day=@null,month='12',year=2007])
confirm=@true
members=[1,2,3]
- 关键字
与atom“Demo term”相关联(用单引号引起来,因为它包含空格并以大写开头)name
- 关键字
与复杂的复合术语created
json([day=@null,month='defect',year=2007])相关联。
- 关键字
与复合词confirm
关联,该复合词写得更好@true
@(true)
- 关键字
与列表成员
[1,2,3]
json([ name='Demo term',
created=json([day= @null, month='December', year=2007]),
confirmed= @true,
members=[1, 2, 3]
])
因此,也许这个例子是有问题的
您可以在SWI Prolog的命令行中执行此操作,以便在中打印术语
规范模式(为可读性增加了换行符;我认为write_canonical也应该正确缩进,但遗憾的是它没有这样做):
X='@'(true).
?- write_canonical(json([ name='Demo term',
| created=json([day= '@'(null), month='December', year=2007]),
| confirmed= '@'(true),
| members=[1, 2, 3]
| ])).
json([=(name,'Demo term'),
=(created,json(
[=(day,@(null)),
=(month,'December'),
=(year,2007)]
)
),
=(confirmed,@(true)),
=(members,[1,2,3])])
true.