GATE:将 Token.string 与宏进行比较
GATE: comparing Token.string to Macro
我想要的是将 'Token.string' 与定义的宏进行比较。
我尝试了什么:
Macro: ADDRESSING_NOUN
({Token.kind == word, Token.string ==~ "(?i)(sir|madam)"})
Rule: Name
(
{Token.kind == word, Token.string !=~ ADDRESSING_NOUN}
)
遗憾的是,这不起作用。
那么有没有办法比较它们?
这不是您可以在 Jape 规则中使用宏的方式。
这里的宏是为了简化规则,实际上在 Jape 编译时被那里的内容所取代,例如你应该写这样的东西:
Macro: ADDRESSING_NOUN
({Token.kind == word, Token.string ==~ "(?i)(sir|madam)"})
Rule: Name
(ADDRESSING_NOUN):name
将被触发的规则是
({Token.kind == word, Token.string ==~ "(?i)(sir|madam)"}):name
Ian Roberts
通过 Gate mailing list
回答了我的问题。
他的回答:
Template: addressing = "(?i)(sir|madam)"
Rule: Name
({Token.kind == word, Token.string !=~ [addressing]})
我想要的是将 'Token.string' 与定义的宏进行比较。
我尝试了什么:
Macro: ADDRESSING_NOUN
({Token.kind == word, Token.string ==~ "(?i)(sir|madam)"})
Rule: Name
(
{Token.kind == word, Token.string !=~ ADDRESSING_NOUN}
)
遗憾的是,这不起作用。
那么有没有办法比较它们?
这不是您可以在 Jape 规则中使用宏的方式。
这里的宏是为了简化规则,实际上在 Jape 编译时被那里的内容所取代,例如你应该写这样的东西:
Macro: ADDRESSING_NOUN
({Token.kind == word, Token.string ==~ "(?i)(sir|madam)"})
Rule: Name
(ADDRESSING_NOUN):name
将被触发的规则是
({Token.kind == word, Token.string ==~ "(?i)(sir|madam)"}):name
Ian Roberts
通过 Gate mailing list
回答了我的问题。
他的回答:
Template: addressing = "(?i)(sir|madam)"
Rule: Name
({Token.kind == word, Token.string !=~ [addressing]})