TextX 如何定义单词之间的边界?

How does TextX defines boundaries between words?

考虑以下由 3 条规则组成的示例。

型号:id_1=Ident 'is' id_2=Ident;

关键字:'is';

标识:!关键字标识;

似乎 TextX 无法解析 id_2 以“is”开头的输入,例如“Tom is isolated”。 我收到以下错误: None:1:7:错误:预期不在位置 ../test.txt:(1, 7) => 'Tom is* isolated'。 为什么会这样? “孤立”不应该被认为是一个不同于“是”的词吗?如果 id_2 不是以“is”开头,TextX 可以解析输入。

有没有办法解决这个问题?

谢谢!

textX 默认不假定匹配应该在字边界上进行。要解决您的问题,您可以定义关键字以匹配单词边界,例如:

Keyword: /\bis\b/;

或使用 auto keywords feature,可以在 metamodel_from_file/str 调用中使用 autokwd=True 打开。