我目前正在尝试从一个函数式表达式生成一个抽象语法树,例如:
OR(FunctionOne("valueA", "valueB", "valueC"), FunctionTwo("valueD", "valueE", "valueF"))基本上,运算符( and | OR)和它们的函数(可以嵌套)的简单连接。
我想将此字符串转换为抽象语法树,例如:
value
OR
FunctionOne:
value1: valueA
value2: valueB
value3: valueC
FunctionTwo:
value4: valueD
value5: valueE
value6: valueF到目前为止我所做的..。
来自lark import Lark
parser = Lark(r"""
value: operator
operator : operatorvalue"("function"(how_to_handle_params)"*")"
operatorvalue : "OR" | "AND"
function : "FunctionOne" | "FunctionTwo"
""", start='value')有人能帮我解决这个问题吗?
只需要一些起点,因为文档只处理json...
感谢并致以问候!
发布于 2018-10-25 15:47:28
作为一般规则,您应该尝试用语法表示每个实体的责任。例如,一个函数包含它自己的参数:
function: NAME "(" params? ")"
params: (NAME ","?)+Lark有很多示例语法,比如calculator、Python和Lark (its own syntax)
https://stackoverflow.com/questions/52876168
复制相似问题