annotate ploki/doc/ploki-instr.txt @ 4220:bd96abc7003f

<mauke> cd ploki && make
author HackBot
date Fri, 20 Dec 2013 22:11:09 +0000
parents 7a6bc310b732
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4215
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
1 %%% THE PLOKI LANGUAGE: INSTRUCTIONS %%%
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
2
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
3
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
4 Execution starts at the first line of the program. Instructions are executed
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
5 in the order they appear in the program. Executing end-of-file is equivalent
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
6 to END 0, i.e. successful exit.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
7
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
8 There are the following instructions ([X] means X is optional):
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
9
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
10 * LET [Variable] Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
11 Evaluates Expression and assigns the result to Variable (or \_ if
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
12 Variable is omitted).
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
13
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
14 * WUNT [Value] Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
15 Writes the result of Expression to Value (which must yield an IO handle)
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
16 if specified; otherwise it writes to \AUSG (standard output). Sets \_.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
17
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
18 * IF Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
19 Jumps to the corresponding ELSE or FI instruction if Expression yields
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
20 false. "Corresponding" means it skips intervening IF-FI groups. If no
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
21 ELSE or FI can be found, jumps to the beginning of the program.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
22
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
23 * ELSE
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
24 Jumps to the corresponding FI instruction if present or to the beginning
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
25 of the program otherwise.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
26
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
27 * FI, END IF
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
28 Serves as an end point for IF and ELSE jumps. Does nothing.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
29
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
30 * GOTO Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
31 Jumps to the next line whose dynamic label is equal to the result of
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
32 Expression. Search wraps around at end-of-file.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
33
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
34 * GOFOR Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
35 Jumps to the previous line whose dynamic label is equal to the result of
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
36 Expression. Search wraps around at beginning-of-file.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
37
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
38 * CLAUDS Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
39 Closes the IO handle returned by Expression. Sets \_.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
40
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
41 * SET [Value] Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
42 Writes the character represented by the number returned by Expression to
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
43 the IO handle specified by Value (or \AUSG if Value is omitted). Sets
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
44 \_.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
45
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
46 * #!
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
47 A comment. The rest of the line is ignored.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
48
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
49 * REM
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
50 A comment. The rest of the line is ignored. REM comments may be nested.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
51
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
52 * # Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
53 Calls the C function system(3) with the result of Expression, i.e. runs
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
54 the local command line interpreter. Sets \_.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
55
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
56 * NEXT Label
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
57 Jumps to Label, which must be a static label.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
58
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
59 * ANRUF Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
60 Calls the next instruction with the dynamic label specified by
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
61 Expression, i.e. it remembers the instruction it came from. Search wraps
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
62 around at end-of-file. Sets \_ on returning.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
63
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
64 * ABRUF Value Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
65 Calls the previous instruction with the dynamic label specified by
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
66 Value, passing Expression as argument. Search wraps around at
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
67 beginning-of-file. Sets \_ on returning.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
68
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
69 * KTHX Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
70 Returns Expression from the current call. Equivalent to END if not in a
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
71 call.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
72
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
73 * LEET [Variable] Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
74 Similar to LET but the old value of Variable (if any) is restored at the
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
75 following KTHX.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
76
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
77 * END Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
78 Exits the program with a status of Expression. If Expression is -1,
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
79 exits with EXIT_FAILURE.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
80
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
81 * IACS Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
82 Throws Expression as an exception.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
83
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
84 * FLUSH Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
85 Forces a write of all buffered data for the IO handle returned by
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
86 expression, which must be opened for writing. Sets \_.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
87
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
88 * RESET Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
89 Clears the end-of-file and error flags for the IO handle returned by
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
90 Expression.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
91
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
92 * Label Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
93 Calls the instruction with the static label Label, setting \@ to
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
94 Expression. Sets \_ on returning.
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
95
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
96 * Expression
7a6bc310b732 <shachaf> tar xjf ploki-0.6.5.1.tar.bz2
HackBot
parents:
diff changeset
97 Prints the result of Expression to \AUSG.