title: Syntactic predicate is not working
body: <p>First rule never works. It should handle something like 'ID1.ID2.ID3.ID4.ID5'.
  But other rules work as expected. What is wrong with it?</p>
  
  <pre><code>grammar testInt;
  
  data_source:
       (ID '.' ID '.' ID ('.' ID)+)=&gt;program_ref
      | (ID '.' ID '.' ID)=&gt;var_ref
      | (ID '.' ID)=&gt;program_ref
      | resource;
  
  program_ref: ID ('.' ID)+;
  var_ref:    ID '.' ID '.' ID;
  resource:   ID;
  
  ID:  (LETTER | ('_'(LETTER | DIGIT))) ('_'? (LETTER | DIGIT))*;
  WSFULL:(' '|'\r'|'\t'|'\u000C'|'\n') {$channel=HIDDEN;};
  
  fragment LETTER: (('a'..'z') | ('A'..'Z'));
  fragment DIGIT: '0'..'9';
  </code></pre>