Đây không phải là một điều đơn giản để làm ở tất cả, trong khuôn mặt, đó là một điều khó khăn. Bạn cần một trình phân tích ngữ pháp đầy đủ, được kết hợp với các hằng số/hàm được xác định trước (sin
, log
, pi
, v.v.).
Nếu bạn không có kinh nghiệm trước đây với CI sẽ không khuyến nghị thực hiện việc này, nhưng nếu bạn thực sự muốn thực hiện điều này, hãy xem recursive descent parsing, đây là cách dễ nhất để thực hiện việc này (không đặt gánh nặng lên người dùng) ký hiệu).
Cuối cùng nhưng không kém phần quan trọng bạn nói bạn muốn tạo hàm C từ đầu vào do người dùng tạo. Điều này gần như luôn luôn là một điều sai lầm để làm - tạo mã từ đầu vào của người dùng, thay vào đó cách tiếp cận dễ nhất là xử lý trước để tạo ra một biểu diễn trung gian có thể được thực thi một cách hiệu quả.
Hãy xem tài liệu Bison, có [ví dụ] (http://www.gnu.org/software/bison/manual/html_node/Infix-Calc.html#Infix-Calc) sẽ hướng dẫn bạn. –
có thể trùng lặp với http://stackoverflow.com/questions/1151127/evaluating-mathematical-expressions, [Trình phân tích cú pháp toán tử C hoặc Objective-C nhanh là gì?] (Http://stackoverflow.com/questions/4892152/what -is-a-nhanh-c-hoặc-mục tiêu-c-math-parser), http://stackoverflow.com/questions/5115872/what-is-the-best-way-to-evaluate-mathematical-expression- in-c/5117028 # 5117028, http://stackoverflow.com/questions/4071456/opensouce-cc-math-expression-parser-library/4071701#4071701 và một số mục khác. – lhf
Hãy thử [TinyExpr] (https://github.com/codeplea/tinyexpr). Nó nằm trong một tệp và tiêu đề mã nguồn C duy nhất. – 131