Returning letter
I am writing the coding which is display the contain of the file is number,letter,...etc but I stuck on the keyword part
Let say i have if is written in the file and that if is see it should be display keyword not indent
can someone help me out plz
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89
|
/
#include "LexicalAnalysis.h"
LexicalAnalysis::LexicalAnalysis(string in) : input(in), charClass(ERROR), nextChar(' '), lexeme("")
{
getChar();
}
LexicalAnalysis::~LexicalAnalysis()
{
}
void LexicalAnalysis::setNewInput(string in)
{
input=in;
getChar();
}
void LexicalAnalysis::getChar()
{
if (input.size()>0)
{
nextChar = input[0];
input.erase(0,1);
}
else nextChar = '$';
charClass = ERROR;
if ( (nextChar > 64 && nextChar <91) || (nextChar > 96 && nextChar <123) )
charClass = LETTER;
if ( nextChar > 47 && nextChar <58 )
charClass = DIGIT;
if (nextChar == ' ') charClass = SPACE;
if (nextChar == '$') charClass = STOP;
if (nextChar == 'i') charClass = PLUS_CODE;
}
void LexicalAnalysis::addChar()
{
lexeme+=nextChar;
}
int LexicalAnalysis::lex()
{
lexeme="";
while (charClass == SPACE) getChar();
if (charClass == ERROR) {addChar(); getChar(); return ERROR;}
if (charClass == STOP) { return STOP;}
switch (charClass) {
case LETTER:
addChar();
getChar();
while (charClass == LETTER || charClass == DIGIT)
{
addChar();
getChar();
}
return IDENT;
break;
case DIGIT:
addChar();
getChar();
while (charClass == DIGIT) {
addChar();
getChar();
}
return INT_LIT;
break;
case PLUS_CODE:
addChar();
getChar();
return PLUS_CODE;
break;
}
return 0;
}
|
Topic archived. No new replies allowed.