LISP - Sintaxe Básica

Blocos de construção básicos em LISP

Os programas LISP são compostos de três blocos básicos de construção -

  • atom

  • list

  • string

A atomé um número ou sequência de caracteres contíguos. Inclui números e caracteres especiais.

A seguir estão exemplos de alguns átomos válidos -

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

UMA list é uma sequência de átomos e / ou outras listas entre parênteses.

A seguir estão exemplos de algumas listas válidas -

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

UMA string é um grupo de caracteres colocados entre aspas duplas.

A seguir estão exemplos de algumas strings válidas -

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

Adicionando comentários

O símbolo de ponto e vírgula (;) é usado para indicar uma linha de comentário.

Por exemplo,

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

; tell them your whereabouts

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

Quando você clica no botão Executar, ou digita Ctrl + E, o LISP executa imediatamente e o resultado retornado é -

Hello World

I am at 'Tutorials Point'! Learning LISP

Alguns pontos notáveis ​​antes de passar para a próxima

A seguir estão alguns dos pontos importantes a serem observados -

  • As operações numéricas básicas no LISP são +, -, * e /

  • LISP representa uma chamada de função f (x) como (fx), por exemplo cos (45) é escrito como cos 45

  • As expressões LISP não fazem distinção entre maiúsculas e minúsculas, cos 45 ou COS 45 são iguais.

  • O LISP tenta avaliar tudo, incluindo os argumentos de uma função. Apenas três tipos de elementos são constantes e sempre retornam seu próprio valor

    • Numbers

    • A carta t, isso significa verdade lógica.

    • O valor que nil, que representa o falso lógico, bem como uma lista vazia.

Um pouco mais sobre formulários LISP

No capítulo anterior, mencionamos que o processo de avaliação do código LISP segue os seguintes passos.

  • O leitor traduz as sequências de caracteres para objetos LISP ou s-expressions.

  • O avaliador define a sintaxe do Lisp formsque são construídos a partir de expressões S. Este segundo nível de avaliação define uma sintaxe que determina quais s-expressões são formas LISP.

Agora, um formulário LISP poderia ser.

  • Um átomo

  • Um vazio ou não lista

  • Qualquer lista que tenha um símbolo como primeiro elemento

O avaliador funciona como uma função que assume uma forma LISP válida como argumento e retorna um valor. Esta é a razão pela qual colocamos oLISP expression in parenthesis, porque estamos enviando toda a expressão / formulário para o avaliador como argumentos.

Convenções de nomenclatura em LISP

O nome ou os símbolos podem consistir em qualquer número de caracteres alfanuméricos além de espaços em branco, parênteses de abertura e fechamento, aspas simples e duplas, barra invertida, vírgula, dois pontos, ponto e vírgula e barra vertical. Para usar esses caracteres em um nome, você precisa usar o caractere de escape (\).

Um nome pode ter dígitos, mas não inteiramente formado por dígitos, porque então seria lido como um número. Da mesma forma, um nome pode ter pontos, mas não pode ser inteiramente composto por pontos.

Uso de aspas simples

LISP avalia tudo, incluindo os argumentos da função e membros da lista.

Às vezes, precisamos tomar átomos ou listas literalmente e não queremos que eles sejam avaliados ou tratados como chamadas de função.

Para fazer isso, precisamos preceder o átomo ou a lista com uma aspa simples.

O exemplo a seguir demonstra isso.

Crie um arquivo denominado main.lisp e digite o seguinte código nele.

(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 você clica no botão Executar, ou digita Ctrl + E, o LISP executa imediatamente e o resultado retornado é -

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