1.1        Lolita

Liste e calcolo simbolico

Lolita (Language for the On-Line Investigation and Transformation of Abstractions) sviluppato da F Blackwell nel 1967alla Rome Aircraft Base (NY).

E’ un’estensione, indirizzata alla gestione di liste, del sistema STL (Culler-Fried) per il trattamento di espressioni matematiche.

STL era dotato di una tastiera alfanumerica più una tastiera i cui tasti erano associati a funzioni o operazioni matematiche. L’output era su un video grafico.

Le istruzioni di Lolita

Aveva una memoria specializzata, il Symbol Accumulator (SA) ed una serie di comandi associati a tasti. Tramite tasti funzione si avviano le elaborazioni o si controllava l’output su video delle espressioni, che erano immesse come nell’aritmetica tradizionale.

Qui di seguito un elenco dei comandi:

DLIST

Definisce una lista di simboli

DSYM

- crei un simbolo

LS

carico un simbolo in SA

SI

Imposta il pointer

II

Incrementa il pointer

SSB

Memorizza un simbolo prima del pointer

SSA

Memorizza un simbolo dopo il pointer

ES

elimina simbolo

CON

Concatena simboli

BRANCH

Salto condizionato e incondizionato

DISPLAY

Visualizza lalista

DC

Formattazione dell’output


In ambiente IBM 360 esisteva un interprete in PL/1.

Qui di seguito una simulazione, largamente arbitraria, di una sessione di lavoro per ottenere la derivata di un monomio. L’interprete è stato scritto in Neko.(v. Neko 2.57 ) .

# Lolita (pseudo) source

STORE R1

DSYM S0 0

DSYM S1 1

DSYM Sx x

LS R1

# normalize

IF TOP _ BRANCH 2

  BRANCH 4

  IF E Sx BRANCH 3

    SSB S0

    SSA S1

IF E Sx SSB S1

IF TOP CON Sx

SI 1

IF TOP _ CON S1

DIFFER

SI 2

IF NE S0 BRANCH 4

ES

SI 1

ES

SI 2

IF TOP BRANCH 3

IF NE S1 BRANCH 2

ES

DISPLAY

D:\neko>neko lolita.n

insert expression (e.g. 3x5 or x2)

enter for end 3

SA: [0]

insert expression (e.g. 3x5 or x2)

enter for end 3x

SA: [3]

insert expression (e.g. 3x5 or x2)

enter for end x3

SA: [3,x,2]

insert expression (e.g. 3x5 or x2)

enter for end 3x3

SA: [9,x,2]

insert expression (e.g. 3x5 or x2)

enter for end -3x-3

SA: [9,x,-4]

insert expression (e.g. 3x5 or x2)

enter for end

D:\neko>