Um dos exemplos de Squaak é
factorial.sq
:# Copyright (C) 2008, Parrot Foundation.
# $Id: factorial.sq 36833 2009-02-17 20:09:26Z allison $
print("Please enter number: ")
x = read()
sub factorial(n)
## test for < 2 because all numbers are represented by
## floating-point numbers, and equality checks on those
## do not work (yet?)
if n < 2 then
return 1
else
return n * factorial(n - 1)
end
end
print("factorial of ", x, " is: ", factorial(x))
Voltando à Parrot VM, ela possui uma linguagem própria, um assembly.
Seguem aqui dois exemplos de seu assembly. Ambos gravam o que é digitado pelo usuário em um arquivo (
test.text
) e depois exibem o conteúdo do arquivo. Simples.O objetivo de dois códigos é mostrar como pode ser feita a escrita e leitura em arquivo usando descritor de arquivo, de modo totalmente procedimental (como em C), e usando manipulador de arquivo, lançando mão da orientação a objetos.
Descritor de arquivo (procedimental)
.sub 'main' :main
.local string filename
.local string line
.local pmc STDIN
.local pmc fd
filename = 'test.text'
STDIN = getstdin
# Writing operation
fd = open filename, 'w'
print "> "
line = readline STDIN
print fd, line
close fd
# Reading operation
fd = open filename, 'r'
line = read fd, 10240
print line
close fd
.end
Manipulador de arquivo (OO)
.sub 'main' :main
.local string filename
.local string line
.local pmc STDIN
.local pmc file_handle
filename = 'test.text'
STDIN = getstdin
file_handle = new 'FileHandle'
# Writing operation
file_handle.'open'(filename, 'w')
file_handle.'encoding'('utf-8')
print "> "
line = readline STDIN
file_handle.'print'(line)
file_handle.'close'()
# Reading operation
file_handle.'open'(filename, 'r')
line = file_handle.'readall'()
print line
file_handle.'close'()
.end
[]’s
Cacilhας, La Batalema