Es un lenguaje interpretado que permite realizar operaciones con los objetos matemáticos:
- palabra
- lenguaje
- alfabeto
El interprete de lang está hecho con python, por lo que para correr lang en tu dispositivo necesitas tener python 3.11 o superior instalado.
- Descarga el .zip del repositorio o clonalo
- Ejecuta pip install . en la carpeta LangOp dentro del entorno virtual donde desees instalar lang
Para ejecutar cualquier archivo .lang sólo es necesario ejecutar el comando lang <ruta de archivo .lang>
,
el interprete está en una versión muy temprana, así que disculpa la poca información que brinda respecto a los errores.
Son palabras y se pueden definir usando la siguiente sintaxis
String word1 = "ab cd ef";
Todo lo que esté entre ""
será considerado parte de la palabra.
Se puede cambiar en cualquier momento el contenido de la variable word1
reasignando su valor,
además podemos visualizar el contenido de la variable usando la sentencia show
.
String word1 = "ab cd ef";
word1 = "2222";
show word1;
*
-> Operador de concatenación; concatena dos palabraspalabra1*palabra2
^
-> Operador de elevación; eleva una palabra al expontente entero establecidopalabra1^2
||
-> Operador de longitud; calcula la longitud de una palabra| palabra1 |
|on|
-> Operador de longitud sobre alfabeto; calcula la longitud de una palabra sobre un alfabeto dado|palabra1 on alfabeto1|
suffixof
-> Operador de sufijos; calcula todos los sufijos de la palabra y los vuelve un lenguajesuffixof palabra1
prefixof
-> Operador de prefijos; calcula todos los prefijos de una palabra y los vuelve un lenguajeprefixof palabra1
subsequenceof
-> Operador de subsecuencias; calcula todas las subsecuencias de una palabra y las vuelve un lenguajesubsequenceof palabra1
substringof
-> Operador de sub cadenas; calcula todas las sub cadenas de una palabra y las vuelve un lenguajesubstringof palabra1
Son valores enteros y pueden definirse usando la misma sintaxis que se usa para definir palabras.
Int a = 1, b = 2;
a = 3;
b = 4;
+
-> Operador de suma-
-> Operador de resta/
-> Operador de división entera*
-> Operación de multiplicación^
-> Operación de elevación
Son el conjunto de unidad mínima para un lenguaje y se definen con la siguiente estructura.
Alph alp1 = {"a", "b", "c"}, alp2 = {"ef", "gh"};
+
-> Operador de unión*
-> Operador de concatenación**
-> Operador de clausura de Kleene; se usa a pasos para lidiar con los infinitos;alp1**10
calcula los 10 primeros elementos de la clausura de Kleene*+
-> Operador de clausura positiva; se usa a pasos para lidiar con los infinitos;alp2**10
calcula los 10 primeros elementos de la clausura positiva
Son el conjunto de unidad mínima para un lenguaje y se definen con la siguiente estructura.
Lang lan1 = {"a", "b", "c"}, lan2 = {"ef", "gh"};
+
-> Operador de unión*
-> Operador de concatenación**
-> Operador de clausura de Kleene; se usa a pasos para lidiar con los infinitos;alp1**10
calcula los 10 primeros elementos de la clausura de Kleene*+
-> Operador de clausura positiva; se usa a pasos para lidiar con los infinitos;alp2**10
calcula los 10 primeros elementos de la clausura positiva
Para probarlo te recomendamos ejecutar los archivos de ejemplo incluidos en la raíz del proyecto 🧐