by Eduardo Aguilar and Aaron Garcia
OwO es un lenguaje de programación procedimental, se compila utilizando python y se ejecuta por una máquina virtual de Python. Corre en cualquier sistema operativo incluyendo dispositivos móviles.
Documentación y Consideraciones de OwO Language
- OwO - Lenguaje de Programación
Lo ÚNICO que requiere el programa de OwO es que el archivo empieze con la palabra OwO
.
No tiene que seguir una estructura en específico no requiere de una función de entrada main ni nada. Cada archivo requiere empezar con la palabra OwO
y apartir de esa línea todo es el contexto global.
Puedes declarar y definir funciones en cualquier lugar, se ejecuta el contexto global línea por línea apartir del OwO.
Un programa básico se vería así:
OwO
function hola_mundo : void {
print("Hola mundo! OwO");
}
hola_mundo();
El lenguaje OwO soporta los siguientes tipos primitivos:
- int: numero entero positivo o negativo, sin punto decimal, de tamaño ilimitado.
- ej. 0, 1, 2, 3, -1, -2, -3
- float: numero con punto decimal ya sea positivo o negativo, de tamaño ilimitado.
- ej. 1.0, 1.5, 2.0, 0.0, -0.5, -1.0
- string: almacena palabras formadas por valores de la tabla ascii
- ej. "hola", "como", "estas?", "OwO"
- bool: almacena verdadero o falso, en inglés (solo tiene 2 valores)>
- ej. True, False
Esta tabla es la representación de los literales, divido por tipo primitivo.
Name | Quantity | Ejemplo |
---|---|---|
int | Valor númerico sin puntos decimales | 0,1,2,3,... |
float | Valor númerio con puntos decimales | 0,1,0.5,1.0... |
string | Cualquier palabra o letra rodeada por comillas dobles | "palabra", "a", ... |
bool | verdadero o falso | True,False |
Las variables globales en OwO se escriben en el archivo principal, afuera de las funciones, simplemente tienes que estar declaradas despu es de OwO
.
Syntax varaibles:
tipo nombre = literal;
Las funciones se pueden definir con el siguiente syntax:
function nombre tipo param1, tipo param2 : tipo {
...
}
Funciones pueden regresar cualquier tipo primitivo (pero es necesario tener un return
al final que regrese el mismo tipo establecido en la función):
function dame_esos_cinco : int {
return 5;
}
Funciones pueden no regresar nada (void
, no es necesario return
al final):
function imprime int x : void {
print(x);
}
Funciones pueden recibir parametros ilimitados:
# creas función
function suma int x, int y : int {
return x + y;
}
Puedes llamar a funciones:
- Sin parametros:
nombre_funcion(); - Con parametros:
nombre_funcion(expr);
# llamada a función
suma(1,2);
Los estatutos de condición pueden definirse con el siguiente syntax:
- if:
if (condición) {
...
} - if-else:
if (condición) {
...
} else {
...
}
Los ciclos son definidos con el siguiente syntax:
while (condición) {
...
}
int i = 0;
while (i < 10) {
print(i);
i = i + 1;
}
Las variables de 1-dimension o mejor conocidos como arreglos se definen con el siguiente syntax:
tipo nombre[int_literal];
# Declaración de arreglo de 3 posiciones
int arr[3];
Para accesarlos se utiliza el siguiente syntax:
nombre[int_literal];
# Inicializando arreglo anterior
arr[0] = 0;
arr[1] = 1;
arr[2] = 2;
Las variables de 2-dimensiones o mejor conocidos como matrices se definen con el siguiente syntax:
tipo nombre[int_literal][int_literal];
# Declaración de matriz de 2x2
int matriz[2][2];
Para accesarlos se utiliza el siguiente syntax:
nombre[int_literal][int_literal];
# Inicializando matriz anterior
matriz[0][0] = 0;
matriz[0][1] = 1;
matriz[1][0] = 2;
matriz[1][1] = 3;
Operadores Binarios
Operación | Token |
---|---|
Suma | + |
Resta | - |
Multiplicación | * |
División | / |
Módulo | % |
Operadores Unarios
Operación | Token |
---|---|
Positivo | + |
Negativo | - |
Operadores Binarios
Operación | Token |
---|---|
And | and |
Or | or |
Operadores Binarios
Operación | Token |
---|---|
Menor que | < |
Mayor que | > |
Menor igual que | <= |
Mayor igual que | >= |
Iguak | == |
Diferente a | != |
Operadores Binarios
Operación | Token |
---|---|
Igual | = |
Todos los operadores son asociativos a la izquierda, excepto el operador de asignación, es asociativo a la derecha.
- +, -
- *, /, %
- <, >, <=, >=, ==, !=
- or
- and
- =
Se pueden utilizar parentesis para modificar la precedencia de los operadores en las expresiones:
x = 2 + 4 / 2; # x = 4
x = (2 + 4) / 2; # x = 3
OwO tiene lógica aritmética, solo se pueden hacer operaciones entre enteros y enteros, flotantes y flotantes, o, enteros y flotantes.
OwO tiene varias funciones integradas para input y output:
Te permite imprimir cualquier elemento primitivo en la consola.
El syntax es el siguiente:
print(expr);
print("Hola mundo!");
Te permite leer input del usuario. Existen 3 tipos de syntaxis distintas dependiendo de que tipo de variable estés intentando leer:
-
Leer un string:
-
Leer un int:
nombre = input_i(); -
Leer un float:
nombre = input_f(); -
Leer un string:
nombre = input_s();
# Leer numero entero (int)
# Leer numero flotante (float)
# Leer una palabra (string)
int i = input_i();
float f = input_f();
string s = input_s();
En OwO es posible hacer concatenación de strings. La syntax es la siguiente:
string_literal + string_literal
# s contiene "Hola Mundo! OwO" al final de la 3er línea
string s = "Hola " + "Mundo!";
s = s + "OwO";
Utiliza el signo de gato #
al principio de una línea de código para que el compilador la "ignore".
# Esto es un comentario
print("Este no es un comentario.");