У меня проблема с импортом файла грамматики в другой файл грамматики из другой папки, как описано ниже:
, содержащийся в TimeInterval.g4этот код:
parser grammar TimeInterval;
// time
timeival: time '-' time;
time:
hour (am | pm)?
| hour ':' minute ( am | pm)?
| noon
| midnight;
hour: DIGIT DIGIT?;
minute: DIGIT DIGIT?;
noon: '12'? 'NOON';
midnight: '12'? 'MIDNIGHT';
am: 'A' | 'AM' | 'am';
pm: 'P' | 'PM' | 'pm';
и мой Seattle.g4 содержит этот код:
grammar Seattle;
import TimeInterval;
parkRules: parkRule ( ( ',')? parkRule)*;
parkRule:
normalRule;
// normal parking type
normalRule:
timespec+ payModel;
payModel:
'PAY'
| 'PAY' '@' ('PS' | 'P' 'S')
| 'PAY' 'AT' 'PAY' 'STATION'
| 'PAY' 'TO' 'PARK';
timespec:
timeival+ daysIndicator;
daysIndicator:
'EVERYDAY'
| 'ALL' 'DAYS'
| 'ANYTIME'
| '24' 'HOURS' 'EVERYDAY'
| 'SUNDAYS';
Я могу скомпилировать грамматику с помощью этой команды: antlr4 -Dlanguage = JavaScript Seattle.g4 без каких-либо ошибок, если TimeInterval.g4 сохраняется в той же папке, что и Seattle.g4, но если я сохраняю TimeInterval.g4 в папке libs, я получаю сообщения об ошибках " Seattle.g4: 214: 1: ссылка на неопределенное правило: timeival"и кажется, что грамматика не может распознать импортированную грамматику.
Я написал эту грамматику в VSCode для Windows.
Было бы замечательно, если бы кто-то предложил мне решение.Заранее спасибо