Skip to main content

Gugugaga

Gugu

A small programming language with its own syntax, tooling, and personality.

About

Gugugaga (e.g. Gugu) is a small programming language designed to be simple, expressive, and distinctive.

It has its own syntax, keywords, data types, classes, decorators, modules, and a dedicated VS Code extension.

Source files use the .gugu extension.

The Gugugaga programming language is based on python.

Example

gugu hello(name):
    gu(f"Hello, {name}!")

gua name = gug("What's your name? ")
hello(name)

Run it with:

gugu hello.gugu

Installation

PyPI Installation

The recommended way to install Gugu is through PyPI:

python -m pip install gugugaga

Once installed, if you have a Gugu file, you can run Gugu with:

gugu <your-file-name>.gugu

If You don't have a gugu file, You can just make one.

Manual Installation

Clone the repository:

git clone https://github.com/siohaft/gugugaga.git
cd gugugaga

Install the project:

python -m pip install .

You can then run Gugu with:

gugu examples/hello.gugu

Features

  • Functions and classes
  • Variables and multiple assignment
  • if, elif, and else
  • for and while loops
  • break and continue
  • Boolean and logical operators
  • Built-in data types and functions
  • Modules and imports
  • Import aliases
  • Decorators
  • F-strings
  • Augmented assignment
  • Comments
  • VS Code support

Keywords

Gugu Purpose
gugugaga Class
gugu Function
goo If
goga Elif
gaa Else
guale While
guu For
gureak Break
gugugoo Continue
ga In
go As
gunot Not
guand And
guor Or
goat True
gusfand False
gua Variable definition
gaga Return
gagu From
guga Import

Built-in Functions

Gugu Purpose
gu Print
gug Input
gin Minimum
gax Maximum
guo Open a file

Example:

gua x = guint(gug("Enter x: "))
gua y = guint(gug("Enter y: "))

gu(f"Maximum: {gax(x, y)}")
gu(f"Minimum: {gin(x, y)}")

Data Types

Gugu Type
guint Integer
gufloat Float
gudouble Double
gucomplex Complex
gubool Boolean
gustr String
gubytes Bytes
gubytearray Byte array
gumemoryview Memory view
gulist List
gutuple Tuple
gudict Dictionary
guset Set
gufrozenset Frozen set

Functions

gugu add(a, b):
    gaga a + b

gua result = add(10, 20)
gu(result)

Conditions

goo score >= 90:
    gu("Excellent!")
goga score >= 60:
    gu("Passed!")
gaa:
    gu("Failed!")

Loops

For

guu i ga range(5):
    gu(i)

While

guale x > 0:
    gu(x)
    x -= 1

Break and Continue

guale goat:
    gua value = gug()

    goo value == "stop":
        gureak

    goo value == "":
        gugugoo

Classes

gugugaga Person:

    gugu hello(self, name):
        gu(f"Hello, {name}!")

gua person = Person()
person.hello("Moon")

Decorators

Gugu provides its own decorator names:

@gugustatic
@guguclass
@guguproperty

Example:

gugugaga Math:

    @gugustatic
    gugu add(a, b):
        gaga a + b

gu(Math.add(5, 3))

Imports

Gugu supports multiple .gugu files.

Example:

project/
├── main.gugu
└── math.gugu

math.gugu:

gugu add(a, b):
    gaga a + b

main.gugu:

gagu math guga add

gu(add(5, 3))

Modules can also be imported directly:

guga math

Aliases are supported:

gagu math guga add go plus

Strings

Both single and double quotes are supported:

gu("Hello")
gu('Hello')

F-strings are supported:

gua name = "Gugu"
gua version = 1

gu(f"{name} version {version}")

Expressions inside f-strings can use Gugu functions:

gua x = 10
gua y = 20

gu(f"Max: {gax(x, y)}, Min: {gin(x, y)}")

Comments

Use # for comments:

# This is a comment

gu("Hello")

In VS Code, Ctrl + / toggles line comments for .gugu files.

VS Code

Gugu includes a dedicated VS Code extension called Gugugaga.

It provides:

  • .gugu file recognition
  • Syntax highlighting
  • Gugu file icons
  • Comment toggling
  • A Run button
  • Gugu execution support

Project Structure

gugugaga/
├── src/
│   └── gugu/
│       ├── __init__.py
│       ├── lexer.py
│       ├── parser.py
│       ├── translator.py
│       ├── importer.py
│       └── cli.py
│
├── examples/
│   └── ...
│
└── vscode/
    └── gugugaga/
        ├── package.json
        ├── extension.js
        ├── icon.png
        ├── language-configuration.json
        └── syntaxes/
            └── gugu.tmLanguage.json

Status

Gugu is an experimental programming language under active development.

The language and tooling are continuing to evolve.

Contributing

Contributions, ideas, bug reports, and feature suggestions are welcome.

When proposing a new feature, keep the language's core goal in mind:

Gugu should feel like its own language.

License

See the repository's license file for licensing information.

Metadata

Release files for gugugaga 0.1.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for gugugaga 0.1.3
File Size Uploaded
gugugaga-0.1.3.tar.gz 11.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for gugugaga 0.1.3
File Interpreter ABI Platform
gugugaga-0.1.3-py3-none-any.whl Python 3 none any Details

Total release size: 21.2 kB

Release files / gugugaga-0.1.3.tar.gz

Download URL gugugaga-0.1.3.tar.gz
Size 11.5 kB
Tags Source
SHA-256 checksum
How to use checksums
6e99a865945d5d521545e289477de75d88066bb86437551d9d81e0f057ca50a2
BLAKE2b-256 checksum
How to use checksums
cedb5391e8bd21a0414461848b7c7b53ebfee8c7a03768fd9c2b2796ee5436b6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release files / gugugaga-0.1.3-py3-none-any.whl

Download URL gugugaga-0.1.3-py3-none-any.whl
Size 9.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
aa3543ad2152389159e6ca9344c71db2fd508eae38fc20c1311c5d09e3f6fb00
BLAKE2b-256 checksum
How to use checksums
cc9899852f78a75755ec069d10bb00f9502d1d18bb146d7fde89aa065b1e0765
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.3

Release history Release notifications | RSS feed

0.1.4

2 release files

This release

0.1.3 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page