ZealOS/docs/Compiler/Lex.CC.html
TomAwezome 67479705de Add SATA port number reporting to DriveRep.
Improve Lex assert failure warning to give exact line number.
Remove some deprecated IDE functions.
Add default arg to Drive.
Fix raw-mode printing in StackRep, DriveRep, SATARep, Mount2, and CharGet.
Change LongLines cols default arg from 80 to 128.
2021-08-04 15:25:55 -04:00

1513 lines
166 KiB
HTML
Executable file

<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html;charset=US-ASCII">
<meta name="generator" content="ZealOS V0.13">
<style type="text/css">
body {background-color:#fef1f0;}
.cF0{color:#000000;background-color:#fef1f0;}
.cF1{color:#0148a4;background-color:#fef1f0;}
.cF2{color:#3b7901;background-color:#fef1f0;}
.cF3{color:#057c7e;background-color:#fef1f0;}
.cF4{color:#bb2020;background-color:#fef1f0;}
.cF5{color:#9e42ae;background-color:#fef1f0;}
.cF6{color:#b57901;background-color:#fef1f0;}
.cF7{color:#b2b6af;background-color:#fef1f0;}
.cF8{color:#555753;background-color:#fef1f0;}
.cF9{color:#678fbb;background-color:#fef1f0;}
.cFA{color:#82bc49;background-color:#fef1f0;}
.cFB{color:#0097a2;background-color:#fef1f0;}
.cFC{color:#e26a6a;background-color:#fef1f0;}
.cFD{color:#c671bc;background-color:#fef1f0;}
.cFE{color:#c7ab00;background-color:#fef1f0;}
.cFF{color:#fef1f0;background-color:#fef1f0;}
</style>
</head>
<body>
<pre style="font-family:monospace;font-size:12pt">
<a name="l1"></a><span class=cF9>CLexFile</span><span class=cF0> *</span><span class=cFD>LexFilePush</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc)
<a name="l2"></a>{</span><span class=cF2>//#include file push.</span><span class=cF0>
<a name="l3"></a> </span><span class=cF9>CLexFile</span><span class=cF0> *res = </span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CLexFile</span><span class=cF7>)</span><span class=cF0>);
<a name="l4"></a>
<a name="l5"></a> </span><span class=cF1>if</span><span class=cF0> (res-&gt;next = cc-&gt;lex_include_stack)
<a name="l6"></a> res-&gt;depth = res-&gt;next-&gt;depth + </span><span class=cFE>1</span><span class=cF0>;
<a name="l7"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l8"></a> res-&gt;depth = -</span><span class=cFE>1</span><span class=cF0>; </span><span class=cF2>//Include depth starts with -1.</span><span class=cF0>
<a name="l9"></a> </span><span class=cF1>return</span><span class=cF0> cc-&gt;lex_include_stack = res;
<a name="l10"></a>}
<a name="l11"></a>
<a name="l12"></a></span><span class=cF9>CLexFile</span><span class=cF0> *</span><span class=cFD>LexFilePop</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc)
<a name="l13"></a>{</span><span class=cF2>//#include file pop.</span><span class=cF0>
<a name="l14"></a> </span><span class=cF9>CLexFile</span><span class=cF0> *tmpf;
<a name="l15"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf = cc-&gt;lex_include_stack)
<a name="l16"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l17"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF7>(</span><span class=cF0>cc-&gt;lex_include_stack = tmpf-&gt;next</span><span class=cF7>)</span><span class=cF0> || !</span><span class=cF7>(</span><span class=cF0>cc-&gt;flags &amp; </span><span class=cF3>CCF_DONT_FREE_BUF</span><span class=cF7>)</span><span class=cF0>)
<a name="l18"></a> {
<a name="l19"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf-&gt;flags &amp; </span><span class=cF3>LFSF_DOC</span><span class=cF0>)
<a name="l20"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l21"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf-&gt;doc)
<a name="l22"></a> </span><span class=cF5>DocDel</span><span class=cF0>(tmpf-&gt;doc);
<a name="l23"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l24"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l25"></a> </span><span class=cF5>Free</span><span class=cF0>(tmpf-&gt;buf);;
<a name="l26"></a> }
<a name="l27"></a> </span><span class=cF5>Free</span><span class=cF0>(tmpf-&gt;full_name);
<a name="l28"></a> </span><span class=cF5>Free</span><span class=cF0>(tmpf);
<a name="l29"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l30"></a> </span><span class=cF1>return</span><span class=cF0> cc-&gt;lex_include_stack;
<a name="l31"></a>}
<a name="l32"></a>
<a name="l33"></a></span><span class=cF9>CCompCtrl</span><span class=cF0> *</span><span class=cF5>CompCtrlNew</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *buf=</span><span class=cF3>NULL</span><span class=cF0>, </span><span class=cF9>I64</span><span class=cF0> flags=</span><span class=cFE>0</span><span class=cF0>, </span><span class=cF1>U8</span><span class=cF0> *filename=</span><span class=cF3>NULL</span><span class=cF0>)
<a name="l34"></a>{</span><span class=cF2>//MAlloc and Init CCompCtrl.</span><span class=cF0>
<a name="l35"></a> </span><span class=cF2>//Frees buf in </span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/Lex.CC.html#l64"><span class=cF4>CompCtrlDel</span></a><span class=cF2> unless </span><a href="https://zeal-operating-system.github.io/ZealOS/Kernel/KernelA.HH.html#l2273"><span class=cF4>CCF_DONT_FREE_BUF</span></a><span class=cF2> flag is set.</span><span class=cF0>
<a name="l36"></a> </span><span class=cF2>//FileName is for error reporting.</span><span class=cF0> </span><span class=cF2>If files are #included,</span><span class=cF0>
<a name="l37"></a> </span><span class=cF2>//new names are used. See </span><a href="https://zeal-operating-system.github.io/ZealOS/Apps/Psalmody/PsalmodyFile.CC.html#l235"><span class=cF4>Psalmody CompCtrlNew</span></a><span class=cF2>.</span><span class=cF0>
<a name="l38"></a> </span><span class=cF9>CCompCtrl</span><span class=cF0> *cc = </span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CCompCtrl</span><span class=cF7>)</span><span class=cF0>);
<a name="l39"></a> </span><span class=cF9>CLexFile</span><span class=cF0> *tmpf;
<a name="l40"></a>
<a name="l41"></a> </span><span class=cF5>QueueInit</span><span class=cF0>(cc);
<a name="l42"></a> cc-&gt;flags = flags;
<a name="l43"></a> cc-&gt;opts = </span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>OPTf_WARN_UNUSED_VAR</span><span class=cF0> | </span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>OPTf_WARN_HEADER_MISMATCH</span><span class=cF0>;
<a name="l44"></a> cc-&gt;htc.hash_mask = </span><span class=cF3>HTG_TYPE_MASK</span><span class=cF0> - </span><span class=cF3>HTT_IMPORT_SYS_SYM</span><span class=cF0>;
<a name="l45"></a> cc-&gt;htc.define_hash_table = cc-&gt;htc.hash_table_list =
<a name="l46"></a> cc-&gt;htc.global_hash_table = cc-&gt;htc.local_hash_table = </span><span class=cF5>Fs</span><span class=cF0>-&gt;hash_table;
<a name="l47"></a> </span><span class=cF1>if</span><span class=cF0> (flags &amp; </span><span class=cF3>CCF_KEEP_AT_SIGN</span><span class=cF0>)
<a name="l48"></a> cc-&gt;</span><span class=cFB>char_bmp_alpha_numeric</span><span class=cF0> = </span><span class=cFB>char_bmp_alpha_numeric_no_at</span><span class=cF0>;
<a name="l49"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l50"></a> cc-&gt;</span><span class=cFB>char_bmp_alpha_numeric</span><span class=cF0> = </span><span class=cFB>char_bmp_alpha_numeric</span><span class=cF0>;
<a name="l51"></a> tmpf = </span><span class=cFD>LexFilePush</span><span class=cF0>(cc);
<a name="l52"></a> </span><span class=cF5>QueueInit</span><span class=cF0>(&amp;cc-&gt;next_stream_blk);
<a name="l53"></a> </span><span class=cF1>if</span><span class=cF0> (filename)
<a name="l54"></a> tmpf-&gt;full_name = </span><span class=cF5>FileNameAbs</span><span class=cF0>(filename);
<a name="l55"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l56"></a> tmpf-&gt;full_name = </span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cFB>blkdev</span><span class=cF0>.tmp_filename);
<a name="l57"></a> </span><span class=cF1>if</span><span class=cF0> (flags &amp; </span><span class=cF3>CCF_PROMPT</span><span class=cF0>)
<a name="l58"></a> buf = </span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cFE>8</span><span class=cF0>);
<a name="l59"></a> tmpf-&gt;buf = tmpf-&gt;buf_ptr = tmpf-&gt;line_start = cc-&gt;cur_buf_ptr = buf;
<a name="l60"></a> tmpf-&gt;line_num = </span><span class=cFE>1</span><span class=cF0>;
<a name="l61"></a> </span><span class=cF1>return</span><span class=cF0> cc;
<a name="l62"></a>}
<a name="l63"></a>
<a name="l64"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>CompCtrlDel</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc)
<a name="l65"></a>{</span><span class=cF2>//Free CCompCtrl.</span><span class=cF0>
<a name="l66"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cFD>LexFilePop</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>);
<a name="l67"></a> </span><span class=cF5>LinkedListDel</span><span class=cF0>(cc-&gt;lex_parse_stack);
<a name="l68"></a> </span><span class=cF5>LinkedListDel</span><span class=cF0>(cc-&gt;htc.next);
<a name="l69"></a> </span><span class=cF5>Free</span><span class=cF0>(cc-&gt;ps);
<a name="l70"></a> </span><span class=cF5>Free</span><span class=cF0>(cc-&gt;cur_str);
<a name="l71"></a> </span><span class=cF5>Free</span><span class=cF0>(cc-&gt;cur_help_idx);
<a name="l72"></a> </span><span class=cF5>Free</span><span class=cF0>(cc-&gt;dollar_buf);
<a name="l73"></a> </span><span class=cF5>Free</span><span class=cF0>(cc);
<a name="l74"></a>}
<a name="l75"></a>
<a name="l76"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>CompCtrlSize</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc)
<a name="l77"></a>{</span><span class=cF2>//Mem size of CCompCtrl and its members.</span><span class=cF0>
<a name="l78"></a> </span><span class=cF9>CLexFile</span><span class=cF0> *tmpf = cc-&gt;lex_include_stack;
<a name="l79"></a> </span><span class=cF9>I64</span><span class=cF0> res = </span><span class=cFE>0</span><span class=cF0>;
<a name="l80"></a>
<a name="l81"></a> </span><span class=cF1>while</span><span class=cF0> (tmpf)
<a name="l82"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l83"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf-&gt;next || !</span><span class=cF7>(</span><span class=cF0>cc-&gt;flags &amp; </span><span class=cF3>CCF_DONT_FREE_BUF</span><span class=cF7>)</span><span class=cF0>)
<a name="l84"></a> {
<a name="l85"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf-&gt;flags &amp; </span><span class=cF3>LFSF_DOC</span><span class=cF0>)
<a name="l86"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l87"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf-&gt;doc)
<a name="l88"></a> res += </span><span class=cF5>DocSize</span><span class=cF0>(tmpf-&gt;doc);
<a name="l89"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l90"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l91"></a> res += </span><span class=cF5>MSize2</span><span class=cF0>(tmpf-&gt;buf);
<a name="l92"></a> }
<a name="l93"></a> res += </span><span class=cF5>MSize2</span><span class=cF0>(tmpf-&gt;full_name);
<a name="l94"></a> res += </span><span class=cF5>MSize2</span><span class=cF0>(tmpf);
<a name="l95"></a> tmpf = tmpf-&gt;next;
<a name="l96"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l97"></a> res += </span><span class=cF5>MSize2</span><span class=cF0>(cc-&gt;cur_str);
<a name="l98"></a> res += </span><span class=cF5>MSize2</span><span class=cF0>(cc);
<a name="l99"></a> </span><span class=cF1>return</span><span class=cF0> res;
<a name="l100"></a>}
<a name="l101"></a>
<a name="l102"></a></span><span class=cF9>U32</span><span class=cF0> </span><span class=cFD>lex_zeros</span><span class=cF0> = </span><span class=cFE>0</span><span class=cF0>;
<a name="l103"></a>
<a name="l104"></a></span><span class=cF1>Bool</span><span class=cF0> </span><span class=cFD>LexDollar</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc, </span><span class=cF9>CDoc</span><span class=cF0> *doc, </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e)
<a name="l105"></a>{
<a name="l106"></a> </span><span class=cF1>U8</span><span class=cF0> *st;
<a name="l107"></a>
<a name="l108"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_IN_QUOTES</span><span class=cF0>)
<a name="l109"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l110"></a> </span><span class=cF5>Free</span><span class=cF0>(cc-&gt;dollar_buf);
<a name="l111"></a> st = </span><span class=cF5>Doc2PlainText</span><span class=cF0>(doc, doc_e);
<a name="l112"></a> cc-&gt;dollar_buf = </span><span class=cF5>MStrPrint</span><span class=cF0>(</span><span class=cF6>&quot;$%$Q$&quot;</span><span class=cF0>, st);
<a name="l113"></a> cc-&gt;dollar_count = </span><span class=cFE>2</span><span class=cF0>;
<a name="l114"></a> </span><span class=cF5>Free</span><span class=cF0>(st);
<a name="l115"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>TRUE</span><span class=cF0>;
<a name="l116"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l117"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l118"></a> </span><span class=cF1>return</span><span class=cF0> </span><span class=cF3>FALSE</span><span class=cF0>;
<a name="l119"></a>}
<a name="l120"></a>
<a name="l121"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>LexCharGet</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc)
<a name="l122"></a>{</span><span class=cF2>//Get one char from stream. Allow put-back one.</span><span class=cF0>
<a name="l123"></a> </span><span class=cF1>U8</span><span class=cF0> *ptr, *src;
<a name="l124"></a> </span><span class=cF9>CLexFile</span><span class=cF0> *tmpf;
<a name="l125"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc;
<a name="l126"></a> </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e;
<a name="l127"></a>
<a name="l128"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Btr</span><span class=cF7>(</span><span class=cF0>&amp;cc-&gt;flags, </span><span class=cF3>CCf_USE_LAST_U16</span><span class=cF7>)</span><span class=cF0>)
<a name="l129"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l130"></a>lgc_start1:
<a name="l131"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>src = cc-&gt;cur_buf_ptr++</span><span class=cF7>)</span><span class=cF0>)
<a name="l132"></a> {
<a name="l133"></a> cc-&gt;cur_buf_ptr = </span><span class=cF3>NULL</span><span class=cF0>;
<a name="l134"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_here;
<a name="l135"></a> }
<a name="l136"></a> </span><span class=cF1>switch</span><span class=cF0> [cc-&gt;last_U16 = *src++]
<a name="l137"></a> {
<a name="l138"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>:
<a name="l139"></a>lgc_here:
<a name="l140"></a> tmpf = cc-&gt;lex_include_stack;
<a name="l141"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf-&gt;flags &amp; </span><span class=cF3>LFSF_DOC</span><span class=cF0>)
<a name="l142"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l143"></a> doc = tmpf-&gt;doc;
<a name="l144"></a> doc_e = tmpf-&gt;cur_entry;
<a name="l145"></a> doc_e = doc_e-&gt;next;
<a name="l146"></a>lgc_start2:
<a name="l147"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e != doc)
<a name="l148"></a> {
<a name="l149"></a> tmpf-&gt;cur_entry = doc_e;
<a name="l150"></a> </span><span class=cF1>switch</span><span class=cF0> [doc_e-&gt;type_u8]
<a name="l151"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l152"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>DOCT_TEXT</span><span class=cF0>:
<a name="l153"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e-&gt;de_flags &amp;
<a name="l154"></a> ~</span><span class=cF7>(</span><span class=cF3>DOCEF_TAG</span><span class=cF0> | </span><span class=cF3>DOCEF_DEFINE</span><span class=cF0> | </span><span class=cF3>DOCEF_TAG_CB</span><span class=cF0> | </span><span class=cF3>DOCG_BL_IV_UL</span><span class=cF0> | </span><span class=cF3>DOCEF_WORD_WRAP</span><span class=cF0> |
<a name="l155"></a> </span><span class=cF3>DOCEF_HIGHLIGHT</span><span class=cF0> | </span><span class=cF3>DOCEF_SKIP</span><span class=cF0> | </span><span class=cF3>DOCEF_FILTER_SKIP</span><span class=cF7>)</span><span class=cF0> &amp;&amp;
<a name="l156"></a> </span><span class=cFD>LexDollar</span><span class=cF7>(</span><span class=cF0>cc, doc, doc_e</span><span class=cF7>)</span><span class=cF0> &amp;&amp; *</span><span class=cF7>(</span><span class=cF0>src = cc-&gt;dollar_buf</span><span class=cF7>)</span><span class=cF0>)
<a name="l157"></a> {
<a name="l158"></a> tmpf-&gt;line_num = doc_e-&gt;y + </span><span class=cFE>1</span><span class=cF0>;
<a name="l159"></a> tmpf-&gt;buf_ptr = cc-&gt;cur_buf_ptr = src;
<a name="l160"></a> }
<a name="l161"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (*</span><span class=cF7>(</span><span class=cF0>src = doc_e-&gt;tag</span><span class=cF7>)</span><span class=cF0>)
<a name="l162"></a> tmpf-&gt;buf_ptr = cc-&gt;cur_buf_ptr = src;
<a name="l163"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l164"></a> {
<a name="l165"></a> doc_e = doc_e-&gt;next;
<a name="l166"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_start2;
<a name="l167"></a> }
<a name="l168"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l169"></a>
<a name="l170"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>DOCT_NEW_LINE</span><span class=cF0>:
<a name="l171"></a> tmpf-&gt;buf_ptr = cc-&gt;cur_buf_ptr = &amp;</span><span class=cFD>lex_zeros</span><span class=cF0>;
<a name="l172"></a> tmpf-&gt;line_start = doc_e-&gt;next;
<a name="l173"></a> tmpf-&gt;line_num = doc_e-&gt;y + </span><span class=cFE>2</span><span class=cF0>;</span><span class=cF2>//+1 because NEW_LINE is on prev line</span><span class=cF0>
<a name="l174"></a> </span><span class=cF2>//+1 because doc y starts at zero</span><span class=cF0>
<a name="l175"></a> </span><span class=cFB>cmp</span><span class=cF0>.compiled_lines++;
<a name="l176"></a> cc-&gt;last_U16 = </span><span class=cF6>'\n'</span><span class=cF0>;
<a name="l177"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_done;
<a name="l178"></a>
<a name="l179"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>DOCT_TAB</span><span class=cF0>:
<a name="l180"></a> tmpf-&gt;buf_ptr = cc-&gt;cur_buf_ptr = &amp;</span><span class=cFD>lex_zeros</span><span class=cF0>;
<a name="l181"></a> tmpf-&gt;line_num = doc_e-&gt;y + </span><span class=cFE>1</span><span class=cF0>;
<a name="l182"></a> cc-&gt;last_U16 = </span><span class=cF6>'\t'</span><span class=cF0>;
<a name="l183"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_done;
<a name="l184"></a>
<a name="l185"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>DOCT_INS_BIN</span><span class=cF0>:
<a name="l186"></a> tmpf-&gt;buf_ptr = cc-&gt;cur_buf_ptr = &amp;</span><span class=cFD>lex_zeros</span><span class=cF0>;
<a name="l187"></a> tmpf-&gt;line_num = doc_e-&gt;y + </span><span class=cFE>1</span><span class=cF0>;
<a name="l188"></a> </span><span class=cF5>Free</span><span class=cF0>(cc-&gt;cur_str);
<a name="l189"></a> cc-&gt;cur_str = </span><span class=cF3>NULL</span><span class=cF0>;
<a name="l190"></a> cc-&gt;cur_str_len = </span><span class=cFE>0</span><span class=cF0>;
<a name="l191"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e-&gt;bin_data)
<a name="l192"></a> {
<a name="l193"></a> ptr = </span><span class=cF5>MAlloc</span><span class=cF0>(doc_e-&gt;bin_data-&gt;size);
<a name="l194"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e-&gt;bin_data-&gt;data)
<a name="l195"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(ptr, doc_e-&gt;bin_data-&gt;data, doc_e-&gt;bin_data-&gt;size);
<a name="l196"></a> cc-&gt;cur_str = ptr;
<a name="l197"></a> cc-&gt;cur_str_len = doc_e-&gt;bin_data-&gt;size;
<a name="l198"></a> }
<a name="l199"></a> cc-&gt;last_U16 = </span><span class=cF3>TK_INS_BIN</span><span class=cF0>;
<a name="l200"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_done;
<a name="l201"></a>
<a name="l202"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>DOCT_INS_BIN_SIZE</span><span class=cF0>:
<a name="l203"></a> tmpf-&gt;buf_ptr = cc-&gt;cur_buf_ptr = &amp;</span><span class=cFD>lex_zeros</span><span class=cF0>;
<a name="l204"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e-&gt;bin_data)
<a name="l205"></a> cc-&gt;cur_i64 = doc_e-&gt;bin_data-&gt;size;
<a name="l206"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l207"></a> cc-&gt;cur_i64 = </span><span class=cFE>0</span><span class=cF0>;
<a name="l208"></a> tmpf-&gt;line_num = doc_e-&gt;y + </span><span class=cFE>1</span><span class=cF0>;
<a name="l209"></a> cc-&gt;last_U16 = </span><span class=cF3>TK_INS_BIN_SIZE</span><span class=cF0>;
<a name="l210"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_done;
<a name="l211"></a>
<a name="l212"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>DOCT_SHIFTED_Y</span><span class=cF0>:
<a name="l213"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFD>LexDollar</span><span class=cF7>(</span><span class=cF0>cc, doc, doc_e</span><span class=cF7>)</span><span class=cF0> &amp;&amp; *</span><span class=cF7>(</span><span class=cF0>src = cc-&gt;dollar_buf</span><span class=cF7>)</span><span class=cF0>)
<a name="l214"></a> {
<a name="l215"></a> tmpf-&gt;line_num = doc_e-&gt;y + </span><span class=cFE>1</span><span class=cF0>;
<a name="l216"></a> tmpf-&gt;buf_ptr = cc-&gt;cur_buf_ptr = src;
<a name="l217"></a> }
<a name="l218"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l219"></a> {
<a name="l220"></a> tmpf-&gt;buf_ptr = cc-&gt;cur_buf_ptr = &amp;</span><span class=cFD>lex_zeros</span><span class=cF0>;
<a name="l221"></a> tmpf-&gt;line_num = doc_e-&gt;y + </span><span class=cFE>1</span><span class=cF0>;
<a name="l222"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e-&gt;attr &lt; </span><span class=cFE>0</span><span class=cF0>)
<a name="l223"></a> cc-&gt;last_U16 = </span><span class=cF3>TK_SUPERSCRIPT</span><span class=cF0>;
<a name="l224"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (doc_e-&gt;attr &gt; </span><span class=cFE>0</span><span class=cF0>)
<a name="l225"></a> cc-&gt;last_U16 = </span><span class=cF3>TK_SUBSCRIPT</span><span class=cF0>;
<a name="l226"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l227"></a> cc-&gt;last_U16 = </span><span class=cF3>TK_NORMALSCRIPT</span><span class=cF0>;
<a name="l228"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_done;
<a name="l229"></a> }
<a name="l230"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l231"></a>
<a name="l232"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>DOCT_MARKER</span><span class=cF0>:
<a name="l233"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>DOCT_CURSOR</span><span class=cF0>:
<a name="l234"></a> doc_e = doc_e-&gt;next;
<a name="l235"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_start2;
<a name="l236"></a>
<a name="l237"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cFE>0xFF</span><span class=cF0>: </span><span class=cF2>// nobound switch</span><span class=cF0>
<a name="l238"></a> </span><span class=cF1>default</span><span class=cF0>:
<a name="l239"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cFD>LexDollar</span><span class=cF7>(</span><span class=cF0>cc, doc, doc_e</span><span class=cF7>)</span><span class=cF0> &amp;&amp; *</span><span class=cF7>(</span><span class=cF0>src = cc-&gt;dollar_buf</span><span class=cF7>)</span><span class=cF0>)
<a name="l240"></a> {
<a name="l241"></a> tmpf-&gt;line_num = doc_e-&gt;y + </span><span class=cFE>1</span><span class=cF0>;
<a name="l242"></a> tmpf-&gt;buf_ptr = cc-&gt;cur_buf_ptr = src;
<a name="l243"></a> }
<a name="l244"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l245"></a> {
<a name="l246"></a> doc_e = doc_e-&gt;next;
<a name="l247"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_start2;
<a name="l248"></a> }
<a name="l249"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l250"></a> }
<a name="l251"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e != doc)
<a name="l252"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_start1;
<a name="l253"></a> tmpf-&gt;cur_entry = doc-&gt;head.last; </span><span class=cF2>// When take next, will still be end.</span><span class=cF0>
<a name="l254"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l255"></a> tmpf = cc-&gt;lex_include_stack;
<a name="l256"></a> </span><span class=cF1>if</span><span class=cF0> (tmpf-&gt;next)
<a name="l257"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l258"></a> tmpf = </span><span class=cFD>LexFilePop</span><span class=cF0>(cc);
<a name="l259"></a> cc-&gt;cur_buf_ptr = tmpf-&gt;buf_ptr;
<a name="l260"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l261"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>cc-&gt;last_U16 = tmpf-&gt;last_U16</span><span class=cF7>)</span><span class=cF0>)
<a name="l262"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_start1;
<a name="l263"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l264"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l265"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l266"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_PROMPT</span><span class=cF0>)
<a name="l267"></a> {
<a name="l268"></a> </span><span class=cF5>Free</span><span class=cF0>(tmpf-&gt;buf);
<a name="l269"></a> ptr = </span><span class=cFD>CmdLinePrompt</span><span class=cF0>;
<a name="l270"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>StrCompare</span><span class=cF7>(</span><span class=cF0>ptr, </span><span class=cF6>&quot;\n&quot;</span><span class=cF7>)</span><span class=cF0> &amp;&amp; !cc-&gt;prompt_line++ &amp;&amp;
<a name="l271"></a> !</span><span class=cF5>StrCompare</span><span class=cF7>(</span><span class=cF0>ptr, </span><span class=cF6>&quot;?\n&quot;</span><span class=cF7>)</span><span class=cF0> &amp;&amp; cc-&gt;flags &amp; </span><span class=cF3>CCF_QUESTION_HELP</span><span class=cF0>)
<a name="l272"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l273"></a> </span><span class=cF5>Free</span><span class=cF0>(ptr);
<a name="l274"></a> ptr = </span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cF6>&quot;Help;;\n&quot;</span><span class=cF0>);
<a name="l275"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l276"></a> tmpf-&gt;buf = tmpf-&gt;buf_ptr = tmpf-&gt;line_start = cc-&gt;cur_buf_ptr = ptr;
<a name="l277"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_start1;
<a name="l278"></a> }
<a name="l279"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l280"></a> {
<a name="l281"></a> </span><span class=cF1>if</span><span class=cF0> (src)
<a name="l282"></a> cc-&gt;cur_buf_ptr = src - </span><span class=cFE>1</span><span class=cF0>;
<a name="l283"></a> cc-&gt;last_U16 = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l284"></a> }
<a name="l285"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l286"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l287"></a>
<a name="l288"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>CH_CURSOR</span><span class=cF0>:
<a name="l289"></a> </span><span class=cF1>goto</span><span class=cF0> lgc_start1;
<a name="l290"></a>
<a name="l291"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\n'</span><span class=cF0>:
<a name="l292"></a> tmpf = cc-&gt;lex_include_stack;
<a name="l293"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmpf-&gt;flags &amp; </span><span class=cF3>LFSF_DOC</span><span class=cF7>)</span><span class=cF0>)
<a name="l294"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l295"></a> tmpf-&gt;line_num++;
<a name="l296"></a> </span><span class=cFB>cmp</span><span class=cF0>.compiled_lines++;
<a name="l297"></a> tmpf-&gt;line_start = src;
<a name="l298"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l299"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l300"></a>
<a name="l301"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cFE>0xFF</span><span class=cF0>: </span><span class=cF2>//nobound switch</span><span class=cF0>
<a name="l302"></a> }
<a name="l303"></a>lgc_done:
<a name="l304"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;opts &amp; </span><span class=cF3>OPTF_ECHO</span><span class=cF0> &amp;&amp; cc-&gt;last_U16 &lt; </span><span class=cFE>256</span><span class=cF0> &amp;&amp; </span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_printable</span><span class=cF0>, cc-&gt;last_U16</span><span class=cF7>)</span><span class=cF0>)
<a name="l305"></a> </span><span class=cF6>''</span><span class=cF0> cc-&gt;last_U16;
<a name="l306"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l307"></a>
<a name="l308"></a> </span><span class=cF1>return</span><span class=cF0> cc-&gt;last_U16;
<a name="l309"></a>}
<a name="l310"></a>
<a name="l311"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>LexSkipEol</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc)
<a name="l312"></a>{</span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/Lex.CC.html#l121"><span class=cF4>LexCharGet</span></a><span class=cF2> to NULL until end-of-line.</span><span class=cF0>
<a name="l313"></a> </span><span class=cF9>I64</span><span class=cF0> ch;
<a name="l314"></a>
<a name="l315"></a> </span><span class=cF1>do</span><span class=cF0> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l316"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_non_eol</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>);
<a name="l317"></a>}
<a name="l318"></a>
<a name="l319"></a></span><span class=cF1>U8</span><span class=cF0> *</span><span class=cF5>LexFirstRemove</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc, </span><span class=cF1>U8</span><span class=cF0> *marker, </span><span class=cF9>I64</span><span class=cF0> _len=</span><span class=cF3>NULL</span><span class=cF0>)
<a name="l320"></a>{</span><span class=cF2>//</span><a href="https://zeal-operating-system.github.io/ZealOS/Compiler/Lex.CC.html#l121"><span class=cF4>LexCharGet</span></a><span class=cF2>() chars making str until marker.</span><span class=cF0>
<a name="l321"></a> </span><span class=cF1>U8</span><span class=cF0> *res, *ptr;
<a name="l322"></a> </span><span class=cF9>CQueueVectU8</span><span class=cF0> *tmpv = </span><span class=cF5>QueueVectU8New</span><span class=cF0>;
<a name="l323"></a> </span><span class=cF9>I64</span><span class=cF0> i, len = </span><span class=cFE>0</span><span class=cF0>;
<a name="l324"></a>
<a name="l325"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>)
<a name="l326"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l327"></a> i = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l328"></a> </span><span class=cF1>if</span><span class=cF0> (!i || </span><span class=cF5>StrOcc</span><span class=cF7>(</span><span class=cF0>marker, i</span><span class=cF7>)</span><span class=cF0>)
<a name="l329"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l330"></a> </span><span class=cF5>QueueVectU8Put</span><span class=cF0>(tmpv, len++, i);
<a name="l331"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l332"></a> </span><span class=cF1>if</span><span class=cF0> (i)
<a name="l333"></a> </span><span class=cF5>Bts</span><span class=cF0>(&amp;cc-&gt;flags, </span><span class=cF3>CCf_USE_LAST_U16</span><span class=cF0>);
<a name="l334"></a> res = ptr = </span><span class=cF5>MAlloc</span><span class=cF0>(len + </span><span class=cFE>1</span><span class=cF0>);
<a name="l335"></a> </span><span class=cF1>for</span><span class=cF0> (i = </span><span class=cFE>0</span><span class=cF0>; i &lt; len; i++)
<a name="l336"></a> *ptr++ = </span><span class=cF5>QueueVectU8Get</span><span class=cF0>(tmpv, i);
<a name="l337"></a> *ptr = </span><span class=cFE>0</span><span class=cF0>;
<a name="l338"></a> </span><span class=cF5>QueueVectU8Del</span><span class=cF0>(tmpv);
<a name="l339"></a> </span><span class=cF1>if</span><span class=cF0> (_len)
<a name="l340"></a> *_len = len;
<a name="l341"></a>
<a name="l342"></a> </span><span class=cF1>return</span><span class=cF0> res;
<a name="l343"></a>}
<a name="l344"></a>
<a name="l345"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cFD>LexIncludeStr</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc, </span><span class=cF1>U8</span><span class=cF0> *abs_filename, </span><span class=cF1>U8</span><span class=cF0> *src, </span><span class=cF1>Bool</span><span class=cF0> actual_file)
<a name="l346"></a>{
<a name="l347"></a> </span><span class=cFD>LexBackupLastChar</span><span class=cF0>(cc);
<a name="l348"></a> </span><span class=cF9>CLexFile</span><span class=cF0> *tmpf = </span><span class=cFD>LexFilePush</span><span class=cF0>(cc);
<a name="l349"></a>
<a name="l350"></a> </span><span class=cF1>if</span><span class=cF0> (actual_file)
<a name="l351"></a> tmpf-&gt;full_name = </span><span class=cF5>StrNew</span><span class=cF0>(abs_filename);
<a name="l352"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l353"></a> tmpf-&gt;full_name = </span><span class=cF5>StrNew</span><span class=cF0>(</span><span class=cFB>blkdev</span><span class=cF0>.tmp_filename);
<a name="l354"></a> tmpf-&gt;line_num = </span><span class=cFE>1</span><span class=cF0>;
<a name="l355"></a> tmpf-&gt;buf = tmpf-&gt;buf_ptr = tmpf-&gt;line_start = cc-&gt;cur_buf_ptr = src;
<a name="l356"></a>}
<a name="l357"></a>
<a name="l358"></a></span><span class=cF9>CDoc</span><span class=cF0> *</span><span class=cFD>LexDocRead</span><span class=cF0>(</span><span class=cF1>U8</span><span class=cF0> *abs_filename, </span><span class=cF9>I64</span><span class=cF0> flags)
<a name="l359"></a>{
<a name="l360"></a> </span><span class=cF9>CDoc</span><span class=cF0> *doc = </span><span class=cF5>DocNew</span><span class=cF0>(abs_filename);
<a name="l361"></a> </span><span class=cF1>U8</span><span class=cF0> *src;
<a name="l362"></a> </span><span class=cF9>I64</span><span class=cF0> size = </span><span class=cFE>0</span><span class=cF0>;
<a name="l363"></a>
<a name="l364"></a> doc-&gt;flags |= flags;
<a name="l365"></a> src = </span><span class=cF5>FileRead</span><span class=cF0>(abs_filename, &amp;size);
<a name="l366"></a> </span><span class=cF1>if</span><span class=cF0> (!src || !size)
<a name="l367"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l368"></a> </span><span class=cF5>Free</span><span class=cF0>(src);
<a name="l369"></a> src = </span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cFE>1</span><span class=cF0>);
<a name="l370"></a> size = </span><span class=cFE>0</span><span class=cF0>;
<a name="l371"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l372"></a> </span><span class=cF5>DocLoad</span><span class=cF0>(doc, src, size);
<a name="l373"></a> </span><span class=cF5>Free</span><span class=cF0>(src);
<a name="l374"></a>
<a name="l375"></a> </span><span class=cF1>return</span><span class=cF0> doc;
<a name="l376"></a>}
<a name="l377"></a>
<a name="l378"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cFD>comp_type_flags_src_code</span><span class=cF0>[(</span><span class=cF3>DOCT_TYPES_NUM</span><span class=cF0> + </span><span class=cFE>63</span><span class=cF0>) / </span><span class=cFE>64</span><span class=cF0>] = {
<a name="l379"></a> </span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>DOCT_TEXT</span><span class=cF0> | </span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>DOCT_TAB</span><span class=cF0> | </span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>DOCT_INS_BIN</span><span class=cF0> | </span><span class=cFE>1</span><span class=cF0> &lt;&lt; </span><span class=cF3>DOCT_INS_BIN_SIZE</span><span class=cF0>};
<a name="l380"></a>
<a name="l381"></a></span><span class=cF1>U0</span><span class=cF0> </span><span class=cF5>LexAttachDoc</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc, </span><span class=cF9>CLexFile</span><span class=cF0> *tmpf=</span><span class=cF3>NULL</span><span class=cF0>, </span><span class=cF9>CDoc</span><span class=cF0> *doc=</span><span class=cF3>NULL</span><span class=cF0>, </span><span class=cF1>U8</span><span class=cF0> *abs_filename=</span><span class=cF3>NULL</span><span class=cF0>, </span><span class=cF9>CDocEntry</span><span class=cF0> *doc_e=</span><span class=cF3>NULL</span><span class=cF0>, </span><span class=cF9>I64</span><span class=cF0> col=</span><span class=cFE>0</span><span class=cF0>)
<a name="l382"></a>{</span><span class=cF2>//Start lexing doc. Give either doc or abs_filename.</span><span class=cF0>
<a name="l383"></a> </span><span class=cF1>if</span><span class=cF0> (!doc)
<a name="l384"></a> doc = </span><span class=cFD>LexDocRead</span><span class=cF0>(abs_filename, </span><span class=cF3>DOCF_DBL_DOLLARS</span><span class=cF0>);
<a name="l385"></a> </span><span class=cF1>if</span><span class=cF0> (!tmpf)
<a name="l386"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l387"></a> </span><span class=cFD>LexBackupLastChar</span><span class=cF0>(cc);
<a name="l388"></a> tmpf = </span><span class=cFD>LexFilePush</span><span class=cF0>(cc);
<a name="l389"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l390"></a> </span><span class=cF1>if</span><span class=cF0> (!doc_e)
<a name="l391"></a> doc_e = doc-&gt;head.next;
<a name="l392"></a> tmpf-&gt;full_name = </span><span class=cF5>StrNew</span><span class=cF0>(doc-&gt;filename.name);
<a name="l393"></a> tmpf-&gt;doc = doc;
<a name="l394"></a> </span><span class=cF1>while</span><span class=cF0> (doc_e != doc)
<a name="l395"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l396"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFD>comp_type_flags_src_code</span><span class=cF0>, doc_e-&gt;type_u8</span><span class=cF7>)</span><span class=cF0>)
<a name="l397"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l398"></a> doc_e = doc_e-&gt;next;
<a name="l399"></a> col = doc_e-&gt;min_col;
<a name="l400"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l401"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e != doc)
<a name="l402"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l403"></a> col = </span><span class=cF5>ClampI64</span><span class=cF0>(col, doc_e-&gt;min_col, doc_e-&gt;max_col);
<a name="l404"></a> tmpf-&gt;line_start = doc_e;
<a name="l405"></a> tmpf-&gt;buf = </span><span class=cF3>NULL</span><span class=cF0>;
<a name="l406"></a> tmpf-&gt;line_num = doc_e-&gt;y + </span><span class=cFE>1</span><span class=cF0>;
<a name="l407"></a> </span><span class=cF1>if</span><span class=cF0> (doc_e-&gt;type_u8 == </span><span class=cF3>DOCT_TEXT</span><span class=cF0>)
<a name="l408"></a> {
<a name="l409"></a> tmpf-&gt;cur_entry = doc_e;
<a name="l410"></a> tmpf-&gt;buf_ptr = doc_e-&gt;tag;
<a name="l411"></a> }
<a name="l412"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l413"></a> {
<a name="l414"></a> tmpf-&gt;cur_entry = doc_e-&gt;last; </span><span class=cF2>//TODO: might be problem at begin of file</span><span class=cF0>
<a name="l415"></a> tmpf-&gt;buf_ptr = &amp;</span><span class=cFD>lex_zeros</span><span class=cF0>;
<a name="l416"></a> }
<a name="l417"></a> tmpf-&gt;flags = </span><span class=cF3>LFSF_DOC</span><span class=cF0>;
<a name="l418"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l419"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l420"></a> </span><span class=cF7>{</span><span class=cF2>//TODO: DocDel(doc)?</span><span class=cF0>
<a name="l421"></a> col = </span><span class=cFE>0</span><span class=cF0>;
<a name="l422"></a> tmpf-&gt;buf = tmpf-&gt;buf_ptr = tmpf-&gt;line_start = </span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cFE>1</span><span class=cF0>);
<a name="l423"></a> tmpf-&gt;line_num = </span><span class=cFE>1</span><span class=cF0>;
<a name="l424"></a> tmpf-&gt;flags = </span><span class=cFE>0</span><span class=cF0>;
<a name="l425"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l426"></a> cc-&gt;cur_buf_ptr = tmpf-&gt;buf_ptr + col;
<a name="l427"></a> tmpf-&gt;last_U16 = </span><span class=cFE>0</span><span class=cF0>;
<a name="l428"></a>}
<a name="l429"></a>
<a name="l430"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cFD>LexInStr</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc, </span><span class=cF1>U8</span><span class=cF0> *buf, </span><span class=cF9>I64</span><span class=cF0> size, </span><span class=cF1>Bool</span><span class=cF0> *done)
<a name="l431"></a>{
<a name="l432"></a> </span><span class=cF9>I64</span><span class=cF0> i = </span><span class=cFE>0</span><span class=cF0>, j, k, ch;
<a name="l433"></a>
<a name="l434"></a> *done = </span><span class=cF3>TRUE</span><span class=cF0>;
<a name="l435"></a> </span><span class=cF1>while</span><span class=cF0> (i &lt; size - </span><span class=cFE>1</span><span class=cF0>)
<a name="l436"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l437"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l438"></a> </span><span class=cF1>if</span><span class=cF0> (!ch || ch== </span><span class=cF6>'&quot;'</span><span class=cF0>)
<a name="l439"></a> {
<a name="l440"></a> buf[i++] = </span><span class=cFE>0</span><span class=cF0>;
<a name="l441"></a> </span><span class=cF1>return</span><span class=cF0> i;
<a name="l442"></a> }
<a name="l443"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'\\'</span><span class=cF0>)
<a name="l444"></a> {
<a name="l445"></a> </span><span class=cF1>switch</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l446"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l447"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'0'</span><span class=cF0>:
<a name="l448"></a> buf[i++] = </span><span class=cFE>0</span><span class=cF0>;
<a name="l449"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l450"></a>
<a name="l451"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\''</span><span class=cF0>:
<a name="l452"></a> buf[i++] = </span><span class=cF6>'\''</span><span class=cF0>;
<a name="l453"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l454"></a>
<a name="l455"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\`'</span><span class=cF0>:
<a name="l456"></a> buf[i++] = </span><span class=cF6>'\`'</span><span class=cF0>;
<a name="l457"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l458"></a>
<a name="l459"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\\'</span><span class=cF0>:
<a name="l460"></a> buf[i++] = </span><span class=cF6>'\\'</span><span class=cF0>;
<a name="l461"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l462"></a>
<a name="l463"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'&quot;'</span><span class=cF0>:
<a name="l464"></a> buf[i++] = </span><span class=cF6>'&quot;'</span><span class=cF0>;
<a name="l465"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l466"></a>
<a name="l467"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'d'</span><span class=cF0>:
<a name="l468"></a> buf[i++] = </span><span class=cF6>'$'</span><span class=cF0>;
<a name="l469"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l470"></a>
<a name="l471"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'n'</span><span class=cF0>:
<a name="l472"></a> buf[i++] = </span><span class=cF6>'\n'</span><span class=cF0>;
<a name="l473"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l474"></a>
<a name="l475"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'r'</span><span class=cF0>:
<a name="l476"></a> buf[i++] = </span><span class=cF6>'\r'</span><span class=cF0>;
<a name="l477"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l478"></a>
<a name="l479"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'t'</span><span class=cF0>:
<a name="l480"></a> buf[i++] = </span><span class=cF6>'\t'</span><span class=cF0>;
<a name="l481"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l482"></a>
<a name="l483"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'x'</span><span class=cF0>:
<a name="l484"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'X'</span><span class=cF0>:
<a name="l485"></a> j = </span><span class=cFE>0</span><span class=cF0>;
<a name="l486"></a> </span><span class=cF1>for</span><span class=cF0> (k = </span><span class=cFE>0</span><span class=cF0>; k &lt; </span><span class=cFE>2</span><span class=cF0>; k++)
<a name="l487"></a> {
<a name="l488"></a> ch = </span><span class=cF5>ToUpper</span><span class=cF0>(</span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>);
<a name="l489"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_hex_numeric</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>)
<a name="l490"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l491"></a> </span><span class=cF1>if</span><span class=cF0> (ch &lt;= </span><span class=cF6>'9'</span><span class=cF0>)
<a name="l492"></a> j = j &lt;&lt; </span><span class=cFE>4</span><span class=cF0> + ch - </span><span class=cF6>'0'</span><span class=cF0>;
<a name="l493"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l494"></a> j = j &lt;&lt; </span><span class=cFE>4</span><span class=cF0> + ch - </span><span class=cF6>'A'</span><span class=cF0> + </span><span class=cFE>10</span><span class=cF0>;
<a name="l495"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l496"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l497"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l498"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l499"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l500"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l501"></a> }
<a name="l502"></a> buf[i++] = j;
<a name="l503"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l504"></a>
<a name="l505"></a> </span><span class=cF1>default</span><span class=cF0>:
<a name="l506"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l507"></a> buf[i++] = </span><span class=cF6>'\\'</span><span class=cF0>;
<a name="l508"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l509"></a> }
<a name="l510"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'$'</span><span class=cF0>)
<a name="l511"></a> {
<a name="l512"></a> buf[i++] = </span><span class=cF6>'$'</span><span class=cF0>;
<a name="l513"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;dollar_count)
<a name="l514"></a> cc-&gt;dollar_count--;
<a name="l515"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0> != </span><span class=cF6>'$'</span><span class=cF0>)
<a name="l516"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l517"></a> cc-&gt;dollar_count = </span><span class=cFE>1</span><span class=cF0>;
<a name="l518"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l519"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l520"></a> }
<a name="l521"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l522"></a> buf[i++] = ch;
<a name="l523"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l524"></a> *done = </span><span class=cF3>FALSE</span><span class=cF0>;
<a name="l525"></a>
<a name="l526"></a> </span><span class=cF1>return</span><span class=cF0> i;
<a name="l527"></a>}
<a name="l528"></a>
<a name="l529"></a></span><span class=cF9>I64</span><span class=cF0> </span><span class=cF5>Lex</span><span class=cF0>(</span><span class=cF9>CCompCtrl</span><span class=cF0> *cc)
<a name="l530"></a>{</span><span class=cF2>//Fetch next token.</span><span class=cF0>
<a name="l531"></a> </span><span class=cF9>I64</span><span class=cF0> i, j, k, l, ch;
<a name="l532"></a> </span><span class=cF9>CHash</span><span class=cF0> *tmph;
<a name="l533"></a> </span><span class=cF1>Bool</span><span class=cF0> str_done, in_str, neg_e;
<a name="l534"></a> </span><span class=cF1>U8</span><span class=cF0> *fbuf, *buf2, *buf3, buf[</span><span class=cF3>STR_LEN</span><span class=cF0>];
<a name="l535"></a>
<a name="l536"></a> cc-&gt;last_line_num = cc-&gt;lex_include_stack-&gt;line_num;
<a name="l537"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>)
<a name="l538"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l539"></a>lex_cont:
<a name="l540"></a> </span><span class=cF1>switch</span><span class=cF0> [ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc)]
<a name="l541"></a> {
<a name="l542"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cFE>0</span><span class=cF0>:
<a name="l543"></a> </span><span class=cF1>return</span><span class=cF0> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l544"></a>
<a name="l545"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_SUPERSCRIPT</span><span class=cF0>:
<a name="l546"></a> ch = </span><span class=cF6>'&gt;'</span><span class=cF0>;
<a name="l547"></a> </span><span class=cF1>goto</span><span class=cF0> lex_ident;
<a name="l548"></a>
<a name="l549"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_SUBSCRIPT</span><span class=cF0>:
<a name="l550"></a> ch = </span><span class=cF6>'&lt;'</span><span class=cF0>;
<a name="l551"></a> </span><span class=cF1>goto</span><span class=cF0> lex_ident;
<a name="l552"></a>
<a name="l553"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_NORMALSCRIPT</span><span class=cF0>:
<a name="l554"></a> ch = </span><span class=cF6>'='</span><span class=cF0>;
<a name="l555"></a> </span><span class=cF1>goto</span><span class=cF0> lex_ident;
<a name="l556"></a>
<a name="l557"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'@'</span><span class=cF0>:
<a name="l558"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_KEEP_AT_SIGN</span><span class=cF0>)
<a name="l559"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l560"></a> cc-&gt;token = ch;
<a name="l561"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l562"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l563"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'A'</span><span class=cF0>...</span><span class=cF6>'Z'</span><span class=cF0>:
<a name="l564"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'a'</span><span class=cF0>...</span><span class=cF6>'z'</span><span class=cF0>:
<a name="l565"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'_'</span><span class=cF0>:
<a name="l566"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cFE>128</span><span class=cF0>...</span><span class=cFE>255</span><span class=cF0>:
<a name="l567"></a>lex_ident:
<a name="l568"></a> i = </span><span class=cFE>0</span><span class=cF0>;
<a name="l569"></a> buf[i++] = ch;
<a name="l570"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
<a name="l571"></a> </span><span class=cF1>if</span><span class=cF0> (i &gt;= </span><span class=cF3>STR_LEN</span><span class=cF0>)
<a name="l572"></a> </span><span class=cF5>LexExcept</span><span class=cF0>(cc, </span><span class=cF6>&quot;Ident limited to STR_LEN chars at &quot;</span><span class=cF0>);
<a name="l573"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc)</span><span class=cF7>)</span><span class=cF0>)
<a name="l574"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l575"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>cc-&gt;</span><span class=cFB>char_bmp_alpha_numeric</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>)
<a name="l576"></a> buf[i++] = ch;
<a name="l577"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF3>TK_SUPERSCRIPT</span><span class=cF0>)
<a name="l578"></a> buf[i++] = </span><span class=cF6>'&gt;'</span><span class=cF0>;
<a name="l579"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF3>TK_SUBSCRIPT</span><span class=cF0>)
<a name="l580"></a> buf[i++] = </span><span class=cF6>'&lt;'</span><span class=cF0>;
<a name="l581"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF3>TK_NORMALSCRIPT</span><span class=cF0>)
<a name="l582"></a> buf[i++] = </span><span class=cF6>'='</span><span class=cF0>;
<a name="l583"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l584"></a> {
<a name="l585"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l586"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l587"></a> }
<a name="l588"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l589"></a> buf[i++] = </span><span class=cFE>0</span><span class=cF0>;
<a name="l590"></a> tmph = </span><span class=cF3>NULL</span><span class=cF0>;
<a name="l591"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;htc.local_var_list)
<a name="l592"></a> cc-&gt;local_var_entry = </span><span class=cF5>MemberFind</span><span class=cF0>(buf, cc-&gt;htc.local_var_list);
<a name="l593"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l594"></a> cc-&gt;local_var_entry = </span><span class=cF3>NULL</span><span class=cF0>;
<a name="l595"></a> </span><span class=cF1>if</span><span class=cF0> (!cc-&gt;local_var_entry &amp;&amp; cc-&gt;htc.hash_table_list)
<a name="l596"></a> tmph = </span><span class=cF5>HashFind</span><span class=cF0>(buf, cc-&gt;htc.hash_table_list, cc-&gt;htc.hash_mask);
<a name="l597"></a> </span><span class=cF1>if</span><span class=cF0> (tmph)
<a name="l598"></a> j = tmph-&gt;type;
<a name="l599"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l600"></a> j = </span><span class=cFE>0</span><span class=cF0>;
<a name="l601"></a> </span><span class=cF1>if</span><span class=cF0> (j &amp; </span><span class=cF3>HTT_DEFINE_STR</span><span class=cF0> &amp;&amp; !</span><span class=cF7>(</span><span class=cF0>cc-&gt;flags &amp; </span><span class=cF3>CCF_NO_DEFINES</span><span class=cF7>)</span><span class=cF0>)
<a name="l602"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l603"></a> </span><span class=cFD>LexIncludeStr</span><span class=cF0>(cc, tmph-&gt;str, </span><span class=cF5>StrNew</span><span class=cF7>(</span><span class=cF0>tmph(</span><span class=cF9>CHashDefineStr</span><span class=cF0> *)-&gt;data</span><span class=cF7>)</span><span class=cF0>, </span><span class=cF3>FALSE</span><span class=cF0>);
<a name="l604"></a> cc-&gt;lex_include_stack-&gt;flags |= </span><span class=cF3>LFSF_DEFINE</span><span class=cF0>;
<a name="l605"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l606"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l607"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l608"></a> cc-&gt;hash_entry = tmph;
<a name="l609"></a> </span><span class=cF5>Free</span><span class=cF0>(cc-&gt;cur_str);
<a name="l610"></a> cc-&gt;cur_str = </span><span class=cF5>StrNew</span><span class=cF0>(buf);
<a name="l611"></a> cc-&gt;cur_str_len = i;
<a name="l612"></a> cc-&gt;token = </span><span class=cF3>TK_IDENT</span><span class=cF0>;
<a name="l613"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l614"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l615"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l616"></a>
<a name="l617"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'0'</span><span class=cF0>...</span><span class=cF6>'9'</span><span class=cF0>:
<a name="l618"></a> i = ch - </span><span class=cF6>'0'</span><span class=cF0>;
<a name="l619"></a> ch = </span><span class=cF5>ToUpper</span><span class=cF0>(</span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>);
<a name="l620"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&amp;cc-&gt;opts, </span><span class=cF3>OPTf_DECIMAL_ONLY</span><span class=cF7>)</span><span class=cF0>)
<a name="l621"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l622"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'X'</span><span class=cF0>)
<a name="l623"></a> {
<a name="l624"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>)
<a name="l625"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l626"></a> ch = </span><span class=cF5>ToUpper</span><span class=cF0>(</span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>);
<a name="l627"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_hex_numeric</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>)
<a name="l628"></a> {
<a name="l629"></a> </span><span class=cF1>if</span><span class=cF0> (ch &lt;= </span><span class=cF6>'9'</span><span class=cF0>)
<a name="l630"></a> i = i &lt;&lt; </span><span class=cFE>4</span><span class=cF0> + ch - </span><span class=cF6>'0'</span><span class=cF0>;
<a name="l631"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l632"></a> i = i &lt;&lt; </span><span class=cFE>4</span><span class=cF0> + ch - </span><span class=cF6>'A'</span><span class=cF0> + </span><span class=cFE>10</span><span class=cF0>;
<a name="l633"></a> }
<a name="l634"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l635"></a> {
<a name="l636"></a> cc-&gt;cur_i64 = i;
<a name="l637"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l638"></a> cc-&gt;token = </span><span class=cF3>TK_I64</span><span class=cF0>;
<a name="l639"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l640"></a> }
<a name="l641"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l642"></a> }
<a name="l643"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'B'</span><span class=cF0>)
<a name="l644"></a> {
<a name="l645"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>)
<a name="l646"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l647"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l648"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'0'</span><span class=cF0>)
<a name="l649"></a> i = i &lt;&lt; </span><span class=cFE>1</span><span class=cF0>;
<a name="l650"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'1'</span><span class=cF0>)
<a name="l651"></a> i = i &lt;&lt; </span><span class=cFE>1</span><span class=cF0> + </span><span class=cFE>1</span><span class=cF0>;
<a name="l652"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l653"></a> {
<a name="l654"></a> cc-&gt;cur_i64 = i;
<a name="l655"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l656"></a> cc-&gt;token = </span><span class=cF3>TK_I64</span><span class=cF0>;
<a name="l657"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l658"></a> }
<a name="l659"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l660"></a> }
<a name="l661"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l662"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>)
<a name="l663"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l664"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_dec_numeric</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>)
<a name="l665"></a> i = i * </span><span class=cFE>10</span><span class=cF0> + ch - </span><span class=cF6>'0'</span><span class=cF0>;
<a name="l666"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l667"></a> {
<a name="l668"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'.'</span><span class=cF0> || ch == </span><span class=cF6>'e'</span><span class=cF0> || ch == </span><span class=cF6>'E'</span><span class=cF0>)
<a name="l669"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l670"></a>lex_is_int:
<a name="l671"></a> cc-&gt;cur_i64 = i;
<a name="l672"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l673"></a> cc-&gt;token = </span><span class=cF3>TK_I64</span><span class=cF0>;
<a name="l674"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l675"></a> }
<a name="l676"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l677"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l678"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'.'</span><span class=cF0>)
<a name="l679"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l680"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l681"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'.'</span><span class=cF0>) {
<a name="l682"></a> cc-&gt;flags |= </span><span class=cF3>CCF_LAST_WAS_DOT</span><span class=cF0>;
<a name="l683"></a> </span><span class=cF1>goto</span><span class=cF0> lex_is_int;
<a name="l684"></a> }
<a name="l685"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l686"></a>lex_float_start:
<a name="l687"></a> k = </span><span class=cFE>0</span><span class=cF0>;
<a name="l688"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>)
<a name="l689"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l690"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_dec_numeric</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>)
<a name="l691"></a> {
<a name="l692"></a> i = i * </span><span class=cFE>10</span><span class=cF0> + ch - </span><span class=cF6>'0'</span><span class=cF0>;
<a name="l693"></a> k++;
<a name="l694"></a> }
<a name="l695"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l696"></a> {
<a name="l697"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'e'</span><span class=cF0> || ch == </span><span class=cF6>'E'</span><span class=cF0>)
<a name="l698"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l699"></a> cc-&gt;cur_f64 = i * </span><span class=cF5>Pow10I64</span><span class=cF0>(-k);
<a name="l700"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l701"></a> cc-&gt;token = </span><span class=cF3>TK_F64</span><span class=cF0>;
<a name="l702"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l703"></a> }
<a name="l704"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l705"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l706"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l707"></a> neg_e = </span><span class=cF3>FALSE</span><span class=cF0>;
<a name="l708"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'-'</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
<a name="l709"></a> neg_e = </span><span class=cF3>TRUE</span><span class=cF0>;
<a name="l710"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l711"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l712"></a> j = </span><span class=cFE>0</span><span class=cF0>;
<a name="l713"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF3>TRUE</span><span class=cF0>)
<a name="l714"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l715"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_dec_numeric</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>)
<a name="l716"></a> j = j * </span><span class=cFE>10</span><span class=cF0> + ch - </span><span class=cF6>'0'</span><span class=cF0>;
<a name="l717"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l718"></a> {
<a name="l719"></a> </span><span class=cF1>if</span><span class=cF0> (neg_e)
<a name="l720"></a> cc-&gt;cur_f64 = i * </span><span class=cF5>Pow10I64</span><span class=cF0>(-j-k);
<a name="l721"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l722"></a> cc-&gt;cur_f64 = i * </span><span class=cF5>Pow10I64</span><span class=cF0>(j-k);
<a name="l723"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l724"></a> cc-&gt;token = </span><span class=cF3>TK_F64</span><span class=cF0>;
<a name="l725"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l726"></a> }
<a name="l727"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l728"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l729"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l730"></a>
<a name="l731"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'&quot;'</span><span class=cF0>:
<a name="l732"></a> cc-&gt;flags |= </span><span class=cF3>CCF_IN_QUOTES</span><span class=cF0>;
<a name="l733"></a> buf2 = </span><span class=cF3>NULL</span><span class=cF0>;
<a name="l734"></a> i = </span><span class=cFE>0</span><span class=cF0>;
<a name="l735"></a> </span><span class=cF1>do</span><span class=cF0>
<a name="l736"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l737"></a> j = </span><span class=cFD>LexInStr</span><span class=cF0>(cc, buf, </span><span class=cF3>STR_LEN</span><span class=cF0>, &amp;str_done);
<a name="l738"></a> buf3 = </span><span class=cF5>MAlloc</span><span class=cF0>(i + j);
<a name="l739"></a> </span><span class=cF1>if</span><span class=cF0> (buf2)
<a name="l740"></a> {
<a name="l741"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(buf3, buf2, i);
<a name="l742"></a> </span><span class=cF5>Free</span><span class=cF0>(buf2);
<a name="l743"></a> buf2 = buf3;
<a name="l744"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(buf2 + i, buf, j);
<a name="l745"></a> }
<a name="l746"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l747"></a> {
<a name="l748"></a> buf2 = buf3;
<a name="l749"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(buf2, buf, j);
<a name="l750"></a> }
<a name="l751"></a> i += j;
<a name="l752"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l753"></a> </span><span class=cF1>while</span><span class=cF0> (!str_done);
<a name="l754"></a>
<a name="l755"></a> </span><span class=cF5>Free</span><span class=cF0>(cc-&gt;cur_str);
<a name="l756"></a> cc-&gt;cur_str = </span><span class=cF5>MAlloc</span><span class=cF0>(i);
<a name="l757"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(cc-&gt;cur_str, buf2, i);
<a name="l758"></a> </span><span class=cF5>Free</span><span class=cF0>(buf2);
<a name="l759"></a> cc-&gt;cur_str_len = i;
<a name="l760"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_IN_QUOTES</span><span class=cF0>;
<a name="l761"></a> cc-&gt;token = </span><span class=cF3>TK_STR</span><span class=cF0>;
<a name="l762"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l763"></a>
<a name="l764"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\''</span><span class=cF0>:
<a name="l765"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_NO_CHAR_CONST</span><span class=cF0>)
<a name="l766"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l767"></a> k = </span><span class=cFE>0</span><span class=cF0>;
<a name="l768"></a> </span><span class=cF1>for</span><span class=cF0> (j = </span><span class=cFE>0</span><span class=cF0>; j &lt; </span><span class=cFE>8</span><span class=cF0>; j++)
<a name="l769"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l770"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc)</span><span class=cF7>)</span><span class=cF0> || ch == </span><span class=cF6>'\''</span><span class=cF0>)
<a name="l771"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l772"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'\\'</span><span class=cF0>)
<a name="l773"></a> {
<a name="l774"></a> </span><span class=cF1>switch</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l775"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l776"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'0'</span><span class=cF0>: k.u8[j] = </span><span class=cFE>0</span><span class=cF0>; </span><span class=cF1>break</span><span class=cF0>;
<a name="l777"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\''</span><span class=cF0>: k.u8[j] = </span><span class=cF6>'\''</span><span class=cF0>; </span><span class=cF1>break</span><span class=cF0>;
<a name="l778"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\`'</span><span class=cF0>: k.u8[j] = </span><span class=cF6>'\`'</span><span class=cF0>; </span><span class=cF1>break</span><span class=cF0>;
<a name="l779"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'&quot;'</span><span class=cF0>: k.u8[j] = </span><span class=cF6>'&quot;'</span><span class=cF0>; </span><span class=cF1>break</span><span class=cF0>;
<a name="l780"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\\'</span><span class=cF0>: k.u8[j] = </span><span class=cF6>'\\'</span><span class=cF0>; </span><span class=cF1>break</span><span class=cF0>;
<a name="l781"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'d'</span><span class=cF0>: k.u8[j] = </span><span class=cF6>'$'</span><span class=cF0>; </span><span class=cF1>break</span><span class=cF0>;
<a name="l782"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'n'</span><span class=cF0>: k.u8[j] = </span><span class=cF6>'\n'</span><span class=cF0>; </span><span class=cF1>break</span><span class=cF0>;
<a name="l783"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'r'</span><span class=cF0>: k.u8[j] = </span><span class=cF6>'\r'</span><span class=cF0>; </span><span class=cF1>break</span><span class=cF0>;
<a name="l784"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'t'</span><span class=cF0>: k.u8[j] = </span><span class=cF6>'\t'</span><span class=cF0>; </span><span class=cF1>break</span><span class=cF0>;
<a name="l785"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'x'</span><span class=cF0>:
<a name="l786"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'X'</span><span class=cF0>:
<a name="l787"></a> i = </span><span class=cFE>0</span><span class=cF0>;
<a name="l788"></a> </span><span class=cF1>for</span><span class=cF0> (l = </span><span class=cFE>0</span><span class=cF0>; l &lt; </span><span class=cFE>2</span><span class=cF0>; l++)
<a name="l789"></a> {
<a name="l790"></a> ch = </span><span class=cF5>ToUpper</span><span class=cF0>(</span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>);
<a name="l791"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_hex_numeric</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>)
<a name="l792"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l793"></a> </span><span class=cF1>if</span><span class=cF0> (ch &lt;= </span><span class=cF6>'9'</span><span class=cF0>)
<a name="l794"></a> i = i &lt;&lt; </span><span class=cFE>4</span><span class=cF0> + ch - </span><span class=cF6>'0'</span><span class=cF0>;
<a name="l795"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l796"></a> i = i &lt;&lt; </span><span class=cFE>4</span><span class=cF0> + ch - </span><span class=cF6>'A'</span><span class=cF0> + </span><span class=cFE>10</span><span class=cF0>;
<a name="l797"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l798"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l799"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l800"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l801"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l802"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l803"></a> }
<a name="l804"></a> k.u8[j] = i;
<a name="l805"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l806"></a>
<a name="l807"></a> </span><span class=cF1>default</span><span class=cF0>:
<a name="l808"></a> k.u8[j] = </span><span class=cF6>'\\'</span><span class=cF0>;
<a name="l809"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l810"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l811"></a> }
<a name="l812"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'$'</span><span class=cF0>)
<a name="l813"></a> {
<a name="l814"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l815"></a> k.u8[j] = </span><span class=cF6>'$'</span><span class=cF0>;
<a name="l816"></a> </span><span class=cF1>if</span><span class=cF0> (ch != </span><span class=cF6>'$'</span><span class=cF0>)
<a name="l817"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l818"></a> }
<a name="l819"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l820"></a> k.u8[j] = ch;
<a name="l821"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l822"></a> </span><span class=cF1>if</span><span class=cF0> (ch != </span><span class=cF6>'\''</span><span class=cF0> &amp;&amp; </span><span class=cF7>(</span><span class=cF0>ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc)</span><span class=cF7>)</span><span class=cF0> &amp;&amp; ch != </span><span class=cF6>'\''</span><span class=cF0>)
<a name="l823"></a> </span><span class=cF5>LexExcept</span><span class=cF0>(cc, </span><span class=cF6>&quot;Char const limited to 8 chars at &quot;</span><span class=cF0>);
<a name="l824"></a> cc-&gt;cur_i64 = k;
<a name="l825"></a> cc-&gt;token = </span><span class=cF3>TK_CHAR_CONST</span><span class=cF0>;
<a name="l826"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l827"></a>
<a name="l828"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'#'</span><span class=cF0>:
<a name="l829"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_KEEP_SIGN_NUM</span><span class=cF0>)
<a name="l830"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l831"></a> cc-&gt;token = ch;
<a name="l832"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l833"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l834"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0> != </span><span class=cF3>TK_IDENT</span><span class=cF0>) </span><span class=cF2>//skip '#'</span><span class=cF0>
<a name="l835"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l836"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmph = cc-&gt;hash_entry</span><span class=cF7>)</span><span class=cF0>)
<a name="l837"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l838"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>tmph-&gt;type &amp; </span><span class=cF3>HTT_KEYWORD</span><span class=cF7>)</span><span class=cF0>)
<a name="l839"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l840"></a> </span><span class=cF1>switch</span><span class=cF0> (i = tmph</span><span class=cF7>(</span><span class=cF9>CHashGeneric</span><span class=cF0> *</span><span class=cF7>)</span><span class=cF0>-&gt;user_data0)
<a name="l841"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l842"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_INCLUDE</span><span class=cF0>:
<a name="l843"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0> != </span><span class=cF3>TK_STR</span><span class=cF0>)
<a name="l844"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l845"></a> fbuf = </span><span class=cF5>ExtDefault</span><span class=cF0>(cc-&gt;cur_str, </span><span class=cF6>&quot;CC&quot;</span><span class=cF0>);
<a name="l846"></a> buf2 = </span><span class=cF5>FileNameAbs</span><span class=cF0>(fbuf);
<a name="l847"></a> </span><span class=cF5>Free</span><span class=cF0>(fbuf);
<a name="l848"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cF0>&amp;</span><span class=cFB>sys_run_level</span><span class=cF0>, </span><span class=cF3>RLf_DOC</span><span class=cF7>)</span><span class=cF0>)
<a name="l849"></a> </span><span class=cF5>LexAttachDoc</span><span class=cF0>(cc,,, buf2);
<a name="l850"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l851"></a> </span><span class=cFD>LexIncludeStr</span><span class=cF0>(cc, buf2, </span><span class=cF5>FileRead</span><span class=cF7>(</span><span class=cF0>buf2</span><span class=cF7>)</span><span class=cF0>, </span><span class=cF3>TRUE</span><span class=cF0>);
<a name="l852"></a> </span><span class=cF5>Free</span><span class=cF0>(buf2);
<a name="l853"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l854"></a>
<a name="l855"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_DEFINE</span><span class=cF0>:
<a name="l856"></a> cc-&gt;flags |= </span><span class=cF3>CCF_NO_DEFINES</span><span class=cF0>;
<a name="l857"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0> == </span><span class=cF3>TK_IDENT</span><span class=cF0>)
<a name="l858"></a> {
<a name="l859"></a> tmph = </span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CHashDefineStr</span><span class=cF7>)</span><span class=cF0>);
<a name="l860"></a> tmph-&gt;str = cc-&gt;cur_str;
<a name="l861"></a> cc-&gt;cur_str = </span><span class=cFE>0</span><span class=cF0>;
<a name="l862"></a> tmph-&gt;type = </span><span class=cF3>HTT_DEFINE_STR</span><span class=cF0>;
<a name="l863"></a> </span><span class=cF5>HashSrcFileSet</span><span class=cF0>(cc,tmph);
<a name="l864"></a>
<a name="l865"></a> </span><span class=cF1>do</span><span class=cF0> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc); </span><span class=cF2>//skip space between define name and start</span><span class=cF0>
<a name="l866"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_non_eol_white_space</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>);
<a name="l867"></a>
<a name="l868"></a> i = j = </span><span class=cFE>0</span><span class=cF0>;
<a name="l869"></a> buf2 = </span><span class=cF3>NULL</span><span class=cF0>;
<a name="l870"></a> </span><span class=cF1>if</span><span class=cF0> (ch)
<a name="l871"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l872"></a> in_str = </span><span class=cF3>FALSE</span><span class=cF0>;
<a name="l873"></a> </span><span class=cF1>do</span><span class=cF0>
<a name="l874"></a> {
<a name="l875"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'\\'</span><span class=cF0>)
<a name="l876"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l877"></a> </span><span class=cF1>if</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l878"></a> {
<a name="l879"></a> </span><span class=cF1>if</span><span class=cF0> (ch != </span><span class=cF6>'\r'</span><span class=cF0> &amp;&amp; ch != </span><span class=cF6>'\n'</span><span class=cF0>)
<a name="l880"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l881"></a> buf[j++] = </span><span class=cF6>'\\'</span><span class=cF0>;
<a name="l882"></a> buf[j++] = ch;
<a name="l883"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l884"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'\r'</span><span class=cF0> &amp;&amp; </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0> != </span><span class=cF6>'\n'</span><span class=cF0>)
<a name="l885"></a> cc-&gt;flags|=</span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l886"></a> }
<a name="l887"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l888"></a> {
<a name="l889"></a> buf[j++] = </span><span class=cF6>'\\'</span><span class=cF0>;
<a name="l890"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l891"></a> }
<a name="l892"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l893"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch != </span><span class=cF6>'\n'</span><span class=cF0>)
<a name="l894"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l895"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'\&quot;'</span><span class=cF0>)
<a name="l896"></a> in_str = !in_str;
<a name="l897"></a> buf[j++] = ch;
<a name="l898"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l899"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l900"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l901"></a> </span><span class=cF1>while</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l902"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l903"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'/'</span><span class=cF0>) {
<a name="l904"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l905"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'/'</span><span class=cF0> &amp;&amp; !in_str)
<a name="l906"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l907"></a> </span><span class=cF1>do</span><span class=cF0> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l908"></a> </span><span class=cF1>while</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_non_eol</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>);
<a name="l909"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l910"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l911"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l912"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l913"></a> buf[j++] = </span><span class=cF6>'/'</span><span class=cF0>;
<a name="l914"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l915"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l916"></a> }
<a name="l917"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'\\'</span><span class=cF0>)
<a name="l918"></a> {
<a name="l919"></a> </span><span class=cF1>if</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l920"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l921"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'\&quot;'</span><span class=cF0>)
<a name="l922"></a> {
<a name="l923"></a> buf[j++] = </span><span class=cF6>'\\'</span><span class=cF0>;
<a name="l924"></a> buf[j++] = ch;
<a name="l925"></a> }
<a name="l926"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l927"></a> {
<a name="l928"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l929"></a> ch = </span><span class=cF6>'\\'</span><span class=cF0>;
<a name="l930"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l931"></a> }
<a name="l932"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l933"></a> }
<a name="l934"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Bt</span><span class=cF7>(</span><span class=cFB>char_bmp_non_eol</span><span class=cF0>, ch</span><span class=cF7>)</span><span class=cF0>)
<a name="l935"></a> {
<a name="l936"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'\&quot;'</span><span class=cF0>)
<a name="l937"></a> in_str = !in_str;
<a name="l938"></a> buf[j++] = ch;
<a name="l939"></a> }
<a name="l940"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l941"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l942"></a> </span><span class=cF1>if</span><span class=cF0> (j &gt;= </span><span class=cF3>STR_LEN</span><span class=cF0> - </span><span class=cFE>4</span><span class=cF0>)
<a name="l943"></a> {</span><span class=cF2>//Spot for ['\'][ch],[ch],[0]</span><span class=cF0>
<a name="l944"></a> buf[j++] = </span><span class=cFE>0</span><span class=cF0>;
<a name="l945"></a> buf3 = </span><span class=cF5>MAlloc</span><span class=cF0>(i+j);
<a name="l946"></a> </span><span class=cF1>if</span><span class=cF0> (buf2)
<a name="l947"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l948"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(buf3, buf2, i);
<a name="l949"></a> </span><span class=cF5>Free</span><span class=cF0>(buf2);
<a name="l950"></a> buf2 = buf3;
<a name="l951"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(buf2 + i, buf, j);
<a name="l952"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l953"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l954"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l955"></a> buf2 = buf3;
<a name="l956"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(buf2, buf, j);
<a name="l957"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l958"></a> i += j - </span><span class=cFE>1</span><span class=cF0>;
<a name="l959"></a> j = </span><span class=cFE>0</span><span class=cF0>;
<a name="l960"></a> }
<a name="l961"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l962"></a> }
<a name="l963"></a> </span><span class=cF1>while</span><span class=cF0> (ch == </span><span class=cF6>'\\'</span><span class=cF0>);
<a name="l964"></a>
<a name="l965"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l966"></a> buf[j++] = </span><span class=cFE>0</span><span class=cF0>;
<a name="l967"></a> buf3 = </span><span class=cF5>MAlloc</span><span class=cF0>(i + j);
<a name="l968"></a> </span><span class=cF1>if</span><span class=cF0> (buf2)
<a name="l969"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l970"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(buf3, buf2, i);
<a name="l971"></a> </span><span class=cF5>Free</span><span class=cF0>(buf2);
<a name="l972"></a> buf2 = buf3;
<a name="l973"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(buf2 + i, buf, j);
<a name="l974"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l975"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l976"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l977"></a> buf2 = buf3;
<a name="l978"></a> </span><span class=cF5>MemCopy</span><span class=cF0>(buf2, buf, j);
<a name="l979"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l980"></a> tmph(</span><span class=cF9>CHashDefineStr</span><span class=cF0> *)-&gt;data = buf2;
<a name="l981"></a> tmph(</span><span class=cF9>CHashDefineStr</span><span class=cF0> *)-&gt;count = -</span><span class=cFE>1</span><span class=cF0>;
<a name="l982"></a> </span><span class=cF5>HashAdd</span><span class=cF0>(tmph,cc-&gt;htc.define_hash_table);
<a name="l983"></a> }
<a name="l984"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_NO_DEFINES</span><span class=cF0>;
<a name="l985"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l986"></a>
<a name="l987"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_ELSE</span><span class=cF0>:
<a name="l988"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_IN_IF</span><span class=cF0>)
<a name="l989"></a> {
<a name="l990"></a> cc-&gt;token = </span><span class=cF3>TK_ELSE</span><span class=cF0>;
<a name="l991"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l992"></a> }
<a name="l993"></a>lex_else:
<a name="l994"></a> j = </span><span class=cFE>1</span><span class=cF0>;
<a name="l995"></a> </span><span class=cF1>do</span><span class=cF0>
<a name="l996"></a> {
<a name="l997"></a> </span><span class=cF1>if</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l998"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l999"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'#'</span><span class=cF0>)
<a name="l1000"></a> {
<a name="l1001"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1002"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1003"></a> i = </span><span class=cF5>ParseKeyWord</span><span class=cF0>(cc);
<a name="l1004"></a> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_IF</span><span class=cF0> || i == </span><span class=cF3>KW_IFDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFNDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFAOT</span><span class=cF0> || i == </span><span class=cF3>KW_IFJIT</span><span class=cF0>)
<a name="l1005"></a> j++;
<a name="l1006"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ENDIF</span><span class=cF0>)
<a name="l1007"></a> j--;
<a name="l1008"></a> }
<a name="l1009"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1010"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1011"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1012"></a> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1013"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1014"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1015"></a> }
<a name="l1016"></a> </span><span class=cF1>while</span><span class=cF0> (j);
<a name="l1017"></a>
<a name="l1018"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1019"></a>
<a name="l1020"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_IF</span><span class=cF0>:
<a name="l1021"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_IN_IF</span><span class=cF0>)
<a name="l1022"></a> {
<a name="l1023"></a> cc-&gt;token = </span><span class=cF3>TK_IF</span><span class=cF0>;
<a name="l1024"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1025"></a> }
<a name="l1026"></a>lex_if:
<a name="l1027"></a> cc-&gt;flags |= </span><span class=cF3>CCF_IN_IF</span><span class=cF0>;
<a name="l1028"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1029"></a> {
<a name="l1030"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_IN_IF</span><span class=cF0>;
<a name="l1031"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1032"></a> }
<a name="l1033"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LexExpression</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1034"></a> {
<a name="l1035"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_IN_IF</span><span class=cF0>;
<a name="l1036"></a> </span><span class=cF1>switch</span><span class=cF0> (cc-&gt;token)
<a name="l1037"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1038"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_IF</span><span class=cF0>: </span><span class=cF1>goto</span><span class=cF0> lex_if;
<a name="l1039"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_IFDEF</span><span class=cF0>: </span><span class=cF1>goto</span><span class=cF0> lex_ifdef;
<a name="l1040"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_IFNDEF</span><span class=cF0>: </span><span class=cF1>goto</span><span class=cF0> lex_ifndef;
<a name="l1041"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_IFAOT</span><span class=cF0>: </span><span class=cF1>goto</span><span class=cF0> lex_ifaot;
<a name="l1042"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_IFJIT</span><span class=cF0>: </span><span class=cF1>goto</span><span class=cF0> lex_ifjit;
<a name="l1043"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_ELSE</span><span class=cF0>: </span><span class=cF1>goto</span><span class=cF0> lex_else;
<a name="l1044"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_ENDIF</span><span class=cF0>: </span><span class=cF1>goto</span><span class=cF0> lex_cont;
<a name="l1045"></a> </span><span class=cF1>default</span><span class=cF0>: </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1046"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1047"></a> }
<a name="l1048"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1049"></a> {
<a name="l1050"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_IN_IF</span><span class=cF0>;
<a name="l1051"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;token != </span><span class=cF3>TK_ENDIF</span><span class=cF0> &amp;&amp; cc-&gt;token != </span><span class=cF3>TK_ELSE</span><span class=cF0>)
<a name="l1052"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1053"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;token == </span><span class=cF3>TK_IF</span><span class=cF0> || cc-&gt;token == </span><span class=cF3>TK_IFDEF</span><span class=cF0> ||
<a name="l1054"></a> cc-&gt;token == </span><span class=cF3>TK_IFNDEF</span><span class=cF0> || cc-&gt;token == </span><span class=cF3>TK_IFAOT</span><span class=cF0> ||
<a name="l1055"></a> cc-&gt;token == </span><span class=cF3>TK_IFJIT</span><span class=cF0>)
<a name="l1056"></a> j = </span><span class=cFE>2</span><span class=cF0>;
<a name="l1057"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1058"></a> j = </span><span class=cFE>1</span><span class=cF0>;
<a name="l1059"></a> </span><span class=cF1>do</span><span class=cF0>
<a name="l1060"></a> {
<a name="l1061"></a> </span><span class=cF1>if</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1062"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1063"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'#'</span><span class=cF0>)
<a name="l1064"></a> {
<a name="l1065"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1066"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1067"></a> i = </span><span class=cF5>ParseKeyWord</span><span class=cF0>(cc);
<a name="l1068"></a> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_IF</span><span class=cF0> || i == </span><span class=cF3>KW_IFDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFNDEF</span><span class=cF0> ||
<a name="l1069"></a> i == </span><span class=cF3>KW_IFAOT</span><span class=cF0> || i == </span><span class=cF3>KW_IFJIT</span><span class=cF0>)
<a name="l1070"></a> j++;
<a name="l1071"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ENDIF</span><span class=cF0>)
<a name="l1072"></a> j--;
<a name="l1073"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ELSE</span><span class=cF0> &amp;&amp; j == </span><span class=cFE>1</span><span class=cF0>)
<a name="l1074"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1075"></a> }
<a name="l1076"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1077"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1078"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1079"></a> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1080"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1081"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1082"></a> }
<a name="l1083"></a> </span><span class=cF1>while</span><span class=cF0> (j);
<a name="l1084"></a>
<a name="l1085"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1086"></a> }
<a name="l1087"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1088"></a>
<a name="l1089"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_IFDEF</span><span class=cF0>:
<a name="l1090"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_IN_IF</span><span class=cF0>)
<a name="l1091"></a> {
<a name="l1092"></a> cc-&gt;token = </span><span class=cF3>TK_IFDEF</span><span class=cF0>;
<a name="l1093"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1094"></a> }
<a name="l1095"></a>lex_ifdef:
<a name="l1096"></a> cc-&gt;flags |= </span><span class=cF3>CCF_NO_DEFINES</span><span class=cF0>;
<a name="l1097"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1098"></a> {
<a name="l1099"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_NO_DEFINES</span><span class=cF0>;
<a name="l1100"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1101"></a> }
<a name="l1102"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_NO_DEFINES</span><span class=cF0>;
<a name="l1103"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;token != </span><span class=cF3>TK_IDENT</span><span class=cF0>)
<a name="l1104"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1105"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;hash_entry)
<a name="l1106"></a> </span><span class=cF1>goto</span><span class=cF0> lex_cont;
<a name="l1107"></a> j = </span><span class=cFE>1</span><span class=cF0>;
<a name="l1108"></a> </span><span class=cF1>do</span><span class=cF0>
<a name="l1109"></a> {
<a name="l1110"></a> </span><span class=cF1>if</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1111"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1112"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'#'</span><span class=cF0>)
<a name="l1113"></a> {
<a name="l1114"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1115"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1116"></a> i = </span><span class=cF5>ParseKeyWord</span><span class=cF0>(cc);
<a name="l1117"></a> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_IF</span><span class=cF0> || i == </span><span class=cF3>KW_IFDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFNDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFAOT</span><span class=cF0> || i == </span><span class=cF3>KW_IFJIT</span><span class=cF0>)
<a name="l1118"></a> j++;
<a name="l1119"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ENDIF</span><span class=cF0>)
<a name="l1120"></a> j--;
<a name="l1121"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ELSE</span><span class=cF0> &amp;&amp; j == </span><span class=cFE>1</span><span class=cF0>)
<a name="l1122"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1123"></a> }
<a name="l1124"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1125"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1126"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1127"></a> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1128"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1129"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1130"></a> }
<a name="l1131"></a> </span><span class=cF1>while</span><span class=cF0> (j);
<a name="l1132"></a>
<a name="l1133"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1134"></a>
<a name="l1135"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_IFNDEF</span><span class=cF0>:
<a name="l1136"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_IN_IF</span><span class=cF0>)
<a name="l1137"></a> {
<a name="l1138"></a> cc-&gt;token = </span><span class=cF3>TK_IFNDEF</span><span class=cF0>;
<a name="l1139"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1140"></a> }
<a name="l1141"></a>lex_ifndef:
<a name="l1142"></a> cc-&gt;flags |= </span><span class=cF3>CCF_NO_DEFINES</span><span class=cF0>;
<a name="l1143"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1144"></a> {
<a name="l1145"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_NO_DEFINES</span><span class=cF0>;
<a name="l1146"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1147"></a> }
<a name="l1148"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_NO_DEFINES</span><span class=cF0>;
<a name="l1149"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;token != </span><span class=cF3>TK_IDENT</span><span class=cF0>)
<a name="l1150"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1151"></a> </span><span class=cF1>if</span><span class=cF0> (!cc-&gt;hash_entry)
<a name="l1152"></a> </span><span class=cF1>goto</span><span class=cF0> lex_cont;
<a name="l1153"></a> j = </span><span class=cFE>1</span><span class=cF0>;
<a name="l1154"></a> </span><span class=cF1>do</span><span class=cF0>
<a name="l1155"></a> {
<a name="l1156"></a> </span><span class=cF1>if</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1157"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1158"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'#'</span><span class=cF0>)
<a name="l1159"></a> {
<a name="l1160"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1161"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1162"></a> i = </span><span class=cF5>ParseKeyWord</span><span class=cF0>(cc);
<a name="l1163"></a> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_IF</span><span class=cF0> || i == </span><span class=cF3>KW_IFDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFNDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFAOT</span><span class=cF0> || i == </span><span class=cF3>KW_IFJIT</span><span class=cF0>)
<a name="l1164"></a> j++;
<a name="l1165"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ENDIF</span><span class=cF0>)
<a name="l1166"></a> j--;
<a name="l1167"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ELSE</span><span class=cF0> &amp;&amp; j == </span><span class=cFE>1</span><span class=cF0>)
<a name="l1168"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1169"></a> }
<a name="l1170"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1171"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1172"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1173"></a> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1174"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1175"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1176"></a> }
<a name="l1177"></a> </span><span class=cF1>while</span><span class=cF0> (j);
<a name="l1178"></a>
<a name="l1179"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1180"></a>
<a name="l1181"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_IFAOT</span><span class=cF0>:
<a name="l1182"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_IN_IF</span><span class=cF0>)
<a name="l1183"></a> {
<a name="l1184"></a> cc-&gt;token = </span><span class=cF3>TK_IFAOT</span><span class=cF0>;
<a name="l1185"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1186"></a> }
<a name="l1187"></a>lex_ifaot:
<a name="l1188"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_AOT_COMPILE</span><span class=cF0>)
<a name="l1189"></a> </span><span class=cF1>goto</span><span class=cF0> lex_cont;
<a name="l1190"></a> j = </span><span class=cFE>1</span><span class=cF0>;
<a name="l1191"></a> </span><span class=cF1>do</span><span class=cF0>
<a name="l1192"></a> {
<a name="l1193"></a> </span><span class=cF1>if</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1194"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1195"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'#'</span><span class=cF0>)
<a name="l1196"></a> {
<a name="l1197"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1198"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1199"></a> i = </span><span class=cF5>ParseKeyWord</span><span class=cF0>(cc);
<a name="l1200"></a> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_IF</span><span class=cF0> || i == </span><span class=cF3>KW_IFDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFNDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFAOT</span><span class=cF0> || i == </span><span class=cF3>KW_IFJIT</span><span class=cF0>)
<a name="l1201"></a> j++;
<a name="l1202"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ENDIF</span><span class=cF0>)
<a name="l1203"></a> j--;
<a name="l1204"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ELSE</span><span class=cF0> &amp;&amp; j == </span><span class=cFE>1</span><span class=cF0>)
<a name="l1205"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1206"></a> }
<a name="l1207"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1208"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1209"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1210"></a> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1211"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1212"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1213"></a> }
<a name="l1214"></a> </span><span class=cF1>while</span><span class=cF0> (j);
<a name="l1215"></a>
<a name="l1216"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1217"></a>
<a name="l1218"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_IFJIT</span><span class=cF0>:
<a name="l1219"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_IN_IF</span><span class=cF0>)
<a name="l1220"></a> {
<a name="l1221"></a> cc-&gt;token = </span><span class=cF3>TK_IFAOT</span><span class=cF0>;
<a name="l1222"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1223"></a> }
<a name="l1224"></a>lex_ifjit:
<a name="l1225"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>cc-&gt;flags &amp; </span><span class=cF3>CCF_AOT_COMPILE</span><span class=cF7>)</span><span class=cF0>)
<a name="l1226"></a> </span><span class=cF1>goto</span><span class=cF0> lex_cont;
<a name="l1227"></a> j = </span><span class=cFE>1</span><span class=cF0>;
<a name="l1228"></a> </span><span class=cF1>do</span><span class=cF0>
<a name="l1229"></a> {
<a name="l1230"></a> </span><span class=cF1>if</span><span class=cF0> (ch = </span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1231"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1232"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'#'</span><span class=cF0>)
<a name="l1233"></a> {
<a name="l1234"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1235"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1236"></a> i = </span><span class=cF5>ParseKeyWord</span><span class=cF0>(cc);
<a name="l1237"></a> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_IF</span><span class=cF0> || i == </span><span class=cF3>KW_IFDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFNDEF</span><span class=cF0> || i == </span><span class=cF3>KW_IFAOT</span><span class=cF0> || i == </span><span class=cF3>KW_IFJIT</span><span class=cF0>)
<a name="l1238"></a> j++;
<a name="l1239"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ENDIF</span><span class=cF0>)
<a name="l1240"></a> j--;
<a name="l1241"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>KW_ELSE</span><span class=cF0> &amp;&amp; j == </span><span class=cFE>1</span><span class=cF0>)
<a name="l1242"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1243"></a> }
<a name="l1244"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1245"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1246"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1247"></a> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1248"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1249"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1250"></a> }
<a name="l1251"></a> </span><span class=cF1>while</span><span class=cF0> (j);
<a name="l1252"></a>
<a name="l1253"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1254"></a>
<a name="l1255"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_ENDIF</span><span class=cF0>:
<a name="l1256"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_IN_IF</span><span class=cF0>)
<a name="l1257"></a> {
<a name="l1258"></a> cc-&gt;token = </span><span class=cF3>TK_ENDIF</span><span class=cF0>;
<a name="l1259"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1260"></a> }
<a name="l1261"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1262"></a>
<a name="l1263"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_ASSERT</span><span class=cF0>:
<a name="l1264"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1265"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1266"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>LexExpression</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1267"></a> {
<a name="l1268"></a> </span><span class=cF5>PrintWarn</span><span class=cF0>(</span><span class=cF6>&quot;Assert Failed at &quot;</span><span class=cF0>);
<a name="l1269"></a> </span><span class=cF5>PutFileLink</span><span class=cF0>(cc-&gt;lex_include_stack-&gt;full_name,, cc-&gt;lex_include_stack-&gt;line_num);
<a name="l1270"></a> </span><span class=cF6>'\n'</span><span class=cF0>;
<a name="l1271"></a> }
<a name="l1272"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1273"></a>
<a name="l1274"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_EXE</span><span class=cF0>:
<a name="l1275"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0>)
<a name="l1276"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1277"></a> </span><span class=cFD>ParseStreamBlk</span><span class=cF0>(cc);
<a name="l1278"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1279"></a>
<a name="l1280"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_HELP_INDEX</span><span class=cF0>:
<a name="l1281"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0> != </span><span class=cF3>TK_STR</span><span class=cF0>)
<a name="l1282"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1283"></a> </span><span class=cF5>Free</span><span class=cF0>(cc-&gt;cur_help_idx);
<a name="l1284"></a> cc-&gt;cur_help_idx = </span><span class=cF5>LexExtStr</span><span class=cF0>(cc,, </span><span class=cF3>FALSE</span><span class=cF0>);
<a name="l1285"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1286"></a>
<a name="l1287"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>KW_HELP_FILE</span><span class=cF0>:
<a name="l1288"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>Lex</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0> != </span><span class=cF3>TK_STR</span><span class=cF0>)
<a name="l1289"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1290"></a> tmph = </span><span class=cF5>CAlloc</span><span class=cF0>(</span><span class=cF1>sizeof</span><span class=cF7>(</span><span class=cF9>CHashSrcSym</span><span class=cF7>)</span><span class=cF0>);
<a name="l1291"></a> fbuf = </span><span class=cF5>ExtDefault</span><span class=cF0>(cc-&gt;cur_str, </span><span class=cF6>&quot;DD&quot;</span><span class=cF0>);
<a name="l1292"></a> tmph-&gt;str = </span><span class=cF5>FileNameAbs</span><span class=cF0>(fbuf);
<a name="l1293"></a> </span><span class=cF5>Free</span><span class=cF0>(fbuf);
<a name="l1294"></a> tmph-&gt;type = </span><span class=cF3>HTT_HELP_FILE</span><span class=cF0> | </span><span class=cF3>HTF_PUBLIC</span><span class=cF0>;
<a name="l1295"></a> </span><span class=cF5>HashSrcFileSet</span><span class=cF0>(cc, tmph);
<a name="l1296"></a> </span><span class=cF5>HashAdd</span><span class=cF0>(tmph, cc-&gt;htc.global_hash_table);
<a name="l1297"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1298"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1299"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1300"></a>
<a name="l1301"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'\n'</span><span class=cF0>:
<a name="l1302"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>cc-&gt;flags &amp; </span><span class=cF3>CCF_KEEP_NEW_LINES</span><span class=cF7>)</span><span class=cF0>)
<a name="l1303"></a> </span><span class=cF1>break</span><span class=cF0>; </span><span class=cF2>//else fall through</span><span class=cF0>
<a name="l1304"></a>
<a name="l1305"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_INS_BIN</span><span class=cF0>:
<a name="l1306"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_INS_BIN_SIZE</span><span class=cF0>:
<a name="l1307"></a> cc-&gt;token = ch;
<a name="l1308"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1309"></a>
<a name="l1310"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'.'</span><span class=cF0>:
<a name="l1311"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_KEEP_DOT</span><span class=cF0>)
<a name="l1312"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1313"></a> cc-&gt;token = ch;
<a name="l1314"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1315"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1316"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_LAST_WAS_DOT</span><span class=cF0>)
<a name="l1317"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1318"></a> cc-&gt;flags &amp;= ~</span><span class=cF3>CCF_LAST_WAS_DOT</span><span class=cF0>;
<a name="l1319"></a> </span><span class=cF1>goto</span><span class=cF0> lex_dot_dot;
<a name="l1320"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1321"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l1322"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF6>'0'</span><span class=cF0> &lt;= ch &lt;= </span><span class=cF6>'9'</span><span class=cF0>)
<a name="l1323"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1324"></a> i = </span><span class=cFE>0</span><span class=cF0>;
<a name="l1325"></a> </span><span class=cF1>goto</span><span class=cF0> lex_float_start;
<a name="l1326"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1327"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'.'</span><span class=cF0>)
<a name="l1328"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1329"></a>lex_dot_dot:
<a name="l1330"></a> cc-&gt;token = </span><span class=cF3>TK_DOT_DOT</span><span class=cF0>;
<a name="l1331"></a> </span><span class=cF1>if</span><span class=cF0> (</span><span class=cF5>LexCharGet</span><span class=cF7>(</span><span class=cF0>cc</span><span class=cF7>)</span><span class=cF0> == </span><span class=cF6>'.'</span><span class=cF0>)
<a name="l1332"></a> cc-&gt;token = </span><span class=cF3>TK_ELLIPSIS</span><span class=cF0>;
<a name="l1333"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1334"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l1335"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1336"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1337"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l1338"></a> cc-&gt;token = </span><span class=cF6>'.'</span><span class=cF0>;
<a name="l1339"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1340"></a>
<a name="l1341"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'!'</span><span class=cF0>:
<a name="l1342"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'$'</span><span class=cF0>...</span><span class=cF6>'&amp;'</span><span class=cF0>:
<a name="l1343"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'('</span><span class=cF0>...</span><span class=cF6>'-'</span><span class=cF0>:
<a name="l1344"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'/'</span><span class=cF0>:
<a name="l1345"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>':'</span><span class=cF0>...</span><span class=cF6>'?'</span><span class=cF0>:
<a name="l1346"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'['</span><span class=cF0>:
<a name="l1347"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>']'</span><span class=cF0>...</span><span class=cF6>'^'</span><span class=cF0>:
<a name="l1348"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'{'</span><span class=cF0>...</span><span class=cF6>'~'</span><span class=cF0>:
<a name="l1349"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF6>'`'</span><span class=cF0>:
<a name="l1350"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>i = </span><span class=cFB>cmp</span><span class=cF0>.dual_U16_tokens1[ch]</span><span class=cF7>)</span><span class=cF0>)
<a name="l1351"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1352"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'$'</span><span class=cF0>)
<a name="l1353"></a> {
<a name="l1354"></a> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l1355"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'$'</span><span class=cF0>) </span><span class=cF7>{</span><span class=cF0>
<a name="l1356"></a> cc-&gt;token = </span><span class=cF6>'$'</span><span class=cF0>;
<a name="l1357"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1358"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1359"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch)
<a name="l1360"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1361"></a> </span><span class=cF1>do</span><span class=cF0> ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l1362"></a> </span><span class=cF1>while</span><span class=cF0> (ch &amp;&amp; ch != </span><span class=cF6>'$'</span><span class=cF0>);
<a name="l1363"></a> </span><span class=cF1>if</span><span class=cF0> (!ch)
<a name="l1364"></a> {
<a name="l1365"></a> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1366"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1367"></a> }
<a name="l1368"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1369"></a> </span><span class=cF1>goto</span><span class=cF0> lex_cont;
<a name="l1370"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1371"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1372"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1373"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l1374"></a> cc-&gt;token = </span><span class=cF6>'$'</span><span class=cF0>;
<a name="l1375"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1376"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1377"></a> }
<a name="l1378"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1379"></a> {
<a name="l1380"></a> cc-&gt;token = ch;
<a name="l1381"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1382"></a> }
<a name="l1383"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1384"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1385"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1386"></a> j = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l1387"></a> </span><span class=cF1>if</span><span class=cF0> (i.u16[</span><span class=cFE>0</span><span class=cF0>] == j)
<a name="l1388"></a> {
<a name="l1389"></a> i &gt;&gt;= </span><span class=cFE>16</span><span class=cF0>;
<a name="l1390"></a> </span><span class=cF1>if</span><span class=cF0> (!i)
<a name="l1391"></a> </span><span class=cF7>{</span><span class=cF2>// &quot;/*&quot;</span><span class=cF0>
<a name="l1392"></a> j = </span><span class=cFE>1</span><span class=cF0>;
<a name="l1393"></a> </span><span class=cF1>do</span><span class=cF0>
<a name="l1394"></a> {
<a name="l1395"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc)</span><span class=cF7>)</span><span class=cF0>)
<a name="l1396"></a> </span><span class=cF1>return</span><span class=cF0> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1397"></a>lex_check_comment:
<a name="l1398"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'*'</span><span class=cF0>)
<a name="l1399"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1400"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc)</span><span class=cF7>)</span><span class=cF0>)
<a name="l1401"></a> </span><span class=cF1>return</span><span class=cF0> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1402"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'/'</span><span class=cF0>)
<a name="l1403"></a> j--;
<a name="l1404"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1405"></a> </span><span class=cF1>goto</span><span class=cF0> lex_check_comment;
<a name="l1406"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1407"></a> </span><span class=cF1>else</span><span class=cF0> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'/'</span><span class=cF0>)
<a name="l1408"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1409"></a> </span><span class=cF1>if</span><span class=cF0> (!</span><span class=cF7>(</span><span class=cF0>ch = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc)</span><span class=cF7>)</span><span class=cF0>)
<a name="l1410"></a> </span><span class=cF1>return</span><span class=cF0> cc-&gt;token = </span><span class=cF3>TK_EOF</span><span class=cF0>;
<a name="l1411"></a> </span><span class=cF1>if</span><span class=cF0> (ch == </span><span class=cF6>'*'</span><span class=cF0>)
<a name="l1412"></a> j++;
<a name="l1413"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1414"></a> </span><span class=cF1>goto</span><span class=cF0> lex_check_comment;
<a name="l1415"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1416"></a> }
<a name="l1417"></a> </span><span class=cF1>while</span><span class=cF0> (j);
<a name="l1418"></a>
<a name="l1419"></a> </span><span class=cF1>goto</span><span class=cF0> lex_cont;
<a name="l1420"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1421"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1422"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1423"></a> cc-&gt;token = i;
<a name="l1424"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1425"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1426"></a> }
<a name="l1427"></a> </span><span class=cF1>if</span><span class=cF0> (i = </span><span class=cFB>cmp</span><span class=cF0>.dual_U16_tokens2[ch])
<a name="l1428"></a> {
<a name="l1429"></a> </span><span class=cF1>if</span><span class=cF0> (i.u16[</span><span class=cFE>0</span><span class=cF0>] == j)
<a name="l1430"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1431"></a> i &gt;&gt;= </span><span class=cFE>16</span><span class=cF0>;
<a name="l1432"></a> </span><span class=cF1>if</span><span class=cF0> (!i)
<a name="l1433"></a> {</span><span class=cF2>// &quot;//&quot;</span><span class=cF0>
<a name="l1434"></a> </span><span class=cF5>LexSkipEol</span><span class=cF0>(cc);
<a name="l1435"></a> </span><span class=cF1>if</span><span class=cF0> (cc-&gt;flags &amp; </span><span class=cF3>CCF_KEEP_NEW_LINES</span><span class=cF0>)
<a name="l1436"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1437"></a> cc-&gt;token = </span><span class=cF6>'\n'</span><span class=cF0>;
<a name="l1438"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1439"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1440"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1441"></a> </span><span class=cF1>goto</span><span class=cF0> lex_cont;
<a name="l1442"></a> }
<a name="l1443"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1444"></a> {
<a name="l1445"></a> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>TK_SHL</span><span class=cF0> || i == </span><span class=cF3>TK_SHR</span><span class=cF0>)
<a name="l1446"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1447"></a> j = </span><span class=cF5>LexCharGet</span><span class=cF0>(cc);
<a name="l1448"></a> </span><span class=cF1>if</span><span class=cF0> (j == </span><span class=cF6>'='</span><span class=cF0>)
<a name="l1449"></a> {
<a name="l1450"></a> </span><span class=cF1>if</span><span class=cF0> (i == </span><span class=cF3>TK_SHL</span><span class=cF0>)
<a name="l1451"></a> i = </span><span class=cF3>TK_SHL_EQU</span><span class=cF0>;
<a name="l1452"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1453"></a> i = </span><span class=cF3>TK_SHR_EQU</span><span class=cF0>;
<a name="l1454"></a> }
<a name="l1455"></a> </span><span class=cF1>else</span><span class=cF0>
<a name="l1456"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l1457"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1458"></a> cc-&gt;token = i;
<a name="l1459"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1460"></a> }
<a name="l1461"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1462"></a> </span><span class=cF1>if</span><span class=cF0> (i = </span><span class=cFB>cmp</span><span class=cF0>.dual_U16_tokens3[ch])
<a name="l1463"></a> </span><span class=cF7>{</span><span class=cF0>
<a name="l1464"></a> </span><span class=cF1>if</span><span class=cF0> (i.u16[</span><span class=cFE>0</span><span class=cF0>] == j)
<a name="l1465"></a> {
<a name="l1466"></a> cc-&gt;token = i.u16[</span><span class=cFE>1</span><span class=cF0>];
<a name="l1467"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1468"></a> }
<a name="l1469"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1470"></a> }
<a name="l1471"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l1472"></a> cc-&gt;token = ch;
<a name="l1473"></a> </span><span class=cF1>goto</span><span class=cF0> lex_end;
<a name="l1474"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1475"></a> </span><span class=cF1>case</span><span class=cF0> </span><span class=cF3>TK_TKS_NUM</span><span class=cF0>:
<a name="l1476"></a> </span><span class=cF1>break</span><span class=cF0>;
<a name="l1477"></a> }
<a name="l1478"></a> </span><span class=cF7>}</span><span class=cF0>
<a name="l1479"></a>lex_end:
<a name="l1480"></a> </span><span class=cF5>LexCharGet</span><span class=cF0>(cc); </span><span class=cF2>//Do this so WAS_NEW_LINE is right</span><span class=cF0>
<a name="l1481"></a> cc-&gt;flags |= </span><span class=cF3>CCF_USE_LAST_U16</span><span class=cF0>;
<a name="l1482"></a>
<a name="l1483"></a> </span><span class=cF1>return</span><span class=cF0> cc-&gt;token;
<a name="l1484"></a>}
</span></pre></body>
</html>