Gugugaga
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, andelseforandwhileloopsbreakandcontinue- 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 |
|
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:
.gugufile 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.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| gugugaga-0.1.4.tar.gz | 11.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| gugugaga-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.2 kB
Release files / gugugaga-0.1.4.tar.gz
| Download URL | gugugaga-0.1.4.tar.gz |
|---|---|
| Size | 11.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
cb9ed9e37cda2ec0cb184a63fab0ba6d1e680a9808354f73dd376b3dea565e7d
|
|
BLAKE2b-256 checksum How to use checksums |
392d5cba2454e97d0d192b090d42ec24c9df7703e4f09ab5cf4e243ab91f1dfe
|
| 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.4-py3-none-any.whl
| Download URL | gugugaga-0.1.4-py3-none-any.whl |
|---|---|
| Size | 9.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
29879abd62cc8dca6892870996fd74d41f5d0c6bac94d57971cbf937c99de490
|
|
BLAKE2b-256 checksum How to use checksums |
34289e3e51a4c198d38329d00fa7ecaf80bb86281be054cb09bd3c2d6dd58b66
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.3
|