我喜欢使用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事实词法分析器相关推荐

  1. SQL Server商业智能–在已建立的数据仓库中扩展事实表

    介绍 (Introduction) 在生活中,听起来简单的事情并非总是最简单的事情. 在计算机科学中,情况更是如此. 实际上,信息技术工作中最具挑战性的事情之一通常是与老板之间的沟通,这些老板对技术知 ...

  2. 在Ansible中缓存事实

    在Ansible中缓存事实了解更多关于Ansible自动化相关知识 Ansible剧本运行中的第一步(除非您显式禁用它)是 通过模块收集事实setup.这些事实是在每台计算机上收集的,并在销毁剧本之前 ...

  3. 《从一到无穷大:科学中的事实和臆测》小记

    <从一到无穷大:科学中的事实和臆测>(即:ONE, TWO, THREE, -INFINITY)是当今世界最有影响的科普经典名著之一,1970年代末由科学出版社引进出版后,曾在国内引起很大 ...

  4. 他案中不利事实陈述在本案认定路径分析 —基于“禁反言”的思考

    作者:浙江利群律师事务所 柳 泖 张文中   日期:2021-04-09    阅读:1,819次 [内容摘要]自认根据形成的场合,可分为诉讼中和诉讼外自认.我国法律尚无诉讼外自认的相关规定,诉讼中自 ...

  5. 抽象文本摘要中的事实不一致问题:一项调查

    论文:<The Factual Inconsistency Problem in Abstractive Text Summarization: A Survey> Yichong Hua ...

  6. BI中的事实表和维度表

    事实表: 每个数据仓库都包含一个或者多个事实数据表.事实数据表可能包含业务销售数据,如现金登记事务. 所产生的数据,事实数据表通常包含大量的行.事实数据表的主要特点是包含数字数据(事实),并且这些数字 ...

  7. 关于 SAXParseException Content is not allowed in Prolog (前言中不允许有内容)

    解析 XML 文件的时候,如 Mybatis 的 Mapper 文件,有时会出现 org.xml.sax.SAXParseException 前言中不允许有内容 的异常,英文就是 Content is ...

  8. 抓取网络源码python_python中的复仇者网络抓取实体提取和网络图

    抓取网络源码python 2020 sent more bad news as Black Panther star Chadwick Boseman passed away aged 43. The ...

  9. exit的用法python_python 中exit,sys.exit,os._exit用法

    exit exit() 可以退出某个程序,余下语句不执行,而其中的数字参数则用来表示程序是否是碰到错误而中断. exit(1) 表示程序错误退出 exit(0) 表示程序正常退出 test.py: # ...

  10. defaultdict python_python中defaultdict的用法详解

    初识defaultdict 之前在使用字典的时候, 用的比较随意, 只是简单的使用dict. 然而这样在使用不存在的key的时候发生KeyError这样的一个报错, 这时候就该defaultdict登 ...

最新文章

  1. IC/FPGA笔试/面试题分析(十一)基础概念(三态门等)
  2. Oracle三级联动单表地址数据
  3. 使用nodejs开发一个markdown文档管理小系统(一)Using Nodejs to quickly develop a markdown management system...
  4. logback无法生成日志文件之谜
  5. 29-分数求模(逆元)
  6. requirejs 使用实例
  7. Blend4开发:会飞的小鸟
  8. some screenshot for SAP Fiori smart template resource load
  9. 转hdmi_苹果本轻松接大屏,毕亚兹雷电接口转HDMI/VGA转换器评测
  10. model 提交表信息java,Angular6+antd+java+SpringMVC,表单提交自动接收模型对象?
  11. enityframework 已连接的当前状态为打开。_关于性能优化 从tcp建立连接amp;断开的视角...
  12. 手写注解实现SpringMVC
  13. [笔记一]Essential JavaScript Design Patterns For Beginners
  14. java 短信备份宝_Android实战教程第八篇之短信备份
  15. 书写程序时应遵循的规则_您可能在计算自由职业者率时全错了,因此请遵循此策略...
  16. 获取银行卡Log接口
  17. 皮卡丘为什么不进化_皮卡丘为什么不进化 真是原因让人感动哭
  18. shell计算命令:let命令详解
  19. 右键新建excel无法打开
  20. android app程序闪退原因分析

热门文章

  1. open 3D 点云兔子模型
  2. python程序员待遇如何-程序员工资大揭秘:你拖后腿了吗?
  3. matlab普朗克黑体辐射公式,MATLAB 黑体辐射规律的研究详解.doc
  4. Linux文件与管理(还是多记)
  5. 在Linux下刻录APE音乐
  6. 基于hi3531压缩YUV-D1 H264(sample_enc例子改写)
  7. photoshop制作ico图标
  8. Numpy的21个常用知识点
  9. 2019年秋招中国工商银行软件研发中心(杭州)笔试+面试
  10. VMware esxi6.7U3B安装镜像集成Realtek8168网卡驱动