<skip> tells RecDescent what to skip before trying each 
terminal. Normally that's any optional whitespace matched by the 
pattern C</\s*/>. 
 
But, if newlines (which would normally be skipped by the above 
pattern) are significant in your syntax, then you need to change the 
skipping pattern so that RecDescent doesn't skip newlines. And then 
match the newlines explicitly. 
 
For example: 
 
     program : <skip: qr/[^\S\n]/>    # Ignore non-newline whitespace 
               statement(s) 
 
     statement : command arg(s) "\n" 
 
     command: /\w+/ 
 
     args  :  /\d+/ | alphanum 
 
     alphanum :  /[A-Za-z0-9/ 
