suppress compiler warnings
This commit is contained in:
parent
5e96d05fd1
commit
daac4dd7f3
4
Makefile
4
Makefile
|
@ -1,10 +1,12 @@
|
||||||
|
CC=gcc
|
||||||
|
|
||||||
all: build run
|
all: build run
|
||||||
|
|
||||||
build:
|
build:
|
||||||
cd src; \
|
cd src; \
|
||||||
yacc -d parse.y; \
|
yacc -d parse.y; \
|
||||||
lex scan.l
|
lex scan.l
|
||||||
gcc -Wall -o bin/picrin -I./include -lreadline src/main.c src/state.c src/gc.c src/pair.c src/port.c src/symbol.c src/value.c src/y.tab.c src/lex.yy.c src/bool.c src/vm.c src/init.c src/number.c
|
$(CC) -Wall -o bin/picrin -I./include -lreadline src/main.c src/state.c src/gc.c src/pair.c src/port.c src/symbol.c src/value.c src/y.tab.c src/lex.yy.c src/bool.c src/vm.c src/init.c src/number.c
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f src/y.tab.c src/y.tab.h src/lex.yy.c
|
rm -f src/y.tab.c src/y.tab.h src/lex.yy.c
|
||||||
|
|
10
src/main.c
10
src/main.c
|
@ -17,13 +17,17 @@ main()
|
||||||
{
|
{
|
||||||
pic_state *pic;
|
pic_state *pic;
|
||||||
char code[CODE_MAX_LENGTH] = "", line[LINE_MAX_LENGTH];
|
char code[CODE_MAX_LENGTH] = "", line[LINE_MAX_LENGTH];
|
||||||
char last_char, *read_line, *prompt;
|
char *read_line, *prompt;
|
||||||
int char_index;
|
|
||||||
pic_value v;
|
pic_value v;
|
||||||
struct pic_proc *proc;
|
struct pic_proc *proc;
|
||||||
int ai;
|
int ai;
|
||||||
bool r;
|
bool r;
|
||||||
|
|
||||||
|
#if ! PIC_ENABLE_READLINE
|
||||||
|
char last_char;
|
||||||
|
int char_index;
|
||||||
|
#endif
|
||||||
|
|
||||||
pic = pic_open();
|
pic = pic_open();
|
||||||
|
|
||||||
ai = pic_gc_arena_preserve(pic);
|
ai = pic_gc_arena_preserve(pic);
|
||||||
|
@ -89,9 +93,11 @@ main()
|
||||||
pic_gc_arena_restore(pic, ai);
|
pic_gc_arena_restore(pic, ai);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if ! PIC_ENABLE_READLINE
|
||||||
eof:
|
eof:
|
||||||
puts("");
|
puts("");
|
||||||
goto exit;
|
goto exit;
|
||||||
|
#endif
|
||||||
|
|
||||||
overflow:
|
overflow:
|
||||||
puts("** [fatal] line input overflow");
|
puts("** [fatal] line input overflow");
|
||||||
|
|
|
@ -25,7 +25,7 @@ struct parser_control {
|
||||||
%token <datum> tSYMBOL tNUMBER tBOOLEAN
|
%token <datum> tSYMBOL tNUMBER tBOOLEAN
|
||||||
|
|
||||||
%type <datum> datum simple_datum symbol compound_datum
|
%type <datum> datum simple_datum symbol compound_datum
|
||||||
%type <datum> number list list_data
|
%type <datum> number boolean list list_data
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
|
@ -111,7 +111,7 @@ incomplete_data
|
||||||
|
|
||||||
%%
|
%%
|
||||||
|
|
||||||
int
|
void
|
||||||
yyerror(struct parser_control *p, const char *msg)
|
yyerror(struct parser_control *p, const char *msg)
|
||||||
{
|
{
|
||||||
puts(msg);
|
puts(msg);
|
||||||
|
|
|
@ -7,11 +7,13 @@
|
||||||
struct parser_control {
|
struct parser_control {
|
||||||
pic_state *pic;
|
pic_state *pic;
|
||||||
pic_value value;
|
pic_value value;
|
||||||
|
bool incomp;
|
||||||
};
|
};
|
||||||
|
|
||||||
#define YY_DECL int yylex (struct parser_control *p)
|
#define YY_DECL int yylex (struct parser_control *p)
|
||||||
%}
|
%}
|
||||||
|
|
||||||
|
%option noinput
|
||||||
%option nounput
|
%option nounput
|
||||||
|
|
||||||
/* boolean */
|
/* boolean */
|
||||||
|
|
|
@ -43,7 +43,7 @@ pic_open()
|
||||||
pic->icapa = PIC_IREP_SIZE;
|
pic->icapa = PIC_IREP_SIZE;
|
||||||
|
|
||||||
/* globals */
|
/* globals */
|
||||||
pic->globals = (struct pic_value *)malloc(sizeof(pic_value) * PIC_GLOBALS_SIZE);
|
pic->globals = (pic_value *)malloc(sizeof(pic_value) * PIC_GLOBALS_SIZE);
|
||||||
pic->glen = 0;
|
pic->glen = 0;
|
||||||
pic->gcapa = PIC_GLOBALS_SIZE;
|
pic->gcapa = PIC_GLOBALS_SIZE;
|
||||||
|
|
||||||
|
|
10
src/value.c
10
src/value.c
|
@ -1,6 +1,7 @@
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
|
||||||
#include "picrin.h"
|
#include "picrin/value.h"
|
||||||
|
|
||||||
enum pic_tt
|
enum pic_tt
|
||||||
pic_type(pic_value v)
|
pic_type(pic_value v)
|
||||||
|
@ -9,15 +10,18 @@ pic_type(pic_value v)
|
||||||
case PIC_VTYPE_NIL:
|
case PIC_VTYPE_NIL:
|
||||||
return PIC_TT_NIL;
|
return PIC_TT_NIL;
|
||||||
case PIC_VTYPE_TRUE:
|
case PIC_VTYPE_TRUE:
|
||||||
|
return PIC_TT_BOOL;
|
||||||
case PIC_VTYPE_FALSE:
|
case PIC_VTYPE_FALSE:
|
||||||
return PIC_TT_BOOL;
|
return PIC_TT_BOOL;
|
||||||
case PIC_VTYPE_FLOAT:
|
|
||||||
return PIC_TT_FLOAT;
|
|
||||||
case PIC_VTYPE_UNDEF:
|
case PIC_VTYPE_UNDEF:
|
||||||
return PIC_TT_UNDEF;
|
return PIC_TT_UNDEF;
|
||||||
|
case PIC_VTYPE_FLOAT:
|
||||||
|
return PIC_TT_FLOAT;
|
||||||
case PIC_VTYPE_HEAP:
|
case PIC_VTYPE_HEAP:
|
||||||
return ((struct pic_object *)v.u.data)->tt;
|
return ((struct pic_object *)v.u.data)->tt;
|
||||||
}
|
}
|
||||||
|
/* logic flaw (suppress warnings gcc will emit) */
|
||||||
|
abort();
|
||||||
}
|
}
|
||||||
|
|
||||||
pic_value
|
pic_value
|
||||||
|
|
13
src/vm.c
13
src/vm.c
|
@ -143,6 +143,9 @@ print_irep(pic_state *pic, struct pic_irep *irep)
|
||||||
printf("## irep %p [clen = %zd, ccapa = %zd]\n", irep, irep->clen, irep->ccapa);
|
printf("## irep %p [clen = %zd, ccapa = %zd]\n", irep, irep->clen, irep->ccapa);
|
||||||
for (i = 0; i < irep->clen; ++i) {
|
for (i = 0; i < irep->clen; ++i) {
|
||||||
switch (irep->code[i].insn) {
|
switch (irep->code[i].insn) {
|
||||||
|
case OP_POP:
|
||||||
|
puts("OP_POP");
|
||||||
|
break;
|
||||||
case OP_PUSHNIL:
|
case OP_PUSHNIL:
|
||||||
puts("OP_PUSHNIL");
|
puts("OP_PUSHNIL");
|
||||||
break;
|
break;
|
||||||
|
@ -375,6 +378,11 @@ pic_gen(pic_state *pic, struct pic_irep *irep, pic_value obj, struct pic_env *en
|
||||||
irep->clen++;
|
irep->clen++;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case PIC_TT_PROC:
|
||||||
|
case PIC_TT_UNDEF:
|
||||||
|
case PIC_TT_PORT: {
|
||||||
|
pic_raise(pic, "invalid expression given");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,7 +439,7 @@ pic_gen_lambda(pic_state *pic, pic_value obj, struct pic_env *env)
|
||||||
pic_free(pic, inner_env);
|
pic_free(pic, inner_env);
|
||||||
|
|
||||||
#if VM_DEBUG
|
#if VM_DEBUG
|
||||||
printf("LAMBDA_%d:\n", pic->ilen);
|
printf("LAMBDA_%zd:\n", pic->ilen);
|
||||||
print_irep(pic, irep);
|
print_irep(pic, irep);
|
||||||
puts("");
|
puts("");
|
||||||
#endif
|
#endif
|
||||||
|
@ -476,6 +484,7 @@ pic_codegen(pic_state *pic, pic_value obj, struct pic_env *env)
|
||||||
|
|
||||||
#define PUSH(v) (*++pic->sp = (v))
|
#define PUSH(v) (*++pic->sp = (v))
|
||||||
#define POP() (*pic->sp--)
|
#define POP() (*pic->sp--)
|
||||||
|
#define POPN(i) ((void)(pic->sp-=i))
|
||||||
|
|
||||||
#define PUSHCI() (++pic->ci)
|
#define PUSHCI() (++pic->ci)
|
||||||
#define POPCI() (pic->ci--)
|
#define POPCI() (pic->ci--)
|
||||||
|
@ -506,7 +515,7 @@ pic_run(pic_state *pic, struct pic_proc *proc, pic_value args)
|
||||||
|
|
||||||
VM_LOOP {
|
VM_LOOP {
|
||||||
CASE(OP_POP) {
|
CASE(OP_POP) {
|
||||||
POP();
|
POPN(1);
|
||||||
NEXT;
|
NEXT;
|
||||||
}
|
}
|
||||||
CASE(OP_PUSHNIL) {
|
CASE(OP_PUSHNIL) {
|
||||||
|
|
Loading…
Reference in New Issue