summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: 1233fb1)
raw | patch | inline | side by side (parent: 1233fb1)
author | DeaDDooMER <deaddoomer@deadsoftware.ru> | |
Thu, 17 Aug 2017 22:52:52 +0000 (01:52 +0300) | ||
committer | DeaDDooMER <deaddoomer@deadsoftware.ru> | |
Thu, 17 Aug 2017 22:52:52 +0000 (01:52 +0300) |
notes | patch | blob | history | |
src/oberon.c | patch | blob | history |
index a07b3b5a196e2a6711a7b8162612eec4f91a3170..dfa95ca7286bb60f2f6d7f84055182fe293edacf 100644 (file)
--- a/notes
+++ b/notes
+- Не полная реализация модуля SYSTEM
- Не полная реализация модуля Strings
- Не полная реализация модуля Files
- Сделать проверку повторов в CASE.
Нужен другой тип округления?
- Нет счёта строк / столбцов (хрен с ними - у меня есть утилита tail!)
-- Нет модуля SYSTEM (на жабе он особо и не нужен)
- Нужны средства создания биндингов. На данный момент реализуемо как пустые модули.
- Любая ошибка фатальна
- Нет проверок переполнения в компилтайме.
diff --git a/src/oberon.c b/src/oberon.c
index 0bbeec188b3d5b4e7fafe506285a9d096cb809b7..d6aefad6c94437641293674e57a730b7de2656e0 100644 (file)
--- a/src/oberon.c
+++ b/src/oberon.c
static void
oberon_read_ident(oberon_context_t * ctx)
{
- int len = 0;
- int i = ctx -> code_index;
+ int start = ctx -> code_index;
- int c = ctx -> code[i];
- while(isalnum(c))
+ oberon_get_char(ctx);
+ while(isalnum(ctx -> c))
{
- i += 1;
- len += 1;
- c = ctx -> code[i];
+ oberon_get_char(ctx);
}
- char * ident = GC_MALLOC(len + 1);
- memcpy(ident, &ctx->code[ctx->code_index], len);
- ident[len] = 0;
+ int end = ctx -> code_index;
+
+ char * ident = GC_MALLOC(end - start + 1);
+ memcpy(ident, &ctx -> code[start], end - start);
+ ident[end - start] = 0;
- ctx -> code_index = i;
- ctx -> c = ctx -> code[i];
ctx -> string = ident;
ctx -> token = IDENT;
char * string = GC_MALLOC(end - start + 1);
strncpy(string, &ctx -> code[start], end - start);
- string[end] = 0;
+ string[end - start] = 0;
ctx -> token = STRING;
ctx -> string = string;