一种基本逻辑语言的解释器,受二元布尔代数的启发。

lla的Python项目详细描述


基本逻辑语言的解释器,受二元布尔代数启发。在

演示

下面是一个快速演示,基于提示其创建的示例:

>>> from lla.interpreter import Interpreter
>>> variables = {
...     'ssh': True,
...     'website_up': True,
...     'search_up': False,
...     'elasticsearch.http': False,
...     'elasticsearch.process': True,
... }
>>> interpreter = Interpreter(variables)
>>> interpreter.run('ssh & website_up')
True
>>> interpreter.run('ssh & website_up & search_up')
False
>>> interpreter.run('!search_up & !elasticsearch.http & elasticsearch.process')
True
>>> interpreter.run('undefined_variable')
Traceback (most recent call last):
    ...
lla.interpreter.UndefinedVariableException: Undefined variable: undefined_variable

通过将variablesdict替换为实现__getitem__的类, 它变得非常灵活。在

概述

要点如下:

  1. 所有变量都是布尔函数。在
  2. 你不能在语言本身中定义变量,但是它提供了一个 dict或实现__getitem__的任何对象。在
  3. 仅完全支持可解析语句。 a、 任何其他操作都会引发Python异常。在
  4. 您向解释器提供一个语句,它将被简化为一个布尔值,然后返回该值。在

依赖关系

理论上,您只需要python3.6+。在

贡献

欢迎在GitHub的https://github.com/duckinator/lla上提交错误报告和请求。在

lla的代码在MIT License下可用。在

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Spring 4升级后未加载java应用程序上下文   java Android 2.3.3 internet可以在我的Galaxy S上运行,但不能在我的Galaxy选项卡上运行?(许可?)   java通过不改变其原始位置对大小写字母进行排序   java Spring Boot一直在破坏我的电脑。。。sts的最佳配置是什么。Windows 10上的ini文件?   css Java Spring+引导问题   java Jackson将GeoJsonPoint序列化为纬度/经度   xml Java Transformer:如何将其结果生成OutputStream?   java如何更改字体、文本大小和设置文本位置?   在JavaSpringHibernate3.6.3中,如何告诉一个方法等待,直到获得锁,以及如何重试失败的事务?   java安卓服务代替线程   Java Swing使用鼠标移动JFrame