使用SLY实现SFEEL(Python3的lex和yacc)
pySFeel的Python项目详细描述
皮斯费尔
DMN(决策模型表示法)标准中指定的实现S-FEEL(简单表达式语言)。 pySFeel是用Python实现的,使用SLY模块,并且有许多FEEL特性。在
- not,和以及或,这些逻辑表达式可以用圆括号(())括起来
- in()函数,例如5 in(<;6)
- 列表和筛选器
- 上下文和筛选器
- 范围
- 内置函数
pySFeel一次处理一个S-FEEL语句。 它并不是为了完美地实现S-FEEL, 而是实现DMN(决策模型表示法)pyDMNrules。 内部数据类型有float、string、boolean,日期时间.日期, 日期时间.time,和日期时间。时间增量. S-FEEL常量null映射为None。 年和月的持续时间以浮动形式存储。天数和持续时间存储为日期时间。时间增量在
一个可选的{/str'在标准的上下文中{/str'不是一个标准的词。 [{x:1,y:2},{x:2,y:3}][x=1]无效(因为x=1为真或假),但是[{x:1,y:2},{x:2,y:3}][item x=1]有效并将返回{x:1,y:2}。 类似地,fred.y是not名为“fred”的上下文列表中的“y”过滤器(因为fred.y是一个有效的名称)。 但是(fred).y是名为fred的上下文列表中的“y”筛选器。在
有一个扩展-赋值运算符(<;-)
fred <- 7
bill <- 9
fred = bill
这将返回False
^{pr2}$这将返回[2,3]
用法:
import pySFeel
parser = pySFeel.SFeelParser()
sfeelText = '7.3 in [2.0 .. 9.1]'
(status, retVal) = parser.sFeelParse(sfeelText)
if 'errors' in status:
print('With errors:', status['errors'])
- 回归是真的
- 如果您的sfeelText中有错误,听写式的“status”将具有键“errors”。在
- status['errors']是字符串列表。它可能有助于诊断您的S-FEEL语法错误。在
文件: 更多详细信息请访问readthedocs
- 项目
标签: