public void Validate(LexerSpec lexer) { var modeReferenceErrors = Modes.Except(lexer.Modes).ToList(); if (modeReferenceErrors.Any()) { throw new Exception($"Rule '{Name}' references mode(s) not in lexer spec: '{string.Join("', '", modeReferenceErrors)}'"); } ValidateCommands(lexer); Expression.Validate(lexer); }