X-Git-Url: http://andersk.mit.edu/gitweb/splint.git/blobdiff_plain/616915ddfdcba888735f45cbd9c26c9b5383ee2c..928377c60977658bad58b2cabe6af23cc2c5ea68:/src/scan.c diff --git a/src/scan.c b/src/scan.c index 05fce97..833afa2 100644 --- a/src/scan.c +++ b/src/scan.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,9 +17,9 @@ ** 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 */ /* ** scan.c @@ -42,17 +42,15 @@ ** yet implemented in this version). */ -# include "lclintMacros.nf" +# include "splintMacros.nf" # include "llbasic.h" # include "signature.h" # include "signature2.h" # include "scan.h" # include "scanline.h" -extern /*@external@*/ /*@unused@*/ YYSTYPE lsllval; - static /*@exposed@*/ ltoken LSLScanLookAhead (void); -static tsource *scanFile; /* file to scan */ +static inputStream scanFile; /* file to scan */ static o_ltoken TokenList[MAXLINE]; /* available tokens */ static int nextToken; /* next available token */ static int lastToken; /* next available slot */ @@ -69,29 +67,32 @@ unsigned int lsllex (YYSTYPE *lval) ltoken LSLScanNextToken (void) { - if (nextToken < lastToken) { - /*@-retalias@*/ - return TokenList[nextToken++]; - /*@=retalias@*/ + ltoken res = TokenList[nextToken]; + TokenList[nextToken] = ltoken_undefined; + nextToken++; + /*@-dependenttrans@*/ + return res; /* Its the only reference now. */ + /*@=dependenttrans@*/ + } else { lastToken = 0; lineNumber++; - line = tsource_nextLine (scanFile); + line = inputStream_nextLine (scanFile); if (line != (char *) 0) { - lscanLine (line); /* tokenize */ + lscanLine (line); /* tokenize */ nextToken = 0; return LSLScanNextToken (); } else { - return LSLScanEofToken (); + return LSLScanEofToken (); } } } @@ -106,7 +107,7 @@ LSLScanLookAhead (void) else { lastToken = 0; - line = tsource_nextLine (scanFile); + line = inputStream_nextLine (scanFile); if (line != (char *) 0) { @@ -142,7 +143,7 @@ LSLScanFreshToken (ltoken tok) } } -/*@exposed@*/ tsource *LSLScanSource (void) +/*@exposed@*/ inputStream LSLScanSource (void) { return scanFile; } @@ -154,7 +155,7 @@ LSLScanInit (void) } void -LSLScanReset (tsource *s) +LSLScanReset (inputStream s) { scanFile = s; lastToken = 0;