Sự khác biệt giữa các từ và ký hiệu là gì?


7

Khi xác định bảng cú pháp cho chế độ chính, tôi có thể xác định cả thành phần từ và thành phần ký hiệu.

Khi nào tôi nên sử dụng mỗi? Ví dụ, được đưa ra một ngôn ngữ lập trình viết các biến trong trường hợp rắn foo_bar, nên _là một phần của một từ hoặc ký hiệu?


1
Mặc định c-modeđi kèm với emacs sử dụng _như một thành phần biểu tượng nhưng không phải là thành phần từ. Vì vậy, tôi hy vọng sẽ có một lý do tốt cho điều đó. Chưa kể rất nhiều lệnh điều hướng sẽ hoạt động như mong đợi. Nguyên tắc ít bất ngờ nhất và tất cả những điều đó.
Vamsi

Câu trả lời:


4

Từ cấu thành: 'w'

Các bộ phận của từ trong ngôn ngữ của con người. Chúng thường được sử dụng trong tên biến và lệnh trong các chương trình. Tất cả các chữ cái viết hoa và viết thường, và các chữ số, thường là các thành phần từ.

Thành phần biểu tượng: '_'

Các ký tự phụ được sử dụng trong tên biến và lệnh cùng với các thành phần từ. Ví dụ bao gồm các ký tự '$ & * + -_ <>' trong chế độ Lisp, có thể là một phần của tên biểu tượng mặc dù chúng không phải là một phần của các từ tiếng Anh. Trong tiêu chuẩn C, ký tự không cấu thành từ duy nhất có giá trị trong các ký hiệu là dấu gạch dưới "_".

Phép lịch sự của gnu.org

Khi nào tôi nên sử dụng mỗi? Ví dụ, được đưa ra một ngôn ngữ lập trình viết các biến trong trường hợp con rắn foo_bar, nên _ là một phần của một từ hoặc ký hiệu?

Nó phụ thuộc vào một trong những gì bạn muốn đạt được. Tôi sẽ nói, '_' nên là một phần của từ. Bằng cách đó, foo_bar sẽ được coi là một từ.

Xin hãy chú ý đến câu hỏi đó, có một câu trả lời thú vị nói về chế độ siêu từ và chế độ từ phụ


2
Vì chế độ c coi _là thành phần biểu tượng, tại sao bạn đề nghị coi nó là thành phần từ?
Wilfred Hughes

@WilfredHughes Xin lỗi, nhưng không có ai ở đây nói về chế độ c. Chắc chắn, anh ta nên cẩn thận về chế độ đang làm việc. Và như tôi đã nói trong câu trả lời của mình, chỉ trong trường hợp anh ta có thể coi foo_bar là một từ. Vui lòng kiểm tra câu hỏi
Nsukami _

6
Vui lòng không sử dụng cú pháp từ cho các ký tự như thế _, vì điều đó hoàn toàn đánh bại sự phân biệt giữa các từ và ký hiệu. Nếu bạn thích của bạn M-f, M-bvà bạn bè để di chuyển bằng cách định danh chứ không phải bằng lời nói, sau đó chứ không phải là thay đổi bảng cú pháp chế độ chính của bạn nên sử dụng superword-mode.
Stefan

5
Khi viết chế độ chính của bạn, đừng biến các biểu tượng và từ giống nhau. Rất nhiều người sử dụng sự khác biệt và bạn sẽ khiến cuộc sống của họ trở nên khó khăn hơn. Những người không thích sự khác biệt đã có tùy chọn superword-mode.
Malabarba

3
@WilfredHughes: thực sự, định nghĩa của các từ nên không bao giờ thay đổi.
Stefan

5

Câu trả lời này giải quyết tiêu đề câu hỏi của bạn: " Sự khác biệt giữa các từ và ký hiệu ". Nó không chỉ nói về nội dung câu hỏi của bạn, mà là về cú pháp ký hiệu, đã được @Nsukami trả lời tốt.

Có hai ý nghĩa rất khác nhau của biểu tượng từ trong Emacs:

  1. cú pháp ký hiệu , bao gồm các ký tự cấu thành từ cộng với các ký tự cấu thành ký hiệu . Điều này có thể áp dụng cho bất kỳ chế độ nào , đặc biệt là bất kỳ chế độ / ngôn ngữ lập trình nào. @Nsukami mô tả ý nghĩa này khá tốt.

  2. Biểu tượng Emacs-Lisp . Đây không phải là một thể loại cú pháp. Một biểu tượng Lisp là một Lisp tổ chức nào, hoặc đối tượng, trong đó có một số đặc điểm: a tên , một plist (danh sách tài sản), và có khả năng một giá trịchức năng định nghĩa.

    Theo mặc định, ô giá trị và ô chức năng là trống và số nguyên là danh sách trống ( nil). Chức năng Lisp symbol-name, symbol-value, symbol-function, và symbol-plisttrở lại các thành phần.

Lưu ý, BTW, rằng không có đề cập đến những điều này trong hướng dẫn sử dụng Emacs; chúng chỉ được đề cập trong hướng dẫn Elisp. Và quan trọng hơn, có lẽ: Không có mục chỉ mục nào khớp với " biểu tượng " cho nghĩa đầu tiên (cú pháp). Tất cả các mục chỉ mục bao gồm thuật ngữ " biểu tượng " đề cập đến ý nghĩa thứ hai (biểu tượng Lisp). Cụ thể, không có mục nào chứa cả " biểu tượng " và " cú pháp ". Liệu có nên có một mục chỉ mục như vậy không, tôi không biết (có lẽ). Nhưng điều này có thể cho bạn một số ý tưởng về tầm quan trọng đối với Lisp của các biểu tượng như các đối tượng Lisp .

Để biết thêm thông tin, xem:


cảm ơn rất nhiều vì đã giải thích 2 ý nghĩa khác nhau của biểu tượng từ.
Nsukami _

2

Điều này được giải thích trong hướng dẫn ELisp .

Emacs sử dụng thuật ngữ từ Lisp. Cái mà Lisp và Emacs gọi là biểu tượng là thứ mà nhiều ngôn ngữ lập trình khác gọi là định danh *. Đó là tên của một biến, hàm, v.v.

Một từ là một loạt các chữ cái hoặc chữ số không có dấu chấm câu.

Hầu hết các ngôn ngữ lập trình cho phép _ký tự gạch dưới trong mã định danh, ngoài các chữ cái và chữ số. Một số ngôn ngữ, như Lisp, cho phép nhiều hơn. Trong các ngôn ngữ lập trình, các ký tự như _có thể xuất hiện trong các mã định danh có biểu tượng thành phần lớp Tử _; các chữ cái và chữ số có lớp cấu thành từ ngữ w.

Các lệnh hành động trên các từ coi một chuỗi các thành phần từ là một từ. Các lệnh hành động trên các biểu thức (ví dụ forward-sexp) di chuyển bởi toàn bộ định danh cùng một lúc. Làm nổi bật cú pháp thường xử lý tất cả các thành phần biểu tượng giống hệt nhau.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.