0% found this document useful (0 votes)
55 views9 pages

CC Ass 2

This C++ program defines a token structure to represent tokens in a text file. It includes header files for input/output streams, strings, and character classification functions. The main function calls the makeToken function to parse the symbol.txt file, identify tokens, populate the token structure array, and return each token. It then prints out the tokenized elements stored in the array.

Uploaded by

atif
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
55 views9 pages

CC Ass 2

This C++ program defines a token structure to represent tokens in a text file. It includes header files for input/output streams, strings, and character classification functions. The main function calls the makeToken function to parse the symbol.txt file, identify tokens, populate the token structure array, and return each token. It then prints out the tokenized elements stored in the array.

Uploaded by

atif
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 9

#include <iostream>

#include<fstream>

#include<string>

#include<cctype>

using namespace std;

ifstream f("symbol.txt",ios::in);

char ch;

int i=0;

typedef enum {IF=1,ELSE,WHILE,DO,FOR,LPRN,RPRN,OPR,Break, Switch, Auto, Cin,Goto, True,


False,UID,FLOAT,LCRBR,RCRBR,LSQRBR,RSQRBR,PLUSPLUS,PLUS,PLUSEQ,EQEQ,EQUAL,Div,Not,

Mul,SEMICLN,CLN,COMMA,COMMENT,LESS,LESSEQ,GREATER,GREATEREQ,INT,STRING,CHAR,DOUBLE}T
okenType;

struct token{

TokenType TknType;

int no;

string name;

string entry_no;

};

token tk[30];

token t;

static int a=0;

token makeToken(){

while(!f.eof()){

ch=f.get();//a

if (isalpha(ch)|| ch=='_'){

string s=" ";


i++;

do{

s=s+ch;//a

ch=f.get();//b

if(ch==' '||ch=='\n'||ch=='\t'){

t.name =s;

t.entry_no="Varriable"<<endl;

t.no=i;

tk[a]=t;

a++;

while(isalpha(ch)|| ch=='_'||isdigit(ch));

else if(isdigit(ch)){

string s =" ";

i++;

do{

s=s+ch;

ch=f.get();

if(ch==' '||ch=='\n'||ch=='\t'){

t.name=s;

t.entry_no="NUM";

t.no==i;

return t;

while(isdigit(ch));
}

else if(ch=='(') {

t.TknType=LPRN;

t.entry_no="LPRN";

returntokn;}

elseif(ch==')'){

t.TknType=RPRN;

t.entry_no="RPRN";

return t;

elseif(ch=='['){

t.TknType=LSQRBR;

t.entry_no="LSQRBR";

return t;

elseif(ch==']')

t.TknType=RSQRBR;

t.entry_no="RSQRBR";

return t;

elseif(ch=='{'){

t.TknType=LCRBR;

t.entry_no="LCRBR";

return t;

elseif(ch=='}'){

t.TknType=RCRBR;
t.entry_no="RCRBR";

return t;

elseif(ch==';'){

t.TknType=CLN;

t.entry_no="CLN";

return t;

elseif(ch==':'){

t.TknType=SEMICLN;

t.entry_no="SEMICLN";

return t;

}elseif(ch==','){

t.TknType=COMMA;

t.entry_no="COMMA";

return t;

elseif( ch=='/'){

if(ch=='/')

t.TknType=COMMENT;

t.entry_no="COMMENT";

return t;

elseif(ch=='*'){

t.TknType=COMMENT;

t.entry_no="COMMENT";

return t;

}
}

elseif(ch=='*'){

if( ch=='/'){

t.TknType=COMMENT;

t.entry_no="COMMENT";

return t;

elseif(ch=='+'){

if(ch=='=')

t.TknType=PLUSEQ;

t.entry_no="PLUSEQ";

return t;

elseif(ch=='+'){

t.TknType=PLUSPLUS;

t.entry_no="PLUSPLUS";

return t;

else{

t.TknType=PLUS;

t.entry_no="PLUS";

return t;

elseif(ch=='='){

if(ch=='='){

t.TknType=EQEQ;
t.entry_no="EQEQ";

return t;

else{

t.TknType=EQUAL;

t.entry_no="EQAUL";

return t;

elseif(ch=='<'){

if(ch=='='){

t.TknType=LESSEQ;

t.entry_no="LESSEQ";

return t;

else

t.TknType=EQUAL;

t.entry_no="EQUAL";

return t;

elseif(ch=='>'){

if(ch=='='){

t.TknType=GREATEREQ;

t.entry_no="GREATEREQ";

return t;

else{
t.TknType=GREATER;

t.entry_no="GREATER";

return t;

if(s=="int"){

t.TknType=INT;

t.entry_no="NULL";

return t;

elseif(s=="string"){

t.TknType=STRING;

t.entry_no="NULL";

return t;

elseif(s=="char"){

t.TknType=CHAR;

t.entry_no="NULL";

return t;

elseif(s=="for")

t.TknType=FOR;

t.entry_no="NULL";

return t;

elseif(s=="while"){

t.TknType=WHILE;

t.entry_no="NULL";

return t;
}

elseif(s=="do"){

t.TknType=DO;

t.entry_no="NULL";

return t;

elseif(s=="if"){

t.TknType=IF;

t.entry_no="NULL";

return t;

elseif(s=="else"){

t.TknType=ELSE;

t.entry_no="NULL";

return t;

elseif(s=="float"){

t.TknType=FLOAT;

t.entry_no="NULL";

return t;

elseif(s=="double"){

t.TknType=DOUBLE;

t.entry_no="NULL";

return t;

}
}

int main(){

makeToken();

for(int i=0;i<30;i++){

cout<<tk[i].TknType<<" "<<tk[i].name<<" "<<tk[i].no<<" "<<tk[i].entry_no<<endl;

return 0;

You might also like