首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python - Lark - Grammar -无法生成AST

Python - Lark - Grammar -无法生成AST
EN

Stack Overflow用户
提问于 2018-10-18 22:21:01
回答 1查看 367关注 0票数 0

我目前正在尝试从一个函数式表达式生成一个抽象语法树,例如:

代码语言:javascript
复制
OR(FunctionOne("valueA", "valueB", "valueC"), FunctionTwo("valueD", "valueE", "valueF"))

基本上,运算符( and | OR)和它们的函数(可以嵌套)的简单连接。

我想将此字符串转换为抽象语法树,例如:

代码语言:javascript
复制
value
  OR
    FunctionOne:
      value1: valueA
      value2: valueB
      value3: valueC
    FunctionTwo:
      value4: valueD
      value5: valueE
      value6: valueF

到目前为止我所做的..。

来自lark import Lark

代码语言:javascript
复制
parser = Lark(r"""
    value: operator

    operator : operatorvalue"("function"(how_to_handle_params)"*")"
    operatorvalue : "OR" | "AND"

    function : "FunctionOne" | "FunctionTwo"

    """, start='value')

有人能帮我解决这个问题吗?

只需要一些起点,因为文档只处理json...

感谢并致以问候!

EN

回答 1

Stack Overflow用户

发布于 2018-10-25 15:47:28

作为一般规则,您应该尝试用语法表示每个实体的责任。例如,一个函数包含它自己的参数:

代码语言:javascript
复制
function: NAME "(" params? ")"

params: (NAME ","?)+

Lark有很多示例语法,比如calculatorPythonLark (its own syntax)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52876168

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档