# HCUTCL
Everyone in the hackclub slack uses one thing : custom emojis. Kind of like a language that universal among hackclubbers. So i thought i would also make it into a programming language :)
## Plans
This started as just a brainfuck substitution (it still is for now), but it's gonna be more than that :
- [x] Uses a slack bot as it's interface
- [x] Uses Hackclub's emojis
- [x] Custom Interpreter in Python, Not from a translation to Brainfuck but directly in HCUTCL
- [ ] (Maybe) API for the compiler/interpreter ?
- [x] Custom `.` from brainfuck alternative
- [x] Different Emojis for Variants : Output in ASCII, Hex? or Number
- [x] Input : use 2 Emojis to Open and close the input.
- [x] Help command that uses ***Block kit*** *(Block kit is required for #thunder)*
## Definitions
Emoji | Image of the Emoji | Purpose | Closest Brainfuck Equivalent
:-----|:------------------:|:--------|:----------------------------
:upvote:|
|Increment the data pointer by one (to point to the next cell to the right).|`>`
:downvote:|
|Decrement the data pointer by one (to point to the next cell to the left).|`<`
:yay:|
|Increment the byte at the data pointer by one.|`+`
:heavysob:|
|Decrement the byte at the data pointer by one.|`-`
:pf:|
|Output the byte at the data pointer as an ASCII Character.|`.`
:sadge:|
|Output the byte at the data pointer as a Number.|`.`
:3c:|
|Accept one byte of input, storing its value in the byte at the data pointer.|`,`
:dino-drake-yea:|
|If the byte at the data pointer is zero, then instead of moving the instruction pointer forward to the next command, jump it forward to the command after the matching :dino-drake-nah: command.|`[`
:dino-drake-nah:|
|If the byte at the data pointer is nonzero, then instead of moving the instruction pointer forward to the next command, jump it back to the command after the matching :dino-drake-yea: command. |`]`
:uuh:|
|Open the input field which will be used to give data to `:3c:`.|
:noooovanish:|
|Close the input field which will be used to give data to `:3c:`.|
## Usage
- If you use :3c: at any point you need to add an input field with :uuh:[Yourtexthere]:noooovanish:
- You can only have ***one input*** field and you obviously have to open ***and*** close it
### Commands
Command | Description | Example Image of command output
:-------|:------:|------:
`/hcul-help`|Help command showing usage guide |
`/brainfuck-to-hcul`|Converts Brainfuck code to HackClub turing complete Universal Language |
`/hcul-to-brainfuck`|Converts HackClub turing complete Universal Language code back to Brainfuck |
`/run-hcutcl`|The most important command : Interprets/runs your HackClub Turing Complete Universal Language code and gives you the output|
### Made for [Summer of Making](https://summer.hack.club/wg) and [Thunder YSWS](https://hackclub.slack.com/archives/C06V2GEV3MY) !!