HQ9+ Compiler
HQ9c (Or HQ9+ Compiler) is a blockchain-based NFT minting AI machine-learning cloud infraestructure for the compiling of the great programming language HQ9+ written in Rust using a C# FFI written in ASM.
Unlike other tools I made, this actually works! And it produces an executable through the Rust compiler to LLVM, then to C, then to Python, finally to Java
How does it work, master Shifu?
The highly complicated HQ9+ programming language isn't easy to understand, but I'll do my best to explain it in a way your mortal mind can understand.
The HQ9+ programming language has 4 characters, and all other characters (included their lowercase versions) are treated as characters.
- H
- Q
- 9 (My favourite)
- +
H
The "H" character is powerful, one could say almost as powerful as the divine letter H. It houses the unlimited power of the 12 character phrase "Hello world!".
We all learned programming with the mythical "hi mom im learning scratch" and this reminds us of those times, long time before all these block chain based JS/TS blazingly fast AI machine learning API frameworks. ugh
Yes. "H" prints "Hello world!" to the standard output.
Q
Even tho not as powerful as H, Q (for
Your thoughts are, indeed, correct. "Q" prints the source code to the standard output.
9
The nineth number (actually, eighth) is the most complex command for the compiler, and the most complex command for you. This is one of the new additions of the HQ9+22 spec.
9 prints the whole. cannonical lyrics to 99 Bottles of Beer on the Wall. That song where you violently destroy your wall by hitting it with rock-hard beer bottles. Just like a pirate.
Attention! You'll need it to understand the following paragraph.
There's a secret compiler option, that can only be found in the secret help menu. I'll not tell you where this menu lies, because that's your problem. ¯\(ツ)/¯
With that option, you can change the numbe r of +bottles................
sorry my cat shat on the keyboard while I was typing.
So, with that option you could change the number of bottles, that, indeed, are thrown to the wall in order to destroy it like a caveman.
Then you can go climb a couply of trees just to reinforce your new caveman state.
+
The + operator... It brings me so much joy of my infantile years, when I wasn't old and decrepit, almost dead.
This is the first thing we learn in school (I think), and it's so important in our daily lives, like... To be honest I just let the machine do its job.
Some of you are greatly utterly incorrect about the use of the accumulator, I can even cite this Stack Overflow response.
It's a joke.
No Jörg W Mittag from Stack Overflow. It's not a joke, the accumulator is a code optimization nexus in which code lie between life and dead.
No, the accumulator can't be printed, but that doesn't make it a less valuable thing, take into account that this "joke" is a 25% of our features.
Even more than that. I could intercept the very specific RAM address of the accumulator and read its value while the program takes place. Then what?! EH? Jörg W Mittag from Stack Overflow?!
Installation
I hope you read all of the above information, because it's a highly valuable read, that I left just for you.
The way to install is to:
- Clone the repo:
git clone https://github.com/blyxyas/hq9c.git
- Build the project with Cargo.
I know, this can be a little be challenging, I'll take your hand for this process...
Execute the following command:
sh ./makemakefile
This sh ./makemakefile
will make the Makefile file to make the project, finally we can execute the makefile with make.
make
This will create the executable into .target/release/hq9c
Now you could move the executable to /usr/bin
, or maybe you just want to use it a local project and not on a global scale (Thought it's highly recommended).
Usage
To get the help message use the following command:
hq9c --help
To compile a file use:
hq9c -o <OUTPUTFILE> <INPUTFILE>
hq9c -o nasa_artemis_source nasa_artemis_source.hq9p
You can also change some parameters, and it will vastly improve the experience.
hq9c -o nasa_artemis_source -b 419 nasa_artemis_source.hq9p
(Will change the number of bottles thrown at the wall)
You can use any extension you want, but for the HQ9+22 spec. The recommended extension is hq9p
or hq9
Inspiration
I want to thank my family for this genious idea that I had. I also want to thank my giant fat cat Keepy and my mini skinny cat Mina, and, how'd I forget, I really want to thank the creator of this marvelous language Cliff L. Biffle. and this another implementation (this time it's an interpreter.) by Lucas Larson for giving me the idea for creating a compiler.
This is all a joke, don't take it too serious. Tested with Arch Linux.