گرامر درخت منظم

در علم کامپیوتر نظری و تئوری زبان رسمی، یک گِرامر درخت منظم،
گرامر صوری است که مجموعه‌ای از درختان جهت دار یا جملات ( 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  یک زیرکلاس از زبان درخت دودویی منظم را به کلمات تو در تو و زبان‌های پشته‌ای مشخصه ارتباط دادند .

زبان‌های درخت منظم همچنین شامل زبان‌های به رسمیت شناخته شدهٔ درخت‌های پایین به بالا و درخت‌های غیرقطعی بالا به پایین هستند .

گرامرهای درخت منظم کلیتی از گرامرهای کلمه منظم هستند .

منابع 

 ویکی‌پدیای انگلیسی
 مقاله گرامر درخت منظم

زبان‌های صوری
قاعده‌ها
ویکی‌سازی رباتیک