Commit 85a43200 by Pascal J. Bourguignon

Merged.

parents 3013a467 96539f53
......@@ -7,3 +7,7 @@ git clone https://github.com/sionescu/libfixposix.git
git clone http://git.informatimago.com/public/iolib.termios
# git clone ssh://pjb@git.informatimago.com/srv/git/public/iolib.termios
# NOT YET; we may freeze the dependency on a specific version of com-informatimago…
# git clone git@git.framasoft.org:com-informatimago/com-informatimago.git
# ( cd com-informatimago && git checkout 00911cca3266dac279f4cad960d6f11dad1b9dfa )
......@@ -135,7 +135,7 @@ DE LA LIGNE DE SAISIE). ON PEUT CEPENDANT COMMANDER LA SUPPRESSION DU
OU DES CARACTERES PRECEDEMENT SAISSIS EN TAPANT UN OU PLUSIEURS
CARACTERES ANTI-SLASH:
TAPER: BON\\\SALE\UT!
TAPER: BON\\\SALE\UT!
EQUIVAUT A TAPER: SALUT!
......@@ -164,7 +164,7 @@ COMMANDES DISPONIBLES DANS L'ETAT OU ON SE TROUVE.
EXEMPLE DE SESSION.
RAPPEL : LES LIGNES SE TERMINENT PAR CTRL-S, PAS PAR ENTREE/RETURN ;
RAPPEL : LES LIGNES SE TERMINENT PAR CTRL-S, PAS PAR ENTREE/RETURN ;
LES COMMANDES SE TAPENT AVEC LEURS DEUX PREMIERS CARACTERES ET
CTRL-S, LSE COMPLETANT : B O CTRL-S --> BONJOUR.
......@@ -182,14 +182,14 @@ CTRL-S, LSE COMPLETANT : B O CTRL-S --> BONJOUR.
|| EMULSE : L.S.E. [ EMULATION MITRA-15 ]
|| VERSION : 1.0-0.584-DEV
|| COPYRIGHT 1984 - 2002 PASCAL BOURGUIGNON
||
||
|| CONSOLE NO. 00
||
||
>| BONJOUR
||
|| LSE-M15 CONSOLE NO. 0 23/02/02 04:06:55
||
||
||
||
>> 1*TEST
>> 10 AFFICHER 'QUI EST\ TU ? '
>> 20 CHAINE NOM;LIRE NOM
......@@ -215,10 +215,10 @@ CTRL-S, LSE COMPLETANT : B O CTRL-S --> BONJOUR.
|> QUI ES TU ? PASCAL
|| ENCHANTE PASCAL !
|> PASCAL, DONNE MOI UN NOMBRE, S'IL TE PLAIT : 12
|| 12 * 12 = 144
|| 12 * 12 = 144
>| AU REVOIR, PASCAL
|| TERMINE
||
||
>| AU REVOIR 04:09:21
......@@ -264,7 +264,7 @@ ET NON RETURN !
ON PEUT AUSSI ACCEDER A UN SYSTEME L.S.E. VIA UNE PAGE WEB A :
http://nasium-lse.ogamita.com:8117
UTILISANT shellinaboxd COMME EMULATEUR DE TERMINAL.
UTILISANT shellinaboxd COMME EMULATEUR DE TERMINAL.
*** PAS ENCORE IMPLEMENTE ***
......@@ -311,7 +311,7 @@ DRTS PRO/GRP CHEMIN DESCRIPTION
0700 lse.lse $(BASE)/perma FICHIERS PERMANENTS DE L.S.E.
0700 lse.lse $(BASE)/tempo FICHIERS TEMPORAIRES DE L.S.E.
0700 lse.lse $(BASE)/tempo/00 UN SOUS REPERTOIRE PAR CONSOLE
0700 lse.lse $(BASE)/tempo/01 (LES FICHIERS TEMPORAIRES SONT LIES
0700 lse.lse $(BASE)/tempo/01 (LES FICHIERS TEMPORAIRES SONT LIES
0700 lse.lse $(BASE)/tempo/02 A LA CONSOLE PAR LAQUELLE ON ACCEDE
0700 lse.lse $(BASE)/tempo/03 A L'ENVIRONNEMENT L.S.E.)
0700 lse.lse $(BASE)/tempo/04 CES FICHIERS SONT PRIVES POUR CHAQUE
......@@ -389,7 +389,7 @@ POIDS FAIBLE SONT UTILISES SELON LA TABLE SUIVANTE :
[8 = D: ALLOCATION D'UN ESPACE TEMPORAIRE FIXE SUPERIEUR ]
COMBINAISON DE DROITS : 0 A B AB C AC BC ABC D BD ABD
CODES A UTILISER
CODES A UTILISER
EN QUATRIEME COLONE : 0 1 2 3 4 5 6 7 8 : ;
OU : @ A B C D E F G H J K
......@@ -440,8 +440,8 @@ L'EMULATEUR DE TERMINAL UTILISE AFFICHER UN CURSEUR.
COMMANDES SUPPLEMENTAIRES
-------------------------
DR(OITS) MOT-DE-PASSE
DR(OITS) MOT-DE-PASSE
(HORS-SESSION)
PERMET DE DEFINIR LES DROITS D'ACCES DES COMPTES.
......@@ -450,7 +450,7 @@ DR(OITS) MOT-DE-PASSE
AI(DE)
DONNE LA LISTE DES COMMANDES DISPONIBLES.
......@@ -535,8 +535,8 @@ http://wwwsi.supelec.fr/yn/sagaLSx.html
"LSE83"
Jacques Arsac
Bulletin de l'EPI n° 38
http://archive-edutice.ccsd.cnrs.fr/docs/00/03/06/74/PDF/b38p116.pdf
Bulletin de l'EPI n° 38
http://archive-edutice.ccsd.cnrs.fr/docs/00/03/06/74/PDF/b38p116.pdf
http://fr.wikipedia.org/wiki/LSE_(langage_de_programmation)
......
......@@ -26,7 +26,7 @@ OPERATEUR 'XIT(EA)'
-------------------
OPERATEUR FACILITANT LA PROGRAMMATION STRUCTUREE;EXECUTE A L'INTERIEUR
D'UNE BOUCLE FAIRE (OU DE PLUSIEUR BOUCLES FAIRE IMBRIQUEES),IL PERMET
DE SORTIR DE LA BOUCLE (OU DE N NIVEAU DE BOUCLES,N ETANT LA VALEUR
DE SORTIR DE LA BOUCLE (OU DE N NIVEAU DE BOUCLES,N ETANT LA VALEUR
ABSOLUE DE L'EXPRESSION ARITHMETIQUE E.A.);SI N=0 CET OPERATEUR NE FAIT
RIEN;SI N EST SUPERIEUR AU NOMBRE DE BOUCLES IMBRIQUEES,ON SORT DE TOUTE
LES BOUCLES.
......@@ -46,9 +46,9 @@ FONCTIONS LOGIQUES
POUR PERMETRE D'EFFECTUER LES OPERATIONS LOGIQUES ET , OU INCLUSIF ,
OU EXCLUSIF ,IL A ETE AJOUTE TROIS FONCTIONS :
- ETL(A,B)
- OUL(A,B)
- OUL(A,B)
- OXL(A,B)
QUI SONT CONSIDEREE COMME DES FONCTIONS ARITHMETIQUES A PARAMETRES
QUI SONT CONSIDEREE COMME DES FONCTIONS ARITHMETIQUES A PARAMETRES
ARITHMETIQUE,ET DONT LE RESULTAT EST RESPECTIVEMENT LE ET, LE OU INCLU-
SIF ET LE OU EXCLUSIF DE LEUR DEUX PARAMETRES SI CEUX CI SONT DES NOM-
BRES ENTIERS POSITIFS INFERIEURS A 2^23.
......@@ -102,5 +102,5 @@ UN LA PREMIERE FOIS QU'ON L'APPELLE ,APRES QUE LE CARACTERE (CTRL-A)
AIT ETE FRAPPE AU CLAVIER,PUIS ELLE REDONNE LA VALEUR ZERO (JUSQUA CE
QU'ON FRAPPE A NOUVEAU LE CARACTERE (CTRL-A).CETTE FONCTION PERMET DONC
A UN UTILISATEUR DE PASSER UN SIGNAL A UN PROGRAMME EN COURS D'EXECUTION
ELLE N'EST PAS UTILISABLE SUR LA MAE OPRATEUR QUI NE TRAVAILLE PAS EN
ELLE N'EST PAS UTILISABLE SUR LA MAE OPRATEUR QUI NE TRAVAILLE PAS EN
FULL-DUPLEX
......@@ -3,7 +3,7 @@
Systèmes L.S.E.
###############
On dérive deux grands modes de fonctionnement du système L.S.E.
On dérive deux grands modes de fonctionnement du système L.S.E.
D'une part, une commande unix permettant de développer et utiliser
interactivement des programmes L.S.E, et permettant de les executer
......@@ -77,7 +77,7 @@ Interactif
PRET
Le système passe directement en mode actif ("BONJOUR" est affiché par
le système). L'utilisateur peut alors utiliser le système normalement,
le système). L'utilisateur peut alors utiliser le système normalement,
en tapant RET à la fin de chaque ligne ou commande.
......@@ -145,7 +145,7 @@ Dans les scripts, les fonctions suivantes sont disponible:
- `NARG()` retourne le nombre d'arguments;
- `ARG(I)` retourne l'argument à l'index indiqué, ou le
chemin du script pour `ARG(0)`.
chemin du script pour `ARG(0)`.
- `ENV(N)` retourne la variable d'environnement `N`.
......@@ -197,16 +197,16 @@ TABLE DES FICHIERS
Cette commande affiche le listing du répertoire courant (voir ci-dessous).
Les fichiers listés dans la section FICHIERS-PROGRAMME sont ceux dont
l'extension est '.lse'.
l'extension est '.lse'.
Les fichiers listés dans la section FICHIER-DONNEE PERMANENTS sont
ceux dont l'extension est '.don'.
ceux dont l'extension est '.don'.
Les fichiers listés dans la section FICHIER-DONNEE TEMPORAIRES sont
ceux dont l'extension est '.don' et dont le propriétaire est
l'utilisateur courant.
Les noms de fichiers sont les noms unix.
Les noms de fichiers sont les noms unix.
UTILISATION DISQUE
......@@ -216,7 +216,7 @@ UTILISATION DISQUE
disque disponible dans '/tmp/lse$UID/'.
CHANGER REPEROIRE '/un/chemin/unix'
CHANGER REPEROIRE '/un/chemin/unix'
Cette commande change le répertoire de travail courant. Les
commandes et instructions de fichiers auxquelles on fourni des
......@@ -262,7 +262,7 @@ DECODER ec[,ea1[,ea2]]
APPELER ec
Remplace le programme courant par le programme chargé du fichier
ec.
ec.
RUBAN ec
......@@ -418,7 +418,7 @@ Exemple : ::
LE RUBAN EXAMPLE (Example de script) EST MIS EN PLACE.
RUBAN
RUBAN
1*AUTEUR: PASCAL BOURGUIGNON
2*PROGRAMME EXAMPLE
10 AFFICHER[/,'PROGRAMME EXEMPLE',/]
......@@ -426,7 +426,7 @@ Exemple : ::
20 TERMINER
PROGRAMME EXEMPLE
20/02/12 04:20:31
20/02/12 04:20:31
TERMINE
......@@ -473,7 +473,7 @@ numéro dans le fichier.
Le fichier commence par un entête (quelques lignes de texte dans le
premier bloc.
premier bloc.
Les 4 octets du premier bloc de position 1016 à 1019 contiennent la
position de la liste des bloc libres, ou 0 s'il n'y en a pas.
......@@ -499,7 +499,7 @@ en premier.
Les enregistrements ont le format suivant:
| numero : type | donnée … |
Le numéro d'enregistrement est stocké dans les trois premiers octets,
......@@ -538,7 +538,7 @@ Enregistrement Tableau à deux dimensions
Les nombres sont des nombre flottant IEEE 754 avec l'octet le
plus signifiant en premier. Les nombres sont enregistrés dans
l'ordre: T[1,1] T[1,2] T[1,3] T[2,1] T[2,2] T[2,3] T[3,1] T[3,2]
T[3,3] T[4,1] T[4,2] T[4,3]
T[3,3] T[4,1] T[4,2] T[4,3]
Enregistrement Chaîne
......@@ -596,7 +596,7 @@ local.
Pour se connecter au serveur de système L.S.E, il faut utiliser un
tunnel ssh, afin de sécuriser la communication du mot de passe de la
machine virtuelle.
machine virtuelle.
::
......@@ -604,7 +604,7 @@ machine virtuelle.
user@unix$ xterm -e ssh -L 15001:localhost:15001 lse@ogamita.org &
user@unix$ telnet localhost 15001
SYSTEMES L.S.E.
SELECTION DU SYSTEME.
NOM: lycee charlemagne
......@@ -634,9 +634,9 @@ machine virtuelle.
ORDINATEUR: LYCEE CHARLEMAGNE
PRET
deCONNECTER
user@unix$
user@unix$
.. comment: THE END
.. comment: THE END
......@@ -59,7 +59,7 @@ NASIUM-LSE: An Implementation of the L.S.E. programming language written in Comm
3- Get the sources of nasium: ::
cd ~/src/
git clone https://git.gitorious.org/nasium-lse/nasium-lse.git
git clone https://framagit.org/nasium-lse/nasium-lse.git
cd nasium-lse
NASIUM_LSE="$(pwd)"
......@@ -88,7 +88,7 @@ NASIUM-LSE: An Implementation of the L.S.E. programming language written in Comm
~/quicklisp/local-projects/. ::
cd ~/quicklisp/local-projects/
git clone https://git.gitorious.org/com-informatimago/com-informatimago.git
git clone https://framagit.org/com-informatimago/com-informatimago.git
There's a bug in the current quicklisp, so we need to remove
system-index.txt and rebuild it from $HOME. ::
......
......@@ -101,7 +101,7 @@ ET NON RETURN !
ON PEUT AUSSI ACCEDER A UN SYSTEME L.S.E. VIA UNE PAGE WEB A :
http://nasium-lse.ogamita.com:8117
UTILISANT shellinaboxd COMME EMULATEUR DE TERMINAL.
UTILISANT shellinaboxd COMME EMULATEUR DE TERMINAL.
*** PAS ENCORE IMPLEMENTE ***
......@@ -148,7 +148,7 @@ DRTS PRO/GRP CHEMIN DESCRIPTION
0700 lse.lse $(BASE)/perma FICHIERS PERMANENTS DE L.S.E.
0700 lse.lse $(BASE)/tempo FICHIERS TEMPORAIRES DE L.S.E.
0700 lse.lse $(BASE)/tempo/00 UN SOUS REPERTOIRE PAR CONSOLE
0700 lse.lse $(BASE)/tempo/01 (LES FICHIERS TEMPORAIRES SONT LIES
0700 lse.lse $(BASE)/tempo/01 (LES FICHIERS TEMPORAIRES SONT LIES
0700 lse.lse $(BASE)/tempo/02 A LA CONSOLE PAR LAQUELLE ON ACCEDE
0700 lse.lse $(BASE)/tempo/03 A L'ENVIRONNEMENT L.S.E.)
0700 lse.lse $(BASE)/tempo/04 CES FICHIERS SONT PRIVES POUR CHAQUE
......@@ -226,7 +226,7 @@ POIDS FAIBLE SONT UTILISES SELON LA TABLE SUIVANTE :
[8 = D: ALLOCATION D'UN ESPACE TEMPORAIRE FIXE SUPERIEUR ]
COMBINAISON DE DROITS : 0 A B AB C AC BC ABC D BD ABD
CODES A UTILISER
CODES A UTILISER
EN QUATRIEME COLONE : 0 1 2 3 4 5 6 7 8 : ;
OU : @ A B C D E F G H J K
......@@ -277,8 +277,8 @@ L'EMULATEUR DE TERMINAL UTILISE AFFICHER UN CURSEUR.
COMMANDES SUPPLEMENTAIRES
-------------------------
DR(OITS) MOT-DE-PASSE
DR(OITS) MOT-DE-PASSE
(HORS-SESSION)
PERMET DE DEFINIR LES DROITS D'ACCES DES COMPTES.
......
......@@ -2,14 +2,14 @@
--------------------------------------
NASIUM LSE - NOTES D'IMPLEMENTATION
NASIUM LSE - NOTES D'IMPLEMENTATION
--------------------------------------
DONE
====
- In cli, allow CR to work just like C-s
--> option: --entree-comme-xoff | --return-is-xoff
--> option: --entree-comme-xoff | --return-is-xoff
TODO
====
......@@ -30,7 +30,7 @@ TODO
- Write server documentation chapters.
- Voir si on ajoute un token <- pour _.
- Voir si on ajoute un token <- pour _.
- server iolib-util: the write handler should be activated only when
we have something to write, and it should be deactivated when we're
......@@ -136,7 +136,7 @@ LSE Grammar
numero ::= chiffre {chiffre} .
nombre ::= chiffre {chiffre} [ . {chiffre} ]
nombre ::= chiffre {chiffre} [ . {chiffre} ]
[ 'E' ['+'|'-'] chiffre {chiffre} ] .
chaine ::= "'" { caractere_sauf_quote | "''" } "'" .
......@@ -181,22 +181,22 @@ LSE Grammar
declaration ::= declaration_chaine | declaration_tableau .
instruction ::= liberation
| lire | afficher | alleren | sialors | sialorssinon
| terminer | pause | debutfin | fairejusqua | fairetantque
| retour | resultat | appel
| lire | afficher | alleren | sialors | sialorssinon
| terminer | pause | debutfin | fairejusqua | fairetantque
| retour | resultat | appel
| garer | charger | supprimer | executer .
declaration_chaine ::= 'CHAINE' identificateur { ',' identificateur } .
declaration_tableau ::= 'TABLEAU'
identificateur '[' expression [ ',' expression ] ']'
declaration_tableau ::= 'TABLEAU'
identificateur '[' expression [ ',' expression ] ']'
{ ',' identificateur '[' expression [ ',' expression ] ']' } .
liberation ::= 'LIBERER' identificateur .
declaration_procedure ::= 'PROCEDURE' identificateur
declaration_procedure ::= 'PROCEDURE' identificateur
'(' [ identificateur { ',' identificateur } ] ')'
[ 'LOCAL' identificateur { ',' identificateur } ] .
......@@ -207,9 +207,9 @@ LSE Grammar
lire ::= 'LIRE' identificateur { ',' identificateur } .
afficher ::= 'AFFICHER' expression { ',' expression } .
afficher ::= 'AFFICHER' format [ expression { ',' expression } ] .
format ::= '[' specification { ',' specification } ']'
format ::= '[' specification { ',' specification } ']'
specification ::= [ numero | '*' ] '/' | 'X' | 'C' | 'L' | chaine .
specification ::= [ numero ] 'F' numero '.' numero | 'E' numero '.' numero
specification ::= [ numero ] 'F' numero '.' numero | 'E' numero '.' numero
| 'U' .
alleren ::= 'ALLER' 'EN' expression .
sialors ::= 'SI' disjonction 'ALORS' instruction .
......@@ -217,9 +217,9 @@ LSE Grammar
terminer ::= 'TERMINER' .
pause ::= 'PAUSE' .
debutfin ::= 'DEBUT' instruction { ',' instruction } 'FIN' .
fairejusqua ::= 'FAIRE' numero 'POUR' identificateur '_' expression
fairejusqua ::= 'FAIRE' numero 'POUR' identificateur '_' expression
[ 'PAS' expression ] 'JUSQUA' expression .
fairetantque ::= 'FAIRE' numero 'POUR' identificateur '_' expression
fairetantque ::= 'FAIRE' numero 'POUR' identificateur '_' expression
[ 'PAS' expression ] 'TANT' 'QUE' disjonction .
retour ::= 'RETOUR' .
retour ::= 'RETOUR' 'EN' expression .
......@@ -227,7 +227,7 @@ LSE Grammar
appel ::= identificateur '(' [ expression { ',' expression } ] ')' .
garer ::= 'GARER' identificateur ',' expression ',' expression .
charger ::= 'CHARGER' identificateur ',' expression ',' expression
charger ::= 'CHARGER' identificateur ',' expression ',' expression
[ ',' identificateur ] .
supprimer ::= 'SUPPRIMER' expression [ ',' expression ] .
executer ::= 'EXECUTER' expression [ ',' expression ] .
......@@ -239,11 +239,11 @@ COMMON-LISP Implementation
==========================
We'll minimize the CL implementation specific dependencies.
Each task will be implemented in its own UNIX process.
A server process will listen to the socket,
A server process will listen to the socket,
and will fork a new console process of each incoming session.
A pipe between the server process and the console process will be
established to allow for the transfer of state (PRENDRE ETAT CONSOLE)
between the consoles.
......@@ -262,9 +262,9 @@ Terminal I/O
------------
Since we don't have several threads, we must do polling I/O.
clisp provide extension functions for raw keyboard input.
ESC --> stop current processing and revert to top-level repl
(note: execution of a running program could be continued with
the CONTINUE or ALLER A commands).
......@@ -275,7 +275,7 @@ Terminal I/O
The only way to implement BOTH these features portably on unix
without threads seems to be with the use of an embedded virtual
machine where we could implement virtual threads or at least:
(loop
(process-input (read-char-no-hang))
(execute-one-instruction))
......@@ -288,7 +288,7 @@ Terminal I/O
(catch :exit
(let ((*status* :out) (counter 1)) (declare (special *status*))
(handler-bind
(handler-bind
((system::simple-interrupt-condition
(lambda (condition)
(print (list :interupted *status* counter))
......@@ -297,9 +297,9 @@ Terminal I/O
nil)))
(let ((*status* :in)) (declare (special *status*)) (loop)))))
--> (:INTERUPTED :IN 1)
--> (:INTERUPTED :IN 1)
(catch :exit
(let ((*status* :out) (counter 1)) (declare (special *status*))
(handler-case (let ((*status* :in)) (declare (special *status*)) (loop))
......@@ -309,10 +309,10 @@ Terminal I/O
(decf counter)
(when (zerop counter) (throw :exit nil))))))
--> (:INTERUPTED :OUT 1)
--> (:INTERUPTED :OUT 1)
Conclusion: Implement ESC with stty -intr ESC
Conclusion: Implement ESC with stty -intr ESC
and don't implement Ctrl-A/ATT().
......@@ -403,7 +403,7 @@ Gestion des consoles en Common Lisp
Comme clisp ne fourni pas de threads, on a deux solutions pour
implémenter les consoles:
- forked un processus par console, et implémenter un IPC entre
un processus maîtres et les processus consoles avec
transmission de l'état (commande PR), et des commandes (le
......@@ -411,7 +411,7 @@ Gestion des consoles en Common Lisp
utilisateurs).
- implementer une machine virtuelle multi-threads dans un seul
processus clisp.
processus clisp.
Dans les deux cas la gestion des E/S est critique (utilisation de
SOCKET:SOCKET-STATUS, avec gestion des flots d'E/S dans tous les
......@@ -455,10 +455,10 @@ Gestion des consoles en C (OBSOLETE)
pty) pour la console principale, soit via un socket sur un xterm
ou un autre émulateur de terminal configuré spécialement pour LSE.
# We need a font with an up arrow instead of the caret (^),
# We need a font with an up arrow instead of the caret (^),
# and with a left arrow instead of the underline (_).
# This dec font has these arrow characters, but mapped on 0xfc and 0xfb.
font='-dec-terminal-bold-r-normal-*-14-*-*-*-*-*-dec-dectech'
font='-dec-terminal-bold-r-normal-*-14-*-*-*-*-*-dec-dectech'
# We reset the terminal to function as a LSE console.
......@@ -480,7 +480,7 @@ Gestion des consoles en C (OBSOLETE)
eol2 0x00 \
rprnt 0x00 \
werase 0x00 \
lnext 0x00
lnext 0x00
Interpretation (Obsolete)
......@@ -488,7 +488,7 @@ Interpretation (Obsolete)
Conclusion :
Implémenter une machine virtuelle et générer un bytecode est plus
simple que cette génération au vol du CPF avec la manipulation des
piles.
......@@ -498,7 +498,7 @@ SI EXPRESSION ! A_SI B>0 ALORS 1 SINON 2
Objectifs :
- Interpréter "directement" l'arbre syntaxique,
- Interpréter "directement" l'arbre syntaxique,
sans générer de code postfixé.
- Ne pas utiliser la pile d'exécution du langage d'implémentation
......@@ -507,7 +507,7 @@ Objectifs :
RETOUR EN ; appels récursifs des fonctions d'interprétation des
instructions et d'évaluation des expressions).
Solution :
Solution :
- Si on veut éviter une implémentation récursive, le parcours de
l'arbre syntaxique (qui se fait forcément d'une manière
......@@ -530,8 +530,8 @@ Solution :
instruction_suivante
ligne_courante=ligne_debut
si ligne_courante n'existe pas alors
erreur
si ligne_courante n'existe pas alors
erreur
fsi
instruction_courante=premiere instruction de la ligne_courante
arret=(ligne_courante==ligne_arret)
......@@ -542,7 +542,7 @@ Solution :
cas ligne_suivante :
quand arreter alors
quand arreter alors
arret=vrai
quand suivant alors
......@@ -568,7 +568,7 @@ Solution :
ligne_courante=ligne_suivante
instruction_courante=instruction_suivante
arret=arret ou (ligne_courante==ligne_arret)
arret=arret ou (ligne_courante==ligne_arret)
fait
......@@ -592,7 +592,7 @@ instructions! en cours d'évaluation qui avaient appelé la fonction.
30 AFFICHER 'ANNULE';TERMINER
50 PROCEDURE &F(X) LOCAL X
55 SI 1+X=0 ALORS RETOUR EN 30;RESULTAT -2
Voici le travail, arrivé en 55: ::
ligne_courante = 55
......@@ -610,13 +610,13 @@ Voici le travail, arrivé en 55: ::
20,=2
20,si2(afficher('OUI'),afficher('NON'))
0,marqueur
-------------------------------------------
-------------------------------------------
pile_e:
1
50,marqueur
2
0,marqueur
-------------------------------------------
-------------------------------------------
On ne peut exécuter qu'une seule ligne à la fois par procédure alors,
on n'a besoin que d'un type de marqueur, empilé en entrée de programme
......@@ -653,12 +653,12 @@ REPRENDRE EN N1,N2 fait comme si des RETOUR EN * / ALLER EN après la PAUSE,
(l,i)=executer (l,i);
fsi
fboucle
alleren
alleren
faire -
si - alors - sinon -
fonction -
fonction -
procedure -
- ; -
......@@ -677,12 +677,12 @@ REPRENDRE EN N1,N2 fait comme si des RETOUR EN * / ALLER EN après la PAUSE,
ligneN, si c_expr i_alors i_sinon :
empiler_i ligneN, si i_alors i_sinon
empiler_i ligneN, si i_alors i_sinon
--> ligneN, c_expr
ligneN, si i_alors i_sinon
depiler_e c
si c alors
si c alors
--> ligneN i_alors
sinon
--> ligneN i_sinon
......@@ -727,7 +727,7 @@ REPRENDRE EN N1,N2 fait comme si des RETOUR EN * / ALLER EN après la PAUSE,
(l,i)=executer (l,i);
fsi
fboucle
::
......
......@@ -18,9 +18,9 @@ get-dependencies script: ::
Then you may need to compile and install libfixposix: ::
cd "${NASIUM_LSE}"/dependencies/libfixposix/
autoreconf -i -f
mkdir build
cd build
autoreconf -i -f
mkdir build
cd build
../configure --prefix=/usr/local
make
make install
......@@ -128,7 +128,7 @@ Bugs
The current known bugs are listed in "${NASIUM_LSE}/ISSUES.txt".
Please, be sure to report any bug you find to
Please, be sure to report any bug you find to
mailto:pjb@informatimago.com or mailto:pjb@ogamita.com
Currently, the server is not functional.
......@@ -163,7 +163,7 @@ Anyways, debugging is better done in the development environment
emacs+slime. Notice that one can launch a ccl from a terminal, load
and start a swank server, and continue debugging from emacs+slime: ::
$ ccl
$ ccl
$ (ql:quickload :swank)
$ (swank:create-server :port 4011)
......@@ -171,7 +171,7 @@ and start a swank server, and continue debugging from emacs+slime: ::
and see above how to load "loader.lisp".
Files
========================================
......@@ -198,7 +198,7 @@ Zebu and grammar:
Not used anymore, I converted to rdp grammar:
patch-zebu.lisp Patch to com.hp.zebu.
parser-lse.zb LSE parser.
parser-lse.zb LSE parser.
grammar.lisp Compile the LSE grammar.
lse-domain.lisp Generated by Zebu.
......@@ -220,7 +220,7 @@ LSE system:
packages.lisp Definition of packages.
configuration.lisp EMULSE configuration.
configuration.lisp EMULSE configuration.
task.lisp The environment for a LSE user.
......
0.9997979000000021
\ No newline at end of file
0.9997619000000011
\ No newline at end of file
......@@ -5,9 +5,9 @@
;;;;SYSTEM: Common-Lisp
;;;;USER-INTERFACE: NONE
;;;;DESCRIPTION
;;;;
;;;;
;;;; Defines the byte codes of the L.S.E Virtual Machine.
;;;;
;;;;
;;;;AUTHORS
;;;; <PJB> Pascal J. Bourguignon <pjb@informatimago.com>
;;;;MODIFICATIONS
......@@ -15,19 +15,19 @@
;;;;BUGS
;;;;LEGAL
;;;; AGPL3
;;;;
;;;;
;;;; Copyright Pascal J. Bourguignon 2012 - 2014
;;;;
;;;;
;;;; This program is free software: you can redistribute it and/or modify
;;;; it under the terms of the GNU Affero General Public License as published by
;;;; the Free Software Foundation, either version 3 of the License, or
;;;; (at your option) any later version.
;;;;
;;;;
;;;; This program is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;;; GNU Affero General Public License for more details.
;;;;
;;;;
;;;; You should have received a copy of the GNU Affero General Public License
;;;; along with this program. If not, see http://www.gnu.org/licenses/
;;;;**************************************************************************
......@@ -46,18 +46,18 @@
(cl:eval-when (:compile-toplevel :load-toplevel :execute)
(cl:defparameter *branches* '(
BALWAYS ; BALWAYS offset
BTRUE ; test BTRUE offset
BFALSE ; test BFALSE offset
BNEVER ; BNEVER offset
))
(cl:defparameter *0* '(
DUP ; arg DUP
NON ; arg NON
NON ; arg NON
OU ; arg1 arg2 OU
ET ; arg1 arg2 ET
......
......@@ -5,12 +5,12 @@
;;;;SYSTEM: Common-Lisp
;;;;USER-INTERFACE: NONE
;;;;DESCRIPTION
;;;;
;;;;
;;;; EMULSE : L.S.E. [ EMULATION MITRA-15 ]
;;;;
;;;; An emultator of the CII MITRA-15 L.S.E. System
;;;;
;;;; An emultator of the CII MITRA-15 L.S.E. System
;;;; and programming language interpreter.
;;;;
;;;;
;;;; This is the L.S.E. Librarian (Cataloger).
;;;;
;;;;AUTHORS
......@@ -21,19 +21,19 @@
;;;;BUGS
;;;;LEGAL
;;;; AGPL3
;;;;
;;;;
;;;; Copyright Pascal J. Bourguignon 2000 - 2014
;;;;
;;;;
;;;; This program is free software: you can redistribute it and/or modify
;;;; it under the terms of the GNU Affero General Public License as published by
;;;; the Free Software Foundation, either version 3 of the License, or
;;;; (at your option) any later version.
;;;;
;;;;
;;;; This program is distributed in the hope that it will be useful,
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;;; GNU Affero General Public License for more details.
;;;;
;;;;
;;;; You should have received a copy of the GNU Affero General Public License
;;;; along with this program. If not, see http://www.gnu.org/licenses/
;;;;****************************************************************************
......@@ -63,14 +63,14 @@
())
(deftype catalog-type ()
(deftype catalog-type ()
'(member :program :permanent :temporary :tape :shelf))
(defclass catalog-entry ()
((name :initarg :name
:accessor catalog-entry-name