CC Ass 2
CC Ass 2
#include<fstream>
#include<string>
#include<cctype>
ifstream f("symbol.txt",ios::in);
char ch;
int i=0;
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;
token makeToken(){
while(!f.eof()){
ch=f.get();//a
if (isalpha(ch)|| ch=='_'){
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)){
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++){
return 0;