#include<stdio.h>
void lexicalAnalyzer(char s[]);
int isIdent(char ch);
int isAlpha(char ch);
int isDigit(char ch);
int isOperator(char ch);
int isDelemeter(char ch);
void display(char s[100][32], int n);
void checking(int (*f)(char), int indexI, int indexJ, char ch);
char op[] = {'=', '+', '-', '*', '/', '%'};
char del[] = {',', ':', ';'};
char indent[100][32];
char operator[100][32];
char delemeter[100][32];
int IDi = 0, IDj = 0, OPi = 0, OPj = 0, DEi = 0, DEj = 0;
char A[100];
int i = 0, k;
int main()
{
gets(A);
lexicalAnalyzer(A);
display(indent, IDi);
display(operator, OPi);
display(delemeter, DEi);
return 0;
}
void display(char s[100][32], int n) {
int k;
for(k = 0; k < n; k++) {
printf("%s\n", s[k]);
}
}
void lexicalAnalyzer(char s[])
{
while (s[i]) {
if (isIdent(s[i])) {
while (isIdent(s[i])) {
indent[IDi][IDj] = s[i];
IDj++;
i++;
}
IDi++;
IDj = 0;
} else if (isOperator(s[i])) {
while (isOperator(s[i])) {
operator[OPi][OPj] = s[i];
OPj++;
i++;
}
OPi++;
OPj = 0;
} else if (isDelemeter(s[i])) {
while (isDelemeter(s[i])) {
delemeter[DEi][DEj] = s[i];
DEj++;
i++;
}
DEi++;
DEj = 0;
} else {
i++;
}
}
}
int isIdent(char ch) {
if (isAlpha(ch) || isDigit(ch)) {
return 1;
}
return 0;
}
int isDigit(char ch) {
if (ch >= '0' && ch <= '9') {
return 1;
}
return 0;
}
int isAlpha(char ch) {
if ((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z')) {
return 1;
}
return 0;
}
int isOperator(char ch) {
int k;
for (k = 0; op[k]; k++) {
if (ch == op[k]) {
return 1;
}
}
return 0;
}
int isDelemeter(char ch) {
int k;
for (k = 0; del[k]; k++) {
if (ch == del[k]) {
return 1;
}
}
return 0;
}
Last active
November 15, 2019 03:57
-
-
Save hasinur1997/813c1625a2c5baa64da62ca63ea45dc4 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment