Хорошо, на основании вашего комментария, как насчет этого:
commands
: command+ EOF;
command
: (ID ' ' (path)+ ' ' (path)+ '\n') {System.out.println("Command found:" + $command.text + "\n");};
path :
('/' ID)+ {System.out.println("path is:" + $path.text);};
ID: ('A'..'Z'|'a'..'z')('A'..'Z'|'a'..'z'|'0'..'9')+;
WS: (' '|'\t'|'\r'|'\n') {$channel = HIDDEN;};
Опять же, я смог быстро настроить эту работу в ANTLRWorks, и она работает с командой cp, указанной выше. Но, в общем-то, мне это не очень нравится, потому что ваш путь - это список из четырех токенов, и я быстро не мог его легко разделить. Таким образом, вам может потребоваться правило между командой и путем (поскольку я предполагаю, что ваша команда оболочки может иметь некоторые команды, которые работают с файлами, в то время как другие работают с каталогами).
Я также надеюсь, что вы хотите использовать правила ID и лексера WS.