Linux: I can not understand a `m4` command
<p>My work is converting Linux command into CMake <code>execute_process(COMMAND ...)</code>, and there are some differences between them, so i need to understand each Linux command. But this m4 command really  beat me. The m4 command as below:</p>

<pre><code>m4 -Isource/analyzer/ -P &lt; source/analyzer/aParser.m4y &gt; source/analyzer/aParser.by
</code></pre>

<p>What does this command mean?</p>

<p>I have read m4 document before, and it said the format of the <code>m4</code> command is:   <code>m4 [option…] [file…]</code>, so i think  in command: </p>

<pre><code>m4 -Isource/analyzer/ -P &lt; source/analyzer/aParser.m4y &gt; source/analyzer/aParser.by
</code></pre>

<p>the <code>-Isource/analyzer/ -P</code> is <code>[option...]</code> of <code>m4</code>, and this <code>m4</code> commad use<code>&lt;</code>to read the file <code>source/analyzer/aParser.m4y</code> as m4 <code>[file...]</code>, did i understand right?</p>