我正在开发一个野牛计划,需要有一个允许它识别任何东西的最后一个选项。就像其他人一样...
由于
commands: F{
t[top++] = 'F';
}
|PLUS{
t[top++] = '+';
}
|MINUS{
t[topo++] = '-';
}
|ACOL {
t[top++] = '[';
}
|FCOL{
t[top++] = ']';
}
|POINT{
t[top++] = '.';
}
|EQUAL {
t[top++] = '=';
}
| {
/* generic command should be here
if any of the commands above were found it should run whatever is here*/
}
答案 0 :(得分:1)
在标记非终端中识别出任何命令令牌后,附加要运行的逻辑,如下所示。请注意,marker
生产的右侧与任何令牌都不匹配。
command_and_marker: command marker;
command: F
{
t[top++] = 'F';
}
| PLUS
{
t[top++] = '+';
}
| MINUS
{
t[topo++] = '-';
}
| ACOL
{
t[top++] = '[';
}
| FCOL
{
t[top++] = ']';
}
| POINT
{
t[top++] = '.';
}
| EQUAL
{
t[top++] = '=';
}
marker: {
/* generic command should be here
if any of the commands above were found it should run whatever is here*/
}
我已经制定了我的答案,以匹配代码中的注释,这与您的问题的文本有些不一致。如果您希望command
匹配任何内容,而不仅仅是F
,PLUS
等,那么您必须拼出您的词法分析器可以在{{的作品中生成的所有标记1}}。出于几个原因,这不一定是个好主意。