ImgPL – Image Programming Language är slutprodukten av kursen TDP019 PROJEKT: Datorspråk här på Innovativ Programmering. ImgPL är ett domänspecifikt språk tänkt att användas för att redigera bilder i första hand, med hanterar även vanliga konstruktioner så som kontrollsatser, upprepningssatser och input/output. ImgPL är ett interpreterat språk, och har en enkel och ren syntax liknande den i Python. Språket är dessutom indenteringsstyrt, vilket bäddar för lättläst och tydlig kod. ImgPL kan användas som ett verktyg för bildredigering direkt via tolken, och man kan också skapa större program i fil. ImgPL är ett objektorienterat språk. All bildredigering sker med enkel objektorienterad kod, och klasser med instansvariabler och medlemsfunktioner kan skapas.
Språket klarar av följande bildfunktioner (mer om det i dokumentationen):
* save
* slideshow
* display
* rotate
* flip
* scale
* bw
* addText
* watermark
* getDimensions
* getFilename
* convert
Och självklart klarar ImgPL av kontrollsatser (if, else if, else) och upprepningssatser (for, while), samt boolska värden, strängar, arrayer, range och tal.
Lite enkel bildhantering:
/*
A example program featuring simple image manipulations.
*/
smiley = Image.new("examples/smiley.png")
println << "Displaying a smiley!"
smiley.display()
println << "Rotating and displaying"
smiley.rotate(90)
smiley.display()
println << "Adding a text and displaying!"
smiley.watermark("Hello world!", 30, 30)
smiley.display() |
Rekursivitet, mycket tjusigt:
/*
Example program featuring recursion, with the famous fibonnacci numbers!
*/
func fib(input)
if input is 0 then
return 0
else if input is 1 then
return 1
return fib(input-1) + fib(input-2)
print << "Enter an number: "
get >> number
println << "The " + number + "th fibonnacci number is " + fib(number) |
Fler exempel finns i mappen examples i paketet.
Kursen går ut på att implementera ett eget datorspråk, från grammatik till lexning och parsning. Det kan låta som en omöljig uppgift, då det tar organisationer lång tid att göra det samma, men faktum är att det inte var så svårt när man försått koncepten. Det blir ju inga högprestandaspråk givetvis, då de flesta som gått kursen har använt den RDparser som ingick som verktyg i kursen, och dessutom implemeterat språket med hjälp av Ruby. Kompilatorteknik läser vi senare. Kursen ger god insikt i vad som krävs för att göra ett programmeringsspråk, och hur man bär sig åt.
Dokumentation: Rapport, manual, grammatik och kod
Källkod: Image-Programming-Language.tar