Interpreters (computer languages)

Prognet(te) Ver 1

This interpreter is flexible and not much of Reverse Polish. Carrage returns are completely ignored; Prognet relies on you for the semicolons to terminate lines. Brackets are for bodies and indexes; braces are for lists; parentheses are for pairs, grouping and argument lists. There are also delimeters. (So without a semicolon, a line is connected to the next line.)

It allows you to think of variable names as data. Strings are a very different kind of an object.

Example of Prognet code:

define introduce() [
  let (name ~ input("What's your name? ")) [
    = '{why,hi,there,(name),very,nice,to,meet,you};

To try Prognet (or Prognette, if you prefer this feminine spelling), click here to get a zip file, then extract it to a directory.

Rejah(he) Ver 1

This interpreter is again Reverse Polish. However, it runs quite fast because its code is read as Rejah objects. Prefix an expression with ' to return it as the object the code is read as. There are other such characters (like `, :, #). But lists must be in brackets; parentheses are only for special cases.

This interpreter is so smart that it does not have to make a string of Python code and execute it under any purposes! Also, it supports macros (better than functions because special kinds of arguments are supported, such as names of variables). Can you guess what they look like? The function macro-ectn (macro execution) returns the body that is to be executed.

Scared of variable name capture? That's the purpose of the genvar (generate varname) function.

Rejah was a request from InterpreterAce, a sleepover camp held twice each summer, and it is in three parts:

Examples of Rejah code:

[define introduce [[name [input "What's your name? "]]]
  "This function introduces the user to Rejah.  name is a default argument"
  `[Why hello there, :name ! I am so pleased to meet you !]]

[macro recurse [var val #body]
  "A quite simple version.  The name of the captured function is self"
  `[letf [[self [:var] :#body]]
     [self :val]]]

[recurse n 9
  [if [iszero n]
    [print n]
    [self [1- n]]]]

To try Rejah (or Rejahhe to be fancier), click here to get a zip file, then extract it to a directory.

Hope you enjoy this website! It might change some other time.