www.pudn.com > WZ_UpdateModule_DLL.rar > ReadScript.h
#ifndef _READ_SCRIPT_H_
#define _READ_SCRIPT_H_
static enum SMDToken
{
NAME,
NUMBER,
END,
COMMAND = '#',
LP = '{',
RP = '}',
COMMA = ',',
SEMICOLON = ';',
SMD_ERROR
};
static FILE *SMDFile;
static float TokenNumber;
static char TokenString[100];
static SMDToken CurrentToken;
static SMDToken GetToken()
{
char ch;
TokenString[0] = '\0';
do
{
// ÇöÀç ÆÄÀÏÀÇ ³¡À̸é END ¸®ÅÏ
if( (ch = (char)fgetc(SMDFile)) == EOF )
return END;
// ¸¸ÀÏ // °ªÀ̸é '\n'ÀÌ ³ª¿Ã¶§ ±îÁö µ¹¾Æ¶ó.
if( ch == '/' && ( ch = (char)fgetc(SMDFile) ) == '/' )
{
while( (ch = (char)fgetc(SMDFile)) != '\n' );
}
} while( isspace(ch) );
char *p, TempString[100];
switch(ch)
{
case '#':
p = TokenString;
while ( ( (ch = getc(SMDFile) ) != EOF) && (ch!='#'))// || isalnum(ch)) )
*p++ = ch;
if (ch!='#')
ungetc(ch,SMDFile);
*p = 0;
return CurrentToken = COMMAND;
case ';':
return CurrentToken = SEMICOLON;
case ',':
return CurrentToken = COMMA;
case '{':
return CurrentToken = LP;
case '}':
return CurrentToken = RP;
case '0': case '1': case '2': case '3': case '4':
case '5': case '6': case '7': case '8': case '9':
case '.': case '-':
ungetc(ch,SMDFile);
p = TempString;
while ( ( (ch = getc(SMDFile) ) !=EOF) && (ch=='.' || isdigit(ch) || ch=='-') )
*p++ = ch;
*p = 0;
TokenNumber = (float)atof(TempString);
// sscanf(TempString," %f ",&TokenNumber);
return CurrentToken = NUMBER;
case '"':
p = TokenString;
while ( ( (ch = getc(SMDFile) ) !=EOF) && (ch!='"'))// || isalnum(ch)) )
*p++ = ch;
if (ch!='"')
ungetc(ch,SMDFile);
*p = 0;
return CurrentToken = NAME;
default:
if (isalpha(ch))
{
p = TokenString;
*p++ = ch;
while ( ( (ch = getc(SMDFile) ) !=EOF) && (ch=='.' || ch=='_' || isalnum(ch)) )
*p++ = ch;
ungetc(ch,SMDFile);
*p = 0;
return CurrentToken = NAME;
}
return CurrentToken = SMD_ERROR;
}
}
#endif