Aquest es el segon escrit d’una sèrie que repassarà el desenvolupament d’un llenguatge de programació amb el qual poder fer JailGames de forma ràpida i còmoda. En aquest mostrarem com serà el llenguatge.
Whitespace i comentaris
Els espais en blanc, les tabulacions i els salts de línia seran considerats “whitespace” i s’ignoraràn, sent d’única utilitat com a separadors entre la resta de elements. Nomes els espais que estiguin entre dobles cometes (“) seran processades i incloses al “string” corresponent.
La paraula clau “rem” o el operador cometa simple “ ‘ “ indicaran el principi d’un comentari, fent que s’ignore la resta de la línia.
Variables i Tipus
Tindrem els tipus de dades number, string i els que pugem definir mitjançant estructures. El tipus number es un nombre decimal en coma flotant de 4 bytes, equivalent a float de C, i serà l’unic tipus numèric del llenguatge. El tipus string s’usarà per a cadenes de text i la seua implementació encara està un poc en l’aire. La lògica booleana es farà a traves del tipus number, sent 0 igual a fals i -1 igual a vertader. Es definiran les constants de sistema true, que valdrà -1, i false, que valdrà 0.
Les variables es declararàn de la següent forma:
var peiv as number = 4
No es obligatori especificar un valor al declarar una variable, però si es fa es pot ometre el tipus:
var meim as string ' Açò es vàlid var teib = 4 'Açò també es vàlid
La forma que tenim de definir nous tipus es amb "struct":
struct tipus_arounder x as number y as number end var arounder as tipus_arounder
Accedirem als membres del struct amb l’operador “.”, com en C i molts altres llenguatges.
També es podran declarar arrays, amb la següent sintaxi:
var arounders as array of 10 tipus_arounder
I accedir a ells amb l’operador [], com en C:
peiv = arounders[2].x ' Accedim al tercer membre del array
Funcions
Es podran definir funcions, tant externes com internes. Les externes es definiran des de C, mentre que les internes es definirien de la següent forma:
function duplicar(valor as number) as number return valor * 2 end
Una funció pot no retornar ningun valor, però si en retorna s’ha d’especificar el tipus d’aquest valor, com en l’exemple anterior.
Condicions
Per ara nomes tinc planificat incloure la clàusula “if”, però potser mes avant incloga algun tipus de “switch”:
if arounder[1].x = arounder[2].y then arounder[3].y = arounder[3].y - 1 else reset_arounders() end
No fan falta parèntesi al voltant de l’expressió avaluada. El operador de comparació es “=”, ja que, al contrari que en C, no es poden fer assignacions en mig d’una expressió. La clàusula “else” es, per suposat, opcional.
Bucles
Tenim tres tipus de bucles: “for”, “while” i “repeat”:
for i as number = 0 to 9 step 1 do arounders[i].x = 0 end
La variable iteradora pot existir prèviament o ser declarada in-situ per a us del bucle, com en l’exemple. El bucle s’executarà per a tot el rang, inclosos el nombre inicial i el final (en el cas del exemple, s’executarà tant per al “0” com per al “9”. La clàusula “step” es opcional i indica quant s’ha d’avançar en cada iteració. Si no s’especifica es suposa “1”
while peiv < 4 do peiv = peiv + 1 end repeat peiv = peiv - 1 until peiv = 0
De nou, tant en el “while” com en el “repeat”, no fan falta parèntesi al voltant de l’expressió avaluada. Probablement acabe afegint les clàusules “break” i “continue”, que tindrien el seu significat habitual.
En el pròxim post parlaré de lexemes, gramàtiques i altres temes raros
Cap comentari:
Publica un comentari a l'entrada