# About

zig0 aspires to be an interpreter of zig 0.15.2 written in C.

This is written with help from LLM:

- Lexer:
  - Datastructures 100% human.
  - Helper functions 100% human.
  - Lexing functions 50/50 human/bot.
- Parser:
  - Datastructures 100% human.
  - Helper functions 50/50.
  - Parser functions 5/95 human/bot.
- AstGen: TBD.

# Testing

Quick test:

    zig build fmt-zig0 test-zig0

Full test and static analysis with all supported compilers and valgrind (run
before commit, takes a while):

    zig build all-zig0 -Dvalgrind

# Debugging tips

Test runs infinitely? Build the test program executable:

    $ zig build test-zig0 -Dzig0-no-exec

And then run it, capturing the stack trace:

```
gdb -batch \
    -ex "python import threading; threading.Timer(1.0, lambda: gdb.post_event(lambda: gdb.execute('interrupt'))).start()" \
    -ex run \
    -ex "bt full" \
    -ex quit \
    zig-out/bin/test
```

You are welcome to replace `-ex "bt full"` with anything other of interest.
