diff options
| author | Paul Buetow <paul@buetow.org> | 2008-08-25 18:48:28 +0000 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2008-08-25 18:48:28 +0000 |
| commit | ec9899c0399f42473d311c7d0a46769d3d933c06 (patch) | |
| tree | 8396b366b5e1b665f60f5502d484985b0950a94e /src/core/scanner.c | |
| parent | cf9029ee902eda028f3efcb77e8c2aed25205b94 (diff) | |
bugs fixed, initial array
Diffstat (limited to 'src/core/scanner.c')
| -rw-r--r-- | src/core/scanner.c | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/src/core/scanner.c b/src/core/scanner.c index 2e599eb..49026c2 100644 --- a/src/core/scanner.c +++ b/src/core/scanner.c @@ -37,7 +37,7 @@ #include <ctype.h> #include <string.h> -const char _TOKENENDS[] = "})+-*/={(<>;:,.!"; +const char _TOKENENDS[] = "}])+-*/={([<>;:,.!"; #define _ADD_SEMICOLON_INDEX 2 int _CODESTR_INDEX = 0; @@ -70,6 +70,7 @@ scanner_new(List *p_list_token, Tupel *p_tupel_argv) { p_scanner->i_current_pos_nr = 0; p_scanner->i_num_tokenends = strlen(_TOKENENDS); + p_scanner->tt_last = TT_NONE; return p_scanner; } @@ -208,7 +209,7 @@ scanner_run(Fype *p_fype) { } { int i_num_nl = 0; - _Bool flag = false; + //_Bool flag = false; do { c = _scanner_get_next_char(p_scanner); if ( c == '\n' ) { @@ -226,7 +227,7 @@ scanner_run(Fype *p_fype) { c_token[i_token_len-1] = '"'; } else { - flag = true; + //flag = true; break; } @@ -244,8 +245,8 @@ scanner_run(Fype *p_fype) { if (i_num_nl) p_scanner->i_current_line_nr += i_num_nl; - if (flag) - _add_semicolon_to_list(p_scanner); + //if (flag) + // _add_semicolon_to_list(p_scanner); } break; @@ -267,17 +268,19 @@ scanner_run(Fype *p_fype) { default: if (i_token_len) { + TokenType tt_cur = scanner_get_tt_cur(c_token); + if (tt_cur == TT_PARANT_CR && p_scanner->tt_last == TT_STRING) + _add_semicolon_to_list(p_scanner); + char d = c_token[i_token_len-1]; if ((!isalpha(d) && !isdigit(d) /*&& d != '-'*/) && (isalpha(c) || isdigit(c))) { - TokenType tt_cur = scanner_get_tt_cur(c_token); scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); } else { for (int i = 0; i < p_scanner->i_num_tokenends; ++i) { if (_TOKENENDS[i] == c) { - TokenType tt_cur = scanner_get_tt_cur(c_token); scanner_add_token(p_scanner, &c_token, &i_token_len, tt_cur); if (i < _ADD_SEMICOLON_INDEX) _add_semicolon_to_list(p_scanner); @@ -342,6 +345,8 @@ scanner_add_token(Scanner *p_scanner, char **cc_token, int *p_token_len, *cc_token = malloc(sizeof(char)); (*cc_token)[0] = 0; *p_token_len = 0; + + p_scanner->tt_last = tt_cur; } TokenType |
