Anonymous user
Category:Ursa: Difference between revisions
m
no edit summary
mNo edit summary |
mNo edit summary |
||
(5 intermediate revisions by the same user not shown) | |||
Line 1:
{{stub}}{{language|Ursa|exec=interpreted|site=http://cygnus-x.net/geekstuff/projects/ursa|strength=strong|gc=no}}
Ursa is a simple
The basic premise of ursa is to function as a very high-level abstraction layer between streams and "I/O devices." I/O devices are objects that represent locations that can be read and written using data streams; namely, the console, files, and network ports. Ursa greatly simplifies the implementation of programs that transfer data between these devices.
Ursa uses reverse polish notation for math and functions are simply seperated from their arguments by space characters. This makes implentation of Standard Ursa interpreters since this syntax is easier to write a parser for.
===See Also===▼
==Example Code==
===Raw File Transfer===
This Ursa code opens a port on a remote server, then outputs the specified file to the port.
<lang ursa>
if (< (size args) 4)
out "usage: " args<0> " [server] [port] [file]" endl console
stop
end if
decl file f
decl port p
f.open args<3>
p.connect args<1> (int args<2>)
out (f.readall) p
f.close
p.close
</lang>
===Single-User Echo Server===
<lang ursa># declare a serverport and a port to attach new connections to
declare serverport sp
declare port p
# declare a string to contain lines of input
declare string input
# attach the serverport to port 20000
sp.attach 20000
# loop indefinitely, getting connections then echoing the data they send
while true
set p (sp.getconn)
out "%msg: connection from " (p.addr) endl console
out "echo server " _version endl endl p
while true
set input (in string p)
out input endl p
if (and (= input "") (not (p.isopen 1000)))
break
end if
end while
p.close
out "%msg: connection closed" endl console
end while</lang>
* [http://cygnus-x.net/geekstuff/projects/ursa Ursa homepage]
|