Writing Normal Markov Algorithms is incredibly interesting and fun. Is it interesting to know how we did the best IDE in the world for Normal Markov Algorithms?

')
Who can write an IDE for a language in which no commercial program is written? And we would not have such an idea. But there was a task at the university to make a project - an interpreter.
If you do, then immediately better than anyone. We must first see what others have already done. We didn’t find anything particularly interesting, so we made a list of what should be in the 21st century IDE:
- Code highlighting
- Error tips
- Comments on the code
- Debugger
- Stopping points
It was decided to do everything. We decided to write in C ++ on Qt. There GUI without problems and signals slots are. (Then it turned out that they can be used without Qt, but this is a completely different story).
Drew a little shemku classes

Invented killer features
- Startup history - all input words are saved for easy restart. + history is also stored in the file itself, so it will not be lost when transferring from one computer to another.
- Step-by-step debugger. If you put a stop point on any rule, the interpretation will stop, during the execution of the rule, and also it will show, as a rule, it was used. After stopping, you can continue playing to the next stopping point or start the performance step by step.

- Editing the code does not fly - during debugging, you can change the code that will immediately begin to use the interpreter. As well as all the errors and tips for solving them appear immediately as you enter the code.
- Two startup modes. Quick mode - immediately gives the result, the debug mode also displays a log of all the rules and substitutions that have been made.
- Prevent loops and programs that never end.
- Supports additional ability to specify the alphabet of characters available for writing rules and the alphabet of characters available as input.
Then the documentation of all classes was written, the interface presets were drawn, and the fastest development phase, coding, began.

A couple of days later, the beta version was ready, a website was created, documentation was written, icons, an instalyashka — everything you need for a normal project.
During the first piloting more than 10 improvements were made. The most interesting of them is the support of "sticks". As it turned out in Normal Markov Algorithms, it is most convenient to represent numbers in the form of sticks: ||| = 3, |||| = 4. In order to avoid the need to count them each time we added small numbers that do it for you.

Interesting solutions
During the development we came up with some interesting solutions. Some of them:
- We managed to make offline documentation in a browser that automatically switches to its online version (which can be updated unlike offline), if a person has an Internet connection. They did it very simply - they connected a javascript file that lies on the server and redirects to the online version. No Internet, no file, no transition - offline documentation opens.
- A handy portable version that automatically after launching makes an association with a .yad file, after which it is no different from the one installed through the installer.
results
The project spent 10 days, 4 to come up with and write documentation, 3 to program and 2 more days for improvements, documentation, website.
Now everyone can download without registration and SMS from
GitHub (currently only for Windows), as well as anyone who wants to also be able to collect from
source .
The project we did together:
dianasi ,
yuragri and me.
Instead of conclusion
An article about Markov Algorithms without algorithms is not serious, here is a small program that converts binary numbers into decimal system (“sticks”).
//Alphabet T = {|, 0, 1} I = {0, 1} //Rules |0 -> 0|| 1->0| 0->$
PS and the teacher didn’t like the project, because there was no database here, but that’s another story too.
I am not sure whether the article violates the rules of habr, about advertising. If yes, then please inform or move to PR.