Lexer_in_C
// Lexer_in_C.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "tape_t.h"
#include "string_t.h"
#include "Lexer.h"
void debug_lex(int token)
{
switch (token)
{
case '(':
printf("(\n");
break;
case ')':
printf(")\n");
break;
case '{':
printf("{\n");
break;
case '}':
printf("}\n");
break;
case '\'':
printf("\'\n");
break;
case '"':
printf("\"\n");
break;
case ';':
printf(";\n");
break;
case ELIPPSIS:
printf("ELIPPSIS\n");
break;
case ADD_ASSIGN:
printf("ADD_ASSIGN\n");
break;
case INC_OP:
printf("INC_OP\n");
break;
case SUB_ASSIGN:
printf("SUB_ASSIGN\n");
break;
case DEC_OP:
printf("DEC_OP\n");
break;
case DIV_ASSIGN:
printf("DIV_ASSIGN\n");
break;
case MUL_ASSIGN:
printf("MUL_ASSIGN\n");
break;
case MOD_ASSIGN:
printf("MOD_ASSIGN\n");
break;
case AND_ASSIGN:
printf("AND_ASSIGN\n");
break;
case XOR_ASSIGN:
printf("XOR_ASSIGN\n");
break;
case OR_ASSIGN:
printf("OR_ASSIGN\n");
break;
case NOT_ASSIGN:
printf("NOT_ASSIGN\n");
break;
case RIGHT_OP:
printf("RIGHT_OP\n");
break;
case LEFT_OP:
printf("LEFT_OP\n");
break;
case EQ_EQ_COND:
printf("EQ_EQ_COND\n");
break;
case ID:
printf("ID\n");
break;
case STROBJ:
printf("STROBJ\n");
break;
case INT_CONST:
printf("INT_CONST\n");
break;
case F_CONST:
printf("F_CONST\n");
break;
case ERR:
printf("ERR\n");
break;
case NOT_FOUND:
printf("NOT_FOUND\n");
break;
/* Keyword token */
case AUTO:
printf("AUTO\n");
break;
case BREAK:
printf("BREAK\n");
break;
case CASE:
printf("CASE\n");
break;
case CHAR:
printf("CHAR\n");
break;
case CONST:
printf("CONST\n");
break;
case CONTINUE:
printf("CONTINUE\n");
break;
case DEFAULT:
printf("DEFAULT\n");
break;
case DO:
printf("DO\n");
break;
case DOUBLE:
printf("DOUBLE\n");
break;
case ELSE:
printf("ELSE\n");
break;
case ENUM:
printf("ENUM\n");
break;
case EXTERN:
printf("EXTERN\n");
break;
case FLOAT:
printf("FLOAT\n");
break;
case FOR:
printf("FOR\n");
break;
case GOTO:
printf("GOTO\n");
break;
case IF:
printf("IF\n");
break;
case INT:
printf("INT\n");
break;
case LONG:
printf("LONG\n");
break;
case REGISTER:
printf("REGISTER\n");
break;
case RETURN:
printf("RETURN\n");
break;
case SHORT:
printf("SHORT\n");
break;
case SIGNED:
printf("SIGNED\n");
break;
case SIZEOF:
printf("SIZEOF\n");
break;
case STATIC:
printf("STATIC\n");
break;
case STRUCT:
printf("STRUCT\n");
break;
case SWITCH:
printf("SWITCH\n");
break;
case TYPEDEF:
printf("TYPEDEF\n");
break;
case UNION:
printf("UNION\n");
break;
case UNSIGNED:
printf("UNSIGNED\n");
break;
case VOID:
printf("VOID\n");
break;
case VOLATILE:
printf("VOLATILE\n");
break;
case WHILE:
printf("WHILE\n");
break;
}
}
int _tmain(int argc, _TCHAR* argv[])
{
char *tape = {};
int t = 0;
tape = (char*)calloc(1, sizeof(char));
tape_read("C:\\comp\\stmt.c", &tape);
int file_length;
string_t str = string_file(tape,&file_length);
int i = 0;
string_t meta = string("\0");
// printf("entire file length is :%d\n", file_length);
for (i = 0; t != EOF;)
{
printf("Returned token is:%d\n", t = getTokenByPos(str, &i, meta));
printf("pos is:%d\n", i);
//printf("meta data is:%s\n", meta);
// printf("file line no is :%d %d\n", i, file_length);
debug_lex(t);
}
return 0;
}
Comments
Post a Comment