2012-10-18 29 views
5

Làm cách nào để phân tích cú pháp đầu vào ASN.1 bằng Haskell?Làm thế nào để phân tích cú pháp ASN.1 bằng Haskell?

Có máy phát có thể tạo khai báo kiểu dữ liệu đại số và mã phân tích cú pháp cho tệp mô tả ASN.1 đã cho không?

(như ví dụ asn1c để tạo ra mã C ...)

Một bản tóm tắt nhanh những gì ASN.1 là về:

ASN.1 là như Google Nghị định thư Buffers, nhưng được phát triển trước đó và cách nó là một tiêu chuẩn thực tế. Về cơ bản, ASN.1 định nghĩa một số phương thức để tuần tự hóa dữ liệu có cấu trúc phân cấp và cú pháp để xác định ngữ pháp mô tả cấu trúc. Ngữ pháp như vậy có thể được sử dụng để tự động tạo ra một trình phân tích cú pháp và các cấu trúc dữ liệu để xây dựng một cây cú pháp.

Trả lời

3

Bạn có thể giải mã mã nhị phân ASN.1 bằng gói asn1-encoding, bạn có thể phân tích bằng tay bằng cách sử dụng đối sánh mẫu hoặc gói asn1-parse.

Ví dụ chức năng helper sau đây sẽ giải mã một BER tập tin nhị phân vào một danh sách các ASN1:

import Data.ASN1.Encoding 
import Data.ASN1.BinaryEncoding 
import Data.ASN1.Types 
import qualified Data.ByteString as B 

decodeASN1File file = decodeASN1' BER `fmap` B.readFile file