为包含列表/数组和SET运算符的输入表达式编写生成规则(语法规则)

时间:2018-02-02 01:23:11

标签: python-3.x grammar context-free-grammar parser-generator ply

我必须使用PLY进行Lexing和Parsing。我已经通过http://www.dabeaz.com/ply/ply.html这个文档来了解PLY并查看了计算器示例。我是这一切的新手。因此,进行此过程的步骤1是根据输入表达式确定语法规则。

我的应用程序的一些示例输入表达式如下所示:

row_elements = self.driver.find_elements_by_class_name("row")
for element in row_elements:
    self.driver.execute_script("arguments[0].setAttribute('style','max-width: 100%;')", element)

class_names = ["slick-slider", "slick-track", "slick-slider", "slick-list"]
for cls_nm in class_names:
    elements = self.driver.find_elements_by_class_name(cls_nm)
    for element in elements:
        self.driver.execute_script("arguments[0].setAttribute('style','width: 100% !important; ')", element)

slicksld_elements = self.driver.find_elements_by_class_name("slick-slide")
for element in slicksld_elements:
    self.driver.execute_script(
        "arguments[0].setAttribute('style','width: 20% !important;display: block !important;')", element)

[](方括号表示数组/列表)

UNION / U,INTESERCT /∩,MINUS / - 代表设定的操作。

如何为涉及列表和SET运算符的这种表达式编写语法规则,以便在将它们发送到PLY的词法分析器以转换为标记时将它们正确地标识为列表并设置运算符?

请帮忙。我见过很多PLY的例子,但到处都有正常的算术表达式。我真的很想了解如何以我需要的方式编写它们。

1 个答案:

答案 0 :(得分:0)

我认为语法规则如下所示:

expression -> expression U expression | expression ∩ expression | 
              expression - expression

expression -> (expression)

expression -> <List>

<List> ::= <List> ',' <List Item>
        |  <List Item>

<List Item> ::= Identifier