/*
-** 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
** 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"
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)
{
- return (tok.tok == INC_OP);
+ return (tok->tok == INC_OP);
}
bool lltok_isDec_Op (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)
{
- return (tok.tok == EQ_OP);
+ return (tok->tok == EQ_OP);
}
/* DRL added this function 10/25/2000 for boolean stuff */
bool lltok_isAnd_Op (lltok tok)
{
- return (tok.tok == AND_OP);
+ return (tok->tok == AND_OP);
}
bool lltok_isOr_Op (lltok tok)
{
- return (tok.tok == OR_OP);
+ return (tok->tok == OR_OP);
}
bool lltok_isNot_Op (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);
+ 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);
+ 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;
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;
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;
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);
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);
}