title: What is wrong with this grammar? (ANTLRWorks 1.4)
body: <p>I have the following code written in ANTLRWorks 1.4</p>
  
  <pre><code>grammar hmm;
  
  s           :   (put_a_in_b)|(put_out_a)|(drop_kick)|(drop_a)|(put_on_a);
  
  put_a_in_b  :   (PUT_SYN)(ID)(IN_SYN)(ID);  
  put_out_a   :   (PUT2_SYN)(OUT_SYN)(ID) | (E1)(ID); 
  drop_kick   :   ('drop')('kick')(ID);
  drop_a      :   (DROP_SYN)(ID);
  put_on_a    :   (E2)(ID);
  
  PUT_SYN     :   'put' | 'place' | 'drop';
  PUT2_SYN    :   'put' | 'douse';
  IN_SYN      :   'in' | 'into' | 'inside' | 'within';    
  OUT_SYN     :   'out';
  E1          :   'extinguish'|'douse';
  DROP_SYN    :   'drop' | 'throw' | 'relinquish';
  WS          :   ( ' '  | '\t' | '\r' | '\n' ) {$channel=HIDDEN;};
  ID          :   ('a'..'z'|'A'..'Z'|'_') ('a'..'z'|'A'..'Z'|'0'..'9'|'_')*;
  E2          :   'put on'|'don'|'wear';
  COMMENT
      :   '//' ~('\n'|'\r')* '\r'? '\n' {$channel=HIDDEN;}
      |   '/*' ( options {greedy=false;} : . )* '*/' {$channel=HIDDEN;}
      ;
  </code></pre>
  
  <p>When I run it with the input:</p>
  
  <pre><code>drop object
  </code></pre>
  
  <p>I get a MismatchedTokenException(5 != 15).</p>
  
  <p>And with the input :</p>
  
  <pre><code>put o1 in o2
  </code></pre>
  
  <p>I get a NoViableAltException.</p>
  
  <p>Though it runs fine with</p>
  
  <pre><code>place o2 in o2
  </code></pre>
  
  <p>I'm new to this, but it seems like there's ambiguities? Or maybe my usage of ANTLR is incorrect?</p>