From fe6e142f85defcfec5e8b30d68e7348ab262d727 Mon Sep 17 00:00:00 2001 From: Dale Weiler Date: Mon, 9 Apr 2012 07:09:57 -0400 Subject: [PATCH] Some fixes and command line switches parsing --- error.c | 8 ++++++-- gmqcc | Bin 16675 -> 17230 bytes gmqcc.h | 24 +++++++++++++++++++++--- main.c | 42 ++++++++++++++++++++++++++++++++++++++---- 4 files changed, 65 insertions(+), 9 deletions(-) diff --git a/error.c b/error.c index c220d72..1bd792e 100644 --- a/error.c +++ b/error.c @@ -42,7 +42,10 @@ static const int error_color[] = { CON_RED, CON_CYAN, - CON_MAGENTA + CON_MAGENTA, + CON_BLUE, + CON_BROWN, + CON_WHITE }; #endif int error_total = 0; @@ -51,7 +54,8 @@ int error_max = 10; static const char *const error_list[] = { "Parsing Error:", "Lexing Error:", - "Internal Error:" + "Internal Error:", + "Compilation Error:" }; int error(int status, const char *msg, ...) { diff --git a/gmqcc b/gmqcc index 5ee60435edddb90c524391dec00a7aae948bfebc..1c50928f3d25825755ac41cb5c218900a0f59668 100755 GIT binary patch delta 6024 zcmai233OD|8NTmLCYh`=lZ6a1kVnXbEF?1nge)vRmdaz%rYr?qa6m{6TLMfpYTF5h zD3b^$ayh`Mw#K7)l%s7Bt$;K$>>Tvin6?_RN{T3NSQDj`O1zWZQEJ*WRU_x<<# z{{L?O{qNgedsg`5Iib~&+!ikr6#Ys_@9-B3-k6Y(&q!iuLL^2AaE*py<91uVm+^*v zU1X4SQ@fC!T*kf1xK~*|tq>Lrsdws5^-h^p482*W$!5Aopz}Xmw)O4eJ>rhn#Ro>e z?0aKM%zYt31|^9|wFgNg}m_XtVhpbNw3MLLVI! zJ&!g=C-?;-vIXO!QBta_AtolW59-L(WmH34L~;a;Al(ICrZF&)OExBhp}-{=VoU~k zT$UkM^?v*;ez^48!e@_hqb|T>Tl@SIbAF2&e`{9CkJWvrG=1q?pfp|Z%~t|n2aicI@r2ahL!V0EV(@P| z+{oZ5bihqgF9L1~)h$*6Csh%mqy!Esfuri&Bv?OkL6|7&xnT2z&RLX}@#+|8sjNK& zlOzv4aTXA2`wRHOwO@HehdR z7ewjY`<@F^1D`HX0;iP5)4i3mrydQt!N;#0-QR|-j~;E0lZl!R6TRHpiW#c3n1w8f zC`}=ssCBaZY>kvTO5odB=-4o>6Z}Zs^bhm$y)X~+acs8soP=oq4U^J%PEg9b*W^^` zk%eF?0rPfn(o+40nOBQ>E4C@`UVZ9_xe=-Yjt9%Gs;VlsX03x55ZHxr$1-6c9N3q< zn^7=1%OgQIjHLBIknR$;h`=pRDEKCU$1{)l)4#2OTFyVn5V|C>IDH_n;Tb&E6J}%E8|vS0?AnodN)V-Mbfa~EVA-|Z znrMn~43$YoS@y0y$x{XIj?36vYWP8DTGa|u|1k)ONLb+1ufPcLg>3Lm?|3F#h8(!0 zTK=tRdqr5C=L+PA5-_Qspb4)~ z8>!30WtVA6T3Eb4o8C$rmrI6CY> z2fQbA%;OGc`dAOx2puptb%zDq;fU^lcbcXy-!pshj@Tk&xO)&+a<{?f66 z8(+|kI35@$>_x8*A2-(MMr;7aoV_?e$5Y%mvya{!&?MgIqmAkJi!=IYSNh&~33dT8 zz@Z+!M7KKT`QNci1diO6ODt6CC$OL6G&p{BN32;5&>IOp4lUICz~17^i31z@lp9S7--3Bgx%OA+A7fm^|L9S&yjN^rjptq)hv~t=)rlbsOsDax<{S8-EuWTW<;2$D zVEBB67uXE;#s_mEbJi^U)shOyxkf6glB!o$RWDy671c;Jbv~@dk!nV7?61 zGU{;-HD|)4+;qNkWb|yPZ97jlISZoKVf6w%;LMJG8>&4Q=vilm`D3WsXl!m_^i8OR zdTB*&Msy|&;_agk=1z-V4%ObvbVqJM^vh7Kyh2Za!#=2XUZK}>v(2ZWT1JNqo15&8 zm0<>VzDDaM+B|Hq$6?ZGd=jASHp@&$vny;Ew;Ly~i+(Z8W$)3ytO)eZn&Wr z5hp{ArtRv?_lm-M)HB=_YfRfgtB04`jY%r_&;+TaJBPdM#!`0kwRO=xV4I_5=F`kq zIEs3TT(Kd}hG=zBX>2b?z4Wc3(%Z`_8fH^ zGQRJjwDa&COQY`=7bn(BI$bY;jlL?TY;sA1+Bn&UB*^Dcx@K3pFe-&sx@>micZBhq zVl!Rka@lRUGIO)#>TPb)oi10L@!tb((Pv$wuLgZT7~?2F3IWxC-!pr;~3b+;y1zn)BT{pTd4ip`{rL zcH~WKfWmgv)E_hlGo&BEJ#1ZIg~`p^?)#ToDM{WE&K#9Oxxq}k=g)7)t?v($3? z00@Wv`%dQ@!5sx3HFoH=op)#4l5&|p9x?j6@+ZW+e41QQEW+3mD;DIx*>CJ?tdl$E z&gjHK?PJnCgW#TxL*o}RN`PGnDKdCI)hV1W#a6;}yiR=-d~C2wYQGT|8*Te#_cGw| z?`2QF1)A;xMDx2X4cr_mf9|;~_DbzhSItB8K zuX2;#1v$-puQA_v2uw2i-k*gv`1NT#W4JSMGCqlPI%Gx#xxvNxULLD|Lc~$ZjUMA> xLQVf~yX*K^hbfu;pq1q*Gp0_Q^yrA<5yd6+DUm9s^eew^w+) zj2C*B%pe(}4k@&jl#^CO zX|yeBxOh0%3s$I?-3fUXw1Z3{`WSu=@JS?r)TGlr(QnYZVwTw~M1~)P|fF*mq$g>*y& z;PMvI6~W^+5TZ4mwCewY?CN!pNqsV`3$5uBYoD+iGk$QniIIH??ujlHN{H`8voADk zfMky#f$JkQ#PA8kxGX}w3?D^|%OTXk@L|Nb3_|S;A3%)h4+R(=M2u+~jOhyXGF*okvlQw8++;{gpPr_*K5f-s zfnIC=KFz;RAB7HR{v-No@IyTcrlQ`JeOhZ-umL8%s8{d9-~nT0Um#F)YN6k^f3@a6 zsx=)8*W9*nU#|jA+P;q(r=Z&BwW~z`2Lzl81Te>1YjpM$H_@7V8)RdMr8ppDndU#f z6rCF9gu#bwUi5wqJdz>g1cq$+Mnm+`MT^$-jik*y^l;X?L{}AA3oE5p()`i=;AM>O zXI`z*?_$i%Lk}I@8@(Hf61KH+Ro}XG>+%y_&%h)Qh?^5mgNCr-hNLb=LC37Cg0;|+ zF}w;!XbRmEw@0qMOmC0Rm#1B(+u~0ry3jH|8empKUJMoRFXT{YAqFEd~Y` z>Ac&PE!F%N^;a)-4kjFxWby-jQ<)&?o&8F@CAK3&B|Ss#&VMH_l)NqHv9|G{6%e{E z03Es08NxLG8T}BD-MGAqMj>yS-=e>UZmpI21EwxIP&Del z$?3l-UEhA5ZcV9(d*>WD_>cJe^~cW9y(#y}mFH>6gphpPO{b(z_UUe{`G{`&)-e1Z zci~oQK9Km#VbI;UZ+cE~2YrM&VB_fU9y;Jg=?Qa(eWn8jp+nnMhf(hEn&}Y592%bN z#)oBH&n0g4n^xS5%?BD*cjKn(iDu(IqTg>Cu{|)(>qf7hIBvYvG-3c4v%0Z?9tSrT zkI-~yv;64@-R-Xf+-LWd!h_+X;v`DgdTuF4IM9^VUBUZa?=tImMZ_1pk~4= zV6O6y2A7-g%u2w)00#Cm%jw_-)ABikUj?5u;XZ)=)4}Z~dJhov#v1$`!`hDf+>3Xt zg?$Zt@DSGaD3oYNTDlw?rk|xvrdeqlt#6va$LNb`C9--3_-Ezk+?{u%w@9&-@orL? z5>55VlW$CgvgZF2lX?w%t}YS-c~AmzDm-HC>*5 zg8s*~KHdtX)^x#WnD~B$hc0(#`F@LiihS$fc|#`49$s_L-Lu@;54+btux|bRcjrI2 z*1c(S0~Yb=&ZIeBWjY-9zv(Br|I^(6MbNOy2>H1R9vsuaJ!A0C#r+>VYyY|q6!M0C z#e1r9+>vIEw4Lh!*Nt4)bM582hHI7UUamK;xqscJhc>QhXy}}u`Hq}}li-3Y3$CdM zK<`dQwpz!pf9yg5FK?lAvj3LmyUmHdk^iaq!rb&dep}$&{uLwVs=5PU8je0@}mC+#W1ybrbeHGl1_^}B{4TZLp7)922Wnh zomf0gU-D#TKLf?K(}wX&@FTY*xVOnomJQH=21kw?fO-||1N2MJ^qhlGdJM)IM9+EH z5&3a&T!3ej#c-ViyK{sVPpgipf?>Z7Z;xqtISo*>erFiZ{}}Zfh?HtbV*Tx!<(ftFK?FVe30%eDzJ-x+wgQ9EGo0(xeP_~PGFJvQ z2r4d*+Dqr!hKkKdD_v4rZaXyFM2qOo(w8NL7R^YNRJf;DVo4ia1E`Mf1Y`rW6VL!d z<6sg#nvptD%(_{JdAGpQR_NIosXj5?*IE;=F8OPDg@}p2mUj>_)z|V#L`?Rzd@_9O z@FKM$k|!4UxF9Az(qMs)5F!KD@)L+i#kD;ABd1%+QY=pR5P^Ck>1BEn8AeU#mRHL| zcG^;&?-Pj^72sq`KhcqD#$Vr&JAjwri$j<%Tv5+P=0Ayqd7|Ml#pEf@UoiRPtDiJl zz`q7?_(r;LQ@c4&*tp5h)4@-b&0KHHe zfyZw|ii@t8wP2FiiFm9>`4r4<0xKq$cF)S6bZ|`c86I8lq;h3`wK861QT6N&--uv3 z%nwi|-vsU`>A*Xn)*)V9lu45u=8qeWK2iCIT;ri5mH9HXojH5;@_{jJf6prUaTkh8 ztnd`aM)7|vil5zK9tF=k$=~qe}_yp3CYSs~CHNp2w&JXc9`2yw?WeW1xy1g7q=C{Sp Q!*iV$8aw|f>Yv~LUm^1i>;M1& diff --git a/gmqcc.h b/gmqcc.h index da17ac0..162eed4 100644 --- a/gmqcc.h +++ b/gmqcc.h @@ -1,7 +1,24 @@ /* - * Compiler error system, this handles the error printing, and managing - * such as after so many errors just stop the compilation, and other - * intereting like colors for the console. + * Copyright (C) 2012 + * Dale Weiler + * + * Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in + * the Software without restriction, including without limitation the rights to + * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies + * of the Software, and to permit persons to whom the Software is furnished to do + * so, subject to the following conditions: + * + * The above copyright notice and this permission notice shall be included in all + * copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + * SOFTWARE. */ #ifndef DPQCC_HDR #define DPQCC_HDR @@ -166,6 +183,7 @@ struct lex_file *lex_open (const char *); #define ERROR_LEX (SHRT_MAX+0) #define ERROR_PARSE (SHRT_MAX+1) #define ERROR_INTERNAL (SHRT_MAX+2) +#define ERROR_COMPILER (SHRT_MAX+3) int error(int, const char *, ...); /* parse.c */ diff --git a/main.c b/main.c index 8718a72..22662db 100644 --- a/main.c +++ b/main.c @@ -20,15 +20,49 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ +#include +#include +#include +#include #include "gmqcc.h" +int usage(const char *name) { + printf("Usage: %s -f infile -o outfile\n", name); + return 0; +} + int main(int argc, char **argv) { - if (argc <= 1) { - printf("Usage: %s infile.qc outfile\n", *argv); - return -1; + struct stat chk; + const char *ofile = NULL; + const char *ifile = NULL; + int i; + if (argc <= 2) + return usage(*argv); + + for (i=0; i