Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Zig wrapper for Gravity Language

License

suirad/zig-gravity

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Zig wrapper for Gravity Lang

Wip wrapper and compiler for Gravity Language

Example:

const std = @import("std");
const gravity = @import("gravity");

pub fn default_report_error(vm: ?*gravity.c.gravity_vm,
        err_type: c_uint, 
        msg: [*c]const u8,
        desc: gravity.c.error_desc_t,
        xdata: ?*anyopaque) callconv(.C) void {
    _ = vm;
    _ = err_type;
    _ = msg;
    _ = desc;
    _ = xdata;
    if (msg) |m| {
        std.debug.print("error is: {s}", .{m});
    }
    std.os.exit(0);
}

const source_code =
    \\ func sum (a, b) {
    \\     return a + b
    \\ }
    \\ func mul (a, b) {
    \\     return a * b
    \\ }
    \\ func main () {
    \\     var a = 10
    \\     var b = 20
    \\     return "hi"
    \\ }
;

test "basic test using wrappers" {
    var config = gravity.Delegate.init(.{ .error_callback = default_report_error });

    var compiler = try gravity.Compiler.init(&config);
    defer compiler.deinit();

    const closure = try compiler.run(source_code, 0, true, true);

    var vm = try gravity.Vm.init(&config);
    defer vm.deinit();

    compiler.transfer(&vm);

    if (vm.runmain(closure)) {
        const res = vm.result();

        var buf: [512]u8 = .{0} ** 512;

        vm.valueDump(res, buf[0..]);
        std.debug.print("RESULT: {s}\n", .{buf});
    }
}

About

Zig wrapper for Gravity Language

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages