A line of PILOT code contains (from left to right) the following syntax elements:
The command letters used in Pilot are as 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. Always used without any operand.
J:
Jump to label.
Example:
J:*RESTART
M:
Match the accept buffer against string variables or literalss.
Example:
A: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.
Examples:
R:Output a literal string T:Thank you for your support.
R:Output a variable expression T:Thank you, $NAME.
U:
Use (call) a subroutine. A subroutine starts with a label and ends with E:
Example:
R:Call subroutine starting at label *INITIALIZE U:*INITIALIZE
Y:
Equivalent to TY: (type if last match successful)
If there is parenthesized expression in a statement, it is a test expression, and the statement is processed only if the test has a value of 'true'.
Example:
R:Type message if x>y+z T(#X>#Y+#Z):Condition met
The above is a description (but not a definition) of "core pilot". Extensions to core pilot include arrays and floating point numbers in Apple PILOT, and implementation of turtle graphics in Atari PILOT.