Awesome
Lire
"Maybe if lisp started today, we would a syntax of lisp look like trees" -- Hal Abelson (1986 lecture)
In short
Lire is a Lisp expressions visual editor, it allows you to write programs using kind of abstract syntax tree (AST). It runs on top of Common Lisp.
Lire is work in progress project. It is also my diploma thesis.
Modeling list
Try to enter
+ Enter 10 Enter * Enter Enter 25 Enter 2
This will make list
(+ 10 (* 25 2))
Try it out!
Check the releases page. There is ready to go Windows executable, as it is little hard to build on this system.
Run from source
Lire is well tested to work with SBCL. Before run Lire check that you dependencies ready:
Linux (x86 and x64)
-
Ubuntu (apt-get):
sudo apt-get install libffi6 libffi-dev libsdl2 libsdl2-image libsdl2-ttf
-
Fedora (dnf):
sudo dnf install libffi libffi-devel SDL2 SDL2_image SDL2_ttf
-
ArchLinux (pacman):
sudo pacman -S libffi sdl2 sdl2_ttf sdl2_image
Windows (x86)
-
Install MinGW with
mingw32-base
package, and copyffi.h
andffitarget.h
fromdeps/windows
to...\MinGW\include
-
Add
...\MinGW\bin
to the PATH environment variable (make able Common Lisp to callgcc
) -
Put the dll's to your SBCL folder, right with
sbcl.exe
(for x86 there is collected already, checkdeps/windows
)
Lets go
cd your/path/to/Lire
and sbcl --load lire.lisp
Controls
Action | Bind |
---|---|
Place cursor (blue cross) or select node | Left-mouse-button click |
Select area or drag node | Left-mouse-button drag |
Accumulative select | Shift |
Copy selected nodes | Ctrl-C |
Paste copied nodes | Ctrl-V |
Pan | Right-mouse-button drag |
Zoom | Scroll |
Create new node | (enter node name) Enter |
Create list node (wraps arguments) | Space Enter |
Create dot node (does nothing with argument) | . Enter |
Switch to last node | Enter |
Evaluate tree | Tab or Double-left click |
Delete node | Delete |
Connect nodes | Right-mouse-button drag from children to parent |
Connect selected (last is a parent) | Ctrl-L |
Lost connections | Ctrl-K |
Move cursor up & down | Up-arrow & Down-arrow |
Move cursor left & right | Left-arrow & Right-arrow |