Phân tích từ vựng

Thứ tư - 07/01/2026 21:59
Quá trình phân tích từ vựng trong các giai đoạn xử lý.

Trong ngành khoa học máy tính, phân tích từ vựng (Tiếng Anh: lexical analysis, còn được gọi là scanning hoặc lexing) là một quá trình chuyển đổi chuỗi ký tự nguồn thành một chuỗi liên tiếp các đoạn ký tự ngắn hơn đã được phân loại, gọi là từ tố (tokens). Chương trình dùng để phân tích từ vựng được gọi là bộ phân tích từ vựng (tiếng Anh là lexer).

Từ tố (token) là một xâu được gán với một ý nghĩa xác định, có phần giống với loại từ trong ngôn ngữ học. Nó được xây dựng thành cặp gồm mọt tên từ tố và một giá trị từ tố tuỳ chọn. Từ tố là một loại đơn vị từ vựng.[1] Tương tự như danh từ, tính từ và động từ, từ tố cũng có nhiều loại tùy theo đặc điểm của trình biên dịch. Một số tên từ tố phổ biến gồm:

  • định danh (identifier): những tên do lập trình viên tự đặt;
  • từ khoá (keyword): những tên đã có trong ngôn ngữ lập trình;
  • dấu ngăn cách (delimiter): các kí tự dấu câu và các cặp dấu ngăn cách;
  • toán tử (operator): những biểu tượng thao tác với các đối số để tạo ra kết quả;
  • nguyên văn (literal): các nguyên văn là số, chữ hoặc tham chiếu;
  • chú thích: dòng hoặc khối; sẽ bị loại bỏ nếu trình biên dịch không coi chú tính là từ tố.
Tên từ tố Ví dụ định danh x, color, UP từ khoá if, while, return dấu ngăn cách }, (, ; toán tử +, <, = nguyên văn true, 6.02e23, "âm nhạc" chú thích /* Lấy dữ liệu người dùng */, // phải là số nguyên âm

Phần đặc tả của một ngôn ngữ lập trình thường bao gồm một tập hợp các quy tắc, gọi là ngữ pháp từ vựng, định nghĩa các cú pháp từ vựng. Cú pháp từ vựng thường là một ngôn ngữ chính quy, với các quy tắc ngữ pháp gồm các biểu thức chính quy; chúng định nghĩa tập hợp các chuỗi kí tự có thể (vị từ) của một từ tố. Một bộ phân tích từ vựng nhận diện các xâu, và với mỗi loại xâu tìm thấy thì thực hiện một hành động, chủ yếu chỉ đơn giản là tạo ra một dấu hiệu.

Từ tố hoá (tokenization) là quá trình vạch ra ranh giới - và có thể là cả phân loại - giữa các đoạn của một xâu các kí tự đầu vào. Các từ tố này sau đó được chuyển sang các dạng xử lí khác. Quá trình này có thể được coi là một công việc phụ của quá trình phân tích cú pháp.

Thí dụ, trong xâu kí tự sau:

The quick brown fox jumps over the lazy dog

xâu trên không được phân đoạn một cách ngầm định bằng dấu cách như cách một người nói ngôn ngữ tự nhiên sẽ làm. Xâu đầu vào thô gồm 43 kí tự này phải được ngắt một cách rõ ràng ra thành 9 từ tố với dấu phân cách là dấu cách (v.d. so khớp xâu " " hoặc bằng biểu thức chính quy /s{1}/).

Quá trình phân tích từ vựng tạo ra các dấu hiệu (token) cho bước phân tích cú pháp tiếp theo.

Các nhiệm vụ của quá trình phân tích từ vựng gồm:

  • Đọc các ký tự đầu vào
  • Phát sinh các chuỗi dấu hiệu đầu ra
  • Bỏ khoảng trắng, cách dòng, tab
  • Ghi lại vị trí các dấu hiệu được dùng cho bước xử lý tiếp theo.
  • ANTLR - ANTLR phát sinh cú pháp predicated-LL(k).
  • Flex - Biến thể thay thế của dạng cổ điển "lex" (C/C++).
  • JFlex - Viết lại của JLex.
  • Ragel - Bộ quét từ vựng hỗ trợ đầu ra cho mã nguồn C, C++, C#, Objective-C, D, Java, Go và Ruby.

Các công cụ phát sinh có thể xử lý Unicode:

  • JavaCC - JavaCC phát sinh phân tích từ vựng viết trong Java.
  • JLex - Công cụ phát sinh phân tích từ vựng dành cho Java.
  • Quex (hoặc "Queχ") - Công cụ phát sinh phân tích từ vựng nhanh cho C và C++.
  • Trình biên dịch
  • Nguyên lý ngôn ngữ lập trình
  • Phân tích cú pháp
  • Biểu thức chính quy
  • Bộ tiền xử lý
  • Compiling with C# and Java, Pat Terry, 2005, ISBN 032126360X624
  • Algorithms + Data Structures = Programs, Niklaus Wirth, 1975, ISBN 0-13-022418-9
  • Compiler Construction, Niklaus Wirth, 1996, ISBN 0-201-40353-6
  • Sebesta, R. W. (2006). Concepts of programming languages (Seventh edition) pp. 177. Boston: Pearson/Addison-Wesley.
  • Word Mention Segmentation Task analysis page
  • On the applicability of the longest-match rule in lexical analysis Lưu trữ ngày 25 tháng 2 năm 2012 tại Wayback Machine

Mình là Khánh, người sáng lập nghengu.vn – nơi chia sẻ niềm yêu thích với tiếng Nghệ, tiếng Việt và những phương ngữ đa dạng. Mình mong muốn lan toả vẻ đẹp của tiếng mẹ đẻ đến nhiều người hơn. Nếu thấy nội dung hữu ích, bạn có thể ủng hộ bằng cách donate hoặc mua sản phẩm giáo dục qua các liên kết tiếp thị trong bài viết.

Cảm ơn bạn đã đồng hành!

Tổng số điểm của bài viết là: 0 trong 0 đánh giá

  Ý kiến bạn đọc

.
Bạn đã không sử dụng Site, Bấm vào đây để duy trì trạng thái đăng nhập. Thời gian chờ: 60 giây
https://thoitietviet.edu.vn đọc sách online https://xemthoitiet.com.vn https://thoitiet24.edu.vn RR88 fun88 เข้าระบบ TOPCLUB 88xx 79king ssc88 Cm88 CM88 https://open88s.com/ C168 ufabet https://webmarket.jpn.com/ Sv388 Socolive TV Link nbet XX88 Socolive KJC https://okvip26.com/ Xoilac TV Live trực tiếp Cakhia TV Nohu90 Xoilac TV Socolive https://tt8811.net https://789pai.com https://mmoo.com.de https://go88.net/ c168 com five88 oxbet one88 xo88 FIVE88 https://playta88.com/ Bongdalu FUN88 ok9 kèo nhà cái 5 zowin.sh Cakhia TV Trực tiếp bóng đá Fun88 Bet KJC lu88 W 88 Alo789 FLY88 OK9 COM oxbet five88 net88 https://c168.tel/ https://c168b.com/ 789bet f8bet f8bet new88 new88 ta88 debet fabet cakhiatv Ok365 OPEN88.COM https://sunwin97.in.net https://383sports.baby 84win B52CLUB ZBET NET88 C168 xem bóng đá luongsontv http://cracks.ru.com/ ok9 c168 c168 c168 https://bongdalu.us.com/ https://socolive2.cv/ F8bet C168 Bet168 new88 Socolive TV https://oxbet.cheap/ https://tx88d.com/ https://nohu.photo/ ok8386 ok9 red88 new88 new88 new88 Yo88 88VV Vin777 ok8386 https://open88.mobi/ f8bet TT88 new88 f8bet https://rophim.ws I9BET tỷ lệ kèo 999bet Tài Xỉu Online da88 9bet https://f8bet.ae.org Sun win Go88 789club Keo nha cai 5 b52 https://kinng88.com/ V9bet https://jun88.pizza/ debet lucky88 nohu 11bet lode88