为什么使用 dblQuotedString 会更改匹配位置?
Why does using dblQuotedString change the match location?
我有以下 python 程序:
from pyparsing import *
#grammar START
string_list_item = dblQuotedString | Word(printables.replace(')', ''))
cmake_list_content = OneOrMore(string_list_item)
variable_name = Word(alphas+"_", alphanums+"_")
set_keyword = CaselessLiteral("set")
set_normal_variable_stmt = set_keyword + "(" \
+ variable_name \
+ cmake_list_content + ")"
#grammar END
cmake_source = "set(TabsPls_Sources Main.cpp)"
string_list_item.setDebug()
set_normal_variable_stmt.parseString(cmake_source)
这为 'Main.cpp' 提供以下输出:
Match {string enclosed in double quotes | W:(0123...)} at loc 19(1,20)
Matched {string enclosed in double quotes | W:(0123...)} -> ['Main.cpp']
但是当我从第一行删除 dblQuotedString 时:
Match W:(0123...) at loc 20(1,21)
Matched W:(0123...) -> ['Main.cpp']
为什么会这样?输入中没有任何双引号字符串,为什么匹配位置会发生变化?
我自己关闭这个问题,因为这是由于 bug #244,现已修复!
我有以下 python 程序:
from pyparsing import *
#grammar START
string_list_item = dblQuotedString | Word(printables.replace(')', ''))
cmake_list_content = OneOrMore(string_list_item)
variable_name = Word(alphas+"_", alphanums+"_")
set_keyword = CaselessLiteral("set")
set_normal_variable_stmt = set_keyword + "(" \
+ variable_name \
+ cmake_list_content + ")"
#grammar END
cmake_source = "set(TabsPls_Sources Main.cpp)"
string_list_item.setDebug()
set_normal_variable_stmt.parseString(cmake_source)
这为 'Main.cpp' 提供以下输出:
Match {string enclosed in double quotes | W:(0123...)} at loc 19(1,20)
Matched {string enclosed in double quotes | W:(0123...)} -> ['Main.cpp']
但是当我从第一行删除 dblQuotedString 时:
Match W:(0123...) at loc 20(1,21)
Matched W:(0123...) -> ['Main.cpp']
为什么会这样?输入中没有任何双引号字符串,为什么匹配位置会发生变化?
我自己关闭这个问题,因为这是由于 bug #244,现已修复!