PsiBuilder.Marker tagSetMark = left.getMark().precede();
if (parser.matchesToken(MathematicaElementTypes.TAG_SET)) {
parser.advanceLexer();
} else {
tagSetMark.drop();
throw new CriticalParserError(ParserBundle.message("Critical.tagset"));
}
// In the next line we parse expr1 of expr0/:expr1 and we reduce the precedence by one because it is
// right associative. Using SetDelayed (:=) which has the same precedence the following expression:
// a /: b := c := d is then correctly parsed as a /: b := (c := d)
MathematicaParser.Result expr1 = parser.parseExpression(myPrecedence);