⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 eval_8cpp-source.html

📁 parser in C++~~~~~~~~~~~~
💻 HTML
📖 第 1 页 / 共 2 页
字号:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"><title>a1: eval.cpp Source File</title><link href="doxygen.css" rel="stylesheet" type="text/css"></head><body><!-- Generated by Doxygen 1.3.9.1 --><div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div><h1>eval.cpp</h1><a href="eval_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment">00001 00009 <span class="preprocessor">#include "<a class="code" href="eval_8hpp.html">eval.hpp</a>"</span>00010 <span class="preprocessor">#include "math.h"</span><a name="l00024"></a><a class="code" href="eval_8hpp.html#a0">00024</a> <a class="code" href="classCell.html">Cell</a>* <a class="code" href="eval_8hpp.html#a0">eval</a>(<a class="code" href="classCell.html">Cell</a>* <span class="keyword">const</span> c)00025 {00026         <a class="code" href="classCell.html">Cell</a>* curr = c;  00027         <a class="code" href="classCell.html">Cell</a>* temp;    00028         <span class="keywordtype">int</span> resulti = 0; 00029         <span class="keywordtype">double</span> resultd = 0;00030         string type = <span class="stringliteral">"integer"</span>;00031         string sym;00032         <span class="keywordtype">bool</span> first = <span class="keyword">true</span>;00033         00034         <span class="keywordflow">if</span> (c == NULL)        <span class="comment">// input :  </span>00035         {00036                 <span class="keywordflow">return</span> NULL;00037         }00038         <span class="keywordflow">if</span>( !<a class="code" href="cons_8hpp.html#a9">listp</a>(c))           <span class="comment">//  input: 8</span>00039                 <span class="keywordflow">return</span> c;00040         00041         <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a5">intp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(c)))00042         {00043                 cerr&lt;&lt;<span class="stringliteral">"ERROR!"</span>&lt;&lt;endl;   <span class="comment">// input :(8)</span>00044                 exit(1);00045         }00046 00047          00048         <span class="keywordflow">while</span> (curr!= NULL)00049         {00050                 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a9">listp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(curr)))<span class="comment">// &amp;&amp; ) </span>00051                 {00052                         cout &lt;&lt; <span class="stringliteral">" here 1 "</span> &lt;&lt; endl;00053                         temp = <a class="code" href="eval_8hpp.html#a0">eval</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(curr));00054                         cout &lt;&lt; <span class="stringliteral">" resulti : "</span>&lt;&lt; resulti &lt;&lt; <span class="charliteral">'\n'</span> &lt;&lt; <span class="stringliteral">"resultd : "</span> &lt;&lt;resultd &lt;&lt; endl;00055 00056                 }                       00057 <span class="comment">//              temp = car(curr);</span>00058                 00059                 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a7">symbolp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(curr)))00060                 { 00061                         sym = <a class="code" href="cons_8hpp.html#a12">get_symbol</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(curr));00062                 }               00063                         00064                         <span class="keywordflow">if</span>(sym == <span class="stringliteral">"ceiling"</span>)          <span class="comment">// check whether the symbol is ceiling </span>00065                         {00066                                 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a8">nullp</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)))       <span class="comment">// check the case (ceiling)</span>00067                                 {00068                                         cerr &lt;&lt; <span class="stringliteral">"ERROR:Should not be Null"</span>&lt;&lt;endl;00069                                         exit(1);00070                                 }00071                                 00072                                 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a8">nullp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))))        <span class="comment">// check whether input is empty list or not</span>00073                                 {00074                                         cerr &lt;&lt; <span class="stringliteral">"ERROR:Should not be Null"</span>&lt;&lt;endl;00075                                         exit(1);00076                                 }00077         00078                                 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a6">doublep</a> (<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))))           <span class="comment">// check the input is double or not                     </span>00079                                         <span class="keywordflow">return</span> <a class="code" href="cons_8hpp.html#a1">make_int</a>(<span class="keywordtype">int</span>(ceil(<a class="code" href="cons_8hpp.html#a11">get_double</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))))));                                         00080                                 <span class="keywordflow">else</span> 00081                                 {00082                                         cerr &lt;&lt; <span class="stringliteral">"ERROR:Input is not a double!"</span>&lt;&lt;endl;00083                                         exit(1);00084                                 }                                       00085                         }00086                         00087                         <span class="keywordflow">if</span>(sym == <span class="stringliteral">"+"</span>)    <span class="comment">//check the symbol is + or not</span>00088                         {00089                                 00090                                 <span class="keywordflow">if</span>(<a class="code" href="cons_8hpp.html#a8">nullp</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)))             <span class="comment">// check the case (+)</span>00091                                         <span class="keywordflow">return</span> <a class="code" href="cons_8hpp.html#a1">make_int</a>(0);00092                                 00093                                 00094                                 <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a8">nullp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))))          <span class="comment">//check th einput is empty list or not</span>00095                                 {00096                                         cerr &lt;&lt; <span class="stringliteral">"ERROR:Should not be Null"</span>&lt;&lt;endl;00097                                         exit(1);00098                                 }00099                         00100                                 <span class="keywordflow">if</span>(<a class="code" href="cons_8hpp.html#a5">intp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))))         <span class="comment">// check the input is integer or not</span>00101                                 {       00102                                         <span class="keywordflow">if</span> (type == <span class="stringliteral">"double"</span>)00103                                                 resultd += <a class="code" href="cons_8hpp.html#a10">get_int</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)));     00104                                         <span class="keywordflow">else</span> resulti += <a class="code" href="cons_8hpp.html#a10">get_int</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr)));00105                                         00106                                 }00107                                 00108                                 <span class="keywordflow">if</span>(<a class="code" href="cons_8hpp.html#a6">doublep</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))))     <span class="comment">// check the input is double or not</span>00109                                 {       00110                                         type = <span class="stringliteral">"double"</span>;                                        00111                                         resultd += <a class="code" href="cons_8hpp.html#a11">get_double</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))) + resulti;00112                                 00113                                 }               00114                                 00115                                 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="cons_8hpp.html#a7">symbolp</a>(<a class="code" href="cons_8hpp.html#a13">car</a>(<a class="code" href="cons_8hpp.html#a14">cdr</a>(curr))))       <span class="comment">// check the input is symbol or not </span>00116                                 {       00117                                         cerr&lt;&lt;<span class="stringliteral">"ERROR:Input should be integer or double"</span>&lt;&lt;endl;                  00118                                         exit(1);00119                                 }                       00120                         }               00121                                                         

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -