MiniScript

**MiniScript** es un lingua de programi de nivel alta cual intende es peti e fasil per los ci comensa aprende la programi. Lo suporta modeles strutural, prosedal e ojetal (tra prototipos). Developa de MiniScript e sua distinguintes es inspirada par linguas Python, Lua, REALbasic e C#.

Sua varia stable prima ia es publicida a 2017. La fonte ia deveni abrida a 2019.

La interpretador ofisial es internable a otra programes (scriveda en C++ o C#) ma on pote ance usa lo como un esecutador interatante (REPL) o un esecutador de programetas. La sufisa ofisial de fixes de programes es `.ms`.

On ave alga projetas nonofisial cual tradui MiniScript a otra plataformas e capasi lor usores a interna MiniScript a programes scriveda en Kotlin, Java e TypeScript.

## Datos

MiniScript ave un cuantia peti de tipos de datos esensal: *numeros*, *cadenas*, *listas* e *asosias*.

On ave ance *funsionas* per organiza la codigo en modo prosedal. Como en multe linguas moderna, la funsionas es “sitadanes de la clase prima”.

On ave un valua spesial `null` sinifiante la asentia de cualce valua usosa. Lo parteni a sua propre tipo distinguida.

On pote crea tipos nova usante asosias como “prototipos”. La nomerias de funsionas e modulos es ance asosias.

## Strutures de controla

MiniScript furni poca strutures de controla simple:

* `if` per eleje la ramo de esecuta
* `while` per sicles con un espresa elejente
* `for` per sicles iterante

## Esemplos de programes

Program vera simple cual primi “Alo mundo”:


```miniscript
print "Alo mundo!"
```


Program per calcula la fatoral:


```miniscript
// Calcula la fatoral de un intero positiva
fatoral = function(x)
	if x < 2 then return 1
	return x * fatoral(x - 1)
end function

print fatoral(input("Tape un numero, e sua fatoral va es primida: ").val)
```


Esemplo de labora con ojetos:


```miniscript
Forma = {}
Forma.lados = 0

Cuadro = new Forma
Cuadro.lados = 4

x = new Cuadro
print x.lados   // primi: 4

Forma.grados = function()
    return 180 * (self.lados - 2)
end function

print x.grados // primi: 360
```


Estende de la tipos fundal:


```miniscript
string.tituli = function()
    if self.len < 2 then return self.upper
    return self[0].upper + self[1:]
end function

print "miniScript".tituli  // primi: MiniScript
```


## Ospitadores

Alga ambientes cual interna o esposa MiniScript:

* **Mini Micro** – un computador retromodosa fantasiada do MiniScript es sua lingua de programi e ance de linia de comandas.
* **Farmtronics** – un modifia de la jua “Stardew Valley” en cual on pote oteni un computador de casa e robotes e programi los en MiniScript.
* **Grey Hack** – un jua de imitador de codigor do MiniScript (remarcada a *GreyScript*) es usada como la lingua de programi de la computadores en la jua.
* **Robo Reindeer Rumble** – un jua de programi multijuoral do juores programi robotes combatante (cual aspeta como renos) en MiniScript.

## Projetas

Asi es alga projetas scriveda en MiniScript:

* **Inversion Institute** (“Institui de Inversa”) – un jua-rompetesta sur majia e lojica.
* **Mini Micro Sokoban** – un varia de jua nion clasica.
* **World Conquest** (“Concista de Mundo”) – un minijua orijinal de stratejia.
* **µ-hack** – un jua “roguelike” retromodosa.

## Lias esterna

* MiniScript – Paje prima
* MiniScript a Rosetta Code

## Notas