Pyparsing - 名称不以字符开头

3

我会使用Pyparsing来识别不以$开头的关键字。例如对于以下输入:

$abc = 5 # is not a valid one
abc123 = 10 # is valid one
abc$ = 23 # is a valid one

我尝试了以下操作。
var = Word(printables, excludeChars='$')
var.parseString('$abc') 

但是这不允许在变量中使用 $ 符号。我该如何指定除了 $ 之外的所有可打印字符作为第一个字符位置?非常感谢您的帮助。
谢谢 Abhijit

作为前导字符,允许使用哪些字符?除了'$'之外,所有可打印字符都可以吗?包括'%', '*', '(', 和 '+'吗? - PaulMcG
嗨,保罗,主要字符可以是除 $ 以外的任何字符。所以经过一番尝试,我想出了 var = Combine(NotAny(Literal('$')) + Word(prinatables))。有更好的指定排除条件的方法吗? - user3138594
1个回答

2

在我向 Word 类添加 excludeChars 参数之前,你可以使用我用来定义“除 X 外所有字符”的方法:

NOT_DOLLAR_SIGN = ''.join(c for c in printables if c != '$')
keyword_not_starting_with_dollar = Word(NOT_DOLLAR_SIGN, printables)

这应该比使用Combine和NotAny更有效率。但是这将匹配几乎任何东西,包括整数、单词、有效标识符、无效标识符,因此我对你的解析器中是否有这种表达式的价值持怀疑态度。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接