在ANTLR中,我在字符串输入中为错误字符(制表符和单引号)定义了一行,例如 CHAR_ERROR:'“'* ['\ t] *'”'{提高CharError(self.text)}; 我的测试输入是“你好,我叫假人” 我在字符串中得到了输出“ Char错误:“你好,我叫假人”
但是对输出的要求必须是从字符串的开头到 仅错误字符,不包括前导双引号。 (例如,上面示例的输出应为:“你好,我的名字”) 有人可以帮我吗?
答案 0 :(得分:0)
据我了解,您不想更改规则匹配的内容,而只想在错误消息中显示匹配项的某个子字符串。因此,您可以只使用Python的字符串功能:
raise CharError(self.text[1:self.text.index("'")+1])
在这里,我们使用1作为开始索引来摆脱"
,并将+1
添加到'
的索引中,以将'
包含在子字符串。