Tôi đọc có các hằng số từ vựng, toán tử từ vựng, phạm vi từ vựng, v.v ... làm cách nào cụm từ "từ vựng" thay đổi ý nghĩa cho một chuỗi ký tự không đổi, cho bất kỳ toán tử nào hoặc phạm vi của một số định danh?Thuật ngữ "lexical" có nghĩa là gì trong C++?
Trả lời
đặt sử dụng cụm từ 'hằng số từ vựng' không ngụ ý một loại hằng số khác.
Nói chung, khi bạn đang nói về ngữ pháp C++, bạn sẽ sử dụng thuật ngữ từ vựng này, từ vựng đó. Trái ngược với các hằng số được lưu trữ trong các đối tượng và phạm vi của một tệp hoặc một toán tử trên một ma trận. Vì vậy, nếu tôi đang nói về một dòng mã, có một hằng số như: (32786)
Tôi có thể sử dụng từ vựng (có thể không cần thiết) để xác nhận ý nghĩa rằng số chỉ tồn tại dưới dạng mã thông báo C++.
Vì vậy, khi tôi đang nói về C++ tokens và mối quan hệ của họ, tôi đang sử dụng từ vựng như wikipedia does.
"từ vựng" có nghĩa là nó có liên quan đến mã nguồn.
Ví dụ: 1
là hằng số từ vựng. OTOH, sizeof(char)
cũng là một biểu thức hằng số tích phân biên dịch, nhưng nó không phải là một hằng số từ vựng. Về cơ bản, nó là một lời gọi của toán tử sizeof
.
Các toán tử Lexical hoạt động trên mã nguồn. Các nhà khai thác tiền xử lý rơi vào thể loại này.
Trong hầu hết các trường hợp, nó không tạo ra sự khác biệt nào dù tôi sử dụng 1
hoặc sizeof(char)
ở bất kỳ đâu trong chương trình của tôi. Nhưng, như lập luận của các nhà khai thác từ vựng #
hoặc ##
nó làm cho một sự khác biệt đáng kể, bởi vì những công việc trên mã thực tế và không phải là kết quả của đánh giá:
#define STR(x) #x
std::string one = STR(1);
std::string also_one = STR(sizeof(char));
Cuối cùng, phạm vi từ vựng có nghĩa là một phần của nguồn chương trình mã có mã định danh tồn tại (được nhận dạng, có thể được sử dụng). Điều này trái ngược với phạm vi động, còn được gọi là tuổi thọ đối tượng, là phần của chương trình mà đối tượng tồn tại (duy trì giá trị của nó và có thể được điều khiển gián tiếp qua con trỏ hoặc tham chiếu, mặc dù tên không nằm trong phạm vi từ vựng) .
string f(string x) { return "2" + x; } // main's "y" is not in lexical scope, however it is in dynamic scope, and will not be destroyed yet
int main(void)
{
string y = "5.2"; // y enters lexical scope and dynamic scope
string z = f("y"); // y leaves lexical scope as f is called, and comes back into lexical scope when f returns
return z.size();
// z leaves lexical and dynamic scope, destructor is called
}
- 1. Thuật ngữ "BODMAS" có nghĩa là gì?
- 2. Thuật ngữ "chặn" có nghĩa là gì trong lập trình?
- 3. Thuật ngữ "Tổng hợp Verilog" có nghĩa là gì?
- 4. Thuật ngữ "thuật ngữ vector" là gì?
- 5. Tại sao đôi khi tôi nghe thuật ngữ "biến lexical?"
- 6. "Từ ... nhập ..." có nghĩa là gì trong các thuật ngữ đầu xương đơn giản?
- 7. Trong thuật ngữ laymans, 'tĩnh' có nghĩa là gì trong Java?
- 8. "cv-unqualified" có nghĩa là gì trong C++?
- 9. 'Ngôn ngữ xây dựng' có nghĩa là gì?
- 10. Chữ "nghĩa đen" trong C++ là gì?
- 11. Thuật ngữ kỹ thuật cho ngôn ngữ loại C# hoặc Java là gì?
- 12. "class:" có nghĩa là gì trong C++?
- 13. Có nghĩa là gì trong C++?
- 14. EPS có nghĩa là gì trong C?
- 15. '&' có nghĩa là gì trong C++?
- 16. "() =>" có nghĩa là gì trong C#?
- 17. Điều gì: :: có nghĩa là trong C++?
- 18. 0u có nghĩa là gì trong C#?
- 19. () => có nghĩa là gì trong C#?
- 20. Thuật ngữ Plain Old Java Object (POJO) có nghĩa là gì?
- 21. Thuật ngữ "vendoring" hoặc "to vendor" có nghĩa là gì đối với Ruby on Rails?
- 22. Thuật ngữ cơ sở dữ liệu cũ có nghĩa là gì?
- 23. ** nghĩa là gì trong C
- 24. Ngữ cảnh lối ra có nghĩa là gì đối với WaitHandle.WaitOne nghĩa là gì?
- 25. Thuật ngữ "biểu mẫu chuẩn" hoặc "biểu diễn chuẩn" trong Java nghĩa là gì?
- 26. Làm gì? trong C nghĩa là gì?
- 27. "Ngôn ngữ chính" nghĩa là gì?
- 28. Tuyên bố void ** có nghĩa là gì trong ngôn ngữ C?
- 29. % s và% d có nghĩa là gì trong printf bằng ngôn ngữ C?
- 30. Thuật ngữ "vòng trống" đề cập chính xác trong C và C++ là gì?