work in progess
This commit is contained in:
+13
-13
@@ -19,10 +19,10 @@
|
||||
#define RES_OK 0
|
||||
#define RES_ERR -1
|
||||
|
||||
#define POS1TYPE TOKEN_WORD
|
||||
#define POS2TYPE TOKEN_OPER
|
||||
#define POS3TYPE TOKEN_WORD
|
||||
#define POS4TYPE TOKEN_COMM
|
||||
//#define POS1TYPE TLEX_TOKEN_WORD
|
||||
//#define POS2TYPE TLEX_TOKEN_OPER
|
||||
//#define POS3TYPE TLEX_TOKEN_WORD
|
||||
//#define POS4TYPE TLEX_TOKEN_COMM
|
||||
|
||||
static char* strcopy(char* src) {
|
||||
size_t srcsize = strlen(src) + 1;
|
||||
@@ -62,25 +62,25 @@ int tccomp_parse(tccomp_t * comp) {
|
||||
|
||||
while (true) {
|
||||
toktype = tclexer_get_token(lexer, token, MAX_TOK_SIZE);
|
||||
if (toktype == TOKEN_SPACE) {
|
||||
if (toktype == TLEX_TOKEN_SPACE) {
|
||||
continue;
|
||||
}
|
||||
if (toktype == TOKEN_COMM) {
|
||||
if (toktype == TLEX_TOKEN_COMM) {
|
||||
continue;
|
||||
}
|
||||
//printf("tok=%d pos=%d line=%d [%s]\n", toktype, comp->pos, comp->lnum, token);
|
||||
|
||||
if (toktype == TOKEN_NEWLN) {
|
||||
if (toktype == TLEX_TOKEN_NEWLN) {
|
||||
comp->lnum++;
|
||||
}
|
||||
|
||||
switch (comp->pos) {
|
||||
case 0:{
|
||||
if (toktype == TOKEN_NEWLN) {
|
||||
if (toktype == TLEX_TOKEN_NEWLN) {
|
||||
comp->pos = 0;
|
||||
break;
|
||||
}
|
||||
if (toktype != TOKEN_WORD) {
|
||||
if (toktype != TLEX_TOKEN_WORD) {
|
||||
return -1;
|
||||
}
|
||||
comp->pos++;
|
||||
@@ -88,14 +88,14 @@ int tccomp_parse(tccomp_t * comp) {
|
||||
break;
|
||||
}
|
||||
case 1:{
|
||||
if (toktype != TOKEN_OPER) {
|
||||
if (toktype != TLEX_TOKEN_OPER) {
|
||||
return -1;
|
||||
}
|
||||
comp->pos++;
|
||||
break;
|
||||
}
|
||||
case 2:{
|
||||
if (toktype != TOKEN_WORD) {
|
||||
if (toktype != TLEX_TOKEN_WORD) {
|
||||
return -1;
|
||||
}
|
||||
comp->pos++;
|
||||
@@ -103,7 +103,7 @@ int tccomp_parse(tccomp_t * comp) {
|
||||
break;
|
||||
}
|
||||
case 3:{
|
||||
if (toktype != TOKEN_NEWLN && toktype != TOKEN_ENDFL) {
|
||||
if (toktype != TLEX_TOKEN_NEWLN && toktype != TLEX_TOKEN_ENDFL) {
|
||||
return -1;
|
||||
}
|
||||
comp->pos = 0;
|
||||
@@ -114,7 +114,7 @@ int tccomp_parse(tccomp_t * comp) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (toktype == TOKEN_ENDFL)
|
||||
if (toktype == TLEX_TOKEN_ENDFL)
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
||||
+7
-7
@@ -78,7 +78,7 @@ int tclexer_get_token(tclexer_t * lexer, char* token, int maxsize) {
|
||||
|
||||
switch (lexer->context) {
|
||||
case LEXCONT_ENDFL:{
|
||||
return TOKEN_ENDFL;
|
||||
return TLEX_TOKEN_ENDFL;
|
||||
}
|
||||
case LEXCONT_WORD:{
|
||||
int newcontext = LEXCONT_WORD;
|
||||
@@ -108,7 +108,7 @@ int tclexer_get_token(tclexer_t * lexer, char* token, int maxsize) {
|
||||
if (newcontext != lexer->context) {
|
||||
lexer->context = newcontext;
|
||||
token[lexer->pos++] = '\0';
|
||||
return TOKEN_WORD;
|
||||
return TLEX_TOKEN_WORD;
|
||||
}
|
||||
token[lexer->pos++] = lexer->letter;
|
||||
break;
|
||||
@@ -129,7 +129,7 @@ int tclexer_get_token(tclexer_t * lexer, char* token, int maxsize) {
|
||||
if (newcontext != lexer->context) {
|
||||
token[lexer->pos++] = '\0';
|
||||
lexer->context = newcontext;
|
||||
return TOKEN_COMM;
|
||||
return TLEX_TOKEN_COMM;
|
||||
}
|
||||
token[lexer->pos++] = lexer->letter;
|
||||
break;
|
||||
@@ -162,7 +162,7 @@ int tclexer_get_token(tclexer_t * lexer, char* token, int maxsize) {
|
||||
if (newcontext != lexer->context) {
|
||||
lexer->context = newcontext;
|
||||
strcpy(token, "SPACE");
|
||||
return TOKEN_SPACE;
|
||||
return TLEX_TOKEN_SPACE;
|
||||
}
|
||||
token[lexer->pos++] = lexer->letter;
|
||||
break;
|
||||
@@ -195,7 +195,7 @@ int tclexer_get_token(tclexer_t * lexer, char* token, int maxsize) {
|
||||
if (newcontext != lexer->context) {
|
||||
lexer->context = newcontext;
|
||||
strcpy(token, "=");
|
||||
return TOKEN_OPER;
|
||||
return TLEX_TOKEN_OPER;
|
||||
}
|
||||
token[lexer->pos++] = lexer->letter;
|
||||
break;
|
||||
@@ -224,7 +224,7 @@ int tclexer_get_token(tclexer_t * lexer, char* token, int maxsize) {
|
||||
if (newcontext != lexer->context) {
|
||||
lexer->context = newcontext;
|
||||
strcpy(token, "NL");
|
||||
return TOKEN_NEWLN;
|
||||
return TLEX_TOKEN_NEWLN;
|
||||
}
|
||||
token[lexer->pos++] = lexer->letter;
|
||||
break;
|
||||
@@ -267,7 +267,7 @@ int tclexer_get_token(tclexer_t * lexer, char* token, int maxsize) {
|
||||
}
|
||||
lexer->letter = bstream_getc(lexer->stream);
|
||||
}
|
||||
return TOKEN_ENDFL;
|
||||
return TLEX_TOKEN_ENDFL;
|
||||
}
|
||||
|
||||
void tclexer_destroy(tclexer_t * lexer) {
|
||||
|
||||
+7
-7
@@ -16,13 +16,13 @@ typedef struct {
|
||||
|
||||
#define MAX_TOK_SIZE 1024
|
||||
|
||||
#define TOKEN_NULL 0
|
||||
#define TOKEN_WORD 1
|
||||
#define TOKEN_SPACE 2
|
||||
#define TOKEN_COMM 3
|
||||
#define TOKEN_OPER 4
|
||||
#define TOKEN_ENDFL 5
|
||||
#define TOKEN_NEWLN 7
|
||||
#define TLEX_TOKEN_NULL 0
|
||||
#define TLEX_TOKEN_WORD 1
|
||||
#define TLEX_TOKEN_SPACE 2
|
||||
#define TLEX_TOKEN_COMM 3
|
||||
#define TLEX_TOKEN_OPER 4
|
||||
#define TLEX_TOKEN_ENDFL 5
|
||||
#define TLEX_TOKEN_NEWLN 7
|
||||
|
||||
tclexer_t* new_tclexer(bstream_t * stream);
|
||||
void tclexer_init(tclexer_t * tclexer, bstream_t * stream);
|
||||
|
||||
Reference in New Issue
Block a user