prolog与python_python中prolog事实词法分析器
我喜欢使用pyparsing模块在python中创建这种性质的解析器。Pyparsing是一个解析器组合器库;您可以通过组合其他解析器来构造解析器。下面是一个使用pyparsing的示例解析器,它将解析您的输入数据(它无法解析任何prolog事实,但我认为这将是一个不错的起点):import pyparsing as pp
#relationship will refer to 'track' in all of your examples
relationship = pp.Word(pp.alphas).setResultsName('relationship')
number = pp.Word(pp.nums + '.')
variable = pp.Word(pp.alphas)
# an argument to a relationship can be either a number or a variable
argument = number | variable
# arguments are a delimited list of 'argument' surrounded by parenthesis
arguments= (pp.Suppress('(') + pp.delimitedList(argument) +
pp.Suppress(')')).setResultsName('arguments')
# a fact is composed of a relationship and it's arguments
# (I'm aware it's actually more complicated than this
# it's just a simplifying assumption)
fact = (relationship + arguments).setResultsName('facts', listAllMatches=True)
# a sentence is a fact plus a period
sentence = fact + pp.Suppress('.')
# self explanatory
prolog_sentences = pp.OneOrMore(sentence)
现在我们有了一个解析器,用于您在prolog_sentences变量中的输入。下面是对解析器的测试:
^{pr2}$
prolog与python_python中prolog事实词法分析器相关推荐
- SQL Server商业智能–在已建立的数据仓库中扩展事实表
介绍 (Introduction) 在生活中,听起来简单的事情并非总是最简单的事情. 在计算机科学中,情况更是如此. 实际上,信息技术工作中最具挑战性的事情之一通常是与老板之间的沟通,这些老板对技术知 ...
- 在Ansible中缓存事实
在Ansible中缓存事实了解更多关于Ansible自动化相关知识 Ansible剧本运行中的第一步(除非您显式禁用它)是 通过模块收集事实setup.这些事实是在每台计算机上收集的,并在销毁剧本之前 ...
- 《从一到无穷大:科学中的事实和臆测》小记
<从一到无穷大:科学中的事实和臆测>(即:ONE, TWO, THREE, -INFINITY)是当今世界最有影响的科普经典名著之一,1970年代末由科学出版社引进出版后,曾在国内引起很大 ...
- 他案中不利事实陈述在本案认定路径分析 —基于“禁反言”的思考
作者:浙江利群律师事务所 柳 泖 张文中 日期:2021-04-09 阅读:1,819次 [内容摘要]自认根据形成的场合,可分为诉讼中和诉讼外自认.我国法律尚无诉讼外自认的相关规定,诉讼中自 ...
- 抽象文本摘要中的事实不一致问题:一项调查
论文:<The Factual Inconsistency Problem in Abstractive Text Summarization: A Survey> Yichong Hua ...
- BI中的事实表和维度表
事实表: 每个数据仓库都包含一个或者多个事实数据表.事实数据表可能包含业务销售数据,如现金登记事务. 所产生的数据,事实数据表通常包含大量的行.事实数据表的主要特点是包含数字数据(事实),并且这些数字 ...
- 关于 SAXParseException Content is not allowed in Prolog (前言中不允许有内容)
解析 XML 文件的时候,如 Mybatis 的 Mapper 文件,有时会出现 org.xml.sax.SAXParseException 前言中不允许有内容 的异常,英文就是 Content is ...
- 抓取网络源码python_python中的复仇者网络抓取实体提取和网络图
抓取网络源码python 2020 sent more bad news as Black Panther star Chadwick Boseman passed away aged 43. The ...
- exit的用法python_python 中exit,sys.exit,os._exit用法
exit exit() 可以退出某个程序,余下语句不执行,而其中的数字参数则用来表示程序是否是碰到错误而中断. exit(1) 表示程序错误退出 exit(0) 表示程序正常退出 test.py: # ...
- defaultdict python_python中defaultdict的用法详解
初识defaultdict 之前在使用字典的时候, 用的比较随意, 只是简单的使用dict. 然而这样在使用不存在的key的时候发生KeyError这样的一个报错, 这时候就该defaultdict登 ...
最新文章
- IC/FPGA笔试/面试题分析(十一)基础概念(三态门等)
- Oracle三级联动单表地址数据
- 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system...
- logback无法生成日志文件之谜
- 29-分数求模(逆元)
- requirejs 使用实例
- Blend4开发:会飞的小鸟
- some screenshot for SAP Fiori smart template resource load
- 转hdmi_苹果本轻松接大屏,毕亚兹雷电接口转HDMI/VGA转换器评测
- model 提交表信息java,Angular6+antd+java+SpringMVC,表单提交自动接收模型对象?
- enityframework 已连接的当前状态为打开。_关于性能优化 从tcp建立连接amp;断开的视角...
- 手写注解实现SpringMVC
- [笔记一]Essential JavaScript Design Patterns For Beginners
- java 短信备份宝_Android实战教程第八篇之短信备份
- 书写程序时应遵循的规则_您可能在计算自由职业者率时全错了,因此请遵循此策略...
- 获取银行卡Log接口
- 皮卡丘为什么不进化_皮卡丘为什么不进化 真是原因让人感动哭
- shell计算命令:let命令详解
- 右键新建excel无法打开
- android app程序闪退原因分析