/yase

Yet another self-editor

Primary LanguageNim

icon

Yase: yet another self-editor

Self-editor, inspired by mutator

screenshot

Installation

Install Nim compiler first.

git clone https://github.com/levovix0/yase
cd yase
nimble -d:release build

Usage

./yase

type h for help

Differences between yase and mutator

  • nodes (tetrons) in yase declared as
    type Node = ref object
      kind: Node
      childs: seq[Node]
      params: Table[Node, Node]
      data: string
      module {.cursor.}: Module
    when in mutator tetrons declared as hierarchy of types, based on (roughly)
    type
      Flags = uint64
      Tetron = ref object of RootObj
        links: Table[Tetron, Flags]
    (types based on Tetron may have additional data fields)
  • for now, yase is console program

  • basic yase interpretator writed in Nim, instead of C++

Inspirations

  • mutator, the idea of self-editor
  • Nim, yase interpretator is written in Nim, also it's just cool language
  • lisp, "abstract syntax tree is all that needed"

Principles

  • Be practical - Simple but not ideal solution that works now is better that complex but ideal solution that will work later. Also, there is no ideal solutions.
  • Be strange - Only weird things helps us invent something new.
  • Write code that writes code - Automate coding by doing more coding!