2021-02-07 15:40:00 +08:00
|
|
|
/*
|
|
|
|
* Copyright (c) 2021 Thakee Nathees
|
|
|
|
* Licensed under: MIT License
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
#define CLOGGER_IMPLEMENT
|
|
|
|
#include "clogger.h"
|
|
|
|
|
2021-02-08 02:30:29 +08:00
|
|
|
#include "miniscript.h"
|
|
|
|
|
2021-02-07 15:40:00 +08:00
|
|
|
// FIXME:
|
|
|
|
#include "../src/common.h"
|
|
|
|
#include "../src/var.h"
|
|
|
|
#include "../src/vm.h"
|
|
|
|
|
|
|
|
#include "../src/types/gen/string_buffer.h"
|
|
|
|
#include "../src/types/gen/byte_buffer.h"
|
|
|
|
|
2021-02-08 02:30:29 +08:00
|
|
|
void errorPrint(MSVM* vm, MSErrorType type, const char* file, int line,
|
|
|
|
const char* message) {
|
|
|
|
printf("Error:%s\n\tat %s:%i\n", message, file, line);
|
|
|
|
}
|
|
|
|
|
|
|
|
void writeFunction(MSVM* vm, const char* text) {
|
|
|
|
printf("%s", text);
|
|
|
|
}
|
|
|
|
|
|
|
|
void loadScriptDone(MSVM* vm, const char* path, void* user_data) {
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
|
|
|
|
MSLoadScriptResult loadScript(MSVM* vm, const char* path) {
|
|
|
|
MSLoadScriptResult result;
|
|
|
|
result.is_failed = false;
|
|
|
|
|
2021-02-09 16:21:10 +08:00
|
|
|
result.source = ""
|
|
|
|
"if -1+2 * 3\n"
|
|
|
|
"end\n"
|
|
|
|
;
|
2021-02-08 02:30:29 +08:00
|
|
|
return result;
|
|
|
|
|
|
|
|
// FIXME:
|
|
|
|
FILE* f = fopen(path, "r");
|
|
|
|
if (f == NULL) {
|
|
|
|
result.is_failed = true;
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
char* buff = (char*)malloc(1024);
|
|
|
|
int i = 0;
|
|
|
|
char c;
|
|
|
|
while (c = fgetc(f)) {
|
|
|
|
buff[i++] = c;
|
|
|
|
}
|
|
|
|
result.source = buff;
|
|
|
|
fclose(f);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
2021-02-07 15:40:00 +08:00
|
|
|
int main() {
|
|
|
|
clogger_init();
|
|
|
|
//clogger_logfError("[DummyError] dummy error\n");
|
|
|
|
//clogger_logfWarning("[DummyWarning] dummy warning\n");
|
|
|
|
|
2021-02-08 02:30:29 +08:00
|
|
|
//parseError(parser, "A function named %.*s already exists at %s:%s", length, start, file, line);
|
|
|
|
|
2021-02-07 15:40:00 +08:00
|
|
|
FILE* fp = fopen("test.ms", "r");
|
|
|
|
if (fp != NULL) {
|
|
|
|
char buff[1024];
|
|
|
|
size_t read = fread(buff, 1, sizeof(buff), fp);
|
|
|
|
buff[read] = '\0';
|
|
|
|
printf("%s\n", buff);
|
|
|
|
fclose(fp);
|
|
|
|
} else {
|
|
|
|
clogger_logfError("[Error] cannot open file test.ms\n");
|
|
|
|
}
|
|
|
|
|
2021-02-08 02:30:29 +08:00
|
|
|
MSVM* vm = (MSVM*)malloc(sizeof(MSVM));
|
|
|
|
memset(vm, 0, sizeof(MSVM));
|
2021-02-07 15:40:00 +08:00
|
|
|
|
|
|
|
ByteBuffer buff;
|
|
|
|
byteBufferInit(&buff);
|
|
|
|
|
|
|
|
byteBufferWrite(&buff, vm, 'a');
|
|
|
|
byteBufferWrite(&buff, vm, 'b');
|
|
|
|
byteBufferWrite(&buff, vm, 'c');
|
|
|
|
|
|
|
|
String* str = newString(vm, (const char*)buff.data, 3);
|
|
|
|
Var vstr = VAR_OBJ(&str->_super);
|
|
|
|
if (strcmp(AS_CSTRING(vstr), "abc") != 0) {
|
|
|
|
clogger_logfError("[Error] something went wrong.\n");
|
|
|
|
}
|
|
|
|
|
2021-02-08 02:30:29 +08:00
|
|
|
MSConfiguration config;
|
|
|
|
config.error_fn = errorPrint;
|
|
|
|
config.write_fn = writeFunction;
|
|
|
|
config.load_script_fn = loadScript;
|
|
|
|
config.load_script_done_fn = loadScriptDone;
|
|
|
|
vm->config = config;
|
|
|
|
|
|
|
|
compileSource(vm, "../some/path/file.ms");
|
2021-02-07 15:40:00 +08:00
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|