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
DD监控室第一版

DD监控室 运行指南

执明神君 1.2k Dec 31, 2022
A Kodi add-on for watching content hosted on PeerTube.

A Kodi add-on for watching content hosted on PeerTube. This add-on is under development so only basic features work, and you're welcome to improve it.

1 Dec 18, 2021
World Happiness Report is a publication of the Sustainable Development Solutions Network

World-Happiness-Report We are going to visualise what are the factors and which

Shubh Almal 1 Jan 03, 2023
script buat mengcrack

setan script buat mengcrack cara install $ pkg install upgrade && pkg update $ pkg install python $ pkg install git $ pip install requests $ pip insta

1 Nov 03, 2021
A series of basic programs written in Python

Primeros programas en Python Una serie de programas básicos escritos en Python

Madirex 1 Feb 15, 2022
Sudoku solver using backtracking

Sudoku solver Sudoku solver using backtracking Basically in sudoku, we want to be able to solve a sudoku puzzle given an input like this, which repres

Kylie 99 Jan 07, 2023
A Blender addon for VSE that auto-adjusts video strip's length, if speed effect is applied.

Blender VSE Speed Adjust Addon When using Video Sequence Editor in Blender, the speed effect strip doesn't auto-adjusts clip length when changing its

Arpit Srivastava 2 Jan 18, 2022
Vaccine for STOP/DJVU ransomware, prevents encryption

STOP/DJVU Ransomware Vaccine Prevents STOP/DJVU Ransomware from encrypting your files. This tool does not prevent the infection itself. STOP ransomwar

Karsten Hahn 16 May 31, 2022
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
A dot matrix rendered using braille characters.

⣿ dotmatrix A dot matrix rendered using braille characters. Description This library provides class called Matrix which represents a dot matrix that c

Tim Fischer 25 Dec 12, 2022
Show my read on kindle this year

Show my kindle status on GitHub

yihong 26 Jun 20, 2022
SQL centered, docker process running game

REQUIREMENTS Linux Docker Python/bash set up image "docker build -t game ." create db container "run my_whatever/game_docker/pdb create" # creating po

1 Jan 11, 2022
API moment - LussovAPI

LussovAPI TL;DR: py API container, pip install -r requirements.txt, example, main configuration Long version: Install Dependancies Download file requi

William Pedersen 1 Nov 30, 2021
Runtime inspection utilities for Python typing module

Typing Inspect The typing_inspect module defines experimental API for runtime inspection of types defined in the Python standard typing module. Works

Ivan Levkivskyi 284 Dec 29, 2022
Birthday program - A program that lookups a birthday txt file and compares to the current date to check for birthdays

Birthday Program This is a program that lookups a birthday txt file and compares

Daquiver 4 Feb 02, 2022
One Ansible Module for using LINE notify API to send notification. It can be required in the collection list.

Ansible Collection - hazel_shen.line_notify Documentation for the collection. ansible-galaxy collection install hazel_shen.line_notify --ignore-certs

Hazel Shen 4 Jul 19, 2021
Desafio Final do Mod1 do Bootcamp EDC - v2 usando a RAIS

IGTI - Bootcamp Engenheiro de Dados Cloud Módulo 1 - Desafio Final - RAIS 2020 Código do Desafio Final V2 do Bootcamp Engenheiro de Dados Cloud do IGT

Neylson Crepalde 17 Nov 02, 2022
Kellogg bad | Union good | Support strike funds

KelloggBot Credit to SeanDaBlack for the basis of the script. req.py is selenium python bot. sc.js is a the base of the ios shortcut [COMING SOON] Set

407 Nov 17, 2022
In this repo i inherit the pos module and added QR code to pos receipt

odoo-pos-inherit In this repo i inherit the pos module and added QR code to pos receipt 1- Create new Odoo Module using command line $ python odoo-bin

5 Apr 09, 2022
A weekly dive into commonly used modules in the Rust ecosystem, with story flavor!

The goal of this project is to bring the same concept as PyMOTW to the Rust world. PyMOTW was an invaluable resource for me when I was learning Python years ago, and I hope that I can help someone in

Scott Lyons 20 Aug 26, 2022