PILOT

related topics
{math, number, function}
{system, computer, user}
{son, year, death}
{service, military, aircraft}
{style, bgcolor, rowspan}

The name PILOT is an acronym, and stands for Programmed Instruction, Learning, Or Teaching. Like its younger sibling LOGO, it was an early foray into the technology of computer assisted instruction (CAI).

Contents

Language syntax

A line of PILOT code contains (from left to right) the following syntax elements:

  • an optional label
  • a command letter
  • an optional Y (for yes) or N (for no)
  • an optional conditional expression in parentheses
  • a colon (":")
  • an operand, or multiple operands delimited by commas.

A label can also be alone in a line, not followed by other code. The syntax for a label is an asterisk followed by an identifier (alphanumeric string with alphabetic initial character).

Command letters

The following commands are used in "core PILOT". Lines beginning with "R:" indicate a remark (or a comment) explaining the code that follows.

A:

Accept input into "accept buffer".

Examples:

 R:Next line of input replaces current contents of accept buffer
 
 A:

 R:Next line of input replaces accept buffer, and string variable 'FREE'
 
 A:$FREE

 R:Next 3 lines of input assigned to string variables 'X', 'Y' and 'Z'
 
 A:$X,$Y,$Z

 R:Numeric input assigned to numeric variable "Q"
 
 A:#Q

C:

Compute and assign numeric value.

Example:

 R:Assign arithmetic mean of #X and #Y to #AM
 
 C:#AM=(#X+#Y)/2

Most PILOT implementations have only integer arithmetic, and no arrays.

D:

Dimension an array, on some implementations.

E:

End (return from) subroutine or (if outside of a subroutine) abort program. Always used without any operand.

J:

Jump to label.

Example:

 J:*RESTART

M:

Match the accept buffer against string variables or string literals.

Example:

 R:Search accept buffer for "TRUTH", the value of $MEXICO and "YOUTH", in that order
 
 M:TRUTH,$MEXICO,YOUTH

The first match string (if any) that is a substring of the accept buffer is assigned to the special variable $MATCH. The buffer characters left of the first match are assigned to $LEFT, and the characters on the right are assigned to $RIGHT.

The match flag is set to 'yes' or 'no', depending on whether a match is made. Any statement that has a Y following the command letter is processed only if the match flag is set. Statements with N are processed only if the flag is not set.

N:

Equivalent to TN: (type if last match unsuccessful)

R:

The operand of R: is a comment, and therefore not processed.

T:

'Type' operand as output.

Full article ▸

related documents
Linear congruential generator
Greedy algorithm
Euphoria (programming language)
Complement (set theory)
Logical disjunction
Divisor
Binary function
Reverse Polish notation
Lagrange's theorem (group theory)
Simple LR parser
Lipschitz continuity
Chomsky normal form
Ordered field
Metrization theorem
Graded algebra
Uncountable set
Amicable number
Nash embedding theorem
Kernel (category theory)
S-expression
Goldbach's weak conjecture
Topological ring
De Moivre's formula
Regular language
Twin prime conjecture
CLU (programming language)
Parity (mathematics)
MD5
Syntactic sugar
Identity element