Python 层解析多行块

Python 层解析多行块,python,parsing,multiline,ply,Python,Parsing,Multiline,Ply,我想用ply解析包含以下内容的文件: option "option1 name" option "option2 name" variable1 { name: "var1" size: 5 } 其中option、name和size是关键字,但是变量直接列出,没有任何关键字,并且它们在{}中有属性 这个多行变量声明的问题,我无法解决。当解析器获取行variable1时,它抛出一个EOF错误。如果我在一行中给出变量声明,那么就可以了,如下所示: variable1 { name:

我想用ply解析包含以下内容的文件:

option "option1 name"
option "option2 name"
variable1
{
    name: "var1"
    size: 5
}
其中option、name和size是关键字,但是变量直接列出,没有任何关键字,并且它们在{}中有属性

这个多行变量声明的问题,我无法解决。当解析器获取行variable1时,它抛出一个EOF错误。如果我在一行中给出变量声明,那么就可以了,如下所示:

variable1 { name: "var1" }
我应该如何为此编写lexer解析器?我必须使用状态吗?我处理新线的方式有误吗

我的目标是从中获得python词典,如:

{'variable1': {'name': 'var1', 'size': 5}}

谢谢你的提示

我猜您正在阅读Python2的输入或原始输入。只是遇到了同样的事情。输入仅读取一行。所以即使你贴了

variable1
{
    name: "var1"
    size: 5
}
读入的字符串为variable1。您可以这样做作为解决方法:

userinput = ''
line = input('> ')
while line != '':
    userinput += line
    line = input()

# pass `userinput` to your parser

在你的方块完成后,按enter键两次。它应该有完整的字符串。

您能发布您目前编写的代码,以便我们帮助您调试它吗?