Clone wiki

inf225public / Stack Lang

(@Kristoffer Haugsbakk)

Idéen er å lage eit stack-basert programmeringsspråk - med midlertidig namn "stacklang" - som er inspirert av Forth (rettare sagt den lille kjennskapen eg har til Forth). Eg har også lyst til å språket sånt at ein kan bruke det veldig interaktivt (så implementasjonen kjem nok til å fokusere mest på ein interpreter, forhåpentligvis også funksjonar med statisk semantikk for å kunne ha ein slags kompilator-del av evalueringa). Implentasjonen skjer i Haskell.

Ein mogleg rekkefølge på implementeringa er:

  • Gjer postfiks aritmetikk med konstantar mogleg (implementert)
  • Implementer minimum sett med funksjonar (frå her av referert til som "words") som eg trenger for å kunne gjennomføre all mogleg stack-manipulering i Haskell.
  • Implementer moglegheit for å implementere eigne words i sjølve språket.
  • (Implementer "immediate words" som er words som har ein meir 'statisk' (makro?) semantikk. Dette burde gjere sånn at ein kan implementere det over)
  • Implementer moglegheit for å kunne bruke strengar
  • Implementer moglegheit for å kunne bruke ein slags samling-datatype, som ei liste eller ein tabell (eller ein stabel....)
  • (implementer moglegheit for å kunne bruke lokale variablar i words. Det er kanskje ikkje strengt tatt nødvendig for uttrykks-kraften til språket, men er kanskje nødvendig for at ein ikkje skal bli gal når ein faktisk programmerar i språket. På den andre siden så burde kanskje språket være så interaktivt at det å lage words utan lokale variablar er like enkelt som eit vanlig språk med lokale variablar...).

  • Implementer ein REPL som skal være veldig interaktivt med hensyn til å eksekvere program på mange forskjellige måtar. For eksempel så har eg lyst til å kunne lage eit ord som avbryter eksekveringa av programmet når programmet møter det og printer ut stack så langt, samt at ein kan fortsette programmet frå det punktet (så som eit breakpoint). At sånne ting er mogleg kjem altså sikkert til å ha meir med sjølve språket enn REPL å gjere.

  • Kanskje meir, men no har eg kanskje lagt ei for lang liste for mitt eige beste. :)

Updated