Малый сдвиг / уменьшение конфликта в CUP
У меня небольшая проблема в попытке выяснить, как разрешить конфликт в моем проекте парсера CUP. Я понимаю, почему происходит ошибка, первый терминал VariableDeclStar может быть идентификатором, а также типом, который вызывает конфликт, однако я не могу понять, как разрешить конфликт таким образом, чтобы сохранить тип и переменную как отдельные состояния. Любая помощь или советы будут оценены.
VariableDecl ::= Variable SEMICOLON {::};
Variable ::= Type ID {::};
Type ::= INT {::}
| DOUBLE {::}
| BOOLEAN {::}
| STRING {::}
| Type LEFTBRACKET RIGHTBRACKET {::}
| ID {::};
VariableDeclStar::= VariableDecl VariableDeclStar {::}
| {::};