.Net – Cơ bản về Expression Tree (C#)

Expression TreeTrước đây tôi từng giới thiệu về kĩ thuật xây dựng cây biểu thức (expression tree) từ những biểu thức toán học đơn giản. Trong .Net 3 bạn có thể thấy một API hoàn chỉnh cho phép bạn làm công việc tương tự nhưng với mức độ cao hơn nhiều thông qua các lớp thừa kế từ. Qua bài viết này, bạn sẽ biết cách để tạo một Expression Tree đồng thời biên dịch để sử dụng nó.  Một phần kiến thức bạn không thể thiếu để bắt đầu là Lambda expression, bạn có thể đọc tại bài viết sau: Tìm hiểu về Lambda Expression

Đọc tiếp

Algorthrim – Tính giá trị của biểu thức toán học có sử dụng biến

Y2 Math Interpreter - OutputDựa vào kĩ thuật tính toán giá trị biểu thức số học trong bài Algorithm – Tính giá trị của biểu thức tiền tố và hậu tố , bạn có thể phát triển để viết một chương trình tính toán đơn giản có sử dụng biến. Việc hiện thực không quá phức tạp cũng như không đòi hỏi những kĩ thuật nâng cao. Để minh họa, trong bài này tôi sẽ viết một trình thông dịch toán học với các chức năng tính toán và nhập xuất cơ bản với tên gọi: Y2 Math Interpreter.

Đọc tiếp

.Net – Kĩ thuật Reflection Emit trong C#

Reflection Emit là một kĩ thuật giúp bạn tạo ra các assembly động trong quá trình thực thi. Để chuẩn bị cho bài viết này, tôi đã dành khá nhiều thời gian nghiên cứu và viết một series hướng dẫn về MSIL/CIL, cũng như về kĩ thuật ReflectionCodeDom. Hãy xem đó là những tham khảo ưu tiên nếu như bạn cần tìm hiểu về chúng.

Đọc tiếp

Algorithm – Cải thiện thuật toán chuyển đổi và tính giá trị biểu thức số học

Y2 Expression Converter 1.2_tab2Trong một số bài viết trước đây tôi đã giới thiệu thuật toán chuyển đối biểu thức toán học giữa các dạng trung tố (infix), tiền tố (prefix) và hậu tố (postfix). Đồng thời tôi cũng trình bày phương pháp tính giá trị của các biểu thức này cũng như xây dựng cây biểu thức trực quan qua chương trình Y2 – Expression Converter Demo. Tuy nhiên thuật toán này chỉ mới hỗ trợ các toán tử hai ngôi (binary operation), trong bài viết này tôi sẽ mở rộng để thuật toán làm việc với các toán tử một ngôi (unary operation).

Đọc tiếp

Y2-ReflectorDemo – Xem thông tin các thư viện .Net

Y2_ReflectorDemo1.0Chương trình Y2 ReflectorDemo này đã được giới thiệu trong bài viết Kĩ thuật Reflection tuy nhiên không bao gồm mã nguồn. Dự định của tôi là bổ sung và hoàn thiện một số chức năng trước khi đưa ra mã nguồn, tuy nhiên do thời gian và công việc không cho phép nên tôi mạn phép đưa chương trình này lên. Chương trình chưa hoàn thiện nhưng là một ví dụ điển hình về ứng dụng Reflection trong .Net.

Đọc tiếp

Viết trình thông dịch stack-based đơn giản bằng C#

Trong bài viết trước tôi có giới thiệu sơ lược về ngôn ngữ lập trình Cat. Đây là một ngôn ngữ lập trình stack-based và chỉ hỗ trợ thông dịch. Việc hiện thực ngôn ngữ này không quá phức tạp tuy nhiên cũng đòi hỏi không ít thời gian. Vì thế, tôi sẽ sử dụng một phương pháp đơn giản để hiện thực một trình thông dịch tương tự mà ai cũng có thể hiểu một cách nhanh chóng. Tôi tạm đặt tên ngôn ngữ này là Mouse phiên bản 1.0 beta 1.

Đọc tiếp

A stack-based programming language: Cat

Ngôn ngữ lập trình stack-based (hay stack-oriented) là loại ngôn ngữ sử dụng stack để thực hiện các thao tác và tính toán. Một ví dụ cụ thể mà bạn có thể tìm thấy trong blog này là ngôn ngữ MSIL (CIL) mà tôi đã có một số bài hướng dẫn về nó tại đây.  Trong bài viết này tôi sẽ giới thiệu một ngôn ngữ stack-based đơn giản kèm mã nguồn C#. Đây sẽ là cơ sở để ta tạo ra một trình thông dịch đơn giản cho một ngôn ngữ lập trình của riêng bạn.

Đọc tiếp