LISP - Sintaks Dasar

Building Block Dasar di LISP

Program LISP terdiri dari tiga blok bangunan dasar -

  • atom

  • list

  • string

Sebuah atomadalah angka atau string karakter yang berdekatan. Ini termasuk angka dan karakter khusus.

Berikut adalah contoh beberapa atom yang valid -

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

SEBUAH list adalah urutan atom dan / atau daftar lain yang diapit tanda kurung.

Berikut adalah contoh dari beberapa daftar yang valid -

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

SEBUAH string adalah sekelompok karakter yang diapit oleh tanda kutip ganda.

Berikut adalah contoh beberapa string yang valid -

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

Menambahkan Komentar

Simbol titik koma (;) digunakan untuk menunjukkan baris komentar.

Sebagai contoh,

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

; tell them your whereabouts

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

Ketika Anda mengklik tombol Execute, atau mengetik Ctrl + E, LISP segera menjalankannya dan hasil yang dikembalikan adalah -

Hello World

I am at 'Tutorials Point'! Learning LISP

Beberapa Poin Penting sebelum Pindah ke Berikutnya

Berikut adalah beberapa poin penting yang perlu diperhatikan -

  • Operasi numerik dasar di LISP adalah +, -, *, dan /

  • LISP merepresentasikan pemanggilan fungsi f (x) sebagai (fx), misalnya cos (45) dituliskan sebagai cos 45

  • Ekspresi LISP peka huruf besar kecil, cos 45 atau COS 45 sama.

  • LISP mencoba mengevaluasi semuanya, termasuk argumen suatu fungsi. Hanya tiga jenis elemen yang merupakan konstanta dan selalu mengembalikan nilainya sendiri

    • Numbers

    • Surat t, itu singkatan dari kebenaran logis.

    • Nilai nil, yang berarti salah logis, serta daftar kosong.

Sedikit Lebih Banyak tentang Formulir LISP

Pada bab sebelumnya, telah disebutkan bahwa proses evaluasi kode LISP mengambil langkah-langkah sebagai berikut.

  • Pembaca menerjemahkan string karakter ke objek LISP atau s-expressions.

  • Evaluator mendefinisikan sintaks Lisp formsyang dibangun dari ekspresi-s. Evaluasi tingkat kedua ini mendefinisikan sintaks yang menentukan ekspresi s mana yang merupakan bentuk LISP.

Sekarang, formulir LISP bisa.

  • Sebuah Atom

  • Kosong atau non-daftar

  • Daftar apa pun yang memiliki simbol sebagai elemen pertamanya

Evaluator bekerja sebagai fungsi yang mengambil formulir LISP yang valid sebagai argumen dan mengembalikan nilai. Inilah alasan mengapa kami menempatkan fileLISP expression in parenthesis, karena kami mengirimkan seluruh ekspresi / formulir ke evaluator sebagai argumen.

Konvensi Penamaan di LISP

Nama atau simbol dapat terdiri dari sejumlah karakter alfanumerik selain spasi, tanda kurung buka dan tutup, tanda kutip ganda dan tunggal, garis miring terbalik, koma, titik dua, titik koma, dan batang vertikal. Untuk menggunakan karakter ini dalam nama, Anda perlu menggunakan karakter escape (\).

Sebuah nama dapat terdiri dari angka tetapi tidak seluruhnya terdiri dari angka, karena dengan demikian akan dibaca sebagai angka. Demikian pula sebuah nama dapat memiliki titik, tetapi tidak dapat seluruhnya terdiri dari titik.

Penggunaan Tanda Kutip Tunggal

LISP mengevaluasi semuanya termasuk argumen fungsi dan anggota daftar.

Terkadang, kita perlu memahami atom atau daftar secara harfiah dan tidak ingin mereka dievaluasi atau diperlakukan sebagai pemanggilan fungsi.

Untuk melakukan ini, kita perlu mengawali atom atau list dengan satu tanda kutip.

Contoh berikut menunjukkan hal ini.

Buat file bernama main.lisp dan ketikkan kode berikut ke dalamnya.

(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))

Ketika Anda mengklik tombol Execute, atau mengetik Ctrl + E, LISP segera menjalankannya dan hasil yang dikembalikan adalah -

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