Rick Astley Language is a rick roll oriented, dynamic, strong, esoteric programming language.

Overview

Rick Roll Language / Rick Astley Language

A rick roll oriented, dynamic, strong, esoteric programming language.

Prolegomenon

The reasons that I made this language are I am one of Rick Astley's fans and I am excited to see other people being rickrolled.

Detailed Description / Documentation

Comments
  • Refactor and bug fix

    Refactor and bug fix

    • Fixed unresolved import (commit link)
    • Added helpers.py for easier code sharing between modules
    • Convert magic numbers/strings into enums to get the benefits from vars and dicts
    • Added more type annotations for static type checking
    • Added Final annotations to avoid accidental assignment of immutable vars (also to reduce cognitive load of managing global vars)
    • Added and edited comments (regular and docs)
    • Make 0Byte programs valid (doesn't work with crickroll)
    • etc...

    Disclaimer: I tested most (not all) of the changes

    opened by Rudxain 21
  • Made the apply operation function more efficient.

    Made the apply operation function more efficient.

    I made your apply operation function more efficient by replacing the chain of If statements with the eval function. Hopefully you find this helpful 👍

    opened by HenryDewsnap 3
  • Smallest valid program?

    Smallest valid program?

    I want to know for 2 reasons:

    1. I'm too lazy to test it myself (lol), and I want to ensure that all implementations (1st-party/"official", and 3rd-party) are consistent, and that the spec itself is consistent and explicit about this
    2. I opened this PR at /mathiasbynens/small, and want to make sure the file is extremely minified
    opened by Rudxain 1
  • More technical info needed

    More technical info needed

    Hi, I recently saw that you have a .rickroll file type. I have a question about it:

    1. What is the mime type for it?
    2. What programs can open the .rickroll
    opened by Jeffreymaniac 1
  • Add a while algorithm example to examples folder

    Add a while algorithm example to examples folder

    Hi @Sherlockcxk .

    I Wrote a simple while algorithm on Rick Roll Lang, it prints all positions of an array.

    take_me_to_ur_heart
        give_u_up areYouRolling= ["Together ","forever", "and never to part", "Together", "foverer", "we two"]
    
        give_u_up astleyCounter=0
        
        together_forever_and_never_to_part
          and_if_u_ask_me_how_im_feeling astleyCounter is Length(areYouRolling)
            desert_u
          say_good_bye
    
          i_just_wanna_tell_u_how_im_feeling areYouRolling[astleyCounter] + "\n"
          give_u_up astleyCounter+=1
    
    say_good_bye~`
    

    Its Equivalent to Python:

    if __name__ == '__main__':
        areYouRolling= ["Together ","forever", "and never to part", "Together", "foverer", "we two"]
    
        astleyCounter=0
    
        while True:
          if astleyCounter == len(areYouRolling):
            break
    
          print(areYouRolling[astleyCounter] + "\n")
    
          astleyCounter+=1
    
    opened by henriqueritter 1
  • Discrepancy/inconsistency between compilers

    Discrepancy/inconsistency between compilers

    all of these test results are from this commit in my branch, but most of it applies to main branch

    The following is valid for both the Py transpiler (pyrickroll) and the real-time interpreter, but not for CPP:

    takemetourheart
    saygoodbye
    

    Terminal:

    echo takemetourheart > test.rr
    echo saygoodbye >> test.rr
    ./RickRoll.py -cpp test.rr
    Traceback (most recent call last):
      File "/home/rudxain/Documents/GitHub/rickroll-lang/src-py/./RickRoll.py", line 67, in <module>
        main()
      File "/home/rudxain/Documents/GitHub/rickroll-lang/src-py/./RickRoll.py", line 40, in main
        run_in_cpp(args.file)
      File "/home/rudxain/Documents/GitHub/rickroll-lang/src-py/crickroll.py", line 247, in run_in_cpp
        TranslateToCpp(types=tok.t_types, values=tok.t_values)
      File "/home/rudxain/Documents/GitHub/rickroll-lang/src-py/crickroll.py", line 152, in __init__
        raise SyntaxError(f'Exception in line {current_line}: [{self.values[0]}] is neither a keyword nor function\n')
    SyntaxError: Exception in line 1: [takemetourheart] is neither a keyword nor function
    

    But this is a syntax error for everyone, except intpr:

    takemetourheart saygoodbye
    

    CPP raises the same error as before. But py is different:

    echo 'takemetourheart saygoodbye' > test.rr
    ./RickRoll.py test.rr
    Exception in line 1
        if __name__ == "__main__":
                                  ^
    IndentationError: expected an indented block after 'if' statement on line 1
    

    Even this thing is valid for intpr!

    takemetourheart
    

    Also, CPP thinks empty files are a syntax error, even after fixing the content[-1] out-of-bounds access. This happens because int main(){} is not appended

    #60 (ignore. this is for GH to link this issue to the PR)

    opened by Rudxain 0
  • Proposition for key words

    Proposition for key words

    class Rick : Singer{
      // constructor
      gonna_make_you()
        i.hariColor=red
      understand
      // private variables
      Inside var hairColor;
      // public variable 
      Stranger var concertLocation {
        // getter
         get_this_from {
          return I.concertLocation
        }
      }
    
      
      // member functions
      gonna sing(){
        tell_you_how_im_feeling ("we're no strangers to love")
      }
    
      gonna giveYouUp(){
        fatalError()
      }
      gonna letYouDown(){
        fatalError()
      }
    }
    
    opened by leenapps 3
  • Make a JIT compiler

    Make a JIT compiler

    Make a JIT compiler for the code,ik there is a c transpiker but that would become too difficult when you add more features. (You can use the llvm toolchain)

    opened by Andrea-Miele 3
Releases(v1.0.1)
  • v1.0.1(Jan 31, 2022)

  • v1.0.0(Sep 6, 2021)

    Dear contributors, outside collaborators, and advisors: Thank you for your elaborate work, meritorious contribution, and brilliant ideas to this project! The testing period of the Rick Roll programming language is ended officially since this momentous and memorable moment! Congratulations! 🎉🎊🎉^_^ From now on, all of the keywords and statements will be kept constant.

    After this significant update, we still have numerous works to achieve or improve:

    1. Add more keywords and built-in functions
    2. Write algorithms in Rick Roll Lang and upload them to the examples folder.
    3. Make syntax highlights for VS Code and Sublime
    4. Enhance the current audio generator
    5. Improve the interpreter
    6. Support writing code by singing

    Thanks to @StepfenShawn @AcaiBerii @henriqueritter @Lemonix-xxx @cxk-bugsfly

    Source code(tar.gz)
    Source code(zip)
  • v0.2.0-beta(Jul 30, 2021)

    New features:

    • Independent RickRoll interpreter
    • An update to counting execution time
    • Optimized code

    For this version, we added a new feature: RickRoll's pure interpreter. This interpreter does not need to translate RickRoll source code into Python or C++, it is a pure interpreter. However, this little thing too new and only support if statement, variables, and print, so I marked it as a pre-release. Additionally, we made a big update to counting execution time. The transpiler originally start counting time after importing the libraries, however, that is not the result we want. So, we let the transpiler start counting time before importing those dependent libraries.

    Source code(tar.gz)
    Source code(zip)
  • v0.1.2(Jul 27, 2021)

    A small patch.

    • Fixed the bugs in couldn't define functions
    • Rewrote and optimized pyrickroll.py

    After this update, we are going to make a pure interpreter or virtual machine for RickRoll-Lang. @StepfenShawn

    Source code(tar.gz)
    Source code(zip)
  • v0.1.1(Jul 22, 2021)

    We did a bunch of things for RickRoll-Lang:

    • Optimized crickroll.py (a program for translating RickRoll to C++)
    • Fixed the bug of couldn't define variable in crickroll.py
    • Made the audio generator, which is a program that can generate and play an audio from .rickroll source code
    Source code(tar.gz)
    Source code(zip)
  • v0.1.0(Jul 17, 2021)

    Basically, this is a minor version update to RickRoll-Lang and this transpiler /interpreter is still in its testing period. In this version, we added several things for RickRoll-Lang:

    • Support translating .rickroll to .cpp
    • Support generating executable files using G++ (Cross-platform, which means it will generate a .out on linux, and generate a .exe on windows)
    • Provide some examples and algorithms in RickRoll-Lang
    • Logical/relational operators
    • Function and return
    • While loop

    Another thing I would like to mention is, I will write every contributor or collaborator’s GitHub id and his/her contribution down on the README.md, “Contributors”. Therefore, if you have any idea or advice, feel free to pull request.

    Source code(tar.gz)
    Source code(zip)
  • v0.0.1(Jun 23, 2021)

    This is the first testing version of rick roll-lang and only supports some very basic features or functions. The features or functions it supports are defining variables, defining functions, print, loop, and if statement. For the next version, we will add a new feature, generating audios from .rickroll source code! This language is only in its testing period, so we still will change some keywords.

    Source code(tar.gz)
    Source code(zip)
Owner
Rick Roll Programming Language
Rick Roll Lang (also called Rick Astley Lang), is an esoteric programming language
Rick Roll Programming Language
banking system with python, beginner friendly, preadvanced level

banking-system-python banking system with python, beginner friendly, preadvanced level Used topics Functions else/if/elif dicts methods parameters hol

Razi Falah 1 Feb 03, 2022
A dashboard for your code. A build system.

NOTICE: THIS REPO IS NO LONGER UPDATED Changes Changes is a build coordinator and reporting solution written in Python. The project is primarily built

Dropbox 763 Sep 09, 2022
lets learn Python language with basic examples. highly recommended for beginners who just start coding.

Lets Learn Python 🐍 Learn python from basic programs. learn python from scratch. 1.Online python compiler: https://www.onlinegdb.com/online_python_co

Subhranshu Choudhury 1 Jan 18, 2022
NotesToCommands - a fully customizable notes / command template program, allowing users to instantly execute terminal commands

NotesToCommands is a fully customizable notes / command template program, allowing users to instantly execute terminal commands with dynamic arguments grouped into sections in their notes/files. It w

zxro 5 Jul 02, 2022
Reconhecimento de voz, em português, com python

Speech_recognizer Reconhecimento de voz, em português, com python O ato de falar nada mais é que criar vibrações no ar. Por meio de um conversor analó

Marcus Vinícius Ribeiro Andrade 1 Dec 14, 2021
A bot to view Dilbert comics directly from Discord and get updates of the comics automatically.

A bot to view Dilbert comics directly from Discord and get updates of the comics automatically

Raghav Sharma 3 Nov 30, 2022
addons to the turtle package that help you drew stuff more quickly

TurtlePlus addons to the turtle package that help you drew stuff more quickly --------------

1 Nov 18, 2021
CNKD - Minimalistic Windows ransomware written in Python

CNKD Minimalistic Windows ransomware written in Python (Still a work in progress

Alex 2 May 27, 2022
PwnDatas-DB-Project(PDDP)

PwnDatas-DB-Project PwnDatas-DB-Project(PDDP) 安裝依賴: pip3 install pymediawiki 使用: cd /opt git https://github.com/JustYoomoon/PwnDatas-DB-Project.git c

21 Jul 16, 2021
Convert-Decimal-to-Binary-Octal-and-Hexadecimal

Convert-Decimal-to-Binary-Octal-and-Hexadecimal We have a number in a decimal number, and we have to convert it into a binary, octal, and hexadecimal

Maanyu M 2 Oct 08, 2021
A modern python module including many useful features that make discord bot programming extremely easy.

discord-super-utils Documentation Secondary Documentation A modern python module including many useful features that make discord bot programming extr

106 Dec 19, 2022
Calculatrix is a project where I'll create plenty of calculators in a lot of differents languages

Calculatrix What is Calculatrix ? Calculatrix is a project where I'll create plenty of calculators in a lot of differents languages. I know this sound

1 Jun 14, 2022
Various hdas (Houdini Digital Assets)

aaTools My various assets for Houdini "ms_asset_loader" - Custom importer assets from Quixel Bridge "asset_placer" - Tool for placment sop geometry on

9 Dec 19, 2022
Simply create JIRA releases based on your github releases

Simply create JIRA releases based on your github releases

8 Jun 17, 2022
Check if Python package names are available on PyPI.

😻 isavailable Can I haz this Python package on PyPI? Check if Python package names are available on PyPI. Usage $ isavailable checks whether your des

Felipe S. S. Schneider 3 May 18, 2022
Use Ghidra Structs in Python

Strudra Welcome to Strudra, a way to craft Ghidra structs in python, using ghidra_bridge. Example First, init Strudra - you can pass in a custom Ghidr

Dominik Maier 27 Nov 24, 2022
Batch Python Program Verify

Batch Python Program Verify About As a TA(teaching assistant) of Programming Class, it is very annoying to test students' homework assignments one by

Han-Wei Li 7 Dec 20, 2022
MDAnalysis tool to calculate membrane curvature.

The MDAkit for membrane curvature analysis is part of the Google Summer of Code program and it is linked to a Code of Conduct.

MDAnalysis 19 Oct 20, 2022
Minterpy - Multidimensional interpolation in Python.

minterpy is an open-source Python package for a multivariate generalization of the classical Newton and Lagrange interpolation schemes as well as related tasks.

Center for Advanced Systems Understanding 18 Jan 06, 2023
Aesthetic NFT Generator

A E S T H E T I C Dependencies Pillow numpy OpenCV You can use pip to install any missing dependencies. Basic Usage Vaporwave artwork can be generated

Mentor Elezi 4 Mar 13, 2022