گرامر درخت منظم
این مقاله نیازمند ویکیسازی است. لطفاً با توجه به راهنمای ویرایش و شیوهنامه، محتوای آن را بهبود بخشید. (ژانویه ۲۰۱۵) |
در علم کامپیوتر نظری و تئوری زبان رسمی، یک گِرامر درخت منظم، گرامر صوری است که مجموعهای از درختان جهت دار یا جملات ( terms ) را توصیف میکند. گرامر کلمه منظم میتواند به عنوان یک نوع خاص از گرامر درخت منظم که مجموعهای از درختان تک مسیر را توصیف میکند بیان شود.
تعریف
[ویرایش]گرامر درخت منظم توسط چندتایی
(G = (N, Σ, Z, P
که در آن
- N مجموعهای از غیرپایانهها
- Σ الفبای رتبهای مجزا شده از N
- Z یک غیرپایانه شروع است به طوریکه Z ∈ N و
- P مجموعهای از انتقالات به فرم A → t که A ∈ N و (t ∈ TΣ(N به صورتی که
(TΣ(N جبر واژه همراه است، یعنی مجموعهای از تمام درختان تشکیل شده از نمادها در Σ ∪ N با توجه به arities خود که در آن غیر پایانهها nullary در نظر گرفته میشود.
اشتقاق از درختان
[ویرایش]دستور زبان G بهطور ضمنی مجموعهای از درختان تعرف میشود : هر درختی که میتواند از Z با استفاده از مجموعهٔ قوانین P مشتق شود ، گفته میشود که توسط G توصیف شدهاست .
این مجموعه از درختان به عنوان زبان G شناخته میشوند . بهطور رسمی تر ، رابطهٔ ⇒G روی مجموعهٔ (TΣ(N به صورت زیر تعرف میشود :
درخت (t1∈ TΣ(N میتواند در یک مرحله اشتقاق شود به درخت (t1∈ TΣ(N اگر وجود داشته باشد : متن S و انتقال A→t) ∈ P) به طوری که
- [t1 = S[A و
- [t2 = S[t.
در اینجا یک بافت ( متن ) به معنی یک درخت با دقیقاً یک حفره در آن است و [S[t نشان دهندهٔ نتیجهٔ پر کردن درخت T با حفرهای از S است .
زبان درخت تولید شده توسط T زبان { L(G) = { t ∈ TΣ | Z ⇒G* t است.
در اینجا TΣ نشان دهندهٔ مجموعهای از تمام درختان تشکیل شده از نمادهای Σ , درحالیکه ⇒G* نشان دهندهٔ عملیات پی در پی از ⇒G است.
مثالها
[ویرایش]فرض کنید G1 = (N1,Σ1) , Z1 , P1 که در آن
- {N1 = {Bool, BList مجموعهای از غیرپایانههای ماست.
- {N1 = {Bool, BList الفبای رتبه بندی شدهٔ ماست که arities توسط استدلالهای ساختگی نشان داده شده (یعنی منفی نماد arity 2 است)
- Z1 = BList غیرپایانه آغازین است و
- مجموعهٔ P1 شامل موارد زیر میشود:
- Bool → false
- Bool → true
- BList → nil
- (BList → cons(Bool,BList
مثالی از اشتقاق گرامر G1 :
BList ⇒ cons(Bool,BList) ⇒ cons(false,cons(Bool,BList)) ⇒ cons(false,cons(true,nil))
تصویر نشان میدهد که درخت اشتقاق مربوطه ، آن درخت از درختان (تصویر اصلی) است ، در حالیکه یک درخت اشتقاق در گرامر کلمه یک درخت از رشته (جدول بالا سمت چپ) است .
زبان درخت تولید شده توسط G1 مجموعهای از تمام لیستهای متناهی از مقادیر بولی است ، که (L(G1 برابر با TΣ1 شدهاست. گرامر G1 مرتبط است با اظهارات نوع داده جبری .
datatype Bool
= false
| true
datatype BList
= nil
| cons of Bool * BList
در زبان برنامه نویسی استاندارد ML : هر عضو از (L(G1 مرتبط است با مقدار استاندارد ML از نوع دادهٔ BList .
به عنوان مثال دیگر ، فرض کنید (G2 = (N1,Σ1, BList1 , P1 ∪ P2 با استفاده از مجموعهای از غیر پایانیها و الفبای بالا ، گسترش تولیدات P2 , متشکل از تولیدات زیر است :
- (BList1 → cons(true,BList
- (BList1 → cons(false,BList1
زبان (L(G2 مجموعهای از تمام لیستهای متناهی از مقادیر بولی است که حداقل یکبار شامل مقدار «درست» ( true ) میباشند . مجموعهٔ (L(G2 هیچ همتای نوع دادهای نه در استاندارد ML و نه در هیج زبان تابعی دیگر ندارد . این یک زیرمجموعه مناسب از (L(G1 است . ترم مثال بالا نیز در (L(G2 است ، همانطور که اشتقاقزیر نشان میدهد :
BList1 ⇒ cons(false,BList1) ⇒ cons(false,cons(true,BList)) ⇒ cons(false,cons(true,nil)).
ویژگیهای زبان
[ویرایش]اگر L1 و L2 هر دو زبان درخت منظم باشند ، مجموعهٔ درخت L1 ∩ L2 و L1 ∪ L2 و L1 \ L2 نیز درخت زبان منظم هستند ؛ و میتوان نتیجه گرفت که آیا L1 ⊆ L2 یا L1 = L2 هست یا نه .
مشخصات جایگزین و ارتباط با دیگر زبانهای رسمی
[ویرایش]Rajeev Alur و Parthasarathy Madhusudan یک زیرکلاس از زبان درخت دودویی منظم را به کلمات تو در تو و زبانهای پشتهای مشخصه ارتباط دادند .
زبانهای درخت منظم همچنین شامل زبانهای به رسمیت شناخته شدهٔ درختهای پایین به بالا و درختهای غیرقطعی بالا به پایین هستند .
گرامرهای درخت منظم کلیتی از گرامرهای کلمه منظم هستند .