How to make a lexical analyzer in C++?
You required two files;
- t4tutorials.cpp
- T4Tutorials.txt
Try to save both files in one folder to make it simpler.
Source Code of the lexical analyzer to detect tokens in C++.
code of t4tutorials.cpp
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 |
#include<iostream> #include<fstream> #include<stdlib.h> #include<string.h> #include<ctype.h> using namespace std; int isKeyword(char buffer[]){ char keywords[40][40] = {"switch","typedef","union", "unsigned","void","long","register","short","signed", "sizeof","static","volatile","while""auto","break","case","char","const","continue","default", "do","double","enum","extern","return","struct","float","for","goto", "if","int","else"}; int i, T4Tutorials_Flag = 0; for(i = 0; i < 32; ++i){ if(strcmp(keywords[i], buffer) == 0){ T4Tutorials_Flag = 1; break; } } return T4Tutorials_Flag; } int main(){ char ch, buffer[15], operators[] = "+-*/%="; ifstream fin("T4Tutorials.txt"); int i,j=0; if(!fin.is_open()){ cout<<"Sorrys: issue in opening the file"<<endl; exit(0); } while(!fin.eof()){ ch = fin.get(); for(i = 0; i < 6; ++i){ if(ch == operators[i]) cout<<ch<<" : operator"<<endl; } if(isalnum(ch)){ buffer[j++] = ch; } else if((ch == ' ' || ch == '\n') && (j != 0)){ buffer[j] = '\0'; j = 0; if(isKeyword(buffer) == 1) cout<<buffer<<" is keyword"<<endl; else cout<<buffer<<" : indentifier"<<endl; } } fin.close(); return 0; } |
code of t4tutorials.txt
void main(
{
int x, y, z;
z=x+y;
}
Output

C++ code of Lexical analyzer [download]
How to make a lexical analyzer in C?
You required two files;
- t4tutorials.c
- T4Tutorials.txt
Try to save both files in one folder to make it simpler.
Source Code of the lexical analyzer to detect tokens in C++.
code of t4tutorials.c
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 |
#include<stdio.h> #include<stdlib.h> #include<string.h> #include<ctype.h> int isKeyword(char buffer[]){ char keywords[40][40] = {"switch","typedef","union", "unsigned","void","long","register","short","signed", "sizeof","static","volatile","while""auto","break","case","char","const","continue","default", "do","double","enum","extern","return","struct","float","for","goto", "if","int","else"}; int i, T4Tutorials_Flag = 0; for(i = 0; i < 32; ++i){ if(strcmp(keywords[i], buffer) == 0){ T4Tutorials_Flag = 1; break; } } return T4Tutorials_Flag; } int main(){ char ch, buffer[15], operators[] = "+-*/%="; FILE *fp; int i,j=0; fp = fopen("t4tutorials.txt","r"); if(fp == NULL){ printf("Sorrys: issue in opening the file\n"); exit(0); } while((ch = fgetc(fp)) != EOF){ for(i = 0; i < 6; ++i){ if(ch == operators[i]) printf("%c : operator\n", ch); } if(isalnum(ch)){ buffer[j++] = ch; } else if((ch == ' ' || ch == '\n') && (j != 0)){ buffer[j] = '\0'; j = 0; if(isKeyword(buffer) == 1) printf("%s : keyword\n", buffer); else printf("%s :indentifier\n", buffer); } } fclose(fp); return 0; } |
code of t4tutorials.txt
void main(
{
int x, y, z;
z=x+y;
}
Output

C code to make lexical analyzer [download]
Compiler Construction Lab Programs in C++
- Lexical analyzer in C++
- Bottom-Up Parsing in C++
- First And Follow in C++
- Parse a string using Operator Precedence parsing in C++