mirror of
https://github.com/samsonjs/lake.git
synced 2026-04-27 14:57:43 +00:00
more minor fixes
This commit is contained in:
parent
ebf84f5761
commit
2d55d70770
11 changed files with 35 additions and 35 deletions
4
bool.h
4
bool.h
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _BOOL_H
|
#ifndef _LAKE_BOOL_H
|
||||||
#define _BOOL_H 1
|
#define _LAKE_BOOL_H 1
|
||||||
|
|
||||||
#include "lake.h"
|
#include "lake.h"
|
||||||
|
|
||||||
|
|
|
||||||
2
env.c
2
env.c
|
|
@ -100,7 +100,7 @@ LakeVal *env_eval(Env *env, LakeVal *expr)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf("unrecognized value, type %d, size %lu bytes", expr->type, expr->size);
|
printf("unrecognized value, type %d, size %Zu bytes", expr->type, expr->size);
|
||||||
die("we don't eval that around here!");
|
die("we don't eval that around here!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
4
env.h
4
env.h
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _ENV_H
|
#ifndef _LAKE_ENV_H
|
||||||
#define _ENV_H 1
|
#define _LAKE_ENV_H 1
|
||||||
|
|
||||||
#include "hashtab.h"
|
#include "hashtab.h"
|
||||||
|
|
||||||
|
|
|
||||||
4
int.h
4
int.h
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _INT_H
|
#ifndef _LAKE_INT_H
|
||||||
#define _INT_H 1
|
#define _LAKE_INT_H 1
|
||||||
|
|
||||||
#include "lake.h"
|
#include "lake.h"
|
||||||
|
|
||||||
|
|
|
||||||
2
lake.c
2
lake.c
|
|
@ -150,7 +150,7 @@ char *repr(LakeVal *expr)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
printf("unrecognized value, type %d, size %lu bytes", expr->type, expr->size);
|
printf("unrecognized value, type %d, size %Zu bytes", expr->type, expr->size);
|
||||||
s = strdup("unrecognized value");
|
s = strdup("unrecognized value");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
8
lake.h
8
lake.h
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _LAKE_H
|
#ifndef _LAKE_LAKE_H
|
||||||
#define _LAKE_H 1
|
#define _LAKE_LAKE_H 1
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
|
@ -30,8 +30,8 @@ typedef struct lake_val LakeVal;
|
||||||
LakeVal *NIL;
|
LakeVal *NIL;
|
||||||
typedef LakeVal *NILP;
|
typedef LakeVal *NILP;
|
||||||
|
|
||||||
#define VAL_SIZE(x) (x != NULL ? x->size : NIL->size)
|
#define VAL_SIZE(x) (x != NULL ? VAL(x)->size : NIL->size)
|
||||||
#define VAL_OR_NIL(x) (x != NULL ? (LakeVal *)x : NIL)
|
#define VAL_OR_NIL(x) (x != NULL ? VAL(x) : NIL)
|
||||||
|
|
||||||
struct lake_sym {
|
struct lake_sym {
|
||||||
LakeVal base;
|
LakeVal base;
|
||||||
|
|
|
||||||
4
list.h
4
list.h
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _LIST_H
|
#ifndef _LAKE_LIST_H
|
||||||
#define _LIST_H 1
|
#define _LAKE_LIST_H 1
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "lake.h"
|
#include "lake.h"
|
||||||
|
|
|
||||||
30
parse.c
30
parse.c
|
|
@ -18,7 +18,7 @@ LakeVal *parse_expr(char *s, size_t n)
|
||||||
Ctx ctx = { s, n, 0 };
|
Ctx ctx = { s, n, 0 };
|
||||||
LakeVal *result = _parse_expr(&ctx);
|
LakeVal *result = _parse_expr(&ctx);
|
||||||
if (ctx.i < ctx.n) {
|
if (ctx.i < ctx.n) {
|
||||||
printf("ignoring %lu trailing chars: %s\n", ctx.n - ctx.i - 1, ctx.s + ctx.i);
|
printf("ignoring %Zu trailing chars: %s\n", ctx.n - ctx.i - 1, ctx.s + ctx.i);
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
@ -121,7 +121,7 @@ static char *parse_while(Ctx *ctx, int (*is_valid)(char))
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
static LakeInt *parse_int(Ctx *ctx)
|
static LakeVal *parse_int(Ctx *ctx)
|
||||||
{
|
{
|
||||||
int n = 0;
|
int n = 0;
|
||||||
char c = peek(ctx);
|
char c = peek(ctx);
|
||||||
|
|
@ -134,7 +134,7 @@ static LakeInt *parse_int(Ctx *ctx)
|
||||||
n += c - '0';
|
n += c - '0';
|
||||||
consume1(ctx);
|
consume1(ctx);
|
||||||
}
|
}
|
||||||
return int_from_c(sign * n);
|
return VAL(int_from_c(sign * n));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_sym_char(char c)
|
static int is_sym_char(char c)
|
||||||
|
|
@ -142,7 +142,7 @@ static int is_sym_char(char c)
|
||||||
return is_letter(c) || is_symbol(c) || is_digit(c);
|
return is_letter(c) || is_symbol(c) || is_digit(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
static LakeSym *parse_sym(Ctx *ctx)
|
static LakeVal *parse_sym(Ctx *ctx)
|
||||||
{
|
{
|
||||||
static int size = 1024;
|
static int size = 1024;
|
||||||
char s[size];
|
char s[size];
|
||||||
|
|
@ -154,7 +154,7 @@ static LakeSym *parse_sym(Ctx *ctx)
|
||||||
}
|
}
|
||||||
s[i] = 0;
|
s[i] = 0;
|
||||||
/* TODO: check for #t and #f and return true boolean values (LakeBool *) */
|
/* TODO: check for #t and #f and return true boolean values (LakeBool *) */
|
||||||
return sym_intern(s);
|
return VAL(sym_intern(s));
|
||||||
}
|
}
|
||||||
|
|
||||||
static char escape_char(char c)
|
static char escape_char(char c)
|
||||||
|
|
@ -181,7 +181,7 @@ static char escape_char(char c)
|
||||||
return c;
|
return c;
|
||||||
}
|
}
|
||||||
|
|
||||||
static LakeStr *parse_str(Ctx *ctx)
|
static LakeVal *parse_str(Ctx *ctx)
|
||||||
{
|
{
|
||||||
size_t n = 8;
|
size_t n = 8;
|
||||||
size_t i = 0;
|
size_t i = 0;
|
||||||
|
|
@ -209,10 +209,10 @@ static LakeStr *parse_str(Ctx *ctx)
|
||||||
ch(ctx, '"');
|
ch(ctx, '"');
|
||||||
LakeStr *str = str_from_c(s);
|
LakeStr *str = str_from_c(s);
|
||||||
free(s);
|
free(s);
|
||||||
return str;
|
return VAL(str);
|
||||||
}
|
}
|
||||||
|
|
||||||
static LakeList* parse_list(Ctx *ctx)
|
static LakeVal* parse_list(Ctx *ctx)
|
||||||
{
|
{
|
||||||
LakeList *list = list_make();
|
LakeList *list = list_make();
|
||||||
ch(ctx, '(');
|
ch(ctx, '(');
|
||||||
|
|
@ -225,7 +225,7 @@ static LakeList* parse_list(Ctx *ctx)
|
||||||
list_append(list, _parse_expr(ctx));
|
list_append(list, _parse_expr(ctx));
|
||||||
}
|
}
|
||||||
ch(ctx, ')');
|
ch(ctx, ')');
|
||||||
return list;
|
return VAL(list);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_not_newline(char c)
|
static int is_not_newline(char c)
|
||||||
|
|
@ -244,26 +244,26 @@ static LakeVal *_parse_expr(Ctx *ctx)
|
||||||
char c = peek(ctx);
|
char c = peek(ctx);
|
||||||
/*char d =*/ peek2(ctx);
|
/*char d =*/ peek2(ctx);
|
||||||
if (c >= '0' && c <= '9') {
|
if (c >= '0' && c <= '9') {
|
||||||
result = (LakeVal *)parse_int(ctx);
|
result = VAL(parse_int(ctx));
|
||||||
}
|
}
|
||||||
/* TODO: chars
|
/* TODO: chars
|
||||||
else if (c == '#' && d == '\\') {
|
else if (c == '#' && d == '\\') {
|
||||||
result = (LakeVal *)parse_char(ctx);
|
result = parse_char(ctx);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
else if (is_letter(c) || is_symbol(c)) {
|
else if (is_letter(c) || is_symbol(c)) {
|
||||||
result = (LakeVal *)parse_sym(ctx);
|
result = parse_sym(ctx);
|
||||||
}
|
}
|
||||||
else if (c == '"') {
|
else if (c == '"') {
|
||||||
result = (LakeVal *)parse_str(ctx);
|
result = parse_str(ctx);
|
||||||
}
|
}
|
||||||
/* TODO: quote
|
/* TODO: quote
|
||||||
else if (c == '\'') {
|
else if (c == '\'') {
|
||||||
result = (LakeVal *)parse_quoted(ctx);
|
result = parse_quoted(ctx);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
else if (c == '(') {
|
else if (c == '(') {
|
||||||
result = (LakeVal *)parse_list(ctx);
|
result = parse_list(ctx);
|
||||||
}
|
}
|
||||||
else if (c == ';') {
|
else if (c == ';') {
|
||||||
parse_comment(ctx);
|
parse_comment(ctx);
|
||||||
|
|
|
||||||
4
parse.h
4
parse.h
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _PARSE_H
|
#ifndef _LAKE_PARSE_H
|
||||||
#define _PARSE_H 1
|
#define _LAKE_PARSE_H 1
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "lake.h"
|
#include "lake.h"
|
||||||
|
|
|
||||||
4
string.h
4
string.h
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _STRING_H
|
#ifndef _LAKE_STRING_H
|
||||||
#define _STRING_H 1
|
#define _LAKE_STRING_H 1
|
||||||
|
|
||||||
#include "lake.h"
|
#include "lake.h"
|
||||||
|
|
||||||
|
|
|
||||||
4
sym.h
4
sym.h
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef _SYM_H
|
#ifndef _LAKE_SYM_H
|
||||||
#define _SYM_H 1
|
#define _LAKE_SYM_H 1
|
||||||
|
|
||||||
#include "lake.h"
|
#include "lake.h"
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue