levovix

joined 1 year ago
[โ€“] levovix 1 points 1 year ago

Nim can compile helloworld to 800 Kb (or, with some tricks, to 50 Kb). This includes static linked libc, garbadge collection, nim std/system, and no compression.

[โ€“] levovix 3 points 1 year ago (1 children)

I was trying to create a programming language that doesn't have a parser. It has only AST nodes. The program is edited only inside a special editor.

Nodes in the language are defined as

type Node = ref object
  kind: Node
  childs: seq[Node]
  data: seg[byte]

That is, the node type is literally another node, which allows you to create as many types of nodes as you want without changing the program in any way. Some nodes may be functions.

For example, this is what the "function" and looks like:

note that and contains recursion to itself in the error.
also note that string "false" is just representation of what this constant means, there is no need to create new string "false" every time.

And this is what the "function" x looks like, the use of which can be seen in and: