2010-06-04 22 views
17

Tôi có thể sai, nhưng có vẻ như không có cổng flex/bison trực tiếp (lex/yacc) cho C# /. NET cho đến nay.C# có (trực tiếp) cổng flex/yacc không? Hoặc người lexer/phân tích cú pháp nào sử dụng cho C#?

Đối với trình phân tích cú pháp LALR, tôi tìm thấy GPPG/GPLEX và đối với trình phân tích cú pháp LL, có ANTLR nổi tiếng. Nhưng, tôi muốn sử dụng lại ngữ pháp flex/bison của mình càng nhiều càng tốt.

  • Có cổng trực tiếp flex/bò cái nào cho C# không?
  • Mọi người lexer/parser thường sử dụng cho C# là gì? Có lý do nào cho lựa chọn đó không?
+0

bản sao có thể có của [Lex/Yacc for C#?] (Http://stackoverflow.com/questions/540593/lex-yacc-for-c) –

+0

@Hans: Trong khi tiêu đề có thể tương tự, câu hỏi không phải là . –

+0

ANTLR chỉ hỗ trợ LL (k) grammars - bison hỗ trợ LALR (1) ngữ pháp, mạnh hơn rất nhiều. Tôi không biết bất kỳ trình tạo trình phân tích cú pháp nào cho .Net thậm chí còn gần với sức mạnh của bò rừng, vì vậy câu hỏi này là IMHO rất hợp pháp. – Algoman

Trả lời

17

Tôi nghĩ rằng đặt cược tốt nhất của bạn sẽ là GPLEX/GPPG, điều gần nhất với Yacc/Lex cho C# mà tôi biết, và bạn sẽ cần phải chuyển các hành động của bạn thành C# bất kể.

Tôi cũng đã sử dụng Coco/R, ANTLR (tất nhiên) và đã chơi gần đây hơn với Irony.net, fslex/fsyacc (F #) và fparsec (F #).

Dưới đây là một số liên kết

Fparsec

Coco/R

Irony.net

Gardens Point Parser Generator

Gardens Point Lex

Tôi không có lý do kỹ thuật để sử dụng cái này so với cái khác: Tôi chơi đùa với những thứ này chủ yếu để giải trí. Tôi đã tạo một số DSL cho các dự án làm việc cách đây nhiều năm, nhưng tôi đã quét các máy quét/trình phân tích cú pháp trên đó (sau đó tôi làm việc chủ yếu ở Pascal, và tôi thấy rằng TP Lex/Yacc không phù hợp với sở thích của tôi, và DSLs đủ đơn giản). Tôi đã thấy rằng FParsec và Irony phù hợp với thị hiếu của tôi là tốt nhất, như tôi tìm thấy phần nào khác "lộn xộn" (thiếu sang trọng).

2

ANTLR là một máy phát điện phân tích cú pháp/lexer rất trưởng thành (và tuyệt vời). Ban đầu nó đã tạo mã Java, nhưng giờ đây có thể nhắm mục tiêu một số ngôn ngữ, including C#.

+4

Đã thử rằng gần đây cho C# và có vẻ như mục tiêu C# khá non nớt ... –

+0

Thư viện C# của ATLR không phục vụ tốt –

Các vấn đề liên quan