title: antlr4 two lexer rule match the same string
body: <p>I'm currently using antlr4 to build a parser, but I encountered a problem which I tried my best but didn't figure out. Can you help me to explaain and solve it ?</p>
  
  <pre><code># grammer file : PluginDoc.g4:
  
  grammer PluginDoc
  
  pluginDef : pluginName | pluginDesc;
  pluginName : PluginName IDENTIFIER;
  pluginDesc : PluginDesc TEXT;
  
  PluginName '@pluginName'
  PluginDesc '@pluginDesc'
  
  IDENTIFIER : [a-zA-Z_]+;
  TEXT : ~( ' ' | '\n' | '\t' )+;
  
  input content is: 
  @pluginName kafka
  @pluginDesc abc
  </code></pre>
  
  <p>If I put IDENTIFIER before TEXT, I will get "mismatched input 'abc' expecting TEXT"
  If I put TEXT before IDENTIFIER, I will get "mismatched input 'kafka' expecting IDENTIFIER"</p>
  
  <p>Looks like both IDENTIFIER and TEXT are matched, how can I only match IDENTIFIER in pluginName and only match TEXT in pluginDesc ?</p>