Я предлагаю не засорять вашу грамматику кодом, а делать это внутри слушателя:
@Override
public void enterAssign(StudyParserParser.AssignContext ctx) {
String id = ctx.name.getText();
String value = ctx.value.getText();
switch (ctx.value.getType()) {
case StudyParserLexer.INT:
System.out.println(id + " is an INT: " + value);
break;
case StudyParserLexer.STRING:
System.out.println(id + " is a STRING: " + value);
break;
case StudyParserLexer.DATE:
System.out.println(id + " is a DATE: " + value);
break;
default:
throw new RuntimeException("Unknown type: " + ctx.value.getType() + ", value: " + value);
}
}