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
Python script that automates the tasks involved in starting a new coding project

Auto Project Builder Automates the repetitive tasks while starting a new project Installation Use the REQUIREMENTS.txt file to install the dependencie

Prathap S S 1 Feb 03, 2022
MIT version of the PyMca XRF Toolkit

PyMca This is the MIT version of the PyMca XRF Toolkit. Please read the LICENSE file for details. Installation Ready-to-use packages are available for

V. Armando Solé 43 Nov 23, 2022
Boamp-extractor - Script d'extraction des AOs publiés au BOAMP

BOAMP Extractor BOAMP-Extractor permet d'extraire les offres de marchés publics publiées au bulletin officiel des annonces des marchés publics (BOAMP)

Julien 3 Dec 09, 2022
Learning a Little about Containerlab

Learning a Little about Containerlab Hello all. This is the respository based on this blog post. Getting Started Feel free to use this example. You wi

10 Oct 16, 2022
Simple but maybe too simple config management through python data classes. We use it for machine learning.

👩‍✈️ Coqpit Simple, light-weight and no dependency config handling through python data classes with to/from JSON serialization/deserialization. Curre

coqui 67 Nov 29, 2022
A tool for study using pomodoro methodology, while study mode spotify or any other .exe app is opened and while resting is closed.

Pomodoro-Timer-With-Spotify-Connection A tool for study using pomodoro methodology, while study mode spotify or any other .exe app is opened and while

2 Oct 23, 2022
A class to draw curves expressed as L-System production rules

A class to draw curves expressed as L-System production rules

Juna Salviati 6 Sep 09, 2022
Explore related sequences in the OEIS

OEIS explorer This is a tool for exploring two different kinds of relationships between sequences in the OEIS: mentions (links) of other sequences on

Alex Hall 6 Mar 15, 2022
A performant state estimator for power system

A state estimator for power system. Turbocharged with sparse matrix support, JIT, SIMD and improved ordering.

9 Dec 12, 2022
Программа для практической работы №12 по дисциплине

Информатика: программа для практической работы №12 Код и блок-схема программы для практической работы №12 по дисциплине "Информатика" (I семестр). Сут

Vladislav 1 Dec 07, 2021
A module to prevent invites and joins to Matrix rooms by checking the involved server(s)' domain.

Synapse Domain Rule Checker A module to prevent invites and joins to Matrix rooms by checking the involved server(s)' domain. Installation From the vi

matrix.org 4 Oct 24, 2022
Subnet calculator script using python

subnetCalculator Subnet calculator script using python3 Interactive Version Define the subnet variable interactively Use: subnetDict = subnetCalculato

1 Feb 15, 2022
通过简单的卷积神经网络直接预测出验证码图片中滑块的位置

使用说明 1. 在本地测试 运行python3 prdict_one.py即可,默认需要预测的图片路径位于testImg文件夹下的test1.png 运行python3 predict_folder.py预测testImg下的所有图片 2. 部署到服务器 运行python3 run_a_server

12 Mar 08, 2022
Быстрый локальный старт

Быстрый локальный старт

Anton Ogorodnikov 1 Sep 28, 2021
Load, explore and analyse data from Scotland and rest of the world related to Covid19.

Streamlit Examples This is my first attempt with Streamlit. It is an open-source framework, free, Python-based and easy to use tool to build and deplo

Eyad Elyan 12 Mar 01, 2021
Python Excuse Generator

Excuse Generator Python Excuse Generator This project is an excuse generator that provides the user with an excuse as to why they weren't paying atten

Collin Sanders 5 Jul 07, 2022
Osintgram by Datalux but i fixed some errors i found and made it look cleaner

OSINTgram-V2 OSINTgram-V2 is made from Osintgram which is made by Datalux originally but i took the script and fixed some errors i found and made the

2 Feb 02, 2022
The-White-Noise-Project - The project creates noise intentionally

The-White-Noise-Project High quality audio matters everywhere, even in noise. Be

Ali Hakim Taşkıran 1 Jan 02, 2022
a bit of my project :) and I use some of them for my school lesson or study for an exam! but some of them just for myself.

Handy Project a bit of my project :) and I use some of them for my school lesson or study for an exam! but some of them just for myself. the handy pro

amirkasra esmaeilian 13 Jul 05, 2021
It's an .exe file that can notify your chia profit and warning message every time automatically.

chia-Notify-with-Line 警示程式 It's an .exe file that can notify your chia profit and warning message every time automatically. 這是我自行設計的小程式,有轉成.exe檔了,可以在沒

You,Yu 1 Oct 28, 2021