我写了一个类似于这样的语法:
所以我可以使用它来解析类似“someone %v %n %a”的字符串。
然而,我发现有很多像“%v %n %a”这样的用法,我想给它一个别名,比如“%b”,这样解析“someone %b”就相当于解析“someone %v %n %a”。
那么有没有办法做到这一点呢?
当然,
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”就相当于解析“someone %v %n %a”。
那么有没有办法做到这一点呢?
当然,
token alias { 'b' { ... } }
可以做到这一点。但是那样我需要重复那个动作代码。我想知道是否存在更简单的方法。