Có tồn tại một phần mở rộng của các biểu thức chính quy nắm bắt các ngôn ngữ tự do ngữ cảnh không?


25

Trong nhiều bài viết liên quan đến ngữ pháp không ngữ cảnh (CFG), các ví dụ về các ngữ pháp như vậy được trình bày thường thừa nhận các đặc điểm dễ dàng của ngôn ngữ mà chúng tạo ra. Ví dụ:

SaaSb
S

tạo ,{a2ibi|i0}

SaSb
SaaSb
S

tạo , và{aibjij0}

SaSa
SbSb
S

tạo hoặc tương đương (trong đó đề cập đến phần được chụp bởi ).{ ( ( một | b ) * ) 1 ( ( một | b ) * ) 2 | p 1 = p R 2 } p 1 ( . . . ) 1{wwRw(a|b)}{((a|b))1((a|b))2p1=p2R}p1(...)1

Tất cả các ví dụ trên có thể được tạo bằng cách thêm các chỉ mục ( ), các ràng buộc đơn giản trên các chỉ số này ( ) và khớp mẫu với các biểu thức thông thường. Điều này khiến tôi tự hỏi liệu tất cả các ngôn ngữ không ngữ cảnh có thể được tạo bởi một số phần mở rộng của các biểu thức thông thường. i > jaii>j

Có một phần mở rộng của các biểu thức chính quy có thể tạo ra tất cả hoặc một số tập hợp con quan trọng của các ngôn ngữ tự do ngữ cảnh không?


3
Quan sát rằng việc thêm các chỉ mục và ràng buộc quá mạnh: bạn sẽ có thể xác định , không phải là CFL. anbncn
Shaull 17/03/13

Câu trả lời:


34

Có, có. Xác định một biểu thức không ngữ cảnh là một thuật ngữ được tạo bởi ngữ pháp sau:

g::=ϵEmpty string|cCharacter c in alphabet Σ|ggConcatenation|Failing pattern|ggDisjunction|μα.gRecursive grammar expression|αVariable expression

Đây là tất cả các hàm tạo cho các ngôn ngữ thông thường trừ ngôi sao Kleene, được thay thế bằng toán tử điểm cố định chung và cơ chế tham chiếu biến. (Không cần sao Kleene, vì nó có thể được định nghĩa là .)μα.ggμα.ϵgα

Việc giải thích một biểu thức không ngữ cảnh đòi hỏi phải có kế toán cho việc giải thích các biến miễn phí. Vì vậy, hãy xác định một môi trường là ánh xạ từ các biến sang ngôn ngữ (nghĩa là các tập hợp con của ) và để là hàm hoạt động như trên tất cả các đầu vào trừ và trả về ngôn ngữ cho .ρΣ[ρ|α:L]ραLα

Bây giờ, xác định cách giải thích của biểu thức không ngữ cảnh như sau:

[[ϵ]]ρ={ϵ}[[c]]ρ={c}[[g1g2]]ρ={w1w2|w1[[g1]]ρw2[[g2]]ρ}[[]]ρ=[[g1g2]]ρ=[[g1]]ρ[[g2]]ρ[[α]]ρ=ρ(α)[[μα.g]]ρ=nNLnwhereL0=Ln+1=Ln[[g]][ρ|α:Ln]

Sử dụng định lý Knaster-Tarski, thật dễ dàng để thấy rằng việc giải thích là ít cố định nhất của biểu thức.μα.g

Thật đơn giản (mặc dù không hoàn toàn tầm thường) để cho thấy rằng bạn có thể đưa ra một biểu thức không ngữ cảnh xuất phát cùng ngôn ngữ như bất kỳ ngữ pháp không ngữ cảnh nào và ngược lại. Tính không tầm thường phát sinh từ thực tế là các biểu thức không ngữ cảnh đã lồng các điểm cố định và các ngữ pháp không ngữ cảnh cung cấp cho bạn một điểm cố định duy nhất trên một tuple. Điều này đòi hỏi phải sử dụng bổ đề của Bekic, nói chính xác rằng một điểm cố định lồng nhau có thể được chuyển đổi thành một điểm cố định duy nhất trên một sản phẩm (và ngược lại). Nhưng đó là sự tinh tế duy nhất.

EDIT: Không, tôi không biết một tài liệu tham khảo tiêu chuẩn cho việc này: Tôi đã làm việc đó vì lợi ích của riêng tôi. Tuy nhiên, đó là một công trình đủ rõ ràng mà tôi tin rằng nó đã được phát minh trước đó. Một số Googling bình thường tiết lộ Joost Winter, Marcello Bonsangue và Jan Rutten, bài viết gần đây về Ngôn ngữ không ngữ cảnh, Coasmularical , trong đó họ đưa ra một biến thể của định nghĩa này (yêu cầu tất cả các điểm cố định được bảo vệ) mà họ cũng gọi là các biểu thức không ngữ cảnh.


