Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- char lex[1000];
- int n = 0;
- int classify(char c){
- if(c == '\0') return 0;
- if(('a' <= c && c <= 'z') || ('A' <= c && c <= 'Z')) return 1;
- if('0' <= c && c <= '9') return 2;
- if(c == '+' || c == '-' || c == '*' || c == '/' || c == '%') return 3;
- if(c == '&' || c == '|' || c == '^') return 4;
- if(c == '>' || c == '<' || c == '!') return 5;
- if(c == '=') return 6;
- if(c == ';') return 7;
- if(c == '.') return 8;
- if(c == ',') return 9;
- if(c == '"') return 10;
- }
- void helper(){
- printf("Entered String : %s\n", lex);
- // int n = sizeof(lex);
- int first = classify(lex[0]);
- if(first == 10){
- printf("String %s is identified\n", lex);
- }else if(n == 1){
- if(first == 1){
- printf("Identifier %s is identified\n", lex);
- }else if(first == 2){
- printf("Number %s is identified\n", lex);
- }else if(first == 3){
- printf("Arithmetic Operator %s is identified\n", lex);
- }else if(first == 4){
- printf("Bitwise Operator %s is identified\n", lex);
- }else if(first == 6){
- printf("Assignment Operator %s is identified\n", lex);
- }else if(first == 7){
- printf("Semicolon %s is identified\n", lex);
- }else if(first == 8){
- printf("Dot Operator %s is identified\n", lex);
- }else if(first == 9){
- printf("Comma , separator is identified\n");
- }
- return;
- }
- if(lex[0] == 'p'){
- int x = classify(lex[1]);
- if(lex[1] == 'u'){
- if(lex[2] == 'b'){
- if(lex[3] == 'l'){
- if(lex[4] == 'i'){
- if(lex[5] == 'c'){
- printf("Access Specifier : %s is identified\n");
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- return;
- }
- if(lex[1] == 'r'){
- if(lex[2] == 'o'){
- if(lex[3] == 't'){
- if(lex[4] == 'e'){
- if(lex[5] == 'c'){
- if(lex[6] == 't'){
- if(lex[7] == 'e'){
- if(lex[8] == 'd' && lex[9] == '\0'){
- printf("Access Specifier : %s is identified\n");
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else if(x == 2){
- printf("Identifier %s is identified\n", lex);
- }
- return;
- }
- if(lex[0] == 's'){
- if(lex[1] == 't'){
- if(lex[2] == 'a'){
- if(lex[3] == 't'){
- if(lex[4] == 'i'){
- if(lex[5] == 'c' && lex[6] == '\0'){
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- return;
- }
- if(lex[0] == 'c'){
- if(lex[1] == 'l'){
- if(lex[2] == 'a'){
- if(lex[3] == 's'){
- if(lex[4] == 's' && lex[5] == '\0'){
- printf("Keyword %s is identified\n", lex);
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else if(lex[1] == 'h'){
- if(lex[2] == 'a'){
- if(lex[3] == 'r' && lex[4] == '\0'){
- printf("Primitive datatype %s is identified\n", lex);
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- return;
- }
- if(lex[0] == 'i'){
- if(lex[1] == 'f' && lex[2] == '\0'){
- printf("Conditional %s statement is identified\n", lex);
- }else if(lex[1] == 'n'){
- if(lex[2] == 't' && n == 3){
- printf("Primitive datatype %s is identified\n", lex);
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }
- if(lex[0] == 'd'){
- if(lex[1] == 'o'){
- if(n == 2){
- printf("Loop construct %s is identified\n", lex);
- return;
- }
- if(lex[2] == 'u'){
- if(lex[3] == 'b'){
- if(lex[4] == 'l'){
- if(lex[5] == 'e' && lex[6] == '\0'){
- printf("Primitive datatype %s is identified\n", lex);
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- }else{
- printf("Identifier %s is identified\n", lex);
- }
- return;
- }
- if(first == 2){
- int idx = 0;
- int t = 1;
- while(lex[idx] != '\0') if(classify(lex[idx++]) != 2){ t = 0; break;}
- if(t){
- printf("Number %s is identified\n", lex);
- }else{
- if(idx > 0 && idx < n && lex[idx-1] == '.'){
- t = 1;
- while(lex[idx] != '\0') if(classify(lex[idx++]) != 2){ t = 0; break;}
- if(t){
- printf("Floating point number is identified\n");
- }else{
- if(idx > 0 && idx < n && lex[idx-1] == 'e'){
- t = 1;
- while(lex[idx] != '\0') if(classify(lex[idx++]) != 2){ t = 0; break;}
- if(t){
- printf("Scientific notation\n");
- }else{
- printf("Cannot determine this\n");
- }
- }else{
- printf("Cannot determine this\n");
- }
- }
- }else{
- printf("Cannot determine this %s\n", lex);
- }
- }
- }
- }
- int main(){
- while(1){
- int i = 0;
- char c ;
- while((c = getchar()) != '\n'){
- lex[i++] = c;
- }
- lex[i] = '\0';
- n = i;
- helper();
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement