Langage autonome
rpl
Programme permettant l'exécution de scripts écrits
en RPL/2. Ces programmes peuvent être
interprétés
ou compilés. Il est possible de lancer ce programme de
manière à obtenir une ligne de commande pour une
utilisation interactive ou de lui passer des commandes au travers de
son entrée standard.
RPL/2(1) Manuel de l'utilisateur RPL/2 RPL/2(1)
NOM
Reverse Polish Lisp/2 version 4.1.6,
langage de haut niveau semi-compilé extensible par des bibliothèques
partagées et destiné principalement aux calculs scientifiques et
algorithmes complexes.
SYNOPSIS
rpl [-acdDhilnpPsv] [-A données] [-S script] [-t niveau] [programme]
DESCRIPTION
Le séquenceur rpl permet l'exécution d'un programme RPL/2 ou
l'ouverture d'une session permettant d'utiliser ce langage en mode
interactif grâce à une ligne de commande.
OPTIONS
-a analyse un programme et renvoie la sortie du préprocesseur sur
la sortie standard
-A envoie des paramètres de la ligne de commande au programme
principal
-c autorise la génération d'un fichier rpl-core à fin de débogage
dans le cas d'une erreur lors de l'exécution d'un programme;
-d permet de déverminer les allocations mémoire internes au RPL/2.
Ne pas utiliser si vous ne savez pas ce que vous faites !
-D bascule le fonctionnement en daemon;
-h présente brièvement les différentes options de la ligne de
commande;
-i lance le séquenceur RPL/2 en mode interactif. Cette option est
incompatible avec la présence sur la ligne de commande d'un nom
de programme à exécuter;
-l rappelle la licence d'utilisation du séquenceur;
-n ignore le signal HUP;
-p précompile les scripts avant leur exécution;
-P profilage;
-s empêche l'ouverture de l'écran initial;
-S exécute le script passé sur la ligne de commande;
-t passe le séquenceur en mode « trace ». Toutes les opérations
internes sont retranscrites sur la sortie standard;
-v donne la version du séquenceur.
VALEUR RENVOYÉE
Le séquenceur retourne une valeur nulle si l'exécution du fichier ne
provoque aucune erreur, et une valeur non nulle dans le cas contraire.
PRÉREQUIS ET RECOMMANDATIONS
La variable d'environnement RPL_TMP_PATH permet de specifier
l'emplacement des fichiers temporaires. Si cette dernière n'est pas
positionnée, les répertoires suivants seront utilisés: /tmp, /var/tmp,
./. Il est recommandé d'utiliser ce langage avec gnuplot, TeX/LaTeX,
dvips et gv pour tirer le maximum de ses possibilités graphiques.
CONFORMITÉ
Le séquenceur RPL/2 est conforme au manuel corrigé du calculateur
HP-28S de Hewlett-Packard et au calculateur HP-28S version 2BB (C)
1986-1987. Il faut noter que certaines définitions intrinsèques
manipulant des grandeurs complexes ne suivent pas les spécifications
écrites par Hewlett-Packard. Il s'agit principalement de la
transposition (retournant la transposée conjuguée de la matrice
argument) et du produit scalaire (le premier vecteur étant conjugué
avant de calculer la somme des produits terme à terme).
DÉLIMITEURS
aucun scalaire, entier ou réel, codé sur un minimum de soixante-quatre
bits;
( ) nombre complexe représenté sur un minimum de cent vingt-huit
bits;
# entier binaire comptant soixante-quatre bits;
<< >> définition utilisateur ou équation en notation polonaise
inverse;
' ' équation algébrique ou nom;
[ ] vecteur de scalaires;
[[ ]] matrice de scalaires;
<[ ]> table;
" " chaîne de caractères;
{ } liste regroupant plusieurs objets de types divers. Une liste est
un objet récursif pouvant contenir d'autres listes;
/* */ commentaire;
// commentaire du délimiteur jusques à la fin de la ligne.
INSTRUCTIONS
Cette section contient les différentes définitions intrinsèques du
langage. Certaines d'entre elles possèdent plusieurs écritures, les
écritures alternatives figurant entre parenthèses. Les définitions
apparaissant entre parenthèses dans une structure sont quant à elles
optionnelles. Les instructions écrites en majuscules ne sont pas
sensibles à la casse.
STRUCTURES DE CONTRÔLE
IF/THEN/(ELSEIF/THEN)/(ELSE)/END, IFT, IFTE,
SELECT/CASE/THEN/END/(DEFAULT)/END
REPRISE SUR ERREUR
CLRERR, ERRM, ERRN, IFERR/THEN/(ELSE)/END
BOUCLES DÉFINIES AVEC COMPTEUR
FOR/(CYCLE)/(EXIT)/NEXT, FOR/(CYCLE)/(EXIT)/STEP
BOUCLES DÉFINIES SANS COMPTEUR
START/(CYCLE)/(EXIT)/NEXT, START/(CYCLE)/(EXIT)/STEP
BOUCLES INDÉFINIES
DO/(EXIT)/UNTIL/(EXIT)/END, WHILE/(EXIT)/REPEAT/(EXIT)/END
INSTRUCTIONS D'ENTRÉE/SORTIE
BEEP, CLMF, DISP, INPUT, KEY, PROMPT
DÉBOGAGE
CONT, HALT, SST
MANIPULATION DE LA PILE OPÉRATIONNELLE
CLEAR, COPY, DEPTH, DROP, DROP2, DROPN, DUP, DUP2, DUPN, EDIT,
OVER, PICK, ROLL, ROLLD, ROT, SWAP
MANIPULATION DES VARIABLES
->, CLUSR, PARAMETER, PRIVATE, PROTECT, PURGE, RCEQ, RCL,
RECALL, SAVE, SCONJ, SHARED, SINV, SNEG, STATIC, STEQ, STO,
STO+, STO-, STO*, STO/, STORE, UNPROTECT, VARIABLE, VARS, VISIT,
VOLATILE
ARITHMÉRIQUES RÉELLE ET COMPLEXE ET CALCULS ÉLÉMENTAIRES
+, -, *, /, ^ (**), =, ABS, ARG, C->R, CEIL, CONJ, DECR, DER,
DFT, EVAL, EXP, EXPM, FACT, FFT, FLOOR, FP, IDFT, IFFT, IM,
INCR, INT, INV, IP, MANT, MAX, MCLRIN, MIN, MOD, NEG, ->NUM,
P->R, ->Q, R->C, R->P, RE, RELAX, SIGN, SQ, SQRT, TAYLR, XPON,
XROOT
CONSTANTES
e, FALSE, i, infinity, PI, TRUE
FORMATS
ENG, FIX, RND, SCI, STD, TRNC
FONCTIONS LOGIQUES ET ARITHMÉTIQUE BINAIRE
<, <= (=<), <>, >, >= (=>), ==, %, %CH, %T, AND, ASL, ASR, B->R,
BIN, CF, DEC, FC?, FC?C, FC?S, FS?, FS?C, FS?S, HEX, IN, NOT,
OCT, OR, R->B, RCLF, RCWS, RL, RLB, RR, RRB, SAME, SF, SL, SLB,
SR, SRB, STOF, STWS, XOR
FONCTIONS TRIGONOMÉTRIQUES
ACOS, ASIN, ATAN, COS, D->R, DEG, ->HMS, HMS->, HMS-, HMS+,
R->D, RAD, SIN, TAN
FONCTIONS LOGARITHMIQUES
ACOSH, ALOG, ASINH, ATANH, COSH, LN, LNP1, LOG, SINH, TANH
FONCTIONS SPÉCIALES
BESSEL, GAMMA
STATISTIQUES
CLS, COLS, COMB, CORR, COV, DRWS, MAXS, MEAN, MINS, NRAND, NS,
PCOV, PERM, PSDEV, PVAR, RAND, RCLS, RDGN, RDZ, S-, S+, SCLS,
SDEV, SPAR, STOS, SX, SX2, SXY, SY, SY2, TOT, UTPC, UTPF, UTPN,
UTPT, VAR, XCOL, YCOL
MANIPULATION DES VECTEURS ET MATRICES
->ARRAY (->ARRY), ARRAY-> (ARRY->), CNRM, COL+, COL-, COL->,
->COL, CON, COND, CROSS, CSWP, DET, DIAG->, ->DIAG, DOT, EGV,
EGVL, GEGV, GEGVL, GET, GETC, GETI, GETR, GLEGV, GREGV, IDN,
LCHOL, LEGV, LQ, LSQ, LU, MAX, MIN, PUT, PUTC, PUTI, PUTR, QR,
RANK, RCI, RCIJ, RDM, REGV, RNRM, ROW+, ROW-, ROW->, ->ROW, RSD,
RSWP, SCHUR, SIZE, SQ, SVD, SVL, TRN, UCHOL
MANIPULATION DES TABLES
CRTAB, GET, L->T, PUT, T->L, ->TABLE, TABLE->
MANIPULATION DES LISTES
GET, GETI, HEAD, L->T, ->LIST, LIST->, POS, PUT, PUTI, REPL,
REVLIST, SIZE, SORT, SUB, T->L, TAIL
CHAÎNES DE CARACTÈRES
CHR, CURRENC, LCASE, NUM, POS, RECODE, REGEX, REPL, SIZE, SREV,
->STR, STR->, SUB, TOKENIZE, TRIM, UCASE
MANIPULATION DES EXPRESSIONS
OBGET, OBSUB, EXGET, EXSUB
GESTION DES FICHIERS ET DES SOCKETS
APPEND, BACKSPACE, CLOSE, CREATE, DELETE, FORMAT, INQUIRE, LOCK,
OPEN, POLL, READ, REWIND, SYNC, TARGET, UNLOCK, WFLOCK, WFSOCK,
WRITE
SORTIES GRAPHIQUES ET PAPIER
*D, *H, *S, *W, AUTOSCALE, AXES, CENTR, CLLCD, CR, DEPND, DGTIZ,
DRAW, DRAX, ERASE, EYEPT, FUNCTION, HISTOGRAM, INDEP, LABEL,
LCD->, ->LCD, LINE, LOGSCALE, MARK, NEWPLANE, PAPER, PARAMETRIC,
PERSIST, PLOT, PLOTTER, PMAX, PMIN, POLAR, PPAR, PR1, PRINT,
PRLCD, PRMD, PRST, PRSTC, PRUSR, PRVAR, REDRAW, RES, SCATTER,
SCALE, SLICE, SLICESCALE, TITLE, WIREFRAME
BIBLIOTHÈQUES
EXTERNALS, REMOVE, USE
GESTION DES PROCESSUS
ATEXIT, ATPOKE, CLRATEXIT, CLRATPOKE, CLRFUSE, CLRMTX, CLRSMPHR,
CLRSWI, CONTINUE, CRMTX, CRSMPHR, CSTOP, DAEMONIZE, DETACH,
FUSE, ISWI, MTXLOCK, MTXSTATUS, MTXTRYLOCK, MTXUNLOCK, NRPROC,
PEEK, POKE, PROCID, RCLSWI, RECV, RFUSE, RSTOP, SCHED, SEND,
SMPHRDECR, SMPHRGETV, SMPHRINCR, SMPHRTRYDECR, SPAWN, STOP,
STOSWI, SUSPEND, SWI, SWILOCK, SWIQUEUE, SWISTATUS, SWIUNLOCK,
WFACK, WFDATA, WFPOKE, WFPROC, YIELD
INSTRUCTIONS DIVERSES
<<, >>, ABORT, ALARM, BACKTRACE, CLRCNTXT, CONVERT, COPYRIGHT,
DATE, DROPCNTXT, DUPCNTXT, HELP, IMPLICIT, ITRACE, JDATE, KILL,
KIND, LAST, LOCALIZATION, LOGGER, MEM, MEMLOCK, MEMUNLOCK,
PSHCNTXT, PSHPRFL, PULCNTXT, PULPRFL, RDATE, RESTART, RETURN,
SPLASH, SWAPCNTXT, SYSEVAL, TIME, TYPE, VERIFY, VERSION, WAIT,
WARRANTY, WORKDIR
BASES DE DONNÉES
SQLCONNECT, SQLDISCONNECT, SQLQUERY
INSTRUCTIONS DU PRÉPROCESSEUR
#date, #define, #defeval, #else, #endif, #error, #eval, #file,
#if, #ifdef, #ifeq, #ifndef, #ifneq, #include, #line, #mode,
#undef, #warning
ADRESSES UTILES
http://www.rpl2.fr
page officielle du RPL/2;
jkb@systella.fr
adresse de l'auteur;
rpl2@rayleigh.systella.fr
liste de diffusion du langage RPL/2 permettant de demander des
conseils, de proposer de nouvelles fontionnalités, de rapporter
des dysfonctionnements...
JKB-Labs jeudi 19/01/2012, 09:42:16 CET RPL/2(1)
rplc
Ce programme est le seul de la famille RPL/2 a ne pas être
distribué sous la licence CeCILL. Il permet de compiler un
programme RPL/2 en un binaire autonome.
À l'heure actuelle, il n'est pas rendu disponible au public.
tchebytchev:[~/rpl/rplc-1.0.0] > cat hello.rpl
#!/usr/local/bin/rpl -sp
MAIN
<<
"Hello, World!" disp
>>
tchebytchev:[~/rpl/rplc-1.0.0] > ./rplc hello.rpl hello
tchebytchev:[~/rpl/rplc-1.0.0] > file hello
hello: ELF 32-bit MSB executable, SPARC32PLUS, V8+ Required, version 1 (SYSV),
dynamically linked (uses shared libs), for GNU/Linux 2.6.18, stripped
tchebytchev:[~/rpl/rplc-1.0.0] > ./hello
+++RPL/2 (R) version 4.0.13 (Monday 03/15/10, 12:57:39 CET)
+++Copyright (C) 1989 to 2009, 2010 BERTRAND Joel
Hello, World!
tchebytchev:[~/rpl/rplc-1.0.0] >
Bibliothèques partagées
mkrplso
RPL/2(1) Manuel de l'utilisateur RPL/2 RPL/2(1)
NAME
Compile et lie un module externe RPL/C pour le langage RPL/2
(DEVELOPPEMENT, RPL/2)
SYNOPSIS
mkrplso [options] filename
DESCRIPTION
L'outil mkrplso appelle gfortran. Toutes les options disponibles sont
décrites dans le manuel gfortran.
OPTIONS
Voir gfortran.
JKB-Labs jeudi 19/01/2012, 09:42:16 CET RPL/2(1)
rplcc
RPL/2(1) Manuel de l'utilisateur RPL/2 RPL/2(1)
NAME
Compile une routine C appelant une ou plusieurs fonctions RPL/2
(DEVELOPPEMENT, RPL/2)
SYNOPSIS
rplcc [options] filename
DESCRIPTION
L'outil rplc appelle gfortran. Toutes les options disponibles sont
décrites dans le manuel gfortran.
OPTIONS
Voir gfortran.
JKB-Labs jeudi 19/01/2012, 09:42:16 CET RPL/2(1)
rpllink
RPL/2(1) Manuel de l'utilisateur RPL/2 RPL/2(1)
NAME
Effectue l'édition des liens de programmes C appelant une ou plusieurs
fonctions RPL/2 (DEVELOPPEMENT, RPL/2)
SYNOPSIS
rplc [options] filename
DESCRIPTION
L'outil rpllink appelle gfortran. Toutes les options disponibles sont
décrites dans le manuel gfortran.
OPTIONS
Voir gfortran.
JKB-Labs jeudi 19/01/2012, 09:42:16 CET RPL/2(1)
Outils
rplpp
Ce préprocesseur n'est autre que gpp, un
préprocesseur d'usage général adapté au
langage RPL/2.
rpltags
RPL/2(1) Manuel de l'utilisateur RPL/2 RPL/2(1)
NAME
rpltags - crée un fichier tags (DEVELOPPEMENT, RPL/2)
SYNOPSIS
rpltags pathname
DESCRIPTION
L'outil rpltags devrait être fournit sur tout système supportant le
langage RPL/2.
L'outil rpltags écrit un fichier d'étiquette ou un index des objets
présents dans un fichier ou un ensemble de fichiers sources spécifiés
par l'opérande pathname et écrits en RPL/2. Ce fichier est directement
utilisable avec un éditeur de type vi.
OPTIONS
None
JKB-Labs jeudi 19/01/2012, 09:42:16 CET RPL/2(1)
Divers
rplawk
En raison de problèmes inhérents à
certains systèmes d'exploitation,
le RPL/2 utilise sa propre implantation de AWK. Il s'agit de la
version de AWK développée par Brian Kernighan et
modifiée pour qu'elle ne dépende pas de yacc.
rplconvert
Ce programme permet au RPL/2 d'effectuer des conversions
d'unités. Il s'agit de GNU-units dans une version un
peu particulière.
rplfile
Le RPL/2 embarque, en raison de problèmes provenant de
certaines implantations de file, un utilitaire capable de
déterminer le
type d'encodage d'un fichier texte. Cet utilitaire est
directement issu de l'utilitaire file de NetBSD et des patches
de NetBSD permettant de l'utiliser sur des architectures demandant
un alignement strict de la mémoire.
rpliconv
Le RPL/2 adapte ses sorties standard à la localisation
courante du système. Les conversions se font grâce
à la bibliothèque GNU libiconv.
L'utilitaire rpliconv est
un outil permettant de convertir l'encodage des fichiers sources
dans un encodage qui sera utilisé pour
la représentation interne des données.