Main Page   Alphabetical List   Compound List   File List   Compound Members   File Members  

lclscan.c File Reference

#include "lclintMacros.nf"
#include "llbasic.h"
#include "llgrammar2.h"
#include "lclscan.h"
#include "scanline.h"
#include "lclscanline.h"
#include "lcltokentable.h"

Go to the source code of this file.

Functions

ltokenCode yllex (void)
ltoken LCLScanNextToken (void)
void LCLScanFreshToken ( ltoken tok)
tsource* LCLScanSource (void)
void LCLScanInit (void)
void LCLScanReset (tsource * s)
void LCLScanCleanup (void)

Variables

bool g_inTypeDef = FALSE


Function Documentation

void LCLScanCleanup ( void )
 

Definition at line 208 of file lclscan.c.

00209 {
00210 }

void LCLScanFreshToken ( ltoken tok )
 

Definition at line 175 of file lclscan.c.

Referenced by LCLScanLine().

00176 {
00177   if (lastToken < MAXLINE)
00178     {           
00179       TokenList[lastToken++] = tok;
00180     }
00181   else
00182     {
00183       llbugexitlit ("LCLScanFreshToken: out of range");
00184     }
00185 }

void LCLScanInit ( void )
 

Definition at line 194 of file lclscan.c.

00195 {
00196 }

ltoken LCLScanNextToken ( void )
 

Definition at line 118 of file lclscan.c.

Referenced by LCLProcessInitFileReset().

00119 {
00120   ltoken ret;
00121 
00122   if (nextToken < lastToken)
00123     {                   
00124       ret = TokenList[nextToken++];
00125     }
00126   else
00127     {
00128       lastToken = 0;
00129       lineNumber++;
00130       line = tsource_nextLine (scanFile);       
00131 
00132       if (line != (char *) 0)
00133         {
00134           
00135           LCLScanLine (line);   
00136           nextToken = 0;
00137           ret = LCLScanNextToken ();    
00138           return ret;
00139         }
00140       else
00141         {
00142           ret = LCLScanEofToken ();
00143         }
00144     }
00145 
00146 
00147     return ret;
00148 }

void LCLScanReset ( tsource * s )
 

Definition at line 199 of file lclscan.c.

00200 {
00201   scanFile = s;
00202   lastToken = 0;
00203   nextToken = lastToken + 1;    
00204   lineNumber = 0;
00205 }

tsource * LCLScanSource ( void )
 

Definition at line 187 of file lclscan.c.

Referenced by processImport(), sort_import(), and symtable_import().

00188 {
00189   return scanFile;
00190 }

ltokenCode yllex ( void )
 

Definition at line 71 of file lclscan.c.

00073 {
00074   lsymbol tokenSym;
00075 
00076   if (restore)
00077     {
00078       yllval = restoretok;
00079       restore = FALSE;
00080     }
00081   else
00082     {
00083       yllval.ltok = ltoken_copy (LCLScanNextToken ());
00084     }
00085 
00086   tokenSym = ltoken_getText (yllval.ltok);
00087 
00088   if (ltoken_getCode (yllval.ltok) == simpleId)
00089     {
00090       if (g_inTypeDef)
00091         {
00092           ltoken_setCode (yllval.ltok, LLT_TYPEDEF_NAME);
00093           LCLUpdateToken (LLT_TYPEDEF_NAME, tokenSym, 
00094                           ltoken_isStateDefined (yllval.ltok));
00095         }
00096       else
00097         {
00098          /* or if it is already declared as a type, so
00099             typedef int foo; typedef foo bar;      works*/
00100           if (symtable_exists (g_symtab, tokenSym))
00101             {
00102               if (typeInfo_exists (symtable_typeInfo (g_symtab, tokenSym)))
00103                 {
00104                   ltoken_setCode (yllval.ltok, LLT_TYPEDEF_NAME);
00105                   LCLUpdateToken (LLT_TYPEDEF_NAME, tokenSym, 
00106                                   ltoken_isStateDefined (yllval.ltok));
00107                 }
00108             }
00109         }
00110     }
00111 
00112   return (ltoken_getCode (yllval.ltok));
00113 }


Variable Documentation

bool g_inTypeDef = FALSE
 

Definition at line 167 of file llgrammar.tab.c.


Generated at Fri Nov 3 18:57:59 2000 for LCLint by doxygen1.2.3 written by Dimitri van Heesch, © 1997-2000