Điều này là khá tuyệt vời. Có một tên tiêu chuẩn hoặc tài liệu tham khảo cho điều này?
Alex ten Brink

5
Arto Salomaa trình bày điều này trong cuốn sách Ngôn ngữ chính thức của mình vào năm 1973. Ông gọi chúng là Biểu hiện giống như thường xuyên.
Tim Schaeffer

3

Có một câu hỏi liên quan chặt chẽ (và một số câu trả lời) trên MathOverflow về các ngôn ngữ có chức năng tạo ra là toàn diện .

Thật thú vị, định nghĩa của Neel về ngữ nghĩa của ở trên tương ứng chính xác với bằng chứng (mang tính xây dựng) về sự tồn tại của các giải pháp Loài cho phương trình đệ quy thông qua định lý Loài ẩn. Thật không may, phác thảo bằng chứng của anh ta cũng phải chứa một sai lầm tinh vi, vì có những trường hợp mọi thứ trở nên 'vô tận'. Nói cách khác, có một điều kiện đối với Jacobian về sự biến đổi được xác định bởi ngữ pháp là không số ít cần thiết. Đây có lẽ là lý do tại sao Bonsangue-Rutten yêu cầu các điểm cố định được bảo vệ, như một cách để đảm bảo tình trạng này trên Jacobian.μ


AFAICT, Winter et al chỉ yêu cầu sự cảnh giác để đảm bảo bạn có thể lấy đạo hàm Brzozowski của bằng cách lấy đạo hàm của . μα.g[μα.g/α]g
Neel Krishnaswami

1

Gần đây chúng tôi đã xuất bản các phác thảo của một khung sẽ làm điều đó. Xem bên dưới comp.compilers , nơi tôi đã gửi thông báo cùng với một số liên kết.

Những phát triển mới hoạt động dựa trên Định lý Chomsky-Schuetzenberger và có thể được coi là sự hoàn thành của kết quả này. Chomsky, bản thân anh, đã được thông báo về sự phát triển và cho thấy mong muốn "bắt kịp".

Cùng với sự phát triển này, chúng tôi cũng thiết lập sự tương đương của hai công thức riêng biệt cho các biểu thức không ngữ cảnh - một công thức là phần mở rộng / hoàn thành của mẫu tính toán "điểm cố định ít nhất" (ban đầu bởi Gruska, Yntema và McWhirter) - đã nhận được một công thức cuối cùng của năm 2014 - và công thức khác được xuất bản vào năm 2008.


4
Vui lòng bao gồm tất cả các thông tin có liên quan trong câu trả lời chính nó. Bây giờ, hãy nhìn vào comp.compilers. Đây là một câu trả lời không hữu ích, và nó sẽ hoàn toàn vô dụng trong một vài tháng.
Emil Jeřábek hỗ trợ Monica

Điều đó hoàn toàn sai. Nhân tiện, Comp.compilers (không giống như trang này và các blog khác) được lưu trữ vĩnh viễn. Ở đó bạn sẽ tìm thấy tất cả các chi tiết bạn cần. Có rất nhiều liên kết có thể được tìm thấy ở đó, trong bài viết được đăng gần đây nhất. Ngoài ra, không giống như các trang blog, nó được mở ra bên ngoài và hữu ích cho đối tượng rộng hơn nhiều. Bạn sẽ không gặp khó khăn trong việc tìm kiếm bất cứ điều gì trên USENET - đó là nơi các truy vấn như thế này sẽ được giải quyết và thảo luận. Nếu bạn gặp khó khăn, đây là liên kết. Groups.google.com/forum/#!topic/comp.compilers/YCa5jHUR1iQ
NinjaDarth

2
Vấn đề không phải là nó không được lưu trữ, mà là tài liệu lưu trữ rất lớn. Khi tôi tra cứu tài liệu lưu trữ bây giờ tôi có thể tìm thấy bài đăng của bạn ở đâu đó gần đầu trang, nhưng khi ai đó sẽ thấy câu trả lời này trong vài tháng hoặc vài năm tới, họ sẽ không biết bắt đầu đào ở đâu. Thật kiêu ngạo và thô lỗ khi khiến độc giả thực hiện một tìm kiếm dài và không đáng tin cậy khi bạn có thể chỉ cho họ đến một địa điểm cụ thể hơn. Bây giờ, tôi đã làm điều đó cho bạn. Phải mất 30 giây. Bạn có thể tự làm điều đó.
Emil Jeřábek hỗ trợ Monica
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.