-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlanguage.txt
80 lines (69 loc) · 1.95 KB
/
language.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
Doc : Superna's Reverse Polish Language
=======================================
Nombre :
========
decimal : [0-9]+
hexadecimal : ([0-9]|[0-A])+[hH]
octal : [0-7]+[oO]
binaire : [0-1]+[bB]
Texte :
=======
'*'
Remplacer les ' ' par des #
Empile dans l'ordre gauche a droite dans la character stack
Operations : depile les deux operandes et empile le resultat
============
+
-
*
/
Logique : empile le resultat sur les deux tete de pile (1 true, 0 false)
=========
>
<
<>
=
>=
=<
Fonctions :
===========
DROP : supprime la tete de pile
DUP : duplique la tete de pile
SWAP : inverse les deux tete de pile
PRINT : affiche la tete de pile
PRINTLN : affiche la tete de pile avec retour de ligne
NLINE : affiche un retour de ligne
FLUSH : vide la pile
PSTACK : affiche le contenu de la pile {([0-9]+;)*[0-9]*}
>> : depile de la stack principale et empile sur la stack temporaire
<< : depile de la stack temporaire et empile sur la stack principale
DISP : affiche le nombre de characteres du nombre en tete de pile principale
PTSTACK : affiche le contenu de la pile temporaire
$ : empile la taille de la pile dans la pile
Boucles :
=========
* if <condition> then <code1> else <code1> endif
<code> contient tout type d'instructions sauf les boucles
si apres la condition, la tete de pile est > 0 (et non vide)
execution de code1 sinon execution de code 2
* for <var> start|- end|- <code> next
execute code avec la variable var prenant les valeurs de start a end
start et/ou end peuvent prendre les valeurs de tete de pile en mettant -
exemple :
for i 1 10 i PRINTLN next
1 10 for i - - i PRINTLN next
10 for i 1 - i PRINTLN next
* while <condition> do <code> next
Execution code tant qu'apres condition la tete de pile (et non vide) vaut > 0
Procedures :
============
:nom <code> end
Ajoute la procedure de nom "nom"
@nom
Appelle la procedure de nom "nom"
Les procedures peuvent contenir des boucles
Exemple :
:superproc 1 PRINTLN end
@superproc
========================
Neil "Superna" ARMSTRONG