Cú pháp từ vựng kỳ lạ
- Trong tháng này, tác giả đã học 42 ngôn ngữ lập trình để tạo một trình tô sáng cú pháp mới cho llamafile. Nhân dịp Halloween, tác giả muốn chia sẻ những cú pháp gây bất ngờ nhất.
- Các ngôn ngữ được hỗ trợ gồm Ada, Assembly, BASIC, C, C#, C++, COBOL, CSS, D, FORTH, FORTRAN, Go, Haskell, HTML, Java, JavaScript, Julia, JSON, Kotlin, ld, LISP, Lua, m4, Make, Markdown, MATLAB, Pascal, Perl, PHP, Python, R, Ruby, Rust, Scala, Shell, SQL, Swift, Tcl, TeX, TXT, TypeScript và Zig.
Cách viết trình tô sáng cú pháp
- Việc triển khai một trình tô sáng cú pháp không quá khó. C++ và GNU gperf là những công cụ hữu ích.
- gperf có thể tạo bảng băm hoàn hảo để tối đa hóa hiệu năng.
- Một trình tô sáng cú pháp cơ bản có thể được triển khai bằng máy trạng thái hữu hạn, tập trung vào chuỗi, chú thích và từ khóa.
Demo
- Trình tô sáng cú pháp mới của llamafile có một lợi thế mạnh hơn so với ollama.
- Bài viết cung cấp demo dùng mô hình Meta LLaMA 3.2 3B Instruct trên Windows 10 để tạo mã bằng nhiều ngôn ngữ lập trình khác nhau.
Những ví dụ cú pháp từ vựng gây bất ngờ
- C: C thường được cho là đơn giản, nhưng vẫn có những yếu tố phức tạp như trigraph.
- Haskell: Cho phép chú thích lồng nhau.
- Tcl: Có thể đưa dấu ngoặc kép vào định danh.
- JavaScript: Có cú pháp biểu thức chính quy và dùng ký tự UNICODE làm ký tự xuống dòng.
- Shell: Cú pháp heredoc có thể được dùng theo nhiều cách khác nhau.
- String Interpolation: Kotlin, Scala và TypeScript cho phép chèn mã vào trong chuỗi.
- Swift: Có thể bao quanh chuỗi bằng nhiều ký tự #.
- C#: Có thể dùng nhiều dấu nháy để bao chuỗi.
- FORTH: Tách token mọi thứ theo ranh giới khoảng trắng.
- FORTRAN và COBOL: llamafile hỗ trợ tô sáng cú pháp cho các ngôn ngữ này.
- Zig: Chuỗi nhiều dòng bắt đầu bằng hai dấu gạch chéo ngược.
- Lua: Dùng ngoặc vuông và dấu bằng cho chuỗi nhiều dòng.
- Assembly: Có nhiều phương ngữ nên việc tô sáng cú pháp trở nên khó khăn.
- Ada: Dùng dấu nháy đơn cho nhiều mục đích khác nhau.
- BASIC: Không cần dấu nháy kết thúc ở cuối chuỗi.
- Perl: Cú pháp biểu thức chính quy rất đặc biệt.
- Ruby: Cú pháp phức tạp và khó hiểu.
Độ phức tạp của các ngôn ngữ được hỗ trợ
- FORTH là ngôn ngữ đơn giản nhất, còn Ruby là ngôn ngữ phức tạp nhất.
- Độ phức tạp được đánh giá bằng số dòng mã cần thiết để tô sáng cú pháp cho từng ngôn ngữ.
Tóm tắt của GN⁺
- Bài viết khám phá cú pháp độc đáo của nhiều ngôn ngữ lập trình khác nhau và cung cấp góc nhìn cần thiết để triển khai trình tô sáng cú pháp.
- Trình tô sáng cú pháp của llamafile hỗ trợ nhiều ngôn ngữ và có thể đặc biệt hữu ích cho việc bảo trì các ngôn ngữ cũ.
- Nội dung này giúp hiểu rõ hơn về độ phức tạp cú pháp của các ngôn ngữ lập trình và sẽ hữu ích với những ai quan tâm đến việc phát triển trình tô sáng cú pháp.
- Các dự án có tính năng tương tự gồm Pygments và Emacs.
1 bình luận
Ý kiến trên Hacker News
||