vlang parser in zig
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Luna 1ac1e54264 update readme 2 months ago
examples add enum support 2 months ago
src add enum support 2 months ago
.gitignore initial commit 5 months ago
LICENSE add LICENSE 5 months ago
README.md update readme 2 months ago
build.zig build.zig: s/spoodle/vig 2 months ago

README.md

vig

a v parser in zig, also a shitpost taken too far

(will likely be done as a full compiler, who knows, leave a like and subscribe for more epic adventures)

why

  • because i want to learn parsers and what best to do it with a language i’m negatively charged towards
  • theres an ast now it looks pretty
  • i finally understand recursive descent parsers

variations

  • for is split between for and loop because my fucking god i cant stand having four different variations of for to parse.

  • struct initialization is with Struct.{}, not Struct{}, to remove parsing ambiguities (if a {} and a{}, v solves that with case, e.g structs Must Be Properly Titled and i can’t bother with that)

  • function parameters must have a type always (no fn blah(x, y int), must be fn blah(x int, y int))

  • ifs are always statements, not expressions (can’t use if as an r-value: x := if ...)

  • no ++, -- (use += and -=)

  • no match

  • no embedded structs

  • no enum literals (x = .val2)

  • no v orm

  • no codegen

  • no inline assembly

wip

  • no for yet
  • no map yet
  • no in yet (probably will be dropped)
  • no module, import yet
  • no interfaces yet
  • no generics yet
  • no attributes yet ([live], [skip])
  • no defer yet
  • no switch yet
  • no operator overloading methods yet
  • do we really want a type system (optionals included)
    • no error handling yet (call() or {blah})
    • no ? postfix operator yet (call()?)
  • do we really want to output c
  • do we really want to output llvm
  • do we really want to output x86

how

git clone https://gitdab.com/luna/vig.git
cd vig
zig build install --prefix ~/.local/