LSE (programming language)


LSE is a programming language developed at Supélec and Télémécanique from the late 1960s to the mid-1970s. It is similar to BASIC, except with French-language instead of English-language keywords. It was derived from an earlier language called LSD, also developed at Supélec. It is most commonly said to be an acronym for Langage Symbolique d'Enseignement, but other expansions are also known.
LSE originally flourished because being "interpreted", the "tokens" used were common to all languages and with a nationalized "editor", tokenized programs could be listed in any language. Obviously, the support from the French Ministry of National Education was very important, but it declined as the ministry lost interest. It went through a number of revisions; earlier versions of LSE lacked full support for structured programming, later versions such as LSE-83 by Jacques Arsac added structured programming support, along with exception handling. Even later revisions, such as LSE-2000, added more functionality, new types, new operators, flow control commands, etc.

Code examples

99 Bottles (AFNOR Z 65-020)

1*CHANSON DES 99 BOUTEILLES DE BIERE
2*PASCAL BOURGUIGNON, 2003
10 FAIRE 20 POUR N←99 PAS -1 JUSQUA 1
20 &STROF
30 AFFICHER
40 TERMINER
100 PROCEDURE &STROF LOCAL S1,S0;CHAINE S1,S0;S1←"S";S0←"S"
110 SI N=2 ALORS S0←"" SINON SI N=1 ALORS DEBUT S1←"";S0←"" FIN
120 AFFICHERN,S1
130 AFFICHERN,S1
140 AFFICHER
150 AFFICHERN-1,S0
160 RETOUR

Anagrams (LSE-1983)

Example from Jacques Arsac in LSE83:
1 CHAINE A,B,BP
5 FAIRE
10 AFFICHER 'A = ' ;LIRE A ; SI A=’’ ALORS FINI IS
11 AFFICHER 'B = ' ;LIRE B ; BP ← B
12
15 R SI LGR # LGR ALORS.FAUX. SINON &ANAG IS
20 SI R ALORS AFFICHER A, 'EST ANAGRAMME DE ',BP
21 SINON AFFICHER A, 'N’’EST PAS ANAGRAMME DE 1, BP
22 IS
25 BOUCLER
29
30 TERMINER
31
50 FONCTION &ANAG LOCAL J
51 SI U=' ' ALORS RESULTAT.VRAI. IS
52 SI J = 0 ALORS RESULTAT.FAUX. IS
54 RESULTAT &ANAG,MCH)
$55 &ANAG
$99

Largest common divisor, Euclid's algorithm (LSE2000)

PROCÉDURE &PGDC : ENTIER LOCAL U, V
ENTIER T
TANT QUE U > 0 FAIRE
SI U< V ALORS
T←U
U←V
V←T
FIN SI
U ← U - V
BOUCLER
RÉSULTAT V
FIN PROCÉDURE
PROCÉDURE &DEMO LOCAL U, V
AFFICHER U, V, &PGDC
FIN PROCÉDURE
&DEMO