projects
/
mes.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
mescc: Have ungetc remember 2 positions.
[mes.git]
/
module
/
mes
/
libc.mes
diff --git
a/module/mes/libc.mes
b/module/mes/libc.mes
index 0502987554ac8411877bad4936df047ef034cb97..4f5757827304debc107f3fbac5098bd1a625b87b 100644
(file)
--- a/
module/mes/libc.mes
+++ b/
module/mes/libc.mes
@@
-56,9
+56,6
@@
strlen (char const* s)
(define getchar
(let* ((ast (with-input-from-string
"
(define getchar
(let* ((ast (with-input-from-string
"
-int g_stdin;
-int ungetc_char = -1;
-
#if 0
int
getchar ()
#if 0
int
getchar ()
@@
-71,6
+68,9
@@
getchar ()
}
#endif
}
#endif
+int g_stdin = 0;
+int ungetc_char = -1;
+char ungetc_buf[2];
int
getchar ()
{
int
getchar ()
{
@@
-84,8
+84,11
@@
getchar ()
}
else
{
}
else
{
- i = ungetc_char;
- ungetc_char = -1;
+ //FIXME
+ //i = ungetc_buf[ungetc_char--];
+ i = ungetc_buf[ungetc_char];
+ //ungetc_char--;
+ ungetc_char = ungetc_char - 1;
}
if (i < 0) i += 256;
return i;
}
if (i < 0) i += 256;
return i;
@@
-121,8
+124,13
@@
assert_fail (char* s)
int
ungetc (int c, int fd)
{
int
ungetc (int c, int fd)
{
- assert (ungetc_char == -1);
- ungetc_char = c;
+ //FIXME
+ //assert (ungetc_char < 2);
+ assert (ungetc_char == -1 || ungetc_char < 2);
+ //FIXME
+ //ungetc_buf[++ungetc_char] = c;
+ ungetc_char++;
+ ungetc_buf[ungetc_char] = c;
return c;
}
"
return c;
}
"