
obfuscated anti-pythonic brainfuck interpreter
I tried to do my best to make it unreadable.

I tried to do my best to make it unreadable.
Hello, I finished my bachelor thesis that is development of Lisp interpreter. It is implemented in C(GNU99).
I need some tips on how to organize documentation(formal specification) of my custom Lisp dialect and the way to test interpreter.
Currently my documentation is couple of org files. Index is the root file with links to particular notes: data types, special forms, primitive functions.
File "data-types.org" provide enumeration of existing types and their properties.
File "special-forms.org" and "primitive-functions.org" provide similar enumerations. For each special form or primitive function I define arguments number, arguments type and description.
(Beside these documentation entries there are notes on architecture, building, interning, e.t.c)
So I consider documentation as the source of truth. If actual behavior doesn't match documentation, it's a bug. For example, car expects exactly 1 argument of list type. So it should fail and raise error message if type is different.
My question is how to define full test suite that covers whole interpreter? I have several ideas. I have already implemented python script that requires particular build and tests. Each test is made of script and associated expected output. I think for each component there should be positive and negative tests. But how can I say that given set of test cases for given primitive function, special form, e.t.c. is enough?
Also what are good practices of writing programming language documentation?
I never was big fan of amphetamine, rather weed&acid guy. Yesterday I realized like I have enough. It's time to stop. Actually, I don't consider myself addicted. If I have a choice between LSD and amphetamine, I would choose LSD. But my gf says it's her drug #1, so I used to do amphetamine line by line with her. But I don't want amphetamine to destroy our relationships. That's why I'm not gonna touch it. We're doing fine together. But if we both are high on speed, then no. We're not doing fine. She uses amphetamine mostly for work. I even think only for work.
Also I have minor reasons to stop doing speed. First, I don't feel good under the influence of speed. I want to feel good just like I do right after smoking weed or dropping acid. Second, I'm more productive when sober. Yes, I'm serious. Amphetamine simply decreases productivity. Third, It's so boring.
What do you guys think about my decision? I mean, it's obviously great...
I have implemented little tool to take screenshots in X11. Raylib and Raygui are used to implement GUI. Xlib is used to implement procedure that takes a screenshot: fullscreen or rectangular area.
Since my WM is Qtile, I wanted to have keyboard driven screenshot tool with additional mouse support.
Code is pretty dirty, but it works good enough for me. Would be cool to hear your thoughts on code and related.
Source code:repo
If you would like to ask what's matter to write yet another XYZ tool, then I tell immediately: joy of programming. Also everything I could use for screenshots doesn't satisfy me.
It's the second time I realized that Raylib is kind of swizz-army knife. It provides enough instruments to solve any multimedia problem in sane time without pain in the ass, also additional libraries like Raygui or Beton give an ability to implement GUI as fast as possible. I prefer Raygui's WYSIWYG approach or immediate gui over QT.
After QT Raygui feels like fresh air.
sc is kinda catchy and maybe a little bit esoteric tool, but it perfectly solves the problem and it works good enough in *Qtile*.
I'd like to hear what you think. Code is dirty, because I wanted to finish the working tool as soon as possible.
check repo: https://github.com/dfwdfq/sc