LISP - Sintassi di base

Elementi di base in LISP

I programmi LISP sono costituiti da tre elementi costitutivi di base:

  • atom

  • list

  • string

Un atomè un numero o una stringa di caratteri contigui. Include numeri e caratteri speciali.

Di seguito sono riportati alcuni esempi di atomi validi:

hello-from-tutorials-point
name
123008907
*hello*
Block#221
abc123

UN list è una sequenza di atomi e / o altri elenchi racchiusi tra parentesi.

Di seguito sono riportati alcuni esempi di elenchi validi:

( i am a list)
(a ( a b c) d e fgh)
(father tom ( susan bill joe))
(sun mon tue wed thur fri sat)
( )

UN string è un gruppo di caratteri racchiuso tra virgolette doppie.

Di seguito sono riportati alcuni esempi di alcune stringhe valide:

" I am a string"
"a ba c d efg #$%^&!"
"Please enter the following details :"
"Hello from 'Tutorials Point'! "

Aggiunta di commenti

Il simbolo del punto e virgola (;) viene utilizzato per indicare una riga di commento.

Per esempio,

(write-line "Hello World") ; greet the world

; tell them your whereabouts

(write-line "I am at 'Tutorials Point'! Learning LISP")

Quando fai clic sul pulsante Esegui o digiti Ctrl + E, LISP lo esegue immediatamente e il risultato restituito è -

Hello World

I am at 'Tutorials Point'! Learning LISP

Alcuni punti importanti prima di passare a Next

Di seguito sono riportati alcuni dei punti importanti da notare:

  • Le operazioni numeriche di base in LISP sono +, -, * e /

  • LISP rappresenta una chiamata di funzione f (x) come (fx), ad esempio cos (45) è scritto come cos 45

  • Le espressioni LISP non fanno distinzione tra maiuscole e minuscole, cos 45 o COS 45 sono uguali.

  • LISP cerca di valutare tutto, inclusi gli argomenti di una funzione. Solo tre tipi di elementi sono costanti e restituiscono sempre il proprio valore

    • Numbers

    • La lettera t, che sta per logico vero.

    • Il valore nil, che sta per falso logico, così come un elenco vuoto.

Poco di più sui moduli LISP

Nel capitolo precedente, abbiamo accennato al fatto che il processo di valutazione del codice LISP richiede i seguenti passaggi.

  • Il lettore traduce le stringhe di caratteri in oggetti LISP o s-expressions.

  • Il valutatore definisce la sintassi di Lisp formsche sono costruiti da s-espressioni. Questo secondo livello di valutazione definisce una sintassi che determina quali s-espressioni sono forme LISP.

Ora, un modulo LISP potrebbe essere.

  • Un atomo

  • Un vuoto o non in elenco

  • Qualsiasi elenco che ha un simbolo come primo elemento

Il valutatore funziona come una funzione che accetta una forma LISP valida come argomento e restituisce un valore. Questo è il motivo per cui inseriamo l'estensioneLISP expression in parenthesis, perché stiamo inviando l'intera espressione / modulo al valutatore come argomenti.

Convenzioni di denominazione in LISP

Il nome oi simboli possono essere costituiti da un numero qualsiasi di caratteri alfanumerici diversi da spazi bianchi, parentesi aperte e chiuse, virgolette doppie e singole, barra rovesciata, virgola, due punti, punto e virgola e barra verticale. Per utilizzare questi caratteri in un nome, è necessario utilizzare il carattere di escape (\).

Un nome può avere cifre ma non interamente composto da cifre, perché in tal caso verrebbe letto come un numero. Allo stesso modo un nome può avere punti, ma non può essere composto interamente da punti.

Uso delle virgolette singole

LISP valuta tutto, inclusi gli argomenti della funzione e i membri dell'elenco.

A volte, dobbiamo prendere alla lettera atomi o elenchi e non vogliamo che vengano valutati o trattati come chiamate di funzione.

Per fare ciò, dobbiamo far precedere l'atomo o l'elenco con una virgoletta singola.

Il seguente esempio lo dimostra.

Crea un file denominato main.lisp e digita il seguente codice al suo interno.

(write-line "single quote used, it inhibits evaluation")
(write '(* 2 3))
(write-line " ")
(write-line "single quote not used, so expression evaluated")
(write (* 2 3))

Quando fai clic sul pulsante Esegui o digiti Ctrl + E, LISP lo esegue immediatamente e il risultato restituito è -

single quote used, it inhibits evaluation
(* 2 3) 
single quote not used, so expression evaluated
6