Colon: Introduksjon

Jeg er en av disse særingene som synes det er gøy å leke seg med syntaks til eget programmeringsspråk og ikke bare måtte gjøre hva andre har funnet på og bestemt seg for.

Først holdt jeg på med et språk kalt Minky deretter ble det en ny iterasjon av Minky til jeg ble en smule fasinert av hvor lite kode en kunne klare seg med i det stack-baserte språket Raven. Så nå er det Colon det jobbes med.

Et av mine mål er å kunne skrive programvare kjappere for ARM-baserte duppeditter slik som OpenMoko-baserte Neo 1973 uten å måtte skrive en avhandling i kode, bare for noe så lite som en enkel GUI Hello World applikasjon.

Språket er kalt Colon rett og slett fordi en definerer ordene på samme måte som en gjør i et vanlig språk med kolon rett etter ordet.

  1. pi: 3.14
  2. hello: "Hello World" out

Videre brukes kolon til å hente ut et element fra stacken for så å lagre det i ordet som følger rett etter kolon.

  1. 5 10 4 :a :b :c

Bytte av innhold i to ord blir da:

  1. a b :a :b

Den tredje bruken av kolon i Colon er kolon som et ord på samme form som “Ternary” i C mao “cond ? expr1 : expr2”. Om en vil ha if/if istedenfor if/else brukes semikolon til avslutte. Ordene for å sammenligne som f.eks = > < osv. konsumerer bare det første elementet på stacken og dermed muliggjør også en switch type konstruksjon.

  1. 10 = ? "Number is equal to ten" out
  2. 10 < ? "Number is less than ten" out
  3. : "Number is greater than ten" out

Tall etter et ord er reservert som repitisjon av ordet x antall ganger og gjelder alle ord og ikke bare de som er definert som forskjellige ord som f.eks. dup2 og dup3 i andre stack-baserte språk. Omskrivningsregler av bytekode vil skrive om de vanlige slike dobble like bytekoder til egen der det er hensiktsmessig.

  1. 1 2 3 4 +3
  2. 10 dup4

Each = | og brukes for å ta ett og ett element til stacken og utføre det til høyre inntill kodeblokken er slutt eller til semikolon.

  1. {"cat" "dog" "horse"} | out
  2. 0 {1 2 3} | + ; out
  3. {} {1 2 a 3 4 b 5 6} | 3 > ? +
  4. {3 4 5} | ; # dytter tallene på stacken
  5. {{0 1} {2 3}} |2 ; :y :x "(@x,@y)" out
  6. {name: "Terje" age: 31} | key "key: @0 value: @1" out
  7. "file://test.txt" open lines | length "@0 chars in line @key" out

Tilbaketråkk url: klikk her!
Stikkord: colon
Fb

Relevante innlegg/sider/lenker

0 tilbaketråkk: