X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/616915ddfdcba888735f45cbd9c26c9b5383ee2c..16c024b587f5ddc115928d5cca7095508aa208d9:/src/lltok.c diff --git a/src/lltok.c b/src/lltok.c index 63e94a4..1d19d4c 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-2002 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,67 +34,72 @@ 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_isDec_Op (lltok tok) +bool lltok_isDecOp (lltok tok) { - return (tok.tok == DEC_OP); + 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); + return (tok->tok == EQ_OP); +} + +bool lltok_isNotEqOp (lltok tok) +{ + 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 */ @@ -103,22 +108,54 @@ bool lltok_isLe_Op (lltok tok) /*drl7x added 11 30 2000*/ bool lltok_isPlus_Op (lltok tok) { - return (tok.tok == TPLUS); + return (tok->tok == TPLUS); } bool lltok_isMinus_Op (lltok tok) { - return (tok.tok == TMINUS); + 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; @@ -172,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; @@ -198,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; @@ -214,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); @@ -224,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); }