Commit 250e2e1b by Pascal J. Bourguignon

Merged.

parents 35317133 56391e6c
......@@ -16,7 +16,7 @@ dependencies/ Dependencies. (For now, we use quicklisp for
src/ Sources of the LSE interpreter and system.
progr/ Example programs (unix cli format: with LF).
progr/ Example programs (unix cli format: with LF).
tapes-xoff/ Example programs (LSE tape format: with X-OFF).
......
......@@ -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
......@@ -27,11 +27,11 @@ NASIUM-LSE: An Implementation of the L.S.E. programming language written in Comm
http://cliki.net/ for a list of CL implementations and other hints.
Development has been done with Clozure CL, so let's install CLozure CL.
See: http://ccl.clozure.com/download.html
See: http://ccl.clozure.com/download.html
::
# set TARGET to one of darwinx86, linuxx86, freebsdx86,
# solarisx86, windows, linuxppc, or linuxarm.
# solarisx86, windows, linuxppc, or linuxarm.
TARGET=linuxx86
cd /usr/local/src
svn co http://svn.clozure.com/publicsvn/openmcl/release/1.9/$TARGET/ccl
......@@ -45,7 +45,7 @@ NASIUM-LSE: An Implementation of the L.S.E. programming language written in Comm
See: http://www.quicklisp.org/
::
cd
cd
wget http://beta.quicklisp.org/quicklisp.lisp
ccl -load quicklisp.lisp
......@@ -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)"
......@@ -85,10 +85,10 @@ NASIUM-LSE: An Implementation of the L.S.E. programming language written in Comm
in quicklisp are up-to-date (quicklisp updates monthly).
However, sometimes we need more recent versions are necessary.
In that case, they may be installed in
~/quicklisp/local-projects/. ::
~/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. ::
......@@ -110,7 +110,7 @@ NASIUM-LSE: An Implementation of the L.S.E. programming language written in Comm
rm -rf ~/quicklisp/local-projects/com-informatimago
6- Compile the executables.
6- Compile the executables.
6.1- On some `debian` system (eg. 6.0.9), `ccl` has a problem
while quitting `lse`: ::
......@@ -130,7 +130,7 @@ NASIUM-LSE: An Implementation of the L.S.E. programming language written in Comm
If that happens to you, add this environment variable, to
exit more brutally, using exit(2): ::
export LSE_USE_EXIT=T
6.2- Compile: ::
......@@ -150,8 +150,8 @@ NASIUM-LSE: An Implementation of the L.S.E. programming language written in Comm
-rwxr-xr-x 1 lse lse 59400208 Mar 22 13:44 lse-server-ccl-linux-debian-6.0.4-i686
-rw-r--r-- 1 lse lse 3034 Mar 22 13:44 lse-server-ccl-linux-debian-6.0.4-i686.manifest
$ ./lse --help
8- Further questions may be addressed at mailto:pjb@informatimago.com
or bug reports may be posted at http://fossil.nasium-lse.ogamita.com/nasium-lse/reportlist
......@@ -173,7 +173,7 @@ following line in bash: ::
eval $( lse --bash-completion-function )
Then, typing in bash: ::
lse TAB
will display the options, and: ::
......
......@@ -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.
......
......@@ -51,6 +51,7 @@ LOGFILE = $(TMPDIR)/lse-build.log
SYMLINK_CLI = awk '/Generating/{print $$2}' < $(LOGFILE) | ( read executable ; rm -f lse ; ln -sf $$executable lse )
SYMLINK_SERVER = awk '/Generating/{print $$2}' < $(LOGFILE) | ( read executable ; rm -f lse-server ; ln -sf $$executable lse-server )
LINE = '================================================================'
CCL = ccl --no-init
CCL_EVAL = --eval
......@@ -154,6 +155,14 @@ git-clean-version:
-rm -f VERSION macosx/VERSION macosx/VERSION_LONG macosx/VERSION_SHORT
git checkout VERSION macosx/VERSION macosx/VERSION_LONG macosx/VERSION_SHORT
.PHONY: cli server html-doc help install macosx
.PHONY: cli server html-doc help install macosx fuzz
fuzz:cli
radamsa --recursive ../progr --count 10 --output /tmp/fuzz-%n.lse
for f in /tmp/fuzz-*.lse ; do \
echo "$(LINE)" ; echo "$$f" ; echo "$(LINE)" ;\
(echo '' ; cat $$f ) | ./lse --modern-mode --sans-bip ;\
done
#### THE END ####
0.9997979000000021
\ No newline at end of file
0.9997669000000012
\ No newline at end of file
......@@ -329,7 +329,7 @@ RETURN: EX-OK
(progn
(push #P"/usr/local/lib/" cffi:*foreign-library-directories*)
(setf *program-name* (or (program-name) *default-program-name*))
(setf *options* (make-default-options))
(print (setf *options* (make-default-options)))
(set-lse-root)
(let ((encoding (locale-terminal-encoding)))
(set-terminal-encoding encoding)
......
......@@ -36,7 +36,7 @@
(asdf:defsystem :com.informatimago.lse.cli
:description "This system defines the Command Line Interface L.S.E. interpreter."
:author "<PJB> Pascal J. Bourguignon <pjb@informatimago.com>"
:version "1.2.2"
:version "1.3.0"
:licence "AGPL3"
:properties ((#:author-email . "pjb@informatimago.com")
(#:date . "Winter 2012")
......@@ -57,10 +57,10 @@
"trivial-gray-streams"
"split-sequence"
#+(and unix (not clisp)) "iolib"
;; #+(and unix (not clisp)) "iolib.base"
;; #+(and unix (not clisp)) "iolib.os"
;; #+(and unix (not clisp)) "iolib.syscalls"
#+(and unix (not clisp)) "iolib"
;; #+(and unix (not clisp)) "iolib/base"
;; #+(and unix (not clisp)) "iolib/os"
;; #+(and unix (not clisp)) "iolib/syscalls"
#+(and unix (not clisp)) "iolib.termios"
"com.informatimago.common-lisp.unix"
......
......@@ -36,7 +36,7 @@
(asdf:defsystem :com.informatimago.lse.server
:description "A server for the L.S.E. interpreter."
:author "<PJB> Pascal J. Bourguignon <pjb@informatimago.com>"
:version "1.2.0"
:version "1.3.0"
:licence "AGPL3"
:properties ((#:author-email . "pjb@informatimago.com")
(#:date . "Winter 2012")
......@@ -53,9 +53,9 @@
"babel"
#+(and unix (not clisp)) "iolib"
;; #+(and unix (not clisp)) "iolib.base"
;; #+(and unix (not clisp)) "iolib.os"
;; #+(and unix (not clisp)) "iolib.syscalls"
;; #+(and unix (not clisp)) "iolib/base"
;; #+(and unix (not clisp)) "iolib/os"
;; #+(and unix (not clisp)) "iolib/syscalls"
;; #+(and unix (not clisp)) "iolib"
"trivial-gray-streams"
......
......@@ -89,6 +89,10 @@
(push (truename (merge-pathnames "../dependencies/"
*default-pathname-defaults*))
ql:*local-project-directories*)
;; NOT YET:
;; (push (truename (merge-pathnames "../dependencies/com-informatimago/"
;; *default-pathname-defaults*))
;; ql:*local-project-directories*)
(defun boolean-enval (var default)
......
......@@ -77,7 +77,8 @@
(defun wildpath (path) (make-pathname :name :wild :type :wild :version nil :defaults path))
(defun fasldir (system component)
(first (asdf:output-files
(make-instance 'asdf:compile-op)
#-asdf3 (make-instance 'asdf:compile-op)
#+asdf3 (asdf/operation:make-operation 'asdf:compile-op)
(asdf:find-component (asdf:find-system system) component))))
(setf *default-pathname-defaults* (dirpath (or *load-truename*
......@@ -90,11 +91,11 @@
;;; --------------------------------------------------
(ql:quickload '("iolib-grovel" "cffi-grovel"))
(unless (find "/usr/local/include/" iolib-grovel::*cc-flags* :test (function string=))
(setf iolib-grovel::*cc-flags* (append iolib-grovel::*cc-flags* (list "-I" "/usr/local/include/"))))
(unless (find "/usr/local/include/" cffi-grovel::*cc-flags* :test (function string=))
(setf cffi-grovel::*cc-flags* (append cffi-grovel::*cc-flags* (list "-I" "/usr/local/include/"))))
#-(and) (ql:quickload '("iolib-grovel" "cffi-grovel"))
#-(and)(unless (find "/usr/local/include/" iolib-grovel::*cc-flags* :test (function string=))
(setf iolib-grovel::*cc-flags* (append iolib-grovel::*cc-flags* (list "-I" "/usr/local/include/"))))
#-(and)(unless (find "/usr/local/include/" cffi-grovel::*cc-flags* :test (function string=))
(setf cffi-grovel::*cc-flags* (append cffi-grovel::*cc-flags* (list "-I" "/usr/local/include/"))))
;; (defun delete-package-and-users (package)
;; (mapc 'delete-package-and-users (package-used-by-list package))
......@@ -173,4 +174,3 @@
|#
;;;; THE END ;;;;
......@@ -82,6 +82,26 @@
(defmethod word-equal ((token tok-eof) (other (eql 'eol))) t)
(defmethod word-equal ((token tok-eof) (other (eql 'eof))) t)
(defmethod word-equal ((other (eql 'eol)) (token tok-eol)) t)
(defmethod word-equal ((other (eql 'eol)) (token tok-eof)) t)
(defmethod word-equal ((other (eql 'eof)) (token tok-eof)) t)
;; TODO: this is an ugly hack (com.informatimago.rdp::*eof-symbol* defined at compilation time vs. run-time in the grammar?).
(defun eof-symbol-p (other)
(or (eql com.informatimago.rdp::*eof-symbol* other)
(and (symbolp other)
(null (symbol-package other))
(string= "EOF" other))))
(defmethod word-equal ((token tok-eol) (other t)) (eof-symbol-p other))
(defmethod word-equal ((token tok-eof) (other t)) (eof-symbol-p other))
(defmethod word-equal ((other t) (token tok-eol)) (eof-symbol-p other))
(defmethod word-equal ((other t) (token tok-eof)) (eof-symbol-p other))
;; (defmethod word-equal ((token tok-eol) (other t)) (token-end-of-source-p other))
;; (defmethod word-equal ((token tok-eof) (other t)) (token-end-of-source-p other))
;; (list (word-equal (make-instance 'tok-eol) 'eol)
;; (word-equal (make-instance 'tok-eol) 'eof)
;; (word-equal (make-instance 'tok-eof) 'eol)
......
......@@ -218,6 +218,7 @@
(defgeneric eolp (token)
(:documentation "Returns whether the token is an end-of-line token.
A end-of-file is also considered an end-of-line.")
;; (:method ((token t)) (token-end-of-source-p token))
(:method ((token t)) nil)
(:method ((token tok-eol)) t)
(:method ((token (eql 'eol))) t)
......@@ -226,6 +227,7 @@ A end-of-file is also considered an end-of-line.")
(defgeneric eofp (token)
(:documentation "Returns whether the token is an end-of-file token")
;; (:method ((token t)) (token-end-of-source-p token))
(:method ((token t)) nil)
(:method ((token tok-eof)) t)
(:method ((token (eql 'eof))) t))
......@@ -911,4 +913,3 @@ TRANSITION: (state-name (string-expr body-expr...)...) ...
;;;; THE END ;;;;
1.0.0-0.999798-CCL-DARWIN
\ No newline at end of file
1.0.0-0.999767-CCL-DARWIN
\ No newline at end of file
1.0.0-0.999798-CCL-DARWIN,
commit 9087bd41afb81969b500a4e8ed549cfd1b54d7f5,
compiled 2016-02-06 19:30:25,
on larissa.home,
with features (lse-unix lse-extensions lse-server lse-case-insensitive).
\ No newline at end of file
1.0.0-0.999767-CCL-DARWIN,
commit 9bbdae30f875eeb1d27e3b6ec2269cebaa2962d7,
compiled 2017-01-24 23:38:07,
on despina.home,
with features (lse-unix lse-extensions lse-case-insensitive).
\ No newline at end of file
1.0.0-0.999798
\ No newline at end of file
1.0.0-0.999767
\ No newline at end of file
......@@ -105,7 +105,7 @@
(undef-action-error input-symbol-instantiation
input-symbol-index
action-table-top
grammar)))))
grammar)))))
;; there should always be a non null action-entry !!
(let ((ae-cdr (cdr (the cons action-entry))))
(case (car (the cons ae-cdr))
......
#!/home/pjb/src/pjb/nasium-lse/src/lse
#!/usr/local/bin/lse
10 AFFICHER['Bonjour',/]
20 AFFICHER['Les arguments sont: ',U]ARGC
30 AFFICHER ARGV
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment