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
Forward RSS feeds to your email address, community maintained

Getting Started With rss2email We highly recommend that you watch the rss2email project on GitHub so you can keep up to date with the latest version,

248 Dec 28, 2022
Use a real time weather API to apply wind to your mouse cursor.

wind-cursor Use a real time weather API to apply wind to your mouse cursor. Requirements PyAutoGUI pyowm Usage This program uses the OpenWeatherMap AP

Andreas Schmid 1 Feb 07, 2022
A funny alarm clock I made in python

Wacky-Alarm-Clock Basically, I kept forgetting to take my medications, so I thought it would be a fun project to code my own alarm clock and make it r

1 Nov 18, 2021
Construção de um jogo Dominó na linguagem python com base em algoritmos personalizados.

Domino (projecto-python) Construção de um jogo Dominó na linguaguem python com base em algoritmos personalizados e na: Monografia apresentada ao curso

Nuninha-GC 1 Jan 12, 2022
How to use Microsoft Bing to search for leaks?

Installation In order to install the project, you need install its dependencies: $ pip3 install -r requirements.txt Add your Bing API key to bingKey.t

Ernestas Kardzys 2 Sep 21, 2022
Final Fantasy XIV Auto House Clicker

Final Fantasy XIV Auto House Clicker

KanameS 0 Mar 31, 2022
Python implementation of the Learning Time-Series Shapelets method, that learns a shapelet-based time-series classifier with gradient descent.

shaplets Python implementation of the Learning Time-Series Shapelets method by Josif Grabocka et al., that learns a shapelet-based time-series classif

Mohamed Haseeb 187 Dec 14, 2022
Python MQTT v5.0 async client

gmqtt: Python async MQTT client implementation. Installation The latest stable version is available in the Python Package Index (PyPi) and can be inst

Gurtam 306 Jan 03, 2023
JSEngine is a simple wrapper of Javascript engines.

JSEngine This is a simple wrapper of Javascript engines, it wraps the Javascript interpreter for Python use. There are two ways to call interpreters,

11 Dec 18, 2022
pgvector support for Python

pgvector-python pgvector support for Python Great for online recommendations 🎉 Supports Django, SQLAlchemy, Psycopg 2, Psycopg 3, and asyncpg Install

Andrew Kane 37 Dec 20, 2022
This is a Fava extension to display a grouped portfolio view in Fava for a set of Beancount accounts.

Fava Portfolio Summary This is a Fava extension to display a grouped portfolio view in Fava for a set of Beancount accounts. It can also calculate MWR

18 Dec 26, 2022
solsim is the Solana complex systems simulator. It simulates behavior of dynamical systems—DeFi protocols, DAO governance, cryptocurrencies, and more—built on the Solana blockchain

solsim is the Solana complex systems simulator. It simulates behavior of dynamical systems—DeFi protocols, DAO governance, cryptocurrencies, and more—built on the Solana blockchain

William Wolf 12 Jul 13, 2022
Basit bir cc generator'ü.

Basit bir cc generator'ü. Setup What To Do; Python Installation We install python from CLICK Generator Board After installing the file and python, we

Lâving 7 Jan 09, 2022
Python script to commit to your github for a perfect commit streak. This is purely for education purposes, please don't use this script to do bad stuff.

Daily-Git-Commit Commit to repo every day for the perfect commit streak Requirments pip install -r requirements.txt Setup Download this repository. Cr

JareBear 34 Dec 14, 2022
This is a Docker-based pipeline for preparing sextractor-ready multiwavelength images

Pipeline for creating NB422-detected (ODI) catalog The repository contains a Docker-based pipeline for preprocessing observational data. The pipeline

1 Sep 01, 2022
This tool don't used illegal ativity

ETHICALTOOL This tool for only educational purposes don't used illegal ativity @onlinehacking this tool for pkg update && pkg upgrade && pkg install g

Mrkarthick 4 Dec 23, 2021
Airflow Operator for running Soda SQL scans

Airflow Operator for running Soda SQL scans

Todd de Quincey 7 Oct 18, 2022
Aggressor script that gets the latest commands from CobaltStrikes web site and creates an aggressor script based on tool options.

opsec-aggressor Aggressor script that gets the latest commands from CobaltStrikes opsec page and creates an aggressor script based on tool options. Gr

JP 10 Nov 26, 2022
Nesse repositório serão armazenados os conteúdos de aula

Lets_Code_DS_Degree_Alunos Nesse repositório serão armazenados os conteúdos de aula Formato das aulas: Notebook de aula já vem comentado para reduzir

Patricia Bongiovanni Catandi 6 Jan 21, 2022
A free website that keeps the people informed about housing and evictions.

Eviction Tracker Currently helping verify detainer warrant data for middle Tennessee - via Middle TN DSA - Red Door Collective Features Presents data

Red Door Collective 7 Dec 14, 2022