如何在 pyparse 语法中定义可选词?
How to define an optional word in pyparse grammar?
我正在为对象名称和视图解析 sql 代码对象,我注意到有一些可选的关键字可能会影响我的语法。我想我需要能够定义一个可选关键字,但我还没有找到这样做的方法。
例如
viewDefinition = "CREATE OR REPLACE VIEW" + Word( alphas+"_", alphanums+"_")
forceviewLine = "CREATE OR REPLACE FORCE VIEW VW_MY_TEST_VIEW"
print(forceviewLine,"->", viewDefinition.parseString(forceviewLine))
viewname = viewDefinition.parseString(forceviewLine)[1]
因为语法不合适我会遇到以下错误
pyparsing.ParseException:预期 "CREATE OR REPLACE VIEW"(在字符 0),(第 1 行,col:1)
有没有办法在关键字 VIEW 之前定义语法上的可选关键字,并且我可以获得 VW_MY_TEST_VIEW 代码对象名称?
我想通了,认为它可能对其他人有用,所以我自己回答。
COR = CaselessLiteral('CREATE OR REPLACE')
optFORCEkw = Optional(CaselessLiteral('FORCE'))
V = CaselessLiteral('VIEW')
forceviewLine = "CREATE OR REPLACE FORCE VIEW VW_MY_TEST_VIEW"
normalviewLine = "CREATE OR REPLACE VIEW VW_MY_TEST_VIEW"
newGrammer2 = COR + optFORCEkw + V + Word( alphas+"_", alphanums+"_")
print(forceviewLine,"->", newGrammer2.parseString(forceviewLine))
print(normalviewLine,"->", newGrammer2.parseString(normalviewLine))
我正在为对象名称和视图解析 sql 代码对象,我注意到有一些可选的关键字可能会影响我的语法。我想我需要能够定义一个可选关键字,但我还没有找到这样做的方法。
例如
viewDefinition = "CREATE OR REPLACE VIEW" + Word( alphas+"_", alphanums+"_")
forceviewLine = "CREATE OR REPLACE FORCE VIEW VW_MY_TEST_VIEW"
print(forceviewLine,"->", viewDefinition.parseString(forceviewLine))
viewname = viewDefinition.parseString(forceviewLine)[1]
因为语法不合适我会遇到以下错误
pyparsing.ParseException:预期 "CREATE OR REPLACE VIEW"(在字符 0),(第 1 行,col:1)
有没有办法在关键字 VIEW 之前定义语法上的可选关键字,并且我可以获得 VW_MY_TEST_VIEW 代码对象名称?
我想通了,认为它可能对其他人有用,所以我自己回答。
COR = CaselessLiteral('CREATE OR REPLACE')
optFORCEkw = Optional(CaselessLiteral('FORCE'))
V = CaselessLiteral('VIEW')
forceviewLine = "CREATE OR REPLACE FORCE VIEW VW_MY_TEST_VIEW"
normalviewLine = "CREATE OR REPLACE VIEW VW_MY_TEST_VIEW"
newGrammer2 = COR + optFORCEkw + V + Word( alphas+"_", alphanums+"_")
print(forceviewLine,"->", newGrammer2.parseString(forceviewLine))
print(normalviewLine,"->", newGrammer2.parseString(normalviewLine))