【发布时间】:2020-07-15 11:56:38
【问题描述】:
我写了一个这样的语法:
grammar StatementFormat {
token TOP { (<plain> | '%' <placeholder>)* }
token plain { <-[%]> }
token placeholder {
| <verb>
| <noun>
| <adverb>
}
token verb {
'v'
{
# some actions
}
}
token noun {
'n'
{
# some actions
}
}
token adverb {
'a'
{
# some actions
}
}
}
所以我可以用它来解析像“someone %v %n %a”这样的字符串。
但是,我发现有很多用法,比如“%v %n %a”,我想给它一个别名,比如“%b”,这样解析“someone %b”就相当于解析“某人 %v %n %a”。
那么有没有办法做到这一点?
当然,token alias { 'b' { ... } } 可以做到这一点。但是这样我需要重复那个动作代码。我想知道是否存在更简单的方法。
【问题讨论】: