目前我尝试解析像
这样的文字" 播放 by 乐队"
解析媒体播放器的命令。 如果播放和按标记位于歌曲或艺术家名称中,则会出现问题。 如何忽略歌曲名称和艺术家中的多个标记,或者只在我想要的方向上解析一次标记?
那是我的.g文件:
text returns [String value]
: speech=wordExp (space s1=name)? (byartist space a1=name)? {
command = $speech.text;
match = $s1.text;
artist = $a1.text;
}
;
name
: s1 = (WORD (space s2 = WORD)*)
;
byartist
: space BY
;
wordExp
: PLAY | STOP
;
//Lexer
PLAY : 'play';
STOP : 'stop';
BY : 'by';
space : ' ';
WORD : ( 'a'..'z' | 'A'..'Z' )*; // digits in here?
WS : ('\t' | '\r'| '\n') {
$channel=HIDDEN;
}
;