JamogusLamogusAmogus

From Esolang
Jump to navigation Jump to search

JamogusLamogusAmogus (refer to it as "Jlamogus" in formal situations) is a very "sussy" esoteric interpreted programming language made in python. JamogusLamogusAmogus uses the incredibly unique file extension of "ඞ".

List of JamogusLamogusAmogus' functions:

Functions
Function Parameters Usage
JoinGame Var Sets a variable to 0 (initializes variable if it doesn't exist already).
guysTheImposterIs Var Takes a variable, converts its value to Unicode, and prints it to the console.
addNewVent VentName Creates a new vent.
vent VentName Sets program counter to position of vent.
completeTask Var increments a variable by one.
sabotage Var decrements a variable by one.
slice Var halves a variable.
twoAmogus Var doubles a variable.
where? Var sets variable to user input read as a float.
{arg0} hasCompleted {arg1} tasks Var, Float sets a variable to a float value.
ventIf {arg0} {arg1} {arg2} {arg3} Var, equallySus/moreSus/lessSus, Float, VentName vents to a vent if a variable is > or = or < than a float.

Hello World (x10)

joinGame letter;

joinGame i;

addNewVent hello;

completeTask i;

letter hasCompleted 72 tasks;

guysTheImposterIs letter;

letter hasCompleted 101 tasks;

guysTheImposterIs letter;

letter hasCompleted 108 tasks;

guysTheImposterIs letter;

letter hasCompleted 108 tasks;

guysTheImposterIs letter;

letter hasCompleted 111 tasks;

guysTheImposterIs letter;

letter hasCompleted 32 tasks;

guysTheImposterIs letter;

letter hasCompleted 87 tasks;

guysTheImposterIs letter;

letter hasCompleted 111 tasks;

guysTheImposterIs letter;

letter hasCompleted 114 tasks;

guysTheImposterIs letter;

letter hasCompleted 108 tasks;

guysTheImposterIs letter;

letter hasCompleted 100 tasks;

guysTheImposterIs letter;

letter hasCompleted 33 tasks;

guysTheImposterIs letter;

letter hasCompleted 10 tasks;

guysTheImposterIs letter;

ventIf i moreSus 10 done;

ventIf i equallySus 10 done;

vent hello;

addNewVent done;

Running ".ඞ" files:

Run "python Jlamogus.py main.ඞ" in the terminal.

Jlamogus.py:

import os
import sys


def represents_int(s):
    try:
        float(s)
    except ValueError:
        return False
    else:
        return True

def execCode(code:str):
    variables = {}
    tasks = {}
    codeList = code.replace("\n","").split(";")
    counter = 0

    for i in codeList:
        c = i.split(" ")
        if c[0] == "addNewVent":
            tasks[c[1]] = counter
        counter += 1

    counter = 0

    while True:
        try:
            line = codeList[counter]
        except IndexError:
            return
        sections = line.split(" ")
        if len(sections) == 2:
            if sections[0] == "joinGame":
                variables[sections[1]] = 0
            elif sections[0] == "guysTheImposterIs":
                print(chr(int(float(variables[sections[1]]))), end="")
            elif sections[0] == "vent":
                counter = tasks[sections[1]]
            elif sections[0] == "completeTask":
                variables[sections[1]] += 1
            elif sections[0] == "sabotage":
                variables[sections[1]] -= 1
            elif sections[0] == "slice":
                variables[sections[1]] /= 2
            elif sections[0] == "twoAmogus":
                variables[sections[1]] *= 2
            elif sections[0] == "where?":
                variables[sections[1]] = float(input("> "))

        elif len(sections) == 4:
            if sections[1] == "hasCompleted" and sections[3] == "tasks":
                variables[sections[0]] = float(sections[2])
        elif len(sections) == 5:
            if sections[0] == "ventIf":
                if sections[2] == "equallySus":
                    if represents_int(sections[3]):
                        if variables[sections[1]] == float(sections[3]):
                            counter = tasks[sections[4]]
                    else:
                        if variables[sections[1]] == variables[sections[3]]:
                            counter = tasks[sections[4]]
                elif sections[2] == "moreSus":
                    if represents_int(sections[3]):
                        if variables[sections[1]] > float(sections[3]):
                            counter = tasks[sections[4]]
                    else:
                        if variables[sections[1]] > variables[sections[3]]:
                            counter = tasks[sections[4]]
                elif sections[2] == "lessSus":
                    if represents_int(sections[3]):
                        if variables[sections[1]] < float(sections[3]):
                            counter = tasks[sections[4]]
                    else:
                        if variables[sections[1]] < variables[sections[3]]:
                            counter = tasks[sections[4]]

        counter+=1



os.system('cls' if os.name == 'nt' else 'clear')

execCode(open(sys.argv[1],"r").read())