X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/34f0c5e711b8f61f6376414948f4c116f1c5a22c..ed62d3fbeda6bb085991cdd683ceacfc57f7afbe:/src/lltok.c diff --git a/src/lltok.c b/src/lltok.c index c9aaa6e..0ae4568 100644 --- a/src/lltok.c +++ b/src/lltok.c @@ -1,6 +1,6 @@ /* -** LCLint - annotation-assisted static program checker -** Copyright (C) 1994-2000 University of Virginia, +** Splint - annotation-assisted static program checker +** Copyright (C) 1994-2003 University of Virginia, ** Massachusetts Institute of Technology ** ** This program is free software; you can redistribute it and/or modify it @@ -17,15 +17,15 @@ ** the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, ** MA 02111-1307, USA. ** -** For information on lclint: lclint-request@cs.virginia.edu -** To report a bug: lclint-bug@cs.virginia.edu -** For more information: http://lclint.cs.virginia.edu +** For information on splint: info@splint.org +** To report a bug: splint-bug@splint.org +** For more information: http://www.splint.org */ /* ** lltok.c */ -# include "lclintMacros.nf" +# include "splintMacros.nf" # include "basic.h" # include "cgrammar.h" @@ -34,72 +34,128 @@ bool lltok_isSemi (lltok tok) { - return (tok.tok == TSEMI); + return (tok->tok == TSEMI); } bool lltok_isMult (lltok tok) { - return (tok.tok == TMULT); + return (tok->tok == TMULT); } -bool lltok_isInc_Op (lltok tok) +bool lltok_isIncOp (lltok tok) { - return (tok.tok == INC_OP); + return (tok->tok == INC_OP); } +bool lltok_isDecOp (lltok tok) +{ + return (tok->tok == DEC_OP); +} + + /* DRL added this function 10/23/2000 for boolean stuff */ -bool lltok_isEq_Op (lltok tok) +bool lltok_isEqOp (lltok tok) +{ + return (tok->tok == EQ_OP); +} + +bool lltok_isNotEqOp (lltok tok) { - return (tok.tok == EQ_OP); + return (tok->tok == NE_OP); } /* DRL added this function 10/25/2000 for boolean stuff */ -bool lltok_isAnd_Op (lltok tok) +bool lltok_isAndOp (lltok tok) { - return (tok.tok == AND_OP); + return (tok->tok == AND_OP); } -bool lltok_isOr_Op (lltok tok) +bool lltok_isOrOp (lltok tok) { - return (tok.tok == OR_OP); + return (tok->tok == OR_OP); } -bool lltok_isNot_Op (lltok tok) +bool lltok_isNotOp (lltok tok) { - return (tok.tok == TEXCL); + return (tok->tok == TEXCL); } /*drl7x added this function 11/20/00 */ bool lltok_isLt_Op (lltok tok) { - return (tok.tok == TLT); + return (tok->tok == TLT); } bool lltok_isGt_Op (lltok tok) { - return (tok.tok == TGT); + return (tok->tok == TGT); } bool lltok_isGe_Op (lltok tok) { - return (tok.tok == GE_OP); + return (tok->tok == GE_OP); } bool lltok_isLe_Op (lltok tok) { - return (tok.tok == LE_OP); + return (tok->tok == LE_OP); } /* end drl7x added */ +/*drl7x added 11 30 2000*/ +bool lltok_isPlus_Op (lltok tok) +{ + return (tok->tok == TPLUS); +} + +bool lltok_isMinus_Op (lltok tok) +{ + return (tok->tok == TMINUS); +} + +/*drl7x added 6 6 2001 */ + + +bool lltok_isAmpersand_Op (lltok tok) +{ + return (tok->tok == TAMPERSAND); +} + +/*end drl added */ + +/*drl7x added 6 15 2001 */ + +bool lltok_isExcl_Op (lltok tok) +{ + return (tok->tok == TEXCL); +} + +bool lltok_isTilde_Op (lltok tok) +{ + return (tok->tok == TTILDE); +} +/*end drl added */ + + +bool lltok_isEnsures (lltok tok) +{ + return (tok->tok == QPOSTCLAUSE); +} + +bool lltok_isRequires (lltok tok) +{ + return (tok->tok == QPRECLAUSE); +} + cstring lltok_unparse (lltok tok) { char *lit; - switch (tok.tok) + switch (tok->tok) { case BREAK: lit = "break"; break; case CASE: lit = "case"; break; @@ -153,7 +209,7 @@ lltok_unparse (lltok tok) case TRPAREN: lit = ")"; break; case TLSQBR: lit = "["; break; case TRSQBR: lit = "]"; break; - case TDOT: lit = "."; break; + case TDOT: lit = "->"; break; case TAMPERSAND: lit = "&"; break; case TEXCL: lit = "!"; break; case TTILDE: lit = "~"; break; @@ -179,6 +235,8 @@ lltok_unparse (lltok tok) case QCHECKEDSTRICT: lit = "checkedstrict"; break; case QCHECKMOD: lit = "checkmod"; break; case QUNCHECKED: lit = "unchecked"; break; + case QPRECLAUSE: lit = "requires"; break; + case QPOSTCLAUSE: lit = "ensures"; break; case QTRUENULL: lit = "truenull"; break; case QFALSENULL: lit = "falsenull"; break; case QRETURNED: lit = "returned"; break; @@ -195,8 +253,7 @@ lltok_unparse (lltok tok) case QRELEASES: lit = "releases"; break; case QSETBUFFERSIZE: lit = "setBufferSize"; break; case QSETSTRINGLENGTH: lit = "setStringLength"; break; - default: lit = "bad "; break; - // BADDEFAULT; + BADDEFAULT; } return cstring_makeLiteralTemp (lit); @@ -205,16 +262,30 @@ lltok_unparse (lltok tok) lltok lltok_create (int tok, fileloc loc) { - lltok l; - - l.tok = tok; - l.loc = loc; + lltok l = (lltok) dmalloc (sizeof (*l)); + l->tok = tok; + l->loc = loc; + DPRINTF (("Create: %s [%p]", lltok_unparse (l), loc)); return (l); } -void lltok_release (lltok t) +void lltok_free (lltok t) +{ + fileloc_free (t->loc); + sfree (t); +} + +void lltok_free2 (lltok t1, lltok t2) +{ + lltok_free (t1); + lltok_free (t2); +} + +void lltok_free3 (lltok t1, lltok t2, lltok t3) { - fileloc_free (t.loc); + lltok_free (t1); + lltok_free (t2); + lltok_free (t3); }