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

از ویکی‌پدیا، دانشنامهٔ آزاد

در علم کامپیوتر نظری و تئوری زبان رسمی، یک گِرامر درخت منظم، گرامر صوری است که مجموعه‌ای از درختان جهت دار یا جملات ( terms ) را توصیف می‌کند. گرامر کلمه منظم می‌تواند به عنوان یک نوع خاص از گرامر درخت منظم که مجموعه‌ای از درختان تک مسیر را توصیف می‌کند بیان شود.

تعریف[ویرایش]

گرامر درخت منظم توسط چندتایی

(G = (N, Σ, Z, P

که در آن

  • N مجموعه‌ای از غیرپایانه‌ها
  • Σ الفبای رتبه‌ای مجزا شده از N
  • Z یک غیرپایانه شروع است به طوریکه ZN و
  • P مجموعه‌ای از انتقالات به فرم At که AN و (tTΣ(N به صورتی که

(TΣ(N جبر واژه همراه است، یعنی مجموعه‌ای از تمام درختان تشکیل شده از نمادها در Σ ∪ N با توجه به arities خود که در آن غیر پایانه‌ها nullary در نظر گرفته می‌شود.

اشتقاق از درختان[ویرایش]

دستور زبان G به‌طور ضمنی مجموعه‌ای از درختان تعرف می‌شود : هر درختی که می‌تواند از Z با استفاده از مجموعهٔ قوانین P مشتق شود ، گفته می‌شود که توسط G توصیف شده‌است .

این مجموعه از درختان به عنوان زبان G شناخته می‌شوند . به‌طور رسمی تر ، رابطهٔ ⇒G روی مجموعهٔ (TΣ(N به صورت زیر تعرف می‌شود :

درخت (t1TΣ(N می‌تواند در یک مرحله اشتقاق شود به درخت (t1TΣ(N اگر وجود داشته باشد : متن S و انتقال At) ∈ P) به طوری که

  • [t1 = S[A و
  • [t2 = S[t.

در اینجا یک بافت ( متن ) به معنی یک درخت با دقیقاً یک حفره در آن است و [S[t نشان دهندهٔ نتیجهٔ پر کردن درخت T با حفره‌ای از S است .

زبان درخت تولید شده توسط T زبان { L(G) = { tTΣ | ZG* t است.

در اینجا TΣ نشان دهندهٔ مجموعه‌ای از تمام درختان تشکیل شده از نمادهای Σ , درحالیکه ⇒G* نشان دهندهٔ عملیات پی در پی از ⇒G است.

مثال‌ها[ویرایش]

Example derivation tree from G1 in linear (upper left table) and graphical (main picture) notation

فرض کنید G1 = (N11) , Z1 , P1 که در آن

  • {N1 = {Bool, BList مجموعه‌ای از غیرپایانه‌های ماست.
  • {N1 = {Bool, BList الفبای رتبه بندی شدهٔ ماست که arities توسط استدلال‌های ساختگی نشان داده شده (یعنی منفی نماد arity 2 است)
  • Z1 = BList غیرپایانه آغازین است و
  • مجموعهٔ P1 شامل موارد زیر می‌شود:
  • Boolfalse
  • Booltrue
  • BListnil
  • (BListcons(Bool,BList

مثالی از اشتقاق گرامر G1  :

BListcons(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 = (N11, BList1 , P1P2 با استفاده از مجموعه‌ای از غیر پایانی‌ها و الفبای بالا ، گسترش تولیدات P2 , متشکل از تولیدات زیر است :

  • (BList1cons(true,BList
  • (BList1cons(false,BList1

زبان (L(G2 مجموعه‌ای از تمام لیست‌های متناهی از مقادیر بولی است که حداقل یکبار شامل مقدار «درست» ( true ) می‌باشند . مجموعهٔ (L(G2 هیچ همتای نوع داده‌ای نه در استاندارد ML و نه در هیج زبان تابعی دیگر ندارد . این یک زیرمجموعه مناسب از (L(G1 است . ترم مثال بالا نیز در (L(G2 است ، همانطور که اشتقاقزیر نشان می‌دهد :

BList1cons(false,BList1) ⇒ cons(false,cons(true,BList)) ⇒ cons(false,cons(true,nil)).

ویژگی‌های زبان[ویرایش]

اگر L1 و L2 هر دو زبان درخت منظم باشند ، مجموعهٔ درخت L1L2 و L1L2 و L1 \ L2 نیز درخت زبان منظم هستند ؛ و می‌توان نتیجه گرفت که آیا L1L2 یا L1 = L2 هست یا نه .

مشخصات جایگزین و ارتباط با دیگر زبان‌های رسمی[ویرایش]

Rajeev Alur و Parthasarathy Madhusudan یک زیرکلاس از زبان درخت دودویی منظم را به کلمات تو در تو و زبان‌های پشته‌ای مشخصه ارتباط دادند .

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

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

منابع[ویرایش]