Tài trợ bài viết này và giới thiệu dịch vụ, sản phẩm, thương hiệu, nhu cầu tuyển dụng của doanh nghiệp đến với cộng đồng.
La Kiến Vinh Giới thiệu ngôn ngữ lập trình Lary, các đặc tả của ngôn ngữ, các yêu cầu thiết kế trình thông dịch cho ngôn ngữ Lary, điều này thật thú vị khi ta có thể tự tạo ra một ngôn ngữ lập trình của bản thân mình.
Nội dung bài viết

Giới thiệu

Trình thông dịch LARY lary_interpreter (trình thông dịch ngôn ngữ lập trình Lary). Trình thông dịch này sẽ đọc 1 file mã nguồn từ người dùng (có dạng *.lar), cũng như các ngôn ngữ lập trình thân thuộc như C, C++, Java, C# hay JavaScript, ngôn ngữ lập trình này tên là ngôn ngữ Lary. Trình thông dịch này được sử dụng như sau: lary_interpreter.exe hello.lar.

Ngôn ngữ thiết kế trình thông dịch Lary

NGÔN NGỮ ĐỘ PHỨC TẠP (X/10) ĐỘ KHUYẾN KHÍCH (X/10)
ASM 10 10
C 7 7
C++ 6 6
C/C++ 5 5
JAVA 2 2
C# 2 2
PYTHON/PERL 2 2
  • Mục tiêu chính: Windows.
  • Mục tiêu phụ: Linux.

Các ngôn ngữ lập trình càng khó sử dụng, với phong cách của Stdio, tôi càng khuyến khích các bạn sử dụng.

Đặc tả ngôn ngữ Lary

Ngôn ngữ lập trình Lary được xây dựng trên cơ sở các ATOM, mỗi ATOM này nếu hiểu theo ngôn ngữ lập trình chúng ta có thể hiểu nó là 1 LỆNH, COMMAND, INSTRUCTION, DIRECTIVE... và các bạn có thể không cần thắc mắc vì sao nó được gọi là ATOM, bởi vì chúng tôi gọi nó vậy.

Mỗi ATOM được bắt đầu bằng tên của ATOM và theo sau là các tham số (có thể có nhiều hơn một tham số hoặc không có tham số nào cả).

<ATOM> [PARAM] [PARAM]…[PARAM]

Mỗi dòng code sẽ có ý nghĩa như một ATOM. Ví dụ như:

l_Print "Hello STDIO"

Sẽ in ra dòng chữ “Hello STDIO” lên màn hình console.

ATOM có 3 loại

  • ATOM logic
  • ATOM phân nhánh
  • ATOM hệ thống

ATOM logic

l_Print

In ra màn hình chuỗi cần in.

Ví dụ

l_Print "Hello STDIO"

Kết quả in ra màn hình là dòng chữ Hello STDIO.

Trong ngôn ngữ này, chúng tôi không thiết kế debuger, do đó, đây có thể được xem là ATOM quan trọng cho việc debug sau này.

$LARxx

Khác với C++, các bạn chỉ có 32 CELL để lưu giá trị. Mỗi CELL này tạm hiểu là các "thanh ghi" đối với ngôn ngữ ASM, hay biến đối với ngôn ngữ C/C++, Java, Python

$LAR0 $LAR1 $LAR2 ... $LAR31

Mỗi CELL có khả năng chứa 2 loại kiểu dữ liệu bao gồm chuỗi và số (Mã ASCII), và nếu CELL chưa được sử dụng nó phải đánh dấu được trạng thái chưa sử dụng.

Trong trường hợp CELL đang lưu chuỗi nhưng được sử dụng như một kiểu số, thì sẽ trả về giá trị là 0.

l_Bind <CELL>

l_Bind sẽ kích hoạt việc tương tác lên CELL mong muốn, ví dụ ta muốn kích hoạt CELL $LAR12 ta có ATOM sau

l_Bind $LAR12

#Comment

Với dấu # nghĩa là bỏ qua dòng đó không thực thi.

Ví dụ

#l_Print "Hello"

Dòng này sẽ không được thực thi vì bắt đầu bằng dấu # là ký hiệu comment.

Các ATOM tính toán số học cơ bản

l_Add, l_Sub, l_Mul, l_Div

Ví dụ

Chọn $LAR0 lưu vào $LAR0 và lựa chọn phép tính số học cơ bản.

l_Bind $LAR0
l_Add 10.6 10
l_Print $LAR0

Kết quả là 11.6 sẽ được lưu vào $LAR0 và sau đó in kết quả $LAR0 ra màn hình.

ATOM phân nhánh

ATOM IF / ELSE / END_IF

Thiết kế cấu trúc điều khiển

IF <A_NUMBER>
	<if_s>
ELSE
	<else_s>
END_IF

A_NUMBER có thể là biến $LARxx hoặc là 1 con số hoặc nếu là chuỗi thì là 0. Nếu A_NUMBER > 0 thì thực hiện khối code tại <if_s>, ngược lại thực hiện tại <else_s>

ATOM LABEL / GOTO

Thiết kế vòng lặp cơ bản thông qua khái niệm LABEL và GOTO

Ví dụ

LABEL_NAME:
<a>
<b>
<c>        

JUMP LABEL_NAME

Nếu dòng GOTO được gọi thì chương trình sẽ nhảy đến LABEL_NAME để thực thi <a> <b> <c>.

Nếu không tồn tại LABEL_NAME, chương trình sẽ ngưng và thông báo lỗi dòng JUMP LABEL_NAME.

ATOM hệ thống

l_FilesDelete <path>

Xóa file tại thư mục cho trước

Ví dụ

l_FilesDelete "C:\file.txt"

Kết quả là file này sẽ bị xóa, nếu không tồn tại file thì phải hiện thông báo "Cannot delete this file" và chạy tiếp code.

l_Shutdown <time>

Shutdown hệ thống OS

Ví dụ $LAR88 có giá trị 9 thì sau 9 giây OS sẽ shutdown

l_Shutdown $LAR88

Hoặc

l_Shutdown 3

Nếu nhập vào chuỗi thì xem như là 0, OS shutdown ngay lập tức

l_Shutdown "something happen"
THẢO LUẬN
ĐÓNG