payamvha/North_RAG huggingface dataset:
زبان‌های مدرن به‌طور کلی از واژه‌های رزرو شده به جای قطع کردن (stropping) برای تمایز کلمات کلیدی از شناسه‌ها به عنوان کلمات کلیدی استفاده می‌کنند. این برجسته‌ترین قسمت در زبان C است، در جایی که شناسه‌ها از شناسه‌هایی که از زیرخط (underscore) شروع می‌شوند جداست، اگرچه جزئیات دقیق شناسه در یک دامنه محفوظ است. به‌طور مشابه در ++C هر شناسه ای که حاوی دو زیرخط باشد برای هرگونه استفاده محفوظ است، در حالی که شناسه‌ای که با تأکید زیر شروع می‌شود در فضای جهانی محفوظ است؛ بنابراین می‌توان با استفاده از کلمه رزرو شده
است؛ بنابراین می‌توان با استفاده از کلمه رزرو شده codice_20کلمه کلیدی جدید codice_21 را اضافه کرد. در حالی که این از نظر سطحی شبیه به قطع کردن (stropping) است، معنی‌شناسی متفاوتی دارند. به عنوان یک کلمه محفوظ، رشته codice_20 شناسه codice_20 را در فضای نام شناسه مشترک نشان می‌دهد. در قطع کردن(Stropping) (با پیشوند کلمات کلیدی توسط codice_24)، رشته codice_20 کلمه کلیدی codice_21 را در یک نام جداگانه برای کلید واژه‌ها نشان می‌دهد؛ بنابراین با استفاده از کلمات رزرو شده، علائم 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 بر می‌گردد. Lam نشان داد که نیازی به سخت‌افزار مخصوص برای استفاده کارآمد از زمان‌بندی ماژول نیست. روش استفاده شده توسط او به نام "توسعه‌ی متغیر
روش استفاده شده توسط او به نام "توسعه‌ی متغیر ماژول" (به انگلیسی:modulo variable expansion) به طور گسترده در عمل استفاده می‌شود. .Gao et al خط لوله‌ی بهینه برای برنامه نویسی خطی عدد صحیح را فرمول بندی کرد. علاوه بر الگوریتم‌های زمان‌بندی ماژول، الگوریتم‌های دیگری نیز برای برآورده کردن خط لوله‌ی نرم‌افزاری وجوددارند که از بین آن‌ها می‌توان به الگورتیم‌های شناخت هسته (به انگلیسی:kernel recognition) اشاره کرد.این مقاله به مقایسه این دو الگورتیم پیاده سازی خط لوله‌ی نرم‌افزاری پرداخته است. مثال. حلقه‌ی زیر را
نرم‌افزاری پرداخته است. مثال. حلقه‌ی زیر را در نظر بگیرید: for i = ۱ to عدد بزرگ A(i) B(i) C(i) end در این مثال، codice_1 ،codice_2 ،codice_3 دستورهایی هستند وابسته به متغیر i و به یکدیگر نیز وابسته‌اند. این به این معنی است که اجرای دستور codice_3 باید قبل از اجرای دستور codice_2 به پایان رسیده باشد. به طور مثال، دستور codice_6 می‌تواند در داده‌ای را از حافظه‌ی اصلی بر ثباتی بنویسد و دستور codice_7 عملیاتی بر روی آن ثبات انجام دهد و دستور codice_8 می‌تواند مقدار آن ثبات را در خانه‌ای از حافظه‌ی اصلی ذخیره
مقدار آن ثبات را در خانه‌ای از حافظه‌ی اصلی ذخیره کند. اما دستورهایی که مقدار متغیر codice_9 در آن‌ها متفاوت است از یکدیگر مستقل‌اند. به عبارتی دیگر، دستور codice_10 می‌تواند قبل از دستور codice_11 اجرا شود. بدون استفاده از خط لوله‌ی نرم‌افزاری، ترتیب اجرای دستورها به صورت زیر است: codice_12 فرض کنید که هر دستور در ۳ چرخه ساعت اجرا می‌شود(فعلاً از هزنیه‌ی نگه‌داری و اجرای حلقه صرف نظر کنید). همچنین در نظر بگیرید که مانند بسیاری از سیستم‌های نوین، یک دستور می‌تواند در هر چرخه ساعت شروع به اجرا کند به شرطی
می‌تواند در هر چرخه ساعت شروع به اجرا کند به شرطی که از دستورهایی که که اکنون در حال اجرا هستند، مستقل باشد. در مثالی که در آن از خط لوله استفاده نشده است، هر تکرار حلقه ۹ چرخه ساعت برای تکمیل شدن زمان می‌برد: ۳ چرخه ساعت برای هر کدام از دستورهای codice_1 ،codice_2 ،codice_3. حال ترتیب اجرای دستورهای زیر را با خط لوله‌ی نرم‌افزاری در نظر بگیرید: codice_16 به سادگی می‌توان نشان داد که یک دستور می‌تواند در هر چرخه ساعت اجرای خود را آغاز کند، که این به این معنا است که ۳ تکرار حلقه‌ی اولیه می‌تواند در ۹ چرخه
است که ۳ تکرار حلقه‌ی اولیه می‌تواند در ۹ چرخه ساعت به پایان برسد. در نتیجه، هر بار تکرار حلقه‌ی اولیه به طور میانگین ۳ چرخه ساعت زمان می‌برد. پیاده سازی. خط لوله‌ی نرم‌افزاری معمولاً در ترکیب با بازکردن حلقه استفاده می‌شود. این ترکیب روش‌ها معولاً بسیار بهینه‌تر از استفاده از روش بازکردن حلقه به تنهایی است. در مثال بالا، ما می‌توانیم قطعه کد بالا را به صورت زیر بنویسیم(فرض کنید که codice_17 بر ۳ بخش‌پذیر باشد): for i = ۱ to (عدد بزرگ - ۲) step ۳ A(i) A(i+۱) A(i+۲) B(i) B(i+۱) B(i+۲) C(i) C(i+۱) C(i+۲) end
A(i+۲) B(i) B(i+۱) B(i+۲) C(i) C(i+۱) C(i+۲) end در صورتی که تعداد تکرارهای حلقه بخش‍پذیر بر ۳ نباشند مسئله کمی پیچیده تر می‌شود. می‌توانید برای اطلاع از راه حل‌های این مشکل به صحفه‌ی بازکردن حلقه مراجعه کنید. در حالت کلی، بازکردن حلقه لزوماً بهترین روش برای پیاده‌سازی خط لوله‌ی نرم‌افزاری نیست. به طور مثال اگر حلقه شامل دستوری با تاخیر زیاد باشد استفاده از بازکردن حلقه بهینه نمی‌شود. قطعه کد پایین را در نظر بگیرید: for i = ۱ to عدد بزرگ A(i) ; ۳ میزان تاخیر B(i) ; ۳ C(i) ; ۱۲ (مثلاً یک دستور میمز شناور)
B(i) ; ۳ C(i) ; ۱۲ (مثلاً یک دستور میمز شناور) D(i) ; ۳ E(i) ; ۳ F(i) ; ۳ end که این به این معنی است که حلقه باید ۱۲ بار باز شود تا از گلوگاه دستور codice_8 جلوگیری شود. که این موجب می‌شود تا حجم کد حلقه با ضریب ۱۲ افزایش یابد. وضعیت بدتر هنگامی پیش می‌آید که مقدمه ( قطعه کدی که در حالتی که codice_17 بر ۱۲ بخش‌پذیر نباشد قبل از حلقه قرار می‌گیرد) حجم بیشتری از کد حلقه داشته باشد و با احتمال زیاد بهینه نباشد زیرا خط لوله‌ی نرم‌افزاری نمی‌تواند برای این قطعه کد استفاده شود. علاوه بر این، اگر اندازه‌ی
قطعه کد استفاده شود. علاوه بر این، اگر اندازه‌ی codice_17 نزدیک به تعداد بارهای بازشدن حلقه باشد، در هنگام اجرا، اکثر زمان صرف اجرای مقدمه‌ی ناکارآمد می‌شود که این باعث ناکارآمدی بهینه‌سازی از طریق خط لوله‌ی نرم‌افزاری می‌شود. حال اگر بخواهیم بدون استفاده از بازکردن حلقه از خط لوله‌ی نرم‌افزاری استفاده کنیم، قطعه کد زیر را برای مثال خود بدست می‌آوریم(در ادامه به توضیح مقدمه و خاتمه می‌پردازیم): مقدمه for i = ۱ to (عدد بزرگ - ۶) A(i+۶) B(i+۵) C(i+۴) D(i+۲) ; را رد کرده‌ایم i+۳ توجه کنید که E(i+۱) F(i) end
; را رد کرده‌ایم i+۳ توجه کنید که E(i+۱) F(i) end خاتمه قبل از اینکه به توضیح مقدمه و خاتمه بپردازیم، که شامل دستورهایی می‌شوند که در حلقه اجرا نمی‌شوند، از درستی قطعه کد داخل حلقه اطمینان حاصل می‌کنیم. به طور خاص تکرار هفتم حلقه‌ی اصلی را در نظر بگیرید. حلقه‌ی اول حلقه‌ی خط لوله‌ای اولین تکراری است شامل دستوری از تکرار هفتم حلقه‌ی اصلی است. ترتیب اجرای دستورها به صورت زیر است: همانطور که مشاهده می‌کنید برخلاف حلقه‌ی اصلی، در اجرای حلقه‌ی خط لوله‌ای مشکل گلوگاه دستور codice_8 رفع شده است. توجه کنید که 12
دستور codice_8 رفع شده است. توجه کنید که 12 دستور بین دستور codice_22 و دستور codice_23 وابسته به آن وجود دارد که این موجب می‌شود که بتوان در چرخه ساعت‌هایی که دستور codice_22 در حال اجرا است، بقیه دستورها را اجرا کرد. مقدمه و خاتمه ،در شروع و پایان حلقه، مسئول اجرای دستورهایی هستند که در حلقه اجرا نشده‌اند. قطعه کد زیر مقدمه‌ای برای مثال بالای ما را نشان می‌دهد: ; مقدمه‌ی حلقه (برای وضوح بیشتر دستورهایی که همزمان اجرا می‌شوند در یک خط آمده‌اند) A(۱) A(۲), B(۱) A(۳), B(۲), C(۱) A(۴), B(۳), C(۲) ; را شروع
B(۱) A(۳), B(۲), C(۱) A(۴), B(۳), C(۲) ; را شروع کرد C(۱) نمیتوان D(۱) به دلیل پایان نیافتن A(۵), B(۴), C(۳), D(۱) A(۶), B(۵), C(۴), D(۲), E(۱) هر خط از قطعه کد بالا نشان دهنده‌ی یک تکرار از حلقه‌ی خط لوله‌ای اصلی است، که دستورهایی که هنوز شروع نشده‌اند را شامل نمی‌شود. به طریق مشابه، خاتمه به تدریج دستورهایی که تکرار آن‌ها به پایان رسیده‌است را حذف می‌کند. قطعه کد زیر نشان دهنده‌ی خاتمه است: ; خاتمه‌ی حلقه (برای وضوح بیشتر دستورهایی که همزمان اجرا می‌شوند در یک خط آمده‌اند) B(bignumber), C(bignumber-۱),
در یک خط آمده‌اند) B(bignumber), C(bignumber-۱), D(bignumber-۳), E(bignumber-۴), F(bignumber-۵) C(bignumber), D(bignumber-۲), E(bignumber-۳), F(bignumber-۴) D(bignumber-۱), E(bignumber-۲), F(bignumber-۳) D(bignumber), E(bignumber-۱), F(bignumber-۲) E(bignumber), F(bignumber-۱) F(bignumber) اما همیشه پیدا کردن مقدمه و خاتمه مناسب ساده نیست. در مثالی که در بالا آورده شده است ۱۸ دستور برای مقدمه و ۱۸ دستور برای خاتمه استفاده شده‌است. این به این معنی است که مقدمه و پایان 6 برابر تعداد دستورات داخل حلقه دستور
و پایان 6 برابر تعداد دستورات داخل حلقه دستور دارند. این صفحه به خوبی مشکلات به وجود آمده و روشی برای رفع کردن آن‌ها ارائه کرده است.
این مقاله شامل فهرستی از نام نمایندگان تهران در مجلس شورای ملی ایران از زمان تشکیل تا انحلال این مجلس است. دورهٔ اول. نمایندگان: دورهٔ دوم. نمایندگان: دورهٔ سوم. نمایندگان: دورهٔ چهارم. از ۱۱۸۰۳ رای ماخوذه: دورهٔ پنجم. نمایندگان: دورهٔ ششم. از ۲۰۴۲۶ رای ماخوذه: دورهٔ هفتم. از ۵۱۷۷۶ رای ماخوذه: دورهٔ هشتم. از ۴۰۵۵۱ رای ماخوذه: دورهٔ نهم. از ۶۲۱۷۴ رای ماخوذه: دورهٔ دهم. نمایندگان: دورهٔ یازدهم. نمایندگان: دورهٔ دوازدهم. از ۷۵۴۶۳ رای ماخوذه: دورهٔ سیزدهم. از ۸۶۸۳۸ رای ماخوذه: دورهٔ چهاردهم. نمایندگان: دورهٔ
۸۶۸۳۸ رای ماخوذه: دورهٔ چهاردهم. نمایندگان: دورهٔ پانزدهم. از ۷۷۲۳۶ رای ماخوذه: دورهٔ شانزدهم. از ۵۲۷۲۷ رای ماخوذه: دورهٔ هفدهم. از ۱۴۲۹۰۱ رای ماخوذه: دورهٔ هجدهم. از ۸۶۵۱۴ رای ماخوذه: دورهٔ نوزدهم. از ۸۷۴۲۳ رای ماخوذه: دورهٔ بیستم. از ۶۵۴۵۱ رای ماخوذه: دورهٔ بیست و یکم. از ۲۷۱۳۲۰ رای ماخوذه: دورهٔ بیست و دوم. از ۲۷۵۱۸۴ رای ماخوذه: دورهٔ بیست و سوم. از ۵۳۷۰۹۱ رای ماخوذه: دورهٔ بیست و چهارم. از ۷۲۰۸۸۲ رای ماخوذه:
گرامرهای عبارت قطعی روشی است برای توضیح گرامر زبان‌های رسمی و طبیعی، که در برنامه‌نویسی منطقی مورد استفاده قرار می‌گیرد. این مفهوم بسیار به مفاهیم گرامرهای صفتی و گرامرهای مضافی مرتبط است که هر دو توسط زبان Prolog توسعه پیدا کرده‌اند. این گرامرها معمولاً در کنار زبان مطرح می‌شوند اما زبان‌های شبیه به آن هم مانند مرکوری (Mercury) شامل "DCG"ها هستند. این طرز نشان دادن، گرامرها را به صورت مجموعه ای از عبارات قطعی از منطق مرتبه اول ارائه می‌دهد و به همین دلیل است که به آن گرامر عبارت قطعی گویند. کلمه در زبان
است که به آن گرامر عبارت قطعی گویند. کلمه در زبان Prolog و دیگر زبان‌های مشابه اصطلاح خاصی است؛ به این معنی که همیشه نشان دادن گرامرها با بندهای قطعی، DCG نیست. اما همه این گرامرهایی که با بندهای قطعی بیان شده‌اند قابلیت‌های DCG را دارا هستند. بندهای قطعی DCG را می‌توان مجموعه ای از جملات بدیهی در نظر گرفت که می‌توان بر اساس آن‌ها معتبر بودن یک جمله را در گرامر مورد نظر بررسی کرد. به عبارت دیگر این مجموعه جملات بدیهی کمک خواهند کرد که تشخیص دهیم آیا می‌توان برای ورودی یک درخت پارس (Pars tree) یکتا ساخت یا
برای ورودی یک درخت پارس (Pars tree) یکتا ساخت یا خیر. استفاده از این روش تشخیص عضویت ورودی به زبان و تشکیل درخت پارس آن را به یک مسئله ساده قابل حل تبدیل می‌کند. تاریخچه. تاریخچه DCGها به تاریخچه زبان برنامه‌نویسی Prolog گره خورده‌است. تاریخچه Prolog نیز به تحقیقات و پژوهش‌های مختلفی برمی‌گردد که مرکزیت آن‌ها به دو شهر مارسی فرانسه و ادینبرو اسکاتلند برمی‌گردد. بر اساس نقل قولی از رابرت کوالسکی که یکی از برنامه نویسان قدیمی زبان Prolog است، اولین ورژن از Prolog در سال ۱۹۷۲ توسط آلاین کلمراویر و فیلیپ راسل
در سال ۱۹۷۲ توسط آلاین کلمراویر و فیلیپ راسل ارائه شد. اولین برنامه ای که با این زبان برنامه‌نویسی نوشته شد، یک سیستم پردازش زبان طبیعی بزرگ بود. فرناندو پریرا و دیوید وارن از دانشگاه ادینبرو هم در توسعه نسخه‌های اولیه Prolog نقش مؤثری داشتند. کلمراویر پیش تر بر روی یک سیستم پردازش زبان به نام سیستم Q کار کرده بود که برای ترجمه متون بین زبان‌های فرانسوی و انگلیسی استفاده می‌شد. درسال ۱۹۷۸ کلمراویر مقاله ای در رابطه با روشی برای بیان کردن گرامرها نوشت و در آن مثال‌هایی از برنامه‌هایی که از آن‌ها استفاده
آن مثال‌هایی از برنامه‌هایی که از آن‌ها استفاده می‌کردند آورد. او نام گرامرهای متامورفوسیس را برای این دسته از گرامرها قرار داد. این گرامرها قسمتی از نسخهٔ مارسی Prolog بودند. پریرا و وارن از توسعه دهندگان Prolog که قبل‌تر معرفی شدند برای اولین بار گرامر عبارت-قطعی را مطرح کردند و پایه‌گذار عبارت DCG در Prolog بودند. آن‌ها در ادامه ایده گرامرهای متامورفوسیس، گرامرهای عبارت-قطعی را به عنوان زیرمجموعه‌ای از گرامرهای متامورفوسیس معرفی کردند. این ایده در مقاله‌ای تحت عنوان «گرامرهای عبارت-قطعی برای تحلیل زبان
تحت عنوان «گرامرهای عبارت-قطعی برای تحلیل زبان ها» منتشر شد و در آن بیان شد که DCGها شکل فرمول گونه گرامرها هستند به طوری که گرامر توسط عبارت‌های قطعی منطق مرتبه اول بیان می‌شود. توسعه‌دهندگان Prolog در ادامه دربارهٔ ابعاد مختلف DCGها در مقاله‌های مختلفی نوشتند. مثال‌ها. مثال زیر نمونه ای ساده از قسمتی از گرامر زبان انگلیسی است که در آن یک جمله از دو عبارت اسمی و فعلی تشکیل شده‌است که عبارت اسمی می‌تواند از ترکیب یک حرف اضافه و اسم تشکیل شود و عبارت فعلی از ترکیب یک فعل و یک عبارت اسمی ساخته می‌شود. این
از ترکیب یک فعل و یک عبارت اسمی ساخته می‌شود. این گرامر به روش DCG به صورت زیر نمایش داده می‌شود. sentence --&gt; noun_phrase, verb_phrase. noun_phrase --&gt; det, noun. verb_phrase --&gt; verb, noun_phrase. det --&gt; [the]. det --&gt; [a]. noun --&gt; [cat]. noun --&gt; [bat]. verb --&gt; [eats]. جملات “the cat eats the bat” و “a bat eats the cat” مثال‌هایی هستند که با گرامر تعریف شده می‌توان ساخت. برای ساختن تمام جملات حاصل از این گرامر می‌توان از دستور زیر درمفسر Prolog استفاده نمود. برای تشخیص این که
زیر درمفسر Prolog استفاده نمود. برای تشخیص این که جمله‌ای متعلق به این زبان هست یا خیر هم می‌توان از دستور خاصی استفاده کرد که در زیر آمده‌است (در صورتی که جمله مورد بررسی the bat eats the bat باشد). sentence(X,[]) sentence([the,bat,eats,the,bat],[]) ترجمه به عبارت‌های قطعی. در واقع استفاده از DCG برای بهتر نشان دادن عبارات قطعی ساده در Prolog است. مثال قبل به صورت عملی در Prolog به وسیله DCG به فرم زیر نوشته می‌شود: sentence(A,Z) :- noun_phrase(A,B), verb_phrase(B,Z). noun_phrase(A,Z) :- det(A,B),
verb_phrase(B,Z). noun_phrase(A,Z) :- det(A,B), noun(B,Z). verb_phrase(A,Z) :- verb(A,B), noun_phrase(B,Z). det([the|X], X). det([a|X], X). noun([cat|X], X). noun([bat|X], X). verb([eats|X], X). لیست‌های تفاوت. به ورودی‌های هر تابع در بالا (مثل (A,B)) لیست‌های تفاوت گویند. لیست‌های تفاوت روشی برای نشان دادن پیشوند یک لیست (یا یک رشته) هستند که این کار را به وسیله تفاوت بین پسوند دو ورودی انجام می‌دهد. به‌طور مثال در نمونه زیر یک لیست پیشوندی تکی، به صورت لیست‌های تفاوت نوشته شده‌است. P = [H] ---&gt; [H|X]
تفاوت نوشته شده‌است. P = [H] ---&gt; [H|X] and X گرامرهای وابسته به متن. در Prolog، در واقع DCGهای عادی پارامتر دیگری برای توابع درنظر نمی‌گیرد (همان‌طور که در بالا اشاره شد). به همین دلیل تنها می‌تواند برای استفاده در گرامرهای مستقل از متن به کار گرفته شود. با به کار گرفتن متغیرهای ورودی بیشتر، می‌توان DCGها را برای گرامرهای وابسته به متن نیز به کار برد. مثال زیر همین کاربرد را نشان می‌دهد: s --&gt; a(N), b(N), c(N). a(0) --&gt; []. a(M) --&gt; [a], a(N), {M is N + 1}. b(0) --&gt; []. b(M) --&gt; [b],
{M is N + 1}. b(0) --&gt; []. b(M) --&gt; [b], b(N), {M is N + 1}. c(0) --&gt; []. c(M) --&gt; [c], c(N), {M is N + 1}. عبارات بالا در واقع یک DCG برای گرامر زبانی است که رشته روبرو را تولید می‌کند؛ formula_1. نمایش محدودیت زبان‌ها. قابلیت‌ها و محدودیت‌های زبانی مختلف می‌توانند توسط DCGها نمایش داده شوند. در برخی موارد لازم است برای رسیدن به این مسئله پارامترهای ورودی توابع را افزایش دهیم. sentence --&gt; pronoun(subject), verb_phrase. verb_phrase --&gt; verb, pronoun(object). pronoun(subject) --&gt; [he].
pronoun(object). pronoun(subject) --&gt; [he]. pronoun(subject) --&gt; [she]. pronoun(object) --&gt; [him]. pronoun(object) --&gt; [her]. verb --&gt; [likes]. در مثال بالا گرامری دیده می‌شود که بر روی جملاتش محدودیت‌هایی دارد. مثلاً "he likes her“ و "he likes him“ مورد قبول هستند ولی "her likes he“ و "him likes him“ پذیرفته نیستند.
انگشت مورتون () نام یکی از الگوهای ناحیه جلوی پا است که در آن انگشت دوم از انگشت شست پا (هالوکس) بلندتر است. انگشت مورتون منجر به فشار اضافی بر روی سر دومین استخوان کف پا (پشت انگشت دوم در ناحیه بال پا) شده و دردی شبیه درد کف پا (Metatarsalgia) ایجاد می‌کند. فشار دائمی در حال راه رفتن و ایستادن بر روی این انگشت بلندتر قرار می‌گیرد و می‌تواند منجر به تشکیل پینه در زیر سر دومین استخوان کف پا شود.
منظومه انطاکیه که با عنوان شانْسون دِ آنْتیوش () شناخته می‌شود، مشتمل بر ۹ هزار بیت به‌صورت الکساندرین، منظومه اشعاری حماسی به‌زبان فرانسه است که در رابطه با نخستین جنگ صلیبی است که اطلاعات تاریخی معتبر و ارزشمندی در رابطه با این حادثه دربردارد. براساس تنها نسخه‌ای که از این منظومه باقی مانده، این اثر در ربع قرن ۱۲ میلادی سروده شده و منسوب به شخصی به نام گریندر د دوئال است. براساس سطر ۹ هزار و چهارده این منظومه، وی مدعی است که منظومه را از شاهدی عینی به نام ریچارد زائر که از جنگجویان لشکر رابرت کنت فلاندرز
ریچارد زائر که از جنگجویان لشکر رابرت کنت فلاندرز بود، به دست آورده‌است. این منظومه با دیگر منظومه‌های این سیکل، یعنی منظومه ناچیزان و منظومه اورشلیم ــ که آثاری شگفت‌انگیز و خیالی هستند ــ متفاوت است. همچنین این منظومه، شامل ۹ یا هزار سطر (بیت) شعر حماسی و مشتمل بر حوادث و رویدادهای مرتبط با نخستین جنگ صلیبی است. پیش‌زمینه تاریخی. نخستین جنگ صلیبی، نخستین جنگ از سری جنگ‌های صلیبی بود که برای بازپس‌گیری سرزمین مقدس روی داد و به‌وسیلهٔ پاپ اوربان دوم در جریان شورای کلرمونت، در سال ۱۰۹۵ م، اعلان شد. پس از
شورای کلرمونت، در سال ۱۰۹۵ م، اعلان شد. پس از آنکه بسیاری از مناطق تحت کنترل بیزانس در آناتولی به دست ترکان سلجوقی تسخیر شد، پاپ درخواست کرد اردویی نظامی برای یاری امپراتوری بیزانس گسیل شود. نتیجهٔ اردوکشیِ اشرافِ بلندپایهٔ فرانسوی — که با نام جنگ صلیبی شاهزادگان شناخته می‌شود — منجر به تسخیر دوبارهٔ آناتولی و حتی سرزمین مقدس (شام) شد که از ابتدای سدهٔ هفتم میلادی و در زمان گسترش اسلام به دست مسلمانان افتاده‌بود. سرزمین مقدس در ژوئیهٔ ۱۰۹۹ م، در جریان بازپس‌گیری اورشلیم به دست صلیبیون افتاد و پادشاهی
بازپس‌گیری اورشلیم به دست صلیبیون افتاد و پادشاهی اورشلیم در آن برپا شد. این اردوکشی در پاسخ به درخواست کمک نظامی از سوی آلکسیوس یکم، امپراتور بیزانس به وقوع پیوست. اوربان، سخنرانی‌اش را در شورای کلرمونت به تصمیم‌گیری در مورد این موضوع خاص اختصاص داد و پیشنهاد محاصرهٔ جنگی شهرهای نیقیه و انطاکیه را مطرح کرد که به تازگی اشغال شده‌بودند؛ اگرچه، طبق اظهارات شاهدان عینی که پس از سال ۱۱۰۰ م به‌نگارش درآمده‌است، پاپ در سخنرانی‌اش در کلرمونت از اورشلیم و سرزمین مقدس به عنوان هدفی فرعی یاد کرده‌بود. جنگ صلیبی
مقدس به عنوان هدفی فرعی یاد کرده‌بود. جنگ صلیبی موفقیت‌آمیز شاهزادگان پس از جنگ صلیبی عوام‌الناس به وقوع پیوست. جنگ صلیبی عوام‌الناس یکی از جنگ‌های صلیبی مشهور به‌شمار می‌رود که به دعوت پیتر راهب در بهار ۱۰۹۶ م شروع شده‌بود. حرکت او علیه ترکان در آناتولی بود، ولی در مسیرش در راینلند به مردم یهودی حمله کرد. او و مردم صلیبی پیروش، سرانجام در ماه اکتبر از ترکان به سختی شکست خوردند. جنگ صلیبی شاهزادگان که در مقایسه از سازماندهی نظامی و جنگی بسیار بهتری برخوردار بود، در اواخر تابستان ۱۰۹۶ م آغاز شد و سپاه آنان
بود، در اواخر تابستان ۱۰۹۶ م آغاز شد و سپاه آنان در میانهٔ نوامبر ۱۰۹۶ تا آوریل ۱۰۹۷ م به قسطنطنیه رسید. آن‌ها به آناتولی یورش برده و نیقیه را در ژوئن ۱۰۹۶ و انطاکیه را در ۱۰۹۷ م تسخیر کردند. صلیبیون در ژوئن ۱۰۹۹ م به اورشلیم رسیدند و در جریان حمله‌ای در ۷ ژوئیهٔ ۱۰۹۹ م، شهر را به کنترل خود درآوردند و مدافعان را قتل‌عام کردند. تلاش کوچک فاطمیان برای بازپس‌گیری اورشلیم، توسط صلیبیون در نبرد اشکلون دفع شد. آن‌ها هم‌زمان با پیروزی‌هایشان، دولت‌هایی لاتین و صلیبی مانند پادشاهی اورشلیم، کنت‌نشین طرابلس،
و صلیبی مانند پادشاهی اورشلیم، کنت‌نشین طرابلس، شاهزاده‌نشین انطاکیه و کنت‌نشین ادسا را پایه‌ریزی کردند که با آرمان‌های مذهب شرقی امپراتوری بیزانس منافات داشت. آنان خواستار بازگردانی سرزمین‌هایی بودند که مسلمانان از آنان گرفته‌بودند، ولی اکنون بیشترشان به دست لاتین‌های کاتولیک افتاده‌بود. پس از تصرف اورشلیم، بیشتر صلیبیون به خانه‌هایشان بازگشتند که باعث شد پادشاهی صلیبی در طول جنگ صلیبی دوم و سوم در مقابل مسلمانان آسیب‌پذیر شود. اشعار حماسی صلیبی. اشعار و نوشته‌های منظوم با مضمون‌های حماسی و رمانتیک
و نوشته‌های منظوم با مضمون‌های حماسی و رمانتیک مردم‌پسند، وقایع مربوط به جنگ‌های صلیبی و حواشی آن را از نگاهی دیگر مورد توجه قرار داده‌اند. در واقع، میراث منظوم برجای مانده از صلیبیون در فرانسه، انگلستان، آلمان، اسکاتلند، اسپانیا، پرتغال و … نیز سهم مهمی در مکتب کلاسیک تاریخ‌نگاری غربی جنگ‌های صلیبی دارند. این آثار افزون بر دربرداشتن اطلاعات تاریخی، اجتماعی و نظامی اروپا و دول صلیبی در اراضی مقدس، بیانگر احساسات تودهٔ مردم همزمان با جنگ‌های صلیبی در اروپا و اراضی مقدس هستند. به بیان دیگر، وقایع مهیج
و اراضی مقدس هستند. به بیان دیگر، وقایع مهیج جنگ‌های صلیبی برای غنی ساختن شعر شاعرانی که عمدتاً زاده غرب بودند، مضمون‌هایی شایسته بودند. از جهتی دیگر، ادبیات دول صلیبی در شرق خود فقط شاخه‌ای از ادبیات فرانسه بود. افزون بر آن، رعایای بومی صلیبیون در سرزمین شام نیز ادبیاتی خاص خود را نداشتند. به علاوه، در یونان و قبرس تحت حکمرانی لاتینی‌ها نیز ادبیات یونانی عامه‌پسندی به وجود آمد که بسیار متأثر از ادبیات فرانسه بود. با آنکه جنگ صلیبی چه در زبان لاتین و چه در لهجه‌های محلی شمالی و جنوب فرانسه الهام‌بخش چند
لهجه‌های محلی شمالی و جنوب فرانسه الهام‌بخش چند شعر حماسی شد، ولی جنبهٔ ادبی این اشعار بر ارزش تاریخی‌شان برتری دارد. اشعار شاعرانی نظیر جفری لمبارد، ژوزف اکستر و گونتر آوبال به لحاظ ادبی قابل ملاحظه‌اند، ولی از نظر تاریخی ارزشی ندارند. نظم پروانسی ترانه انتیویک یا همان "منظومه انطاکیه"، منسوب به گریگوری بچادا، از دیگران جالب‌تر و در خود دقتی بیشتر است. به لهجه مردم شمال فرانسه افزون بر نظم بادری، شعر دیگری در دست است که آن نیز به "منظومه انطاکیه"، اثر گریندر دوئال موسوم است. مؤلف. شاعر و گردآورنده سه
گریندر دوئال موسوم است. مؤلف. شاعر و گردآورنده سه منظومه تاریخی «"منظومه انطاکیه"»، «"منظومه اورشلیم"» یا «فتح اورشلیم» و «"منظومه ناچیزان [اسیران مسیحی]"» است. از شرح حال وی اطلاع چندانی در دسترس نیست جز آن که وی در قرن ۱۲ میلادی و همزمان با لوئی هفتم، پادشاه فرانسه، زندگی می‌کرده و این سه منظومه بدو منسوب هستند. در واقع گریندر، اطلاعات بسیاری را از برخی وقایع‌نامه‌های جنگ صلیبی همچون "گشتا فرانکاروم" اقتباس نمود و در ویرایش. تدوین سه منظومهٔ مزبور به کار برد. همچنین، وی برخی از این اشعار حماسی را که به
برد. همچنین، وی برخی از این اشعار حماسی را که به شکل شفاهی بر زبان مردم جاری بود، جمع‌آوری و مکتوب کرد و آنها را بازنگری نمود و به صورت متونی مدون درآورد که امروزه به "نخستین سیکل جنگ‌های صلیبی" معروف هستند. این سه اثر، شرح منظوم اعمال نخستین لشکرکشی صلیبیون به شرق هستند که عمدتاً با استفاده از اطلاعات و مشاهدات عینی سربازان صلیبی بازگشته به اروپا سروده شده‌اند. ویژگی‌ها. مضمون و محتوا. براساس سطر ۹ هزار و چهارده این منظومه، گریندر مدعی است که منظومه را از شاهدی عینی به نام ریچارد زائر که از جنگجویان لشکر
شاهدی عینی به نام ریچارد زائر که از جنگجویان لشکر رابرت کنت فلاندرز بود، به دست آورده‌است. همچنین این منظومه به‌طور مشخص با دو منظومه دیگر این سیکل، یعنی "منظومه ناچیزان" و "منظومه یا فتح اورشلیم" ــ که آثاری شگفت‌انگیز و خیالی هستند یا داستان‌های هیولاها، آدم‌های خبیث، قهرمان و دوشیزگانی زیبا به پایان می‌رسند ــ متفاوت است. این منظومه، شامل حدود ۹ هزار یا ۱۰ هزار سطر شعر حماسی و مشتمل بر حوادث و رویدادهایی است که در جنگ صلیبی اول به وقوع پیوسته‌اند. این منظومه، پتر زاهد را به عنوان محرک جنگ‌های صلیبی
منظومه، پتر زاهد را به عنوان محرک جنگ‌های صلیبی معرفی می‌کند. سپس نحوه جلب نیروهای صلیبی ــ که در پاسخ به درخواست پاپ بعد از مجمع کلرمون بود ــ و سفر آنها به قسطنطنیه و آسیای صغیر را شرح می‌دهد. بعد از آن چگونگی تسخیر نیقیه و دستیابی بر ادسا ــ که قبل از ورود صلیبیون به انطاکیه رخ داد ــ را بیان می‌کند. در واقع، وقایع و حوادث مزبور در عمق اشعار "منظومه انطاکیه" بیان شده‌اند و با بیان پیروزی مسیحیان در نبرد انطاکیه پر ۱۰۹۸ میلادی، پایان می‌یابد. همچنین در این منظومه به برخی از شخصیت‌های غیرمنتظره شرکت‌کننده