maintained by Brian Connors
revised 5 September 2001
Version Information
This is the status of the var'aq project as of 12 August 2001.
This is the pre-martoq 0.5 release, after the Klingon general who
became chancellor after tbe death of Gowron. It is still a work in progress,
and the final martoq release package will be available some time in
late August or early September.
Status Summary
Lists currently exist, though the file support remains undefined.
Thanks to Jeff Evarts (bug fixes, list support) and Merrick J. Stemens (spec
suggestions and an upcoming VB version).
Interpreter Status
The Klingon and English interpreters in the process of being unified; there
should be no problems running either type of var'aq program through the
interpreter, and since I was a bit lazy about it you can mix and match
languages as you choose.
Jeff Evarts has added the basics of list support; big thanks go to him for
that.
The following keywords are currently supported:
Control Structures
ifyes/HIja'chugh
ifno/ghobe'chugh
choose/wIv
~ (quote/lI'moH)
name/pong
set/cher
repeat/vangqa'
eval/chov
Stack Operations
pop/woD
dup/latlh
exch/tam
clear/chImmoH
remember/qaw
forget/qawHa'
Arithmetic Operators
add/boq
sub/boqHa'
mul/boq'egh
div/boqHa'egh
mod/chuv
pow/law'qa'moH
rand/mIS
add1/wa'boq
sub1/wa'boqHa'
pi/HeHmI'
e/ghurmi'
clip/poD
smooth/Hab
howmuch/'ar
Trig/Log operators
sin/joq
cos/joqHa'
tan/qojmI'
atan/qojHa'
ln/ghurtaH
Relational Operators
All relational operators have been implemented. Thanks to j proctor for null?/pagh'a', negative?/taH'a', int?/HabmI''a', and number/mI''a'.
I/O Operators
The var'aq I/O model remains to be defined, but the basic console I/O functions are now present.
List Operators
All list operators are now available, though I still need a Klingon word for
consume.
String Operators
The current set of operators is sufficient to implement the others in the spec, but they are a lower priority.
strtie/tlheghrar
streq?/tlheghrap'a'
strcut/tlhleghpe'
strmeasure/tlheghjuv
compose/naQmoH
Implementation Issues and/or Bug Fixes
The interpreter now knows to ignore hashbang (i.e. #!/usr/bin/varaq-whatever) lines. They can double as end-of-line comments if you like, but you really shouldn't; these are here primarily to allow the forthcoming vqmake program to spit out program files that a Unix shell can execute directly (which would be .vqx files on any other platform).
Took the "\t" out of disp/cha' to facilitate a possible CGI conversion. Better formatted output will be a priority very shortly.
The interpreter also doesn't see lines beginning with //. This is to allow for static linking of .vql files (though if someone wants to implement var'aq "shared libraries" I'll be glad to add the revs to the interpreter).
Cleaned up the execution logic a bit -- the code to execute a proc object was already in there about four times and was about to go in again for compose/naqmoH, so I abstracted it into a routine called execblock() per Chris' advice (RTFC).
Merged in j proctor's additions.
Specification Status
A few changes:
A number of operators have been added:
//name -- equivalent to C #include.
Numerous "constants" (actually more like environment variables).
Several operators have been renamed:
strcat is now strtie to bring it in line with the Klingon tlheghrar.
The basic arithmetic operators have been given new
Klingon names to coincide with recent additions to the Klingon linguistic
canon.
More coinages in the section headings.
Acknowledgements
The varaq-dev mailing
list, especially j proctor for
his code contributions and Alan Anderson for providing the canonical
Klingon math operators, and to Glenn Gaslin for the impetus to finally
get this thing out the freakin' door.