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
Drug Discovery App Using Lipinski's Rule-of-Five.

Drug Discovery App A Drug Discovery App Using Lipinski's Rule-of-Five. TAPIWA CHAMBOKO 🚀 About Me I'm a full stack developer experienced in deploying

tapiwa chamboko 3 Nov 08, 2022
Convex Optimisation MVA course - Assignment

Convex Optimisation MVA course - Assignment This repository contains the coding files of the third assignment in the MVA Convex Optimisation course. U

1 Nov 27, 2021
200 LeetCode problems

LeetCode I classify 200 leetcode problems into some categories and upload my code to who concern WEEK 1 # Title Difficulty Array 15 3Sum Medium 1324 P

Hoang Cao Bao 108 Dec 08, 2022
Online-update est un programme python permettant de mettre a jour des dossier et de fichier depuis une adresse web.

Démarrage rapide Online-update est un programme python permettant de mettre a jour des dossier et de fichier depuis une adresse web. Mode préconfiguré

pf4 2 Nov 26, 2021
Web站点选优工具 - 优化GitHub的打开速度、高效Clone

QWebSiteOptimizer - Web站点速度选优工具 在访问GitHub等网站时,DNS解析到的IP地址可能并不是最快,过慢的节点会严重影响我们的访问情况,故制作出这样的工具来进一步优化网络质量。 由于该方案并非为VPN等方式进行的速度优化,以下几点需要您注意: 后续访问对应网站时仍可能需

QPT Family 15 May 01, 2022
Fast STL (ASCII & Binary) importer for Blender

blender-fast-stl-importer Fast STL (ASCII & Binary) importer for Blender based on https://en.wikipedia.org/wiki/STL_(file_format) Technical notes: flo

Iyad Ahmed 7 Apr 17, 2022
Pseudometa's dotfiles

pseudometa's dotfiles Table of Contents Why this repository? How this Repository works Special Explanations Got an idea for an improvement? Contact Wh

pseudometa 23 Dec 27, 2022
Scripts for hosting urbit in production-ish

Urbit Sysops Contains some helpful scripts for hosting Urbit. There are two variants included in this repo: one using docker, and one using plain syst

Jōshin 12 Sep 25, 2022
Tools to convert SQLAlchemy models to Pydantic models

Pydantic-SQLAlchemy Tools to generate Pydantic models from SQLAlchemy models. Still experimental. How to use Quick example: from typing import List f

Sebastián Ramírez 893 Dec 29, 2022
Awesome & interesting talks about programming

Programming Talks I watch a lot of talks that I love to share with my friends, fellows and coworkers. As I consider all GitHubbers my friends (oh yeah

Veit Heller 7k Dec 26, 2022
Create Arrays (Working with For Loops)

DSA with Python Create Arrays (Working with For Loops) CREATING ARRAYS WITH USER INPUT Array is a collection of items stored at contiguous memory loca

1 Feb 08, 2022
A set of scripts for a two-step procedure to measure the value of access to destinations across several modes of travel within a geographic area.

A set of scripts for a two-step procedure to measure the value of access to destinations across several modes of travel within a geographic area.

Institute for Transportation and Development Policy 2 Oct 16, 2022
Wrapper for the undocumented CodinGame API. Can be used both synchronously and asynchronlously.

codingame API wrapper Pythonic wrapper for the undocumented CodinGame API. Installation Python 3.6 or higher is required. Install codingame with pip:

Takos 19 Jun 20, 2022
Notebook researcher - Notebook researcher with python

notebook_researcher To run the server, you must follow these instructions: At th

4 Sep 02, 2022
A Python version of Canvacord

A copy of canvacord made in python! Table of contents Installation Examples Creating Images Links Downloads Installation Run any of these commands in

10 Mar 28, 2022
SkyPort console user terminal written in python

SkyPort terminal implemented as a console script written in Python Description Sky Port is an universal bus between user software and compute resource

Sky Workflows 1 Oct 23, 2022
ToDo - A simple bot to keep track of things you need to do

ToDo A simple bot to keep track of things you need to do. Installation You will

3 Sep 18, 2022
IG Trading Algos and Scripts in Python

IG_Trading_Algo_Scripts_Python IG Trading Algos and Scripts in Python This project is a collection of my work over 2 years building IG Trading Algorit

191 Oct 11, 2022
Write Streamlit apps using Notion! (Prototype)

Streamlit + Notion test app Write Streamlit apps using Notion! ☠️ IMPORTANT: This is just a little prototype I made to play with some ideas. Not meant

Thiago Teixeira 22 Sep 08, 2022
Automatically load and dump your dataclasses 📂🙋

file dataclasses Installation By default, filedataclasses comes with support for JSON files only. To support other formats like YAML and TOML, filedat

Alon 1 Dec 30, 2021