Mengikuti tesis kami tentang aksesibilitas maksimum untuk pembelajaran, kami akan mencoba mengintegrasikan secara logis semua elemen dasar bahasa dari elemen bahasa algoritmik lain yang banyak digunakan. Di sini kita mengikuti logika internal yang diberikan di artikel pertama dan asumsi bahwa komposisi entitas dari beberapa bahasa populer akan memudahkan untuk memahami konten baru dengan sedikit usaha, karena orang memiliki mesin pengintegrasi bawaan berdasarkan jaringan saraf yang secara otomatis memasukkan pelanggaran parte semantik. soobscheni.
Ide membangun bahasa baru dari elemen yang sudah dikenal memiliki sejarah yang panjang. Lebih dari 140 tahun yang lalu, Dr. Zamenhof menciptakan bahasa buatan Esperanto dari bagian utama bahasa alami lainnya. Bahasanya ternyata sangat logis dan mudah dipelajari sehingga ternyata bisa bertahan dan bertahan hingga hari ini. Misalnya, tersedia di penerjemah Google. Saluton Habr! Bonvenon sub la kat!
Mari kita coba merancang bahasa yang nyaman untuk pemrograman cepat permainan dan teka-teki intelektual, dan penggunaannya akan menyenangkan dengan logika dan perhatiannya.
Komentar
Untuk komentar satu baris, gunakan simbol # (Python, R, Ruby). Kombinasi // (C dan banyak bahasa lain) dapat digunakan sebagai operator pembagian bilangan bulat untuk mendapatkan hasil operasi sebagai bilangan real, agar tidak digunakan dalam hal ini ekspresi konversi yang sedikit rumit seperti CGFloat (int), seperti di Swift.
PRINT โHi world\nโ # Hi world
Untuk menyorot komentar banyak baris, gunakan kombinasi ## .
## . , Python ##
Pilihan simbol # juga nyaman karena di masa mendatang akan digunakan oleh penerjemah bahasa Hi untuk memproses tag meta dalam teks program, yang dapat disintesis dari teks komentar. Ini mirip dengan preprocessor di C / C ++, yang juga menggunakan simbol #.
Tipe data dasar
Bahasa Hi dalam edisi dasar menggunakan tiga tipe data dasar:
Biner: BOOL
Kemungkinan operasi: & (dan), | (atau), ~ (tidak)
LET true = TRUE LET false = FALSE PRINT true & true # TRUE PRINT true | false # TRUE PRINT ~true # FALSE
Integers: INT
Kemungkinan operasi: + , - , * , / (pembagian integer), % (sisa), // (pembagian dengan hasil konversi otomatis ke tipe REAL)
VAR i = 0 PRINT (i + 6 โ 2) * 3 / 5 # 2
Bilangan real: REAL
Kemungkinan pengoperasian: + , - , * , /
VAR pi = 3.1415926535
String
String adalah tipe komposit karena diperlakukan sebagai string karakter Unicode
LET the_force = โflow through youโ
Kami tidak menggunakan tanda kutip tunggal untuk string literal, karena karakter, terutama yang terletak di keyboard standar, adalah sumber daya yang berharga untuk masa depan.
Operasi string standar:
# VAR language = โCโ LET statement = โ โ the best language everโ LET proposition = language + statement language = โPythonโ
Untuk saat ini, kita tidak perlu memperkenalkan tipe data dari tipe Character; untuk memecahkan masalah praktis, Anda dapat menggunakan ...
# LET secondSym = language[2]
Hasil penugasan jika referensi oleh indeks berada di luar string adalah "" dan tidak menyebabkan kesalahan waktu proses.
Konstanta dan Variabel
Seperti yang kita lihat pada contoh di atas, Hi adalah bahasa yang diketik secara statis untuk mengurangi kemungkinan kesalahan dalam penggunaan pengenal dan pemahaman yang lebih baik tentang tujuannya. Konstanta ( LET ) dan variabel ( VAR ) harus dideklarasikan sebelum penggunaan pertama objek. Lebih ergonomis untuk mendeklarasikan tipe tanpa secara eksplisit menentukan tipe tertentu dengan memberikan nilai awal; dalam hal ini, jenis inferensi menjadi jelas.
## LET one: INT = 1 : ## LET one = 1 VAR boolean = TRUE
Konsep mendeklarasikan konstanta dan variabel let dan var dipinjam dari Swift, tetapi di Hi dimungkinkan untuk membuat beberapa deklarasi dengan penugasan satu nilai:
VAR i, j, k = 0
Input dan output standar
Input data dari keyboard dilakukan dengan perintah INPUT :
VAR startFrom: INT PRINT "Start from: "; INPUT startFrom
Anda tidak perlu mengetik benar atau salah untuk memasukkan nilai BOOL. Aplikasi seluler untuk pemrograman, yang kami persiapkan untuk rilis di AppStore, cukup pintar untuk menampilkan hanya dua tombol dengan pilihan biner dalam hal ini. Demikian pula, keypad numerik tanpa titik untuk memasukkan integer dan keyboard biasa untuk memasukkan nilai teks akan ditampilkan.
Perintah PRINT mencetak baris ke layar tipe tampilan konsol. Standarnya adalah 20 baris dengan 40 karakter. Anda dapat memilih mode dengan karakter besar 10 X 20 atau kecil: 40 X 80.
PRINT " Hi language"
Hai Bahasa Kalkulator
Sekarang kita memiliki segalanya untuk membentuk tata bahasa kalkulator dengan input-output interaktif dalam bentuk EBNF dalam bahasa Hi.
1. The Syntax of HI Programming Language digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9". capital = "A" | ... | "Z". small = "a" | ... | "z". character = [Unicode_character]. addOperator = "+" | "-" | "|". mulOperator = "*" | "/" | "//" | "%" | "&". relation = "==" | "~=" | "<" | "<=" | ">" | ">=". integer = digit {digit}. real = digit {digit} "." {digit}. string = """ {character} """. number = integer | real. letter = capital | small. keyword = capital capital {capital}. ident = letter {letter | digit}. type = keyword. factor = number | string | TRUE | FALSE | ident | "(" expression ")" | "~" factor. term = factor {mulOperator factor}. simpleExpression = ["-"] term {addOperator term}. expression = simpleExpression [relation simpleExpression]. assignment = ident "=" expression. identList = ident {"," ident}. expList = expression {"," expression}. constDeclaration = LET identList [":" type] "=" expression. varDeclaration = VAR identList [":" type] ["=" expression]. funcCall = keyword [expList ]. statement = assignment | funcCall | constDeclaration | varDeclaration statementSequence = statement {("\n" | ";") statement}. 2. Standard Data Types BOOL INT REAL STRING 3. Standard Procedures and Functions INPUT PRINT 4. Other Keywords LET VAR
Tidak seperti tata bahasa banyak bahasa, di mana kata kunci dimasukkan dalam daftar pengecualian dari kelas pengenal yang lebih umum, kami memperkenalkan jenis khusus token - kata kunci, yang sudah dikenali pada tingkat pemindai juru bahasa Hi.
Di artikel berikutnya, kami akan memperkenalkan tipe data komposit di Hi selain STRING. Untuk bahasa sederhana kami, mereka cukup kuat untuk dengan mudah mengekspresikan ide-ide memanipulasi set objek, array dan kamus.