Tuesday 9 March 2010

Skriptihöskä elää taas

Sain bussissa idean: Skriptihöskän versiossa 0.3 nähdyt puolipilkut palaavat! Joka rivin, lukuunottamatta foreja ja iffejä ja hienompia rakenteita, on päätyttävä SHaV4 - syntaksissa puolipilkkuun (;). Tuossa vanhassa versiossahan puolipilkuilla välitettiin puolipilkuilla rivien määrä. Nyt suunnittelen sellaista, että jos normaalit komennot lopetetaan puolipilkkuun, on tulkin ja tavuohjeistimen tasolla asiat PALJON paremmin. SHaV3:ssa yksittäiset rivit olivat kokoelman jäseniä, kun taas SHaV4:ssa suunnittelen että koko koodi ladattaisiin yhteen ainoaan muuttujaan. Tätä muuttujaa parseroitaisiin sitten GetWord(koodi,N,";") - funktiolla, jonka parametreissa koodi on muuttuja joka sisältää koodin, N on For - rakenteen hallitsema juokseva numero, ja viimeinen parametri määrittelee erotusmerkin.

Eli. Yksi muuttuja, josta napattaisiin Getwordillä pienempiä paloja käsiteltäväksi. Järjettömästi helpompi koodata kehittyneeksi kuin rivi/kokelman jäsen - ajattelumalli.

Ja toinen uutinen, kun viimeisissä blogiviesteissäni hehkutin että osaan käyttää tiedostoja c++-koodilla, niin pakkohan tätä oli soveltaa. Olen aloittanut Skriptihöskä++ - projektin. Kyseessä on siis ajoympäristö, joka lukee koodin, muodostaa siitä Integertaulukon josta switch() - rakenne lukee että miten toimia, ja siinä sivussa ajaa koodin. Eli käytännössä sama projekti kuin Skriptihöskä, c++:lla vain kirjoitettu.

Suunnitelma olisi että SHa++ söisi SHaV4 - syntaksia, josta kerronkin seuraavaksi.

Kun vanhemmissa versioissa pystyi vain latelemaan komentoja:

tulosta "Hello world"

odota_painallusta

SHaV4 odottaakin seuraavanlaista koodia:


tulosta "Hello World";

odota_painallusta;


Eikä tässä vielä kaikki, tässä oli vasta näkyvin uudistus. Chen suuntautuva syntaksi tuo mukanaan myös funktiot (ainakin suunnittelutasolla). Kun jo SHaV2 esitteli muistaakseni muuttujat C:mäisesti "int muuttuja" tai "str muuttuja", niin SHaV4:n mukanaantuoma funktiomäärittely menisi jotenkin seuraavasti: "int funktio(int yks int kaks)" eli paluuarvo, funktion nimi, ja parametrit. Konepellin alla tuo loisi funktiokokoelmaan uuden jäsenen jonka koodi-kenttään sijoitettaisiin varsinainen koodi ja "kahvana" nimi-kenttä saisi funktiomäärittelyssä määritellyn nimen (yllä olevan perusteella siis "funktio")

Parametreja täytyy vielä miettiä. Yksi vaihtoehto on että teen muistipalakokoelman, josta luon joka funktiolle oman jäsenen, joka omaa osoittimen muistipalaan, johon on tallennettu asciita tai integerejä parametrin tyypistä miettien. Helpomminkin voisi tehdä, mutta pitäähän funktio - käsitteen pinoperinteitä kunnioittaa.

Ja mitäs muuta, ei kait tässä enää enempää. Perustin Yooliin (3.0) projektisivun, johon tulee vielä sisältöä (eli dokumentaatiota) kun projektit ovat julkaisukunnossa. Nauttikaa.

No comments:

Post a Comment