moaminsharifi/fa-wiki-spell-checker huggingface dataset:
اجازه می‌دهد که واژه‌های رزرو شده در زمینه‌های دیگر با استفاده از محصور کردن آنها توسط backticks انجام شود یا مایکروسافت اس‌کیوال سرور از براکت‌های مربعی استفاده می‌کند.
قطع کردن(stropping) نیز می‌توانند در زبان برنامه‌نویسی Nim مورد استفاده قرار گیرند. در زبان Nim کلمه رزرو شده می‌تواند به عنوان یک شناسه با ضمیمه کردن آن در براکت استفاده شود.
نمونه‌های دیگری نیز وجود دارند. برای مثال، Web IDL از یک زیرخط codice_15 برای نشانه‌گذاری شناسه‌ها استفاده می‌کند که در غیر این صورت با کلمات محفوظ برخورد می‌کند."Web IDL", "3.1. Names". […] For all of these constructs, the identifier is the value of the identifier token with any single leading U+005F LOW LINE ("_") character (underscore) removed. […] Note […] A leading "_" is used to escape an identifier from looking like a reserved word so that, for example, an interface named “interface” can be defined. The leading "_" is dropped to unescape the identifier. […]
در ابتدا در کامپایلر، قطع نکردن (unstropping) در طول مرحله بازسازی خط اول رخ می‌داد، که همچنین فضاهای خالی را نیز از بین می‌برد. پس از آن تجزیه و تحلیل بدون اسکنر (بدون نشانه گذاری) دنبال شد که در دهه ۱۹۶۰، برای الگول استاندارد بود. در استفاده مدرن، قطع نکردن(unstropping) به عنوان بخشی از تحلیل واژگانی انجام می‌شود. یک امر واضح این است اگر فرد واژگان را به دو مرحله اسکنر و ارزیاب متمایز کند: اسکنر رشته قطع شده(stropped) را در طبقه‌بندی به درستی دسته‌بندی می‌کند و سپس ارزیاب هنگام محاسبه مقدار از تکنیک جدانکردن (unstrops) استفاده می‌کند. به عنوان مثال، در زبانی که زیرخط codice_15 در اول کلمه برای بریدن شناسه‌ها برای جلوگیری از برخورد با کلمات محفوظ استفاده می‌شود، دنباله codice_17 به عنوان یک شناسه (نه به عنوان کلمه رزرو شده در صورت) توسط اسکنر طبقه‌بندی می‌شود سپس ارزیاب این مقدار را به عنوان نوع-نشانه codice_18 مقدار خواهد داد.
تعدادی روش مشابه وجود دارند که به‌طور کلی با پیشوند یا پسوند گذاری شناسه، برخوردهای مختلف با آن را نشان دهند ولی از لحاظ مفهوم با یکدیگر متفاوتند. به‌طور دقیق قطع کردن (stropping) متشکل از نمایش‌های مختلف برای یک اسم، در فضاهای نام متفاوت است و در مرحله نشان گذاری کردن رخ می‌دهد.
از حروف بزرگ برای کلمات کلیدی همچنان به عنوان یک قرارداد برای نوشتن دستور زبان برای واژگان و تجزیه استفاده می‌شود - علامت گذاری کلمه رزرو شده به عنوان کلاس نشانگر IF، و سپس بیان عبارت "if-then-else" با codice_19 که در آن اصطلاح‌های با حروف بزرگ کلمات کلیدی هستند و اصطلاحاتی که فقط حرف اول آن‌ها بزرگ است نمادهای غیر پایانی در یک قاعده تولید هستند (نمادهای پایانی با حروف کوچک مشخص می‌شوند).
ممکن است از قراردادهای نامگذاری برای جلوگیری از تصادم استفاده شود که به صورت معمول از زیرخط پیشوند یا پسوند استفاده می‌شود. زیرخط پیشوندی اغلب برای نشان دادن اعضای خصوصی در برنامه‌نویسی شی گرا استفاده می‌شود.
این اسامی ممکن است توسط کامپایلر تفسیر شوند و تأثیراتی داشته باشند، هرچند این کار معمولاً در مرحله تجزیه و تحلیل معنایی انجام می‌شود، نه مرحله نشانه گذاری. به عنوان مثال، در پایتون، یک زیرخط پیشوندی، یک شاخص خصوصی ضعیف است، در حالی که دو زیرخط برجسته روی یک ویژگی کلاس، دستکاری نام را نشان می‌دهد.PEP 008: Descriptive: Naming Styles
زبان‌های مدرن به‌طور کلی از واژه‌های رزرو شده به جای قطع کردن (stropping) برای تمایز کلمات کلیدی از شناسه‌ها به عنوان کلمات کلیدی استفاده می‌کنند. این برجسته‌ترین قسمت در زبان C است، در جایی که شناسه‌ها از شناسه‌هایی که از زیرخط (underscore) شروع می‌شوند جداست، اگرچه جزئیات دقیق شناسه در یک دامنه محفوظ است.C99 standard, 7.1.3 Reserved identifiers به‌طور مشابه در ++C هر شناسه ای که حاوی دو زیرخط باشد برای هرگونه استفاده محفوظ است، در حالی که شناسه‌ای که با تأکید زیر شروع می‌شود در فضای جهانی محفوظ است؛ بنابراین می‌توان با استفاده از کلمه رزرو شده codice_20کلمه کلیدی جدید codice_21 را اضافه کرد. در حالی که این از نظر سطحی شبیه به قطع کردن (stropping) است، معنی‌شناسی متفاوتی دارند. به عنوان یک کلمه محفوظ، رشته codice_20 شناسه codice_20 را در فضای نام شناسه مشترک نشان می‌دهد. در قطع کردن(Stropping) (با پیشوند کلمات کلیدی توسط codice_24)، رشته codice_20 کلمه کلیدی codice_21 را در یک نام جداگانه برای کلید واژه‌ها نشان می‌دهد؛ بنابراین با استفاده از کلمات رزرو شده، علائم codice_20 و codice_21 (شناسه، foo__) و (شناسه، foo) - مقادیر مختلفی در همان دسته هستند - در حالی که در تکنیک قطع کردن(stropping) نشانه‌های codice_20 و codice_21 (کلمه کلیدی، foo) و (شناسه، foo) - مقادیر یکسان در دسته‌های مختلف. این مسئله همان مشکل برخورد فضای نام را به گونه‌ای حل می‌کند که برای یک برنامه‌نویس نیز یک‌سان است، اما از نظر دستور زبان و اجرای رسمی تفاوت دارد.
یک پدیده نحو مشابه اما از نظر معنایی متفاوت امضاءها هستند که در عوض خصوصیات متغیرها را نشان می‌دهد. این موارد در پرل(Perl)، روبی (Ruby) و زبان‌های مختلف دیگر برای شناسایی ویژگی‌های متغیرها / ثابت‌ها مشترک است:در Perl برای تعیین نوع متغیر و در Ruby برای تشخیص متغیرها از ثابت و نشان دادن دامنه. توجه داشته باشید تکنیک معناشناختی متغیر را تحت تأثیر قرار می‌دهد، نه نحو بودن این که آیا آن یک شناسه یا کلمه کلیدی است.
قطع کردن (stropping) در زبانهای برنامه‌نویسی رایانه ای مورد استفاده قرار می‌گیرد تا کار کامپایلر (یا به عبارت دقیق تر پارسر) آسانتر شود؛ یعنی در توانایی رایانه‌های نسبتاً کوچک و کند در دسترس در روزهای اولیه محاسبات در قرن بیستم باشد. با این حال، روشهای مشابه برای کمک به درک مطلب برای افراد نیز به‌طور معمول مورد استفاده قرار می‌گیرند. برخی از نمونه‌ها عبارتند از:
پروانه‌های پاشایی نام یک سرده از زیرخانواده برگ‌بالان است.
شاهک هخامنش نام یک گونه از سرده شاهک است.
در نام علمی آن achaemenes به معنی هخامنش است.
شاهک سبزرگه ماداگاسکاری نام یک گونه از سرده شاهک است.
شاهک سرخ داسی نام یک گونه از سرده شاهک است.
در علوم رایانه، خط لوله‌ی نرم‌افزاری (به انگلیسی:software pipelining) مانند خط لوله‌ی سخت افزاری روشی جهت بهینه‌سازی حلقه‌ها است. خط لوله‌ی نرم‌افزاری یک نوع اجرای پویای دستورها است به گونه‌ای که تغییر ترتیب اجرای دستورها توسط کامپایلر به جای پردازنده انجام می‌شود.
این مهم است که بتوانیم "خط لوله‌ی نرم‌افزاری" را که روشی است برای بهبود حلقه‌هایی که دستورهای داخل آن به یکدیگر وابسته‌اند را از "زمان‌بندی ماژول" که در حال حاضر شناخته شده‌ترین روش استفاده شده توسط کامپایلرها برای تولید حلقه‌های خط لوله‌ای نرم‌افزاری است تشخیص دهیم. خط لوله‌ی نرم‌افزاری روشی آشنا برای برنامه‌نویسان زبان اسمبلی است. آن‌ها از این روش برای ماشین‌هایی که توانایی اجرای چند دستور همزمان را دارند از زمانی که این گونه معماری‌ها وجود داشته‌اند استفاده می‌کردند. تولید کارآمد این گونه کدها توسط کامپایلرها به خلق زمان‌بدی ماژول توسط Rau و Glaeser بر می‌گردد.B.R. Rau and C.D. Glaeser, "Some scheduling techniques and an easily schedulable horizontal architecture for high performance scientific computing", In "Proceedings of the Fourteenth Annual Workshop on Microprogramming (MICRO-14)," December 1981, pages 183-198 Lam نشان داد که نیازی به سخت‌افزار مخصوص برای استفاده کارآمد از زمان‌بندی ماژول نیست. روش استفاده شده توسط او به نام "توسعه‌ی متغیر ماژول" (به انگلیسی:modulo variable expansion) به طور گسترده در عمل استفاده می‌شود.M. Lam, "Software pipelining: An effective scheduling technique for VLIW machines", In "Proceedings of the ACM SIGPLAN 88 Conference on Programming Language Design and Implementation (PLDI 88)", July 1988 pages 318-328. Also published as ACM SIGPLAN Notices 23(7).
.Gao et al خط لوله‌ی بهینه برای برنامه نویسی خطی عدد صحیح را فرمول بندی کرد.J. Ruttenberg, G.R. Gao, A. Stoutchinin, and W. Lichtenstein, "Software pipelining showdown: optimal vs. heuristic methods in a production compiler", In "Proceedings of the ACM SIGPLAN 1996 Conference on Programming Language Design and Implementation," June 1996, pages 1-11. Also published as ACM SIGPLAN Notices 31(5).
علاوه بر الگوریتم‌های زمان‌بندی ماژول، الگوریتم‌های دیگری نیز برای برآورده کردن خط لوله‌ی نرم‌افزاری وجوددارند که از بین آن‌ها می‌توان به الگورتیم‌های شناخت هسته (به انگلیسی:kernel recognition) اشاره کرد.V. Allan, R.B. Jones, R.M. Lee, S.J. Allan, "Software Pipelining", In "ACM Computing Surveys", (1998). 27. 10.1145/212094.212131.این مقاله به مقایسه این دو الگورتیم پیاده سازی خط لوله‌ی نرم‌افزاری پرداخته است.
حلقه‌ی زیر را در نظر بگیرید:
for i = ۱ to عدد بزرگ
در این مثال، codice_1 ،codice_2 ،codice_3 دستورهایی هستند وابسته به متغیر i و به یکدیگر نیز وابسته‌اند. این به این معنی است که اجرای دستور codice_3 باید قبل از اجرای دستور codice_2 به پایان رسیده باشد. به طور مثال، دستور codice_6 می‌تواند در داده‌ای را از حافظه‌ی اصلی بر ثباتی بنویسد و دستور codice_7 عملیاتی بر روی آن ثبات انجام دهد و دستور codice_8 می‌تواند مقدار آن ثبات را در خانه‌ای از حافظه‌ی اصلی ذخیره کند. اما دستورهایی که مقدار متغیر codice_9 در آن‌ها متفاوت است از یکدیگر مستقل‌اند. به عبارتی دیگر، دستور codice_10 می‌تواند قبل از دستور codice_11 اجرا شود.
بدون استفاده از خط لوله‌ی نرم‌افزاری، ترتیب اجرای دستورها به صورت زیر است:
فرض کنید که هر دستور در ۳ چرخه ساعت اجرا می‌شود(فعلاً از هزنیه‌ی نگه‌داری و اجرای حلقه صرف نظر کنید). همچنین در نظر بگیرید که مانند بسیاری از سیستم‌های نوین، یک دستور می‌تواند در هر چرخه ساعت شروع به اجرا کند به شرطی که از دستورهایی که که اکنون در حال اجرا هستند، مستقل باشد. در مثالی که در آن از خط لوله استفاده نشده است، هر تکرار حلقه ۹ چرخه ساعت برای تکمیل شدن زمان می‌برد: ۳ چرخه ساعت برای هر کدام از دستورهای codice_1 ،codice_2 ،codice_3.
حال ترتیب اجرای دستورهای زیر را با خط لوله‌ی نرم‌افزاری در نظر بگیرید:
به سادگی می‌توان نشان داد که یک دستور می‌تواند در هر چرخه ساعت اجرای خود را آغاز کند، که این به این معنا است که ۳ تکرار حلقه‌ی اولیه می‌تواند در ۹ چرخه ساعت به پایان برسد. در نتیجه، هر بار تکرار حلقه‌ی اولیه به طور میانگین ۳ چرخه ساعت زمان می‌برد.
خط لوله‌ی نرم‌افزاری معمولاً در ترکیب با بازکردن حلقه استفاده می‌شود. این ترکیب روش‌ها معولاً بسیار بهینه‌تر از استفاده از روش بازکردن حلقه به تنهایی است. در مثال بالا، ما می‌توانیم قطعه کد بالا را به صورت زیر بنویسیم(فرض کنید که codice_17 بر ۳ بخش‌پذیر باشد):
for i = ۱ to (عدد بزرگ - ۲) step ۳
در صورتی که تعداد تکرارهای حلقه بخش‍پذیر بر ۳ نباشند مسئله کمی پیچیده تر می‌شود. می‌توانید برای اطلاع از راه حل‌های این مشکل به صحفه‌ی بازکردن حلقه مراجعه کنید.
در حالت کلی، بازکردن حلقه لزوماً بهترین روش برای پیاده‌سازی خط لوله‌ی نرم‌افزاری نیست. به طور مثال اگر حلقه شامل دستوری با تاخیر زیاد باشد استفاده از بازکردن حلقه بهینه نمی‌شود. قطعه کد پایین را در نظر بگیرید:
که این به این معنی است که حلقه باید ۱۲ بار باز شود تا از گلوگاه دستور codice_8 جلوگیری شود. که این موجب می‌شود تا حجم کد حلقه با ضریب ۱۲ افزایش یابد. وضعیت بدتر هنگامی پیش می‌آید که مقدمه ( قطعه کدی که در حالتی که codice_17 بر ۱۲ بخش‌پذیر نباشد قبل از حلقه قرار می‌گیرد) حجم بیشتری از کد حلقه داشته باشد و با احتمال زیاد بهینه نباشد زیرا خط لوله‌ی نرم‌افزاری نمی‌تواند برای این قطعه کد استفاده شود. علاوه بر این، اگر اندازه‌ی codice_17 نزدیک به تعداد بارهای بازشدن حلقه باشد، در هنگام اجرا، اکثر زمان صرف اجرای مقدمه‌ی ناکارآمد می‌شود که این باعث ناکارآمدی بهینه‌سازی از طریق خط لوله‌ی نرم‌افزاری می‌شود.
حال اگر بخواهیم بدون استفاده از بازکردن حلقه از خط لوله‌ی نرم‌افزاری استفاده کنیم، قطعه کد زیر را برای مثال خود بدست می‌آوریم(در ادامه به توضیح مقدمه و خاتمه می‌پردازیم):
for i = ۱ to (عدد بزرگ - ۶)
قبل از اینکه به توضیح مقدمه و خاتمه بپردازیم، که شامل دستورهایی می‌شوند که در حلقه اجرا نمی‌شوند، از درستی قطعه کد داخل حلقه اطمینان حاصل می‌کنیم. به طور خاص تکرار هفتم حلقه‌ی اصلی را در نظر بگیرید. حلقه‌ی اول حلقه‌ی خط لوله‌ای اولین تکراری است شامل دستوری از تکرار هفتم حلقه‌ی اصلی است. ترتیب اجرای دستورها به صورت زیر است:
همانطور که مشاهده می‌کنید برخلاف حلقه‌ی اصلی، در اجرای حلقه‌ی خط لوله‌ای مشکل گلوگاه دستور codice_8 رفع شده است. توجه کنید که 12 دستور بین دستور codice_22 و دستور codice_23 وابسته به آن وجود دارد که این موجب می‌شود که بتوان در چرخه ساعت‌هایی که دستور codice_22 در حال اجرا است، بقیه دستورها را اجرا کرد.
مقدمه و خاتمه ،در شروع و پایان حلقه، مسئول اجرای دستورهایی هستند که در حلقه اجرا نشده‌اند. قطعه کد زیر مقدمه‌ای برای مثال بالای ما را نشان می‌دهد:
هر خط از قطعه کد بالا نشان دهنده‌ی یک تکرار از حلقه‌ی خط لوله‌ای اصلی است، که دستورهایی که هنوز شروع نشده‌اند را شامل نمی‌شود. به طریق مشابه، خاتمه به تدریج دستورهایی که تکرار آن‌ها به پایان رسیده‌است را حذف می‌کند. قطعه کد زیر نشان دهنده‌ی خاتمه است:
اما همیشه پیدا کردن مقدمه و خاتمه مناسب ساده نیست. در مثالی که در بالا آورده شده است ۱۸ دستور برای مقدمه و ۱۸ دستور برای خاتمه استفاده شده‌است. این به این معنی است که مقدمه و پایان 6 برابر تعداد دستورات داخل حلقه دستور دارند. این صفحه به خوبی مشکلات به وجود آمده و روشی برای رفع کردن آن‌ها ارائه کرده است.
شاهک سفید هادریان نام یک گونه از سرده شاهک است.
شاهک آبی‌لکه نام یک گونه از سرده شاهک است.
چشمک‌بال نام یک گونه پروانه از تبار قهوه‌ای‌بال است.
فهرست نمایندگان تهران در مجلس شورای ملی ایران
نمایندگان:
از ۱۱۸۰۳ رای ماخوذه:
از ۲۰۴۲۶ رای ماخوذه:
از ۵۱۷۷۶ رای ماخوذه:
از ۴۰۵۵۱ رای ماخوذه:
از ۶۲۱۷۴ رای ماخوذه:
از ۷۵۴۶۳ رای ماخوذه:
از ۸۶۸۳۸ رای ماخوذه:
از ۷۷۲۳۶ رای ماخوذه:
از ۵۲۷۲۷ رای ماخوذه:
از ۱۴۲۹۰۱ رای ماخوذه:
از ۸۶۵۱۴ رای ماخوذه:
از ۸۷۴۲۳ رای ماخوذه:
از ۶۵۴۵۱ رای ماخوذه:
از ۲۷۱۳۲۰ رای ماخوذه:
از ۲۷۵۱۸۴ رای ماخوذه:
از ۵۳۷۰۹۱ رای ماخوذه:
از ۷۲۰۸۸۲ رای ماخوذه:
گرامرهای عبارت قطعی روشی است برای توضیح گرامر زبان‌های رسمی و طبیعی، که در برنامه‌نویسی منطقی مورد استفاده قرار می‌گیرد. این مفهوم بسیار به مفاهیم گرامرهای صفتی و گرامرهای مضافی مرتبط است که هر دو توسط زبان Prolog توسعه پیدا کرده‌اند. این گرامرها معمولاً در کنار زبان مطرح می‌شوند اما زبان‌های شبیه به آن هم مانند مرکوری (Mercury) شامل "DCG"ها هستند.
این طرز نشان دادن، گرامرها را به صورت مجموعه ای از عبارات قطعی از منطق مرتبه اول ارائه می‌دهد و به همین دلیل است که به آن گرامر عبارت قطعی گویند.
کلمه در زبان Prolog و دیگر زبان‌های مشابه اصطلاح خاصی است؛ به این معنی که همیشه نشان دادن گرامرها با بندهای قطعی، DCG نیست. اما همه این گرامرهایی که با بندهای قطعی بیان شده‌اند قابلیت‌های DCG را دارا هستند.
بندهای قطعی DCG را می‌توان مجموعه ای از جملات بدیهی در نظر گرفت که می‌توان بر اساس آن‌ها معتبر بودن یک جمله را در گرامر مورد نظر بررسی کرد. به عبارت دیگر این مجموعه جملات بدیهی کمک خواهند کرد که تشخیص دهیم آیا می‌توان برای ورودی یک درخت پارس (Pars tree) یکتا ساخت یا خیر. استفاده از این روش تشخیص عضویت ورودی به زبان و تشکیل درخت پارس آن را به یک مسئله ساده قابل حل تبدیل می‌کند.
تاریخچه DCGها به تاریخچه زبان برنامه‌نویسی Prolog گره خورده‌است. تاریخچه Prolog نیز به تحقیقات و پژوهش‌های مختلفی برمی‌گردد که مرکزیت آن‌ها به دو شهر مارسی فرانسه و ادینبرو اسکاتلند برمی‌گردد. بر اساس نقل قولی از رابرت کوالسکی که یکی از برنامه نویسان قدیمی زبان Prolog است، اولین ورژن از Prolog در سال ۱۹۷۲ توسط آلاین کلمراویر و فیلیپ راسل ارائه شد. اولین برنامه ای که با این زبان برنامه‌نویسی نوشته شد، یک سیستم پردازش زبان طبیعی بزرگ بود. فرناندو پریرا و دیوید وارن از دانشگاه ادینبرو هم در توسعه نسخه‌های اولیه Prolog نقش مؤثری داشتند.
کلمراویر پیش تر بر روی یک سیستم پردازش زبان به نام سیستم Q کار کرده بود که برای ترجمه متون بین زبان‌های فرانسوی و انگلیسی استفاده می‌شد. درسال ۱۹۷۸ کلمراویر مقاله ای در رابطه با روشی برای بیان کردن گرامرها نوشت و در آن مثال‌هایی از برنامه‌هایی که از آن‌ها استفاده می‌کردند آورد. او نام گرامرهای متامورفوسیس را برای این دسته از گرامرها قرار داد. این گرامرها قسمتی از نسخهٔ مارسی Prolog بودند.
پریرا و وارن از توسعه دهندگان Prolog که قبل‌تر معرفی شدند برای اولین بار گرامر عبارت-قطعی را مطرح کردند و پایه‌گذار عبارت DCG در Prolog بودند. آن‌ها در ادامه ایده گرامرهای متامورفوسیس، گرامرهای عبارت-قطعی را به عنوان زیرمجموعه‌ای از گرامرهای متامورفوسیس معرفی کردند. این ایده در مقاله‌ای تحت عنوان «گرامرهای عبارت-قطعی برای تحلیل زبان ها» منتشر شد و در آن بیان شد که DCGها شکل فرمول گونه گرامرها هستند به طوری که گرامر توسط عبارت‌های قطعی منطق مرتبه اول بیان می‌شود.
توسعه‌دهندگان Prolog در ادامه دربارهٔ ابعاد مختلف DCGها در مقاله‌های مختلفی نوشتند.
مثال زیر نمونه ای ساده از قسمتی از گرامر زبان انگلیسی است که در آن یک جمله از دو عبارت اسمی و فعلی تشکیل شده‌است که عبارت اسمی می‌تواند از ترکیب یک حرف اضافه و اسم تشکیل شود و عبارت فعلی از ترکیب یک فعل و یک عبارت اسمی ساخته می‌شود. این گرامر به روش DCG به صورت زیر نمایش داده می‌شود.
جملات “the cat eats the bat” و “a bat eats the cat” مثال‌هایی هستند که با گرامر تعریف شده می‌توان ساخت. برای ساختن تمام جملات حاصل از این گرامر می‌توان از دستور زیر درمفسر Prolog استفاده نمود. برای تشخیص این که جمله‌ای متعلق به این زبان هست یا خیر هم می‌توان از دستور خاصی استفاده کرد که در زیر آمده‌است (در صورتی که جمله مورد بررسی the bat eats the bat باشد).
sentence(X,[])
sentence([the,bat,eats,the,bat],[])
در واقع استفاده از DCG برای بهتر نشان دادن عبارات قطعی ساده در Prolog است. مثال قبل به صورت عملی در Prolog به وسیله DCG به فرم زیر نوشته می‌شود:
به ورودی‌های هر تابع در بالا (مثل (A,B)) لیست‌های تفاوت گویند. لیست‌های تفاوت روشی برای نشان دادن پیشوند یک لیست (یا یک رشته) هستند که این کار را به وسیله تفاوت بین پسوند دو ورودی انجام می‌دهد.
به‌طور مثال در نمونه زیر یک لیست پیشوندی تکی، به صورت لیست‌های تفاوت نوشته شده‌است.
P = [H] ---> [H|X] and X
در Prolog، در واقع DCGهای عادی پارامتر دیگری برای توابع درنظر نمی‌گیرد (همان‌طور که در بالا اشاره شد). به همین دلیل تنها می‌تواند برای استفاده در گرامرهای مستقل از متن به کار گرفته شود. با به کار گرفتن متغیرهای ورودی بیشتر، می‌توان DCGها را برای گرامرهای وابسته به متن نیز به کار برد. مثال زیر همین کاربرد را نشان می‌دهد:
عبارات بالا در واقع یک DCG برای گرامر زبانی است که رشته روبرو را تولید می‌کند؛ formula_1.
قابلیت‌ها و محدودیت‌های زبانی مختلف می‌توانند توسط DCGها نمایش داده شوند. در برخی موارد لازم است برای رسیدن به این مسئله پارامترهای ورودی توابع را افزایش دهیم.
در مثال بالا گرامری دیده می‌شود که بر روی جملاتش محدودیت‌هایی دارد. مثلاً "he likes her“ و "he likes him“ مورد قبول هستند ولی "her likes he“ و "him likes him“ پذیرفته نیستند.
انگشت مورتون () نام یکی از الگوهای ناحیه جلوی پا است که در آن انگشت دوم از انگشت شست پا (هالوکس) بلندتر است.
انگشت مورتون منجر به فشار اضافی بر روی سر دومین استخوان کف پا (پشت انگشت دوم در ناحیه بال پا) شده و دردی شبیه درد کف پا (Metatarsalgia) ایجاد می‌کند. فشار دائمی در حال راه رفتن و ایستادن بر روی این انگشت بلندتر قرار می‌گیرد و می‌تواند منجر به تشکیل پینه در زیر سر دومین استخوان کف پا شود.
منظومه انطاکیه که با عنوان شانْسون دِ آنْتیوش () شناخته می‌شود، مشتمل بر ۹ هزار بیت به‌صورت الکساندرین، منظومه اشعاری حماسی به‌زبان فرانسه است که در رابطه با نخستین جنگ صلیبی است که اطلاعات تاریخی معتبر و ارزشمندی در رابطه با این حادثه دربردارد. براساس تنها نسخه‌ای که از این منظومه باقی مانده، این اثر در ربع قرن ۱۲ میلادی سروده شده و منسوب به شخصی به نام گریندر د دوئال است. براساس سطر ۹ هزار و چهارده این منظومه، وی مدعی است که منظومه را از شاهدی عینی به نام ریچارد زائر که از جنگجویان لشکر رابرت کنت فلاندرز بود، به دست آورده‌است. این منظومه با دیگر منظومه‌های این سیکل، یعنی منظومه ناچیزان و منظومه اورشلیم ــ که آثاری شگفت‌انگیز و خیالی هستند ــ متفاوت است. همچنین این منظومه، شامل ۹ یا هزار سطر (بیت) شعر حماسی و مشتمل بر حوادث و رویدادهای مرتبط با نخستین جنگ صلیبی است.
نخستین جنگ صلیبی، نخستین جنگ از سری جنگ‌های صلیبی بود که برای بازپس‌گیری سرزمین مقدس روی داد و به‌وسیلهٔ پاپ اوربان دوم در جریان شورای کلرمونت، در سال ۱۰۹۵ م، اعلان شد. پس از آنکه بسیاری از مناطق تحت کنترل بیزانس در آناتولی به دست ترکان سلجوقی تسخیر شد، پاپ درخواست کرد اردویی نظامی برای یاری امپراتوری بیزانس گسیل شود. نتیجهٔ اردوکشیِ اشرافِ بلندپایهٔ فرانسوی — که با نام جنگ صلیبی شاهزادگان شناخته می‌شود — منجر به تسخیر دوبارهٔ آناتولی و حتی سرزمین مقدس (شام) شد که از ابتدای سدهٔ هفتم میلادی و در زمان گسترش اسلام به دست مسلمانان افتاده‌بود. سرزمین مقدس در ژوئیهٔ ۱۰۹۹ م، در جریان بازپس‌گیری اورشلیم به دست صلیبیون افتاد و پادشاهی اورشلیم در آن برپا شد.
این اردوکشی در پاسخ به درخواست کمک نظامی از سوی آلکسیوس یکم، امپراتور بیزانس به وقوع پیوست. اوربان، سخنرانی‌اش را در شورای کلرمونت به تصمیم‌گیری در مورد این موضوع خاص اختصاص داد و پیشنهاد محاصرهٔ جنگی شهرهای نیقیه و انطاکیه را مطرح کرد که به تازگی اشغال شده‌بودند؛ اگرچه، طبق اظهارات شاهدان عینی که پس از سال ۱۱۰۰ م به‌نگارش درآمده‌است، پاپ در سخنرانی‌اش در کلرمونت از اورشلیم و سرزمین مقدس به عنوان هدفی فرعی یاد کرده‌بود.
جنگ صلیبی شاهزادگان که در مقایسه از سازماندهی نظامی و جنگی بسیار بهتری برخوردار بود، در اواخر تابستان ۱۰۹۶ م آغاز شد و سپاه آنان در میانهٔ نوامبر ۱۰۹۶ تا آوریل ۱۰۹۷ م به قسطنطنیه رسید. آن‌ها به آناتولی یورش برده و نیقیه را در ژوئن ۱۰۹۶ و انطاکیه را در ۱۰۹۷ م تسخیر کردند. صلیبیون در ژوئن ۱۰۹۹ م به اورشلیم رسیدند و در جریان حمله‌ای در ۷ ژوئیهٔ ۱۰۹۹ م، شهر را به کنترل خود درآوردند و مدافعان را قتل‌عام کردند. تلاش کوچک فاطمیان برای بازپس‌گیری اورشلیم، توسط صلیبیون در نبرد اشکلون دفع شد.
آن‌ها هم‌زمان با پیروزی‌هایشان، دولت‌هایی لاتین و صلیبی مانند پادشاهی اورشلیم، کنت‌نشین طرابلس، شاهزاده‌نشین انطاکیه و کنت‌نشین ادسا را پایه‌ریزی کردند که با آرمان‌های مذهب شرقی امپراتوری بیزانس منافات داشت. آنان خواستار بازگردانی سرزمین‌هایی بودند که مسلمانان از آنان گرفته‌بودند، ولی اکنون بیشترشان به دست لاتین‌های کاتولیک افتاده‌بود. پس از تصرف اورشلیم، بیشتر صلیبیون به خانه‌هایشان بازگشتند که باعث شد پادشاهی صلیبی در طول جنگ صلیبی دوم و سوم در مقابل مسلمانان آسیب‌پذیر شود.
اشعار و نوشته‌های منظوم با مضمون‌های حماسی و رمانتیک مردم‌پسند، وقایع مربوط به جنگ‌های صلیبی و حواشی آن را از نگاهی دیگر مورد توجه قرار داده‌اند. در واقع، میراث منظوم برجای مانده از صلیبیون در فرانسه، انگلستان، آلمان، اسکاتلند، اسپانیا، پرتغال و … نیز سهم مهمی در مکتب کلاسیک تاریخ‌نگاری غربی جنگ‌های صلیبی دارند. این آثار افزون بر دربرداشتن اطلاعات تاریخی، اجتماعی و نظامی اروپا و دول صلیبی در اراضی مقدس، بیانگر احساسات تودهٔ مردم همزمان با جنگ‌های صلیبی در اروپا و اراضی مقدس هستند. به بیان دیگر، وقایع مهیج جنگ‌های صلیبی برای غنی ساختن شعر شاعرانی که عمدتاً زاده غرب بودند، مضمون‌هایی شایسته بودند. از جهتی دیگر، ادبیات دول صلیبی در شرق خود فقط شاخه‌ای از ادبیات فرانسه بود. افزون بر آن، رعایای بومی صلیبیون در سرزمین شام نیز ادبیاتی خاص خود را نداشتند. به علاوه، در یونان و قبرس تحت حکمرانی لاتینی‌ها نیز ادبیات یونانی عامه‌پسندی به وجود آمد که بسیار متأثر از ادبیات فرانسه بود. با آنکه جنگ صلیبی چه در زبان لاتین و چه در لهجه‌های محلی شمالی و جنوب فرانسه الهام‌بخش چند شعر حماسی شد، ولی جنبهٔ ادبی این اشعار بر ارزش تاریخی‌شان برتری دارد. اشعار شاعرانی نظیر جفری لمبارد،Geoffrey the Lombard ژوزف اکسترJoseph of Exeter و گونتر آوبالGunther of Basle به لحاظ ادبی قابل ملاحظه‌اند، ولی از نظر تاریخی ارزشی ندارند.
نظم پروانسی ترانه انتیویک یا همان "منظومه انطاکیه"، منسوب به گریگوری بچادا،Gregory Bechada از دیگران جالب‌تر و در خود دقتی بیشتر است. به لهجه مردم شمال فرانسه افزون بر نظم بادری، شعر دیگری در دست است که آن نیز به "منظومه انطاکیه"، اثر گریندر دوئال موسوم است.
شاعر و گردآورنده سه منظومه تاریخی «"منظومه انطاکیه"»، «"منظومه اورشلیم"»Chanson d'Jerusalem یا «فتح اورشلیم» و «"منظومه ناچیزان [اسیران مسیحی]"»Chanson des Chetifs است. از شرح حال وی اطلاع چندانی در دسترس نیست جز آن که وی در قرن ۱۲ میلادی و همزمان با لوئی هفتم، پادشاه فرانسه، زندگی می‌کرده و این سه منظومه بدو منسوب هستند. در واقع گریندر، اطلاعات بسیاری را از برخی وقایع‌نامه‌های جنگ صلیبی همچون "گشتا فرانکاروم" اقتباس نمود و در ویرایش. تدوین سه منظومهٔ مزبور به کار برد. همچنین، وی برخی از این اشعار حماسی را که به شکل شفاهی بر زبان مردم جاری بود، جمع‌آوری و مکتوب کرد و آنها را بازنگری نمود و به صورت متونی مدون درآورد که امروزه به "نخستین سیکل جنگ‌های صلیبی"First Crusade Cycle معروف هستند. این سه اثر، شرح منظوم اعمال نخستین لشکرکشی صلیبیون به شرق هستند که عمدتاً با استفاده از اطلاعات و مشاهدات عینی سربازان صلیبی بازگشته به اروپا سروده شده‌اند.
براساس سطر ۹ هزار و چهارده این منظومه، گریندر مدعی است که منظومه را از شاهدی عینی به نام ریچارد زائر که از جنگجویان لشکر رابرت کنت فلاندرز بود، به دست آورده‌است. همچنین این منظومه به‌طور مشخص با دو منظومه دیگر این سیکل، یعنی "منظومه ناچیزان" و "منظومه یا فتح اورشلیم" ــ که آثاری شگفت‌انگیز و خیالی هستند یا داستان‌های هیولاها، آدم‌های خبیث، قهرمان و دوشیزگانی زیبا به پایان می‌رسند ــ متفاوت است. این منظومه، شامل حدود ۹ هزار یا ۱۰ هزار سطر شعر حماسی و مشتمل بر حوادث و رویدادهایی است که در جنگ صلیبی اول به وقوع پیوسته‌اند. این منظومه، پتر زاهد را به عنوان محرک جنگ‌های صلیبی معرفی می‌کند. سپس نحوه جلب نیروهای صلیبی ــ که در پاسخ به درخواست پاپ بعد از مجمع کلرمون بود ــ و سفر آنها به قسطنطنیه و آسیای صغیر را شرح می‌دهد. بعد از آن چگونگی تسخیر نیقیه و دستیابی بر ادسا ــ که قبل از ورود صلیبیون به انطاکیه رخ داد ــ را بیان می‌کند. در واقع، وقایع و حوادث مزبور در عمق اشعار "منظومه انطاکیه" بیان شده‌اند و با بیان پیروزی مسیحیان در نبرد انطاکیه پر ۱۰۹۸ میلادی، پایان می‌یابد. همچنین در این منظومه به برخی از شخصیت‌های غیرمنتظره شرکت‌کننده در این جنگ همچون تافورس، اشاره می‌شود که رهبر گروه نیمه‌مختار بودند که تحت فرماندهی پادشاه خود، صلیبیون را همراهی می‌کردند.
متأسفانه هیچ‌یک از مضمون‌های اشعار این منظومه را نمی‌توان به عنوان مدرکی برای جنگ صلیبی اول به کار برد. علت این امر به دو عامل بازمی‌گردد:
به تعبیر سوزان ادگینتون، با وجود این، "منظومه انطاکیه"، احتمالاً به عنوان عاملی محرک در تجدید نیروها و سربازگیری در نیمه جنگ صلیبی سوم در حدود سال ۱۱۹۰ میلادی، به کار برده شده و فواید قابل ملاحظه‌ای در این زمینه نصیب صلیبیون نمود. همچنین این منظومه دارای ویژگی‌های زبان‌شناسی منطقه پیکاردی است و از سوی شوالیه‌های و نجیب‌زادگان شمال شرقی فرانسه ــ که اعمال اجدادشان در این اثر مورد تقدیس قرار گرفته‌است ــ از بر خوانده‌اند. به علاوه در منظومه انطاکیه، افکار و عقاید مذهبی و رویاهای برخی کشیشان همزمان با جنگ صلیبی اول و نقش و عملکرد زنان در این دوره نیز بیان شده‌است.
تکستران اوییشن شرکت سازنده هواگردهای عمومی شرکت خوشه‌ای تکستران است که از سال ۲۰۱۴ در پی خریداری شرکت‌های بیچ‌کرفت و هاوکر ایرکرفت شکل گرفت. این شرکت همچنین در برگیرنده برند سسنا نیز می‌باشد. اما بعد از خریداری شرکت هاوکر این مجموعه محصول جدیدی تحت برند هاوکر عرضه ننموده و فقط خدمات پس از فروش این برند ادامه دارد.
یک ترکیب کننده تجزیه‌گر در برنامه‌نویسی رایانه ای، یک تابع مرتبه بالا است که چندین تجزیه کننده (یا پارسر) را به عنوان ورودی می‌پذیرد و یک پارسر جدید را به عنوان خروجی برمی‌گرداند. در این زمینه، یک پارسر تابعی است که رشته‌هایی را به عنوان ورودی می‌پذیرد و ساختارهایی را به عنوان خروجی برمی‌گرداند، به عبارتی پارسر یک درخت تجزیه یا مجموعه ای از شاخص‌هایی است که نمایانگر مکان‌هایی در رشته‌است که تجزیه آن با موفقیت متوقف شده‌است. ترکیب کننده‌های پارسر از استراتژی تجزیه کننده کاهشی بازگشتی استفاده می‌کنند که ساخت و آزمایش ماژولار را تسهیل می‌کند. به این تکنیک تجزیه، تجزیه کننده ترکیبی می‌گویند.
پارسرهای ساخته شده با استفاده از ترکیب کننده‌ها، خوانا، ماژولار و ساختار یافته و همچنین ساده در مراحل ساخت و نگهداری هستند. از کاربردهای گسترده آن نمونه سازی کامپایلرها و پردازنده‌ها برای زبان‌های خاص دامنه (به انگلیسی: DSL) مانند واسط‌های زبان طبیعی به پایگاه‌داده‌ها، که در آن اقدامات معنایی پیچیده و متنوعی به همراه پردازش نحوی انجام می‌شوند، می‌باشد. در سال ۱۹۸۹، ریچارد فراست و جان لانچبروری نشان دادند که از ترکیب کننده‌های تجزیه گر می‌توان برای ساختن مفسرهای زبان طبیعی استفاده‌کرد. همچنین گراهام هاتن در سال ۱۹۹۲ از توابع مرتبه بالا در تجزیه کننده‌های پایه استفاده کرد. به علاوه S.D. Swierstra جنبه‌های عملی ترکیب کنندهٔ تجزیه گر را در سال ۲۰۰۱ به نمایش گذاشت. در سال ۲۰۰۸، فراست، هافیز و کالاهان مجموعه ای از ترکیب کننده‌های تجزیه گر را در زبان هسکل که مشکل دیرینه تطابق بازگشت چپ را حل می‌کرد، و به عنوان یک ابزار کامل تجزیه کننده از بالا به پایین در زمان و فضای چند جمله ای کار می‌کرد را تعریف کردند.
در هر زبان برنامه‌نویسی دارای توابع کلاس اول، می‌توان از ترکیب کننده‌های تجزیه گر با ترکیب پارسرهای پایه برای ساخت پارسرهایی با قوانین پیچیده‌تر استفاده کرد. به عنوان مثال، یک قاعده تولید از یک دستور زبان مستقل از متن (به انگلیسی: CFG) ممکن است یک یا چند جایگزین دیگر داشته باشد و هر جایگزین ممکن است شامل یک توالی از غیرپایانه(ها) و پایانه(ها) باشد یا این که می‌تواند یک غیرپایانه یا پایانه یا یک رشته خالی باشد. اگر یک پارسر ساده برای هر یک از این جایگزین‌ها وجود داشته باشد، می‌توان از یک ترکیب کنندهٔ تجزیه‌گر برای ترکیب هر یک از این پارسرها استفاده کرد و یک پارسر جدید که می‌تواند هر جایگزینی را تشخیص دهد را برگرداند.
در زبانهایی که از سربارگذاری عملگرها پشتیبانی می‌کنند، یک ترکیب کننده تجزیه‌گر می‌تواند به صورت یک عملگر میانود که برای به‌هم پیوستن چند پارسر مختلف که جهت ایجاد یک قانون کامل از آن استفاده می‌شود، به کار برود. بدین جهت ترکیب کننده‌های تجزیه‌گر پارسرها را به سبکی تعبیه شده، مشابه ساختار قواعد دستور زبان صوری تعریف می‌کنند.
برای ساده نگه داشتن بحث، ترکیب کننده‌های تجزیه‌گر را فقط به عنوان تشخیص‌دهنده‌ها بررسی می‌کنیم. اگر رشته ورودی از طول codice_1 و حرف‌های آن از طریق شاخص codice_2 قابل دسترسی باشند، تشخیص دهنده یک پارسر است که به عنوان خروجی مجموعه ای از شاخص‌هایی را برمی‌گرداند که نمایانگر موقعیت‌هایی هستند که پارسر دنباله‌ای از توکن‌ها را که از شاخص j شروع می‌شود را با موفقیت تشخیص داده‌است؛ بنابراین اگر خروجی یک مجموعهٔ خالی باشد، نشان می‌دهد که تشخیص دهنده نتوانسته هیچ دنباله ای را که از شاخص codice_2 شروع می‌شود، تشخیص دهد. در غیر این صورت خروجی نشان‌دهندهٔ آن است که تشخیص دهنده در موقعیت‌های متفاوت به پایان می‌رسد.
باید در نظر گرفت که ممکن است چندین روش متمایز برای تجزیه یک رشته وجود داشته باشد به صورتی که به یک شاخص مشترک منتهی می‌شوند؛ این اتفاق نشان می‌دهد گرامر مبهم است. تشخیص دهنده‌های ساده این ابهامات را نمی‌توانند شناسایی کنند چون هر شاخص انتهایی احتمالی فقط یک بار می‌تواند در مجموعه نتایج خروجی ذکر شود؛ به همین دلیل برای داشتن نتایج کامل تر، باید یک ساختار پیچیده‌تر مانند یک درخت تجزیه به عنوان خروجی برگردانده شود.
در ادامه دو ترکیب کننده تجزیه گر برای جایگزینی و توالی یابی تعریف کنیم، ابتدا فرض می‌کنیم codice_10 و codice_11 ، دو تشخیص دهنده پایه باشند:
یک گرامر مستقل از متن مبهم را در نظر بگیرید، codice_18 . با استفاده از ترکیب کننده ای که بالاتر تعریف کردیم، می‌توانیم به صورت ماژولار، نمادهای اجرایی این دستور زبان را با استفاده از یک زبان کاربردی مدرن (مثلاً هسکل) به صورت codice_19 تعریف کنیم. وقتی که تشخیص دهنده codice_20 بر روی یک دنباله ورودی codice_21 در موقعیت codice_22 اعمال شود با توجه به تعاریف فوق، خروجی codice_23 را برمی‌گرداند.
ترکیب کننده‌های تجزیه‌گر، مانند همه تجزیه کننده‌های کاهشی بازگشتی، محدود به دستور زبان‌های مستقل از متن نیستند، بنابراین هیچ جستجوی سراسری برای ابهامات موجود در مجموعه First و Follow در تجزیه کننده ال ال انجام نمی‌دهد؛ بنابراین، ابهامات فقط در زمان اجرا و زمانی که ورودی‌ها مقدار دهی می‌شوند، مشخص می‌شوند. در چنین مواردی، تجزیه کننده کاهشی بازگشتی می‌تواند به صورت پیش فرض (که ممکن است برای طراح گرامر ناشناخته باشد) به یکی از مسیرهای مبهم احتمالی منجر شود و باعث سردرگمی معنایی در استفاده از زبان شود. این موضوع باعث ایجاد اشکالاتی توسط کاربران زبان‌های برنامه‌نویسی مبهم می‌شود، که در زمان کامپایل گزارش نشده‌اند، و به‌عنوان خطای انسانی معرفی نمی‌شوند بلکه به‌عنوان دستور زبان مبهم معرفی می‌شوند. تنها راه حلی که این اشکالات را از بین می‌برد، رفع ابهامات و استفاده ازدستور زبان‌های مستقل از متن است.
پیاده‌سازی‌های ساده ترکیب کننده‌های تجزیه‌گر دارای کاستی‌هایی هستند که در تجزیه کنندهٔ بالا به پایین هم رایج است. تجزیه‌کننده ترکیبی ساده (به انگلیسی: Naïve combinatory parsing)، هنگام تجزیهٔ دستور زبان مستقل از متن مبهم به زمان و فضای نمایی نیاز دارد. در سال ۱۹۹۶، فراست و Szydlowski نشان دادند که با مموایز کردن در استفاده از ترکیب کننده‌های تجزیه‌گر می‌توان پیچیدگی زمانی را به چند جمله ای کاهش داد. مدتی بعد فراست از مونادها برای ساخت ترکیب کننده‌ها در ریسه (به انگلیسی: thread)های قاعده دار و درست جدول یادداشت‌ها در طول محاسبه استفاده کرد.
مانند هر تجزیه کننده کاهشی بازگشتی از بالا به پایین، ترکیب کننده‌های تجزیه‌گر معمولی (مانند ترکیب کننده‌های ذکر شده در بالا) در هنگام پردازش یک دستور زبان بازگشتی چپ خاتمه نمی‌یابند (به عنوان مثال codice_24). در سال ۲۰۰۶ یک الگوریتم تشخیص که دستور زبان مبهم را با قوانین مستقیم بازگشتی چپ تطبیق می‌داد ارائه شد. این الگوریتم تجزیه جداکننده بازگشتی چپ که نامتنهی است با تحمیل محدودیت‌های عمق، ساده کرد. در سال ۲۰۰۷، فراست، هفیز و کالاهااین الگوریتم را به یک الگوریتم تجزیه کننده کامل توسعه دادند، که در آن بازگشتی چپ غیرمستقیم مانند مستقیم در زمان چندجمله ای تطبیق می‌دهد، و هم چنین تعداد نمایی ای از درختان تجزیه برای گرامرهای مبهم را در فضای چندجمله ای و متراکم نمایش می‌دهد. این الگوریتم گسترش یافته، بازگشتی چپ غیرمستقیم را با مقایسه «متن محاسبه شده» با «متن فعلی»، مطابقت می‌دهد. همین نویسندگان همچنین پیاده‌سازی خود را در مورد مجموعه ای از ترکیب کننده‌های تجزیه‌گر که به زبان برنامه‌نویسی هسکل نوشته شده بودند رابر اساس همان الگوریتم توصیف کردند. cf. X-SAIGA — executable specifications of grammars
بهینه‌سازی حلقه در تئوری کامپایلر، فرایند افزایش سرعت اجرا و کاهش سربارهای مربوط به است. این فرایند نقش بسزایی در بهبود عملکرد حافظه نهان و استفاده مؤثر از قابلیت‌های پردازش موازی ایفا می‌کند. در واقع بیشترین زمان اجرای یک برنامه علمی در حلقه‌ها صرف می‌شود؛ و از این رو تکنیک‌های متعدد بهینه سازی کامپایلر برای اجرای سریعتر ایجاد شده‌اند.
از آنجا که دستورالعمل‌های داخل حلقه‌ها می‌توانند به‌طور مکرر اجرا شوند، در اغلب موارد ارائهٔ یک کران برای تعداد اجراهای متأثر از بهینه‌سازی حلقه غیرممکن است. این مشکل بررسی به‌جا بودن و درستی بهینه‌سازی حلقه و مزایای آن را در سناریوهای مختلف، چالش‌برانگیز کرده‌است.In the book "Reasoning About Program Transformations", Jean-Francois Collard discusses in depth the general question of representing executions of programs rather than program text in the context of static optimization.
درعمل فرایند بهینه‌سازی حلقه را می‌توان اعمال دنباله‌ای از تبدیل‌های حلقه روی بازنمایی میانی دانست که هریک دارای محکی برای سنجش درستی و به‌جابودن هستند. یک تبدیل (یا دنباله‌ای از تبدیل‌ها) برای اینکه بتواند تضمین کند که کد حاصلش، نتیجهٔ کد اولیه را تولید خواهد کرد، به صورت کلی باید دنبالهٔ تمام وابستگی‌هایی که در ابتدا در کد بوده را حفظ کند. علاوه بر آن بررسی مفید بودن یک تبدیل در این روش دشوار است چراکه ممکن است بکارگیری یک تبدیل نیازمند انجام چندین تبدیل دیگری باشد که خود آن‌ها سربار محاسباتی ایجاد کنند.
در ادامه تبدیل‌های متداول حلقه به صورت فهرست‌وار آمده‌اند.David F. Bacon, Susan L. Graham, and Oliver J. Sharp. "Compiler transformations for high-performance computing." Report No. UCB/CSD 93/781, Computer Science Division-EECS, University of California, Berkeley, Berkeley, California 94720, November 1993 (available at CiteSeer). Introduces compiler analysis such as data dependence analysis and interprocedural analysis, as well as a very complete list of loop transformations
روش تبدیل تکپیمانه‌ایSteven S. Muchnick, "Advanced Compiler Design and Implementation," 1997 Morgan Kaufmann. Section 20.4.2 discusses loop optimization. از یک ماتریس تک پیمانه‌ای برای توصیف نتیجهٔ اعمال دنباله‌ای از تبدیل‌های مذکور استفاده می‌کند. ایدهٔ اصلی این روش توصیف مجموعهٔ تمام اجراهای یک دستور در formula_1 حلقه به صورت یک مجموعه از نقاط با مختصات صحیح در فضای formula_1 بعدی است که این نقاط به ترتیب الفبایی اجرا می‌شوند. به عنوان مثال اجراهای یک گزاره که در دو حلقهٔ تودرتو با متغیر پیمایندهٔ بیرونی i و درونی j به صورت دوتاییformula_3 مدل می‌شود. یک تبدیل تک پیمانه‌ای متناظر با ضرب نقاط این فضا توسط ماتریس‌های تبدیل است. مثلاً ماتریس مربوط به جابه‌جایی حلقهٔ بیرونی با درونی formula_4 است. به صورت کلی یک تبدیل تک پیمانه‌ای زمانی صحیح است که تمام دنباله وابستگی‌های زمانی را حفظ کند. دشوارتر از آن، بررسی تأثیر تبدیل تک پیمانه‌ای را روی کارایی است. به این دلایل حلقه‌های تودرتوی معیوب و تبدیل‌هایی مثل بخشبندی به راحتی در این چهارچوب قابل انجام نیستند.
مدل چندوجهیR. Allen and K. Kennedy. Optimizing Compilers for Modern Architectures. Morgan Kaufmann, 2002. گسترهٔ وسیعتری از کدها و تبدیل‌ها را درمقایسه با چهارچوب تک پیمانه‌ای پوشش می‌دهد. در این چهارچوب مجموعه اجراهای یک دسته از دستورها داخل حلقه‌های تودرتوی معیوب به صورت اجتماعی از چندوجهی‌هایی مدل می‌شود که اجرای دستورها را نشان می‌دهند. در ادامه تبدیل‌های آفین، روی این چندوجهی‌ها اعمال می‌شود و توصیفی از ترتیب اجرای جدید بدست می‌آید. مرزهای چندوجهی‌ها، وابستگی‌های داده‌ای و تبدیل‌ها معمولاً توسط تعدادی شرط بیان می‌شوند و از این رو این چهارچوب را مبتنی بر شرط می‌نامند. برای مثال یک دستور در حلقهٔ تودرتو با حلقهٔ بیرونی " و حلقهٔ داخلی " را درنظر بگیرید که به ازای هر جفت formula_3 که formula_6 و formula_7 اجرا شود.
مجدداً تکرارمی‌شود که یک تبدیل زمانی به‌جا است که دنبالهٔ زمانی وابستگی‌ها را حفظ کند. همچنین تخمین بهره‌وری یک تبدیل یا یافتن بهترین تبدیل برای یک مجموعه کد روی یک کامپیوترکماکان موضوع پژوهش‌های امروزه است (زمان نوشتار متن ۲۰۱۰).
در گراف های جهت دار، زمانی می‌گوییم گره formula_1 بر گره formula_2 غلبه می‌کند که به ازای هر گره formula_3 همه مسیر ها از formula_3 به formula_2، از گره formula_1 عبور کند. در نتیجه می‌توان گفت هر گره بر خودش غلبه می‌کند. با توجه به تعریف می‌توان برای هر گره مجموعه‌ای از گره های سلطه گر در نظر گرفت که بر این گره غلبه می‌کنند. همچنین می‌توان برای هر گراف یک درخت سلطه گر تعریف کرد که به ازای هر گره در گراف، اجداد این گره در درخت، گره های سلطه گر بر این گره در گراف هستند.
بنابر تعریف می‌توان برای سلطه گری اکید نتیجه گرفت که نزدیک گره سلطه گر اکید برای هر گره یکتا بوده و یک گره برای آن وجود دارد.
تعریف گره سلطه گر یا غالب برای اولین بار توسط ریس پروسر در مقاله‌ای تحت عنوان کاربردهای ماتریس بولی برای تحلیل نمودارهای جریان ارائه شد. او در این مقاله الگوریتمی برای پیدا کردن گره های سلطه گر ارائه نکرد و صرفاً آن را تعریف کرده. اولین الگوریتم برای این مساله ده سال بعد توسط ادوارد لوری و مدلاک ارائه شد. از کاربرد های آن می‌توان به زمینه های بهینه سازی برنامه، تولید کد، تست مدار اشاره کرد. همچنین در کامپایلر ها از اطلاعات حاصل از سلطه گری گره‌ها استفاده زیادی می‌شود. برای مثال یک کاربرد آن در کامپایلر برای پیدا کردن حلقه ها در بهینه سازی کد به کمک بلوک های پایه است.
با توجه به تعریف برای هر گره formula_3 اگر formula_17 برابر با مجموعه گره‌های سلطه گر بر گره formula_3 در نظر بگیریم آنگاه رابطه زیر را خواهیم داشت.
formula_19در اینجا formula_20 برابر است با مجموعه تمام گره‌هایی که وارد گره formula_3 می‌شوند یعنی یک یال از سمت آنها به formula_3 وجود دارد. همچنین برای گره شروع در گراف داریم
با داشتن این اطلاعات برای پیدا کردن گره‌های سلطه گر هر گره در گراف می‌توان الگوریتم زیر را پیاده سازی کرد.
// n0 : start node
for n in graph - {n0}:
changed = True
while changed:
این الگوریتم در زمان اجرای formula_24 تمام مجموعه های سلطه گر را می‌یابد که می‌توان با استفاده از داده ساختار های خاص زمان اجرا را بهتر کرد. الگوریتم دیگری توسط رابرت تارجان و توماس لینگوار ارائه شده که به وسیله الگوریتم جستجوی اول عمق (الگوریتم dfs) در زمان تقریباً خطی این کار را انجام می‌دهد.
با توجه به تعریف برای گره سلطه گر مرزی می‌توان رابطه های زیر را بدست آورد.
که در اینجا formula_26 همان مجموعه گره‌های سلطه گر مرزی formula_2 است و formula_28 برابر مجموعه گره‌هایی است که formula_2 بر آن‌ها غلبه می‌کند و formula_30 برابر است با formula_31. همچنین برای formula_32 که formula_33 یک مجموعه است داریم formula_34 که اینجا formula_35 برای گره formula_36 برابر است مجموعه تمام گره هایی که از formula_36 به آنها در گراف جهت دار مسیر وجود دارد. با این رابطه ها می‌توان رابطه زیر را بدست آورد.
که در اینجا formula_39 فرزندان formula_2 در درخت سلطه گر اند. formula_41 برابر است با تمام formula_42 که formula_2 بر آنها را به صورت اکید غلبه نمی‌کند. formula_44 زیر مجموعه‌ای از formula_45 است که formula_2 بر آنها به صورت اکید غلبه نمی‌کند. با توجه به این رابطه الگوریتم زیر بدست می‌آید.
def FindDF(v):
بافندهٔ جوانب ابزاری برای زبان‌های جنبه گرا هست که وظیفه دارد های برنامه را در ورودی بگیرد و کد نهایی را با استفاده از آنها تولید کند. بافنده با تلفیق جنبه‌ها و کلاس‌ها، ساختاری جدید به نام کلاس‌های بافته شده تولید می‌کند. استفاده این ابزار در مرحله پیش از کامپایل می‌باشد.
دستورهای داده شده به بافنده‌ها نام دارند. این صوابدیدها با استفاده از ترکیبی از تعریف می‌شوند که تعیین می‌کنند کدام توابع باید توسط کد جنبه‌ها تکمیل شود. شیوهٔ دقیق تکمیل این توابع به خود جوانب برمیگردد. با این کار بافنده‌ها ابزاری ارزشمند برای ارتقای پودمانی هستند.
زبان‌های متعدد وجود دارد که شناخته شده باشند اما انگیزه کافی برای طراحی و ساخت زبان‌های جنبه گرای جدید به علل اقتصادی وجود ندارد. Kiczales (October 2001), p.2 استفاده از تکنولوژی کاملاً متفاوت نیاز به این دارد که شرکت‌ها برنامه نویسان جدید استخدام کنند، زنجیره ابزار های متفاوتی برای توسعه تهیه کنند و همچنین کدهای قبلی خود را رها کنند که همگی خرج‌های زیادی دربردارد.Kiczales (October 2001), p.7
برای حل این معضلات در کنار داشتن برنامه‌نویسی جنبه گرا بافنده‌ها به ما این اجازه را می‌دهند که با اندکی تعمیم مانند از زبان پرکاربردی مانند جاوا استفاده کنیم.Kiczales (October 2001), p.5 بجای طراحی یک زبان کاملاً جدید، بافنده پسوندهای تعریف شده توسط AspectJ را تفسیر می‌کند و کد جاوا را «می بافد» تا بتواند توسط هر جاوا کامپایلری استفاده شود. این تضمین می‌کند که هر کد شی گرا موجود، یک کد معتبر جنبه گرا نیز باشد و توسعه مانند روال عادی توسعه شیء گرا انجام شود.Kiczales (June 2001), p.3 مثالی دیگر از اینگونه تعمیمات زبان است که تعمیمی جنبه گرا برای زبان ++C می‌باشد.Spinczyk (2002), p.1
همانطور که گفته شد، کار بافنده این است که با گرفتن دستورالعمل‌هایی از جنبه برنامه (همان صوابدید)، به صورت خودکار این دستورالعمل‌ها را در بین کلاس‌های موجود اعمال کند. در نتیجه کلاس‌هایی خواهیم داشت همنام کلاس‌های اصلی برنامه، اما با کدی متفاوت برای توابع. محل اضافه شدن این دستورالعمل‌ها توسط صوابدید تعیین می‌شود.Wand (2004), p.1
در طی این عملیات بافنده‌ها اجازه اضافه‌شدن کدهایی را به برنامه می‌دهند که در غیر اینصورت به صورت اضافی در برنامه قرار می‌گرفتند. در نتیجه دیگر نیازی به دخالت برنامه‌نویس در پخش این کدها نیست.
در کد AspectJ زیر، نقاط پیوست و کد کلاس شده جنبه، در قالبی شبیه کلاس جاوا پیاده شده‌اند. وظیفه بافنده این است که تنها یک کلاس در انتها تولید کند که جنبه تعریف شده را در خود اعمال کرده باشد.
مثال زده شده، قصد لاگ اندازی ورود به توابع را دارد. بدون وجود بافنده، برنامه‌نویس باید به صورت دستی تمام این لاگ‌ها را در توابع مورد نیاز قرار می‌داد، که مشخصا در یک برنامه‌ی واقعی امری به مراتب زمانگیر و کلافه‌کننده است. در هر تابع، با توجه به صوابدید کدی مختص آن تابع تولید می‌شود.
برای افزایش کارایی کد، می‌توان آن را مستقیماً تبدیل به bytecode کرد، در واقع بافنده در نقش کامپایلر نیز عمل می‌کند. اما کار بافنده در این حالت پیچیده‌تر و زمانگیرتر می‌شود طبق انتظار.
aspect Logging {
public class C {
کد AspectJ بالا تبدیل به کد جاوای پایین می‌شود:
عملکرد زمان کامپایل با استفاده بافنده‌ها به دلیل کار اضافی لازم برای پیدا کردن توابع مطابق با نقاط پیوست، به طور کلی از کامپایلر های سنتی معادل آنها بدتر است. یک مطالعه نشان داد که کامپایلر ajc که برای زبان AspectJ هست، حدود ۳۴٪ کندتر از کامپایلر Java 1.3 و حدود ۶۲٪ کندتر از کامپایلر جاوا ۱.۴ است. Hilsdale (2004), p.7
گریندر د دوئال، شاعر و گردآورنده سه منظومه تاریخی «"منظومه انطاکیه"»، «"منظومه اورشلیم"» یا «فتح اورشلیم» و «"منظومه ناچیزان [اسیران مسیحی]"» است. از شرح حال وی اطلاع چندانی در دسترس نیست جز آن که وی در قرن ۱۲ میلادی و همزمان با لوئی هفتم، پادشاه فرانسه، زندگی می‌کرده و این سه منظومه بدو منسوب هستند. در واقع گریندر، اطلاعات بسیاری را از برخی وقایع‌نامه‌های جنگ صلیبی همچون "گشتا فرانکاروم" اقتباس نمود و در ویرایش. تدوین سه منظومهٔ مزبور به کار برد. همچنین، وی برخی از این اشعار حماسی را که به شکل شفاهی بر زبان مردم جاری بود، جمع‌آوری و مکتوب کرد و آنها را بازنگری نمود و به صورت متونی مدون درآورد که امروزه به "نخستین سیکل جنگ‌های صلیبی" معروف هستند. این سه اثر، شرح منظوم اعمال نخستین لشکرکشی صلیبیون به شرق هستند که عمدتاً با استفاده از اطلاعات و مشاهدات عینی سربازان صلیبی بازگشته به اروپا سروده شده‌اند.
گرامر صفت یک روش رسمی برای تعریف صفات متغیرها یا غیر پایانه‌های موجود در قواعد تولید یک دستور زبان رسمی می‌باشد، این صفات دامنه مقادیر غیر پایانه‌های قواعد تولید را تعیین می‌کنند. تعیین مقدار صفت در گره‌های درخت نحو تجزیه، هنگامی که زبان توسط برخی از تحلیلگرهای نحوی یا کامپایلر پردازش می‌شود، صورت می‌گیرد. این صفات دامنه مقادیر غیر پایانه‌های قواعد تولید را تعیین می‌کنند.
بر اساس اینکه گره‌ها در درخت نحو از چه روشی برای گرفتن مقادیر خود استفاده می‌کنند، صفات به دو گروه ترکیبی و موروثی تقسیم می‌شوند. صفت‌های ترکیبی مقادیر خود را از مقدار صفات گره‌های فرزند خود می‌گیرند، در حالیکه صفت‌های موروثی مقادیر خود را از گره‌های والد یا گره‌های هم نیای خود دریافت می‌کنند.
صفات ترکیبی اطلاعات معنایی را به گره‌های بالایی درخت تجزیه منتقل می‌کنند، در حالی که صفات موروثی به انتقال اطلاعات معنایی به گره‌های پایین و در سراسر آن کمک می‌کنند. به عنوان نمونه، هنگام ساختن یک ابزار ترجمه زبان، مانند کامپایلر، ممکن است برای اختصاص مقادیر معنایی به ساختارهای نحوی از این صفات استفاده شود. همچنین، می‌توان تحلیل معنایی دستور زبان را بررسی و مورد ارزیابی قرار داد. تحلیل معنایی گرامر زبان، قواعدی از زبان را نشان می‌دهد که به‌طور واضح با تعریف نحوی قابل بیان نمی‌باشد.
از گرامر صفت نیز می‌توان به‌طور مستقیم برای ترجمه درخت نحو به کد برای برخی از زبان‌های میانی استفاده کرد.
یکی از نقاط قوت دستور زبان صفت این است که آنها می‌توانند اطلاعات را به روشی کنترل شده و رسمی از هر کجای درخت نحو تجزیه به هر جای دیگر، منتقل کنند.
دستور زبان صفت توسط دونالد نوت (به انگلیسی: Donald Knuth) و پیتر وگنر (به انگلیسی: Pete Wegner) اختراع شده‌است.D. E. Knuth: The genesis of attribute grammars درحالیکه دونالد نوت مفهوم کلی گرامر صفت را مطرح کرده بود، پیتر وگنر مفهوم صفت موروثی را اختراع کرد.
در ادامه یک گرامر مستقل از متن را مشاهده می‌کنید که زبان حاصل از آن، ضرب و جمع اعداد صحیح را توصیف کند.
دستور زبان صفت زیر را می‌توان برای محاسبه نتیجه عبارتی که در دستور زبان نوشته شده‌است، استفاده کرد. توجه داشته باشید که این گرامر فقط از مقادیر صفات ترکیبی استفاده می‌کند و به همین دلیل به آن گرامر صفت S می‌گویند.
یک صفت ترکیبی از مقادیر صفات گره‌های فرزندانش محاسبه می‌شود. از آنجا که ابتدا باید مقدار صفت گره‌های فرزند محاسبه شود، این فرایند به شکل پایین به بالا است. برای تعریف رسمی یک صفت ترکیبی، فرض کنید:formula_1 تعریف صوری یک دستور زبان باشد، تفسیر هر یک از نمادها به شرح زیر است:
حال یک رشته از نمادهای غیر پایانه یا متغیرها(A) و یک صفت به نام a را در نظر بگیرید، A.a در صورت برقراری هر سه شرط زیر یک صفت ترکیبی است:
صفت موروثی در یک گره درخت تجزیه با استفاده از مقادیر صفت در والدین یا خواهران و برادران بدست می‌آید. صفت‌های موروثی برای بررسی ساختار در یک زبان برنامه‌نویسی که در قالب قواعد تولید بیان شده‌است، مناسب می‌باشند. به عنوان مثال، می‌توانیم از یک صفت موروثی برای بررسی اینکه آیا یک شناسه در سمت چپ یا سمت راست یک رابطه نسبت دادن ظاهر می‌شود استفاده کنیم، تا تصمیم بگیریم که آیا آدرس یا ارزش شناسه لازم است یا خیر. برخلاف صفات ترکیبی، صفات موروثی می‌توانند مقادیر گره‌های والدین یا خواهران و برادران را بگیرند. برای مثال قاعدهٔ تولید زیر را در نظر بگیرید:
در این قاعده، A می‌تواند مقادیر S ,B و C را بدست آورد، B می‌تواند مقادیر S ,A و C را بدست آورد. به همین ترتیب C می‌تواند مقادیر S ,A و B را بگیرد.
در سال ۱۹۲۹ بورس اوراق بهادار نیویورک تنزل کرد. این تنزل، آغاز یک رکود اقتصادی بود که تا انتهای دهه ۱۹۳۰ ادامه داشت. خیلی زود، میلیون‌ها نفر بیکار شدند، بانک‌ها اعتبارات را محدود ساختند و بسیاری از مشاغل تعطیل شد. فاجعه‌ی کم‌وبیش همزمان و همپوشان و هم‌افزا با این بحران، خشکسالی طولانی و داست‌بول بود، که دشت بزرگ آمریکا را به آستانه‌ی نابودی کشاند و بیابان برهوت بزرگی از تگزاس تا داکوتای شمال و جنوبی ایجاد کرد.
رکورد گسترده اقتصادی ایالات متحده در سال های ۱۹۳۵ تا ۱۹۴۳، فرانکلین دی. روزولت، رئیس جمهور آمریکا را ترغیب کرد تا از عملیات عکاسی فدرال حمایت مالی بکند تا دامنه‌ی کامل ویرانگری اقتصادی در ایالات متحده ثبت شود. او امیدوار بود که این تصاویر، حمایت وی از کشاورزان را تقویت نماید. چشمگیرترین نمونه‌ی این اقدامات به سال ۱۹۳۵ یعنی هنگامی که وزارت کشاورزی، روی استرایکر را برای بخش تاریخی اداره‌ی اسکان مجدد استخدام کرد برمی‌گردد. دو سال بعد، این عملیات تحت عنوان اداره حفاظت از مزارع یا FSA شناخته شد (FSA در سال 1942 به اداره‌ی اطلاعات جنگ یا OWI منتقل شد). استرایکر برنامه عکاسی را تا اکتبر ۱۹۴۳ رهبری کرد.
عکاسانی نظیر: واکر ایوانز، دوروتیا لنگ، راسل لی، بن شان، جان واشون، ماریون پست ولکات، کارل میدانز، گوردون پارکس، جان کالیر پسر و جک دلان در این فرایند مشغول به عکاسی مشغول بودند.
علی شریعتی سخنرانی های فراوانی داشته است. بسیاری از سخنرانی هایش ضبط و منتشر شده است.
ریسترتو همان اسپرسو می‌باشد در حجم و اندازه کوچکتر و غلیظ تر مشابه اسپرسو می‌باشد که معنای اسپرسوی کوچک‌شده نیز تعبیر می‌شود. تلخی بیشتر از ویژگی‌های این نوشیدنی می‌باشد. یک فنجان ریسترتو ۲۰ میلی لیتر است. در واقع بزرگ‌ترین تفاوت اسپرسو و ریسترتو در حجم است. به‌طور کلی فرایند زمان عصاره‌گیری و حجم در ریسترتو کوتاه‌تر است.
از نظر حجمی دو فنجان قهوه ریسترتو برابر یک فنجان اسپرسو می باشد .
به عنوان مثال اگر میزان ۲۰ گرم پودر قهوه را درون پرتافیلتر دستگاه اسپرسو ساز بریزیم و عصاره گیری کنیم ؛ اگر ۲۰ گرم عصاره بگیریم ، ریسرتو به دست می آید ، اگر ۴۰ گرم عصاره بگیریم ، اسپرسو به دست می آید و اگر ۶۰ گرم عصاره بگیریم ، لانگو به دست می آید .
پروتئین ۸ تثبیت‌کننده (قلاب‌کننده) کیناز آ () یک آنزیم است که در انسان توسط ژن «AKAP8» کُدگذاری می‌شود.
این مولکول به بخش تنظیمی پروتئین کیناز آ می‌چسبد و آنرا وادار می‌کند تا در نواحی مجزایی از درون سلول باقی بماند. این پروتئین در مرحله اینترفاز در درون هسته سلول است و هنگام انجام میتوز به نقاط مشخصی منتقل می‌شود.
این مولکول با MYCBP، تعامل پروتئین-پروتئین دارد.
لانگو یک نوع از انواع اسپرسو می‌باشد که نوشیدنی برخلاف ریسترتو و به میزان بیشتر نسبت به اسپرسو دارای عصاره‌گیری بیشتر و کافئین بیشتر در نتیجه حجم بیشتر می‌باشد.
پروتئین متصل‌شونده به C-myc () یک پروتئین است که در انسان توسط ژن «"MYCBP"» کُدگذاری می‌شود.
این پروتئین به ریشه آمینی C-myc متصل می‌شود و رونویسی ژنتیکی وابسته به E box را در آن تحریک می‌کند.
زنجیره استفاده-تعریف یک ساختمان داده است که متشکل از استفاده یک متغیر و همه‌ی تعریف‌هایی از آن متغیر است که می‌تواند به آن استفاده بدون مداخله تعریف دیگری برسد. به طور کلی زنجیره استفاده-تعریف به معنی انتساب چند مقدار به یک متغیر است.
همتای زنجیره استفاده-تعریف ، زنجیره‌ی تعریف-استفاده است که تشکیل شده‌است از یک تعریف یک متغیر و همه‌ی استفاده‌های آن که قابل دسترسی از آن استفاده بدون مداخله تعریف دیگری است.
هر دوی زنجیره‌ی استفاده-تعریف و زنجیره‌ی تعریف-استفاده از یک فرم آنالیز ایستای برنامه به نام آنالیز جریان داده تشکیل شده‌اند. دانستن زنجیره‌های استفاده-تعریف و تعریف-استفاده برای یک برنامه یا زیربرنامه یک پیش‌نیاز برای چند بهینه‌سازی کامپایلر از جمله درهم کردن ثابت و حذف عبارت‌های مشترک است.
درست کردن زنجیره‌ی استفاده-تعریف یا تعریف-استفاده یک گام برای تحلیل متغیر زنده است، که باعث می‌شود نمایش منطقی همه‌ی متغیرها شناخته‌شود و در کد ردیابی شود.
تکه کد زیر را در نظر بگیرید:
که همانطور که در کد مشخص است متغیر x سه بار مقداردهی شده‌است.(در نقاط A, B, C) با این که در نقطه‌ای که با "1" مشخص شده‌است زنجیره‌ی استفاده-تعریف برای x باید مشخص کند که مقدار حاضر این متغیر باید از خط B بیاید (و مقدار x در خط B باید از خط A بیاید) اما در نقطه‌ای که با "2" مشخص شده‌است زنجیره‌ی استفاده-تعریف برای x نشان می‌دهد که مقدار حال حاضر این متغیر از C آمده‌است. به دلیل این که مقدار متغیر x در بلاک 2 به هیچ تعریفی از بلاک 1(یا قبل‌تر از آن) بستگی ندارد x ممکن است در آن‌جا متغیری دیگر باشد. در عمل می‌توان گفت یک متغیر دیگر است که ما آن را x2 می‌نامیم.
فرایند تقسیم x به دو متغیر جدا را تقسیم دامنه‌ی زنده می‌نامند. همچنین فرم تخصیص ایستای منفرد را نیز ببینید.
لیست گزاره‌ها ترتیب مشخصی از گزاره‌ها ارائه می‌دهد.