Quest32 is a 32-bit program development system for Windows XP, Windows 2000, and Windows 9x.
Supports creation of GUI and console applications and Windows DLLs.
Easy access to DLL based functions.
Extensive string handling base on a string stack.
Dynamic heap management for data buffering.
Structured error and exception handling.
Segmented architecture with a discardable symbol table for license-free distribution of applications.
Loop and conditional structures usable during interpretation as well as compilation.
Integrated floating point, including trig functions and complex numbers.
Command line editor with history recall and file name completion.
Feature-rich multi-language source code editor/IDE and debugger.
GDI object leak tracking.
Extensive system and file support libraries
Quest is a highly interactive, extensible Windows development system which supports both interpreted and compiled execution. It also supports incremental compilation.
Quest is a stack oriented language. Integers and address pointers are passed to and from Quest functions (known as "words") on the Parameter Stack. Real numbers (floating point) are passed on the Float Stack. Strings are passed on the String Stack. The Return Stack holds information related to program flow (such as return addresses) and can also be used by applications.
Quest source code uses Reverse Polish Notation syntax. Quest functions expect to find their parameters on one or more of the stacks and any parameters returned by the functions are typically left on a stack. Quest functions are executed in the order they are specified in the source code and there is no concept of operator precedence.
Quest does not keep track of data types or do any type checking. A number on the Parameter Stack can serve any purpose useful to the application. It is up to the programmer to insure that parameters are appropriate and reasonable for their intended use. Type conversions are never performed automatically.
New functions that are added to Quest become part of the language. There is no difference between the built in functions and the added on functions and there are no reserved words. If a new word is defined with the same name as existing word, the new word will be used in subsequent definitions that reference the word, but previous definitions which reference the word will continue to use the old definition.
Quest has two modes for parsing source code; interpret and compile. When Quest is interpreting source code, it takes the next group of characters, up to the next white space character, and tries to find a definition for the word in the Quest Dictionary. If the word is found, it is execute. If it isn't found, Quest tries to treat the word as numeric or string data. If the word is a valid number in the current base, it is pushed onto the Parameter or Float stack. If the word is a quoted string, it is pushed onto the String stack. If the word can't be treated as data, Quest looks for a library by the same name and loads it. If this fails, Quest halts with an error message.
When Quest is compiling source code, it takes each word from the input stream and searches the dictionary for its definition. If it defined, the words execution token is compiled into the current definition. If the word can be converted to data, it is compiled as a literal into the current definition. If this fails, Quest halts with an error message.
The basic unit of a Quest function is the word. A word is an object which has a name and has the ability to perform its default behavior when executed. Words can be primitive functions, high level procedures, data structures, etc. The data portion (body) of a word can contain machine code, high level instructions, or private or public data. Words can create other words and can modify the behavior of the Quest compiler.
Words are grouped into vocabularies. A vocabulary is a group of related words, joined together into a linked list which is searched starting with the newest definition. The current search order determines which vocabularies will be search and in what order.
The Quest Dictionary is a multi-segmented data structure which contains all of the currently compiled definitions and the control structures (i.e. symbol table) which make them useful. As new definitions are added to the dictionary, it grows larger. The Dictionary can be saved as an executable program which can execute as an application or as an enhanced development environment.
Quest32 can be used only for non-commercial uses. Programs created using it may only be distributed if the end user is not permitted access to the Quest32 interpreter or any of its development tools.
For any other use, please contact us for information about QuestPro and for quotes for volume licensing.
Send mail to
questions or comments about this web site.