No Description

levovix0 5ae72224d8 0.2 11 months ago
examples 9dc1c61c9f remove old saving format 11 months ago
lib 8e08981742 add: loading 11 months ago
src 9dc1c61c9f remove old saving format 11 months ago
.gitignore 9a25f10596 update: .gitignore 1 year ago
README.md 9dc1c61c9f remove old saving format 11 months ago
main.yase 9dc1c61c9f remove old saving format 11 months ago
yase.nimble 5ae72224d8 0.2 11 months ago

README.md

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!