euclidianAce

Trying my best

  • they/them

can post now >:3

I like math and compilers

posts from @euclidianAce tagged #compiler

also:

Here's the main result of what I've been working on! (Apart from some use-after-frees and allocator bugs :P)

Function calls with named arguments!
Main ::= function do
   Standard_Out : File_Descriptor := 1

   Write (
      File    => Standard_Out,
      Message => "Hello world!\n",
   )
end

File_Descriptor ::= range 0 .. 2^64 - 1
Byte            ::= mod 2^8
Index           ::= range 1 .. 2^64 - 1
Byte_String     ::= array [Index range <>] of Byte

Write ::= function (
   File    : File_Descriptor,
   Message : access Byte_String,
) do
   @​inline "rax" := 1
   @​inline "rdi" := File
   @​inline "rsi" := Message ['first]'access
   @​inline "rdx" := Message'length
   @​inline "Syscall"
end

This is usually one of my favorite features of any programming language that has it so I definitely planned to have this in for a while.

This brings the parsing of aggregates and function arguments much closer together, thus simplifying my parser a bit.

(aggregate syntax)
Foo : Some_Aggregate_Type := {
   Bar => "Baz"
}