سوال ۱۰۶ کامپیوتر ۹۵ - نسخهی قابل چاپ |
سوال ۱۰۶ کامپیوتر ۹۵ - *ahoo - 24 فروردین ۱۳۹۶ ۰۸:۴۷ ب.ظ
سلام دوستان لطفا این سوال رو راهنمایی کنید چرا میشه گزینه۲؟ |
RE: سوال ۱۰۶ کامپیوتر ۹۵ - arash691 - 24 فروردین ۱۳۹۶ ۰۹:۵۶ ب.ظ
(۲۴ فروردین ۱۳۹۶ ۰۸:۴۷ ب.ظ)*ahoo نوشته شده توسط: سلام دوستان در مورد ۴ ام شرط first/follow نقض شده پس LL(1) نیست ، به گرامر زیر دقت کنید : [tex]S\longrightarrowaAb[/tex] [tex]A\longrightarrowa|B[/tex] [tex]B\longrightarrowb|\lambda[/tex] [tex]\alpha\: =\: B\: \: ,\: \beta\: =\: a\: [/tex] [tex]first(B)\cap first(a)=\varnothing[/tex] [tex]first(a)\cap follow(A)=\{a\}\cap\{b\}=\varnothing[/tex] [tex]first(A)\cap follow(A)=\{a,b\}\cap\{b\}=\{b\}\ne\varnothing[/tex] |
RE: سوال ۱۰۶ کامپیوتر ۹۵ - *ahoo - 25 فروردین ۱۳۹۶ ۰۱:۳۱ ب.ظ
(۲۴ فروردین ۱۳۹۶ ۰۹:۵۶ ب.ظ)arash691 نوشته شده توسط:(24 فروردین ۱۳۹۶ ۰۸:۴۷ ب.ظ)*ahoo نوشته شده توسط: سلام دوستان توی کتاب شاپوری شرط LL1 بودن رو اینجوری نوشته اینجا کهچیزی درمورد first(A) و follow(A) نگفته |
RE: سوال ۱۰۶ کامپیوتر ۹۵ - arash691 - 25 فروردین ۱۳۹۶ ۰۸:۴۱ ب.ظ
(۲۵ فروردین ۱۳۹۶ ۰۱:۳۱ ب.ظ)*ahoo نوشته شده توسط:(24 فروردین ۱۳۹۶ ۰۹:۵۶ ب.ظ)arash691 نوشته شده توسط:(24 فروردین ۱۳۹۶ ۰۸:۴۷ ب.ظ)*ahoo نوشته شده توسط: سلام دوستان اگه دقت کنید تو همون عکسی که فرستادین پایین نوشته اگه تعداد قاعده بیشتر از دوتا باشه باید برای همه قاعده شرط first/follow بررسی بشه تو سوال ما یکبار first/follow و برای یکی از قاعده ها بررسی کردیم ولی در اصل باید برای همه ی قاعده ها درنظر بگیرم چون یکی از انها شرط first/follow و نقض کرده پس LL1 نیست ، شرط first/follow هم مورد دومی هست که تو عکس گفته شده ! |
RE: سوال ۱۰۶ کامپیوتر ۹۵ - msour44 - 26 فروردین ۱۳۹۶ ۰۴:۰۵ ب.ظ
(۲۵ فروردین ۱۳۹۶ ۰۸:۴۱ ب.ظ)arash691 نوشته شده توسط:سلام(25 فروردین ۱۳۹۶ ۰۱:۳۱ ب.ظ)*ahoo نوشته شده توسط:(24 فروردین ۱۳۹۶ ۰۹:۵۶ ب.ظ)arash691 نوشته شده توسط:(24 فروردین ۱۳۹۶ ۰۸:۴۷ ب.ظ)*ahoo نوشته شده توسط: سلام دوستان دوست گرامی جسارتا من هم متوجه توضیحات شما نمیشم در کل برای بررسی برخورد ها ی fi/fi و fi/fo برای متغیر های که بیش از یک قاعده تولید دارند را بررسی می کنیم دقیقا مثل تصویری که گذاشته شده. در اینجا هم برای A داریم [tex]A\longrightarrow\alpha\mid\beta[/tex] یکی بررسی برخورد [tex]first(\alpha)\: [/tex] با [tex]first(\beta)[/tex] و چون از [tex]\alpha[/tex] می توانیم [tex]\lambda[/tex] را مشتق کنیم پس باید برخورد [tex]first(\beta)[/tex] با [tex]follow(A)[/tex] را هم بررسی کنیم.و تمام اینکه مورد چهارم بیان شده در سوال مخالف تهی است دلیلی بر وجود برخورد در گرامر نیست در واقع هر برخورد fi/fo را لازم نیست بررسی کنیم. وبرای بررسی LL بودن باید سایر قواعد را هم بررسی کنیم. اگر غیر این است لطفا توضیح بفرمایید. |
RE: سوال ۱۰۶ کامپیوتر ۹۵ - alireza01 - 26 فروردین ۱۳۹۶ ۰۵:۰۴ ب.ظ
(۲۶ فروردین ۱۳۹۶ ۰۴:۰۵ ب.ظ)msour44 نوشته شده توسط: سلام سلام و وقت بخیر ... دوست گرامی به نظر بنده این گرامر با توجه به این که در شرایط داده شده شرطی با عنوان [tex]First(A)\: \cap\: Follow\: (A)\: \ne\: \phi\: [/tex] داریم قطعا با توجه به سه قاعده دیگر و بدون توجه به سایر قوانین این گرامر تشخیص میدیم که گرامر LL1 نیست ، اما اگر این شرط به طوری بود که [tex]First(A)\: \cap\: Follow\: (A)\: =\: \phi\: [/tex] آنگاه میشد بگیم که تشخیص نوع گرامر به سایر قوانین بستگی دارد . البته دقت کنیم که با توجه به این شرایط شرط LL1 بودن برای متغیر A نقض نمیشود در حقیقت قانون چهارم ( که ذکر کردیم ) باعث بروز Fi/Fo در یکی از متغیر های دیگر گرامر حتما میشود . و دیگر نیازی به بررسی سایر قوانین این گرامر نمیباشد ... |
RE: سوال ۱۰۶ کامپیوتر ۹۵ - msour44 - 26 فروردین ۱۳۹۶ ۰۷:۰۰ ب.ظ
(۲۶ فروردین ۱۳۹۶ ۰۵:۰۴ ب.ظ)alireza01 نوشته شده توسط:سلام(26 فروردین ۱۳۹۶ ۰۴:۰۵ ب.ظ)msour44 نوشته شده توسط: سلام به نظر نتونستم منظورمو خوب بیان کنم فقط خواستم بگم که مورد ۴ باعث برخورد در A نمی شود(شماهم فرمودید). و لازم نیست هر برخورد ممکن در یک قاعده خاص را بررسی کنیم و باید احتمال برخورد دردیگر قاعده ها را هم بهشون توجه کرد واینکه گفتم مورد ۴ دلیلی بر برخورد در گرامر نیست منظورم فقط در قاعده های A بود.با سپاس از شما لطفا استنباط تون را درباره عدم نیاز به بررسی دیگر قاعده با توجه به مورد ۴ اگر امکان دارد بفرمایید(روند نتیجه گیری). |
RE: سوال ۱۰۶ کامپیوتر ۹۵ - alireza01 - 26 فروردین ۱۳۹۶ ۰۷:۴۸ ب.ظ
(۲۶ فروردین ۱۳۹۶ ۰۷:۰۰ ب.ظ)msour44 نوشته شده توسط: سلام سلام و درود بر شما ... بله مورد ۴ این سوال باعث برخورد در A نخواهد شد اما یادمه یک قضیه در کتاب درسی دیدم که اثبات کرده بود در هنگام بررسی LL1 بود یک گرامر زمانی که برای یک متغیر NT از گرامر ، اشتراک First و Follow آن متغیر در صورت وجود ( که در اینجا وجود دارد چون تهی نیست ) برابر با x باشد ( یا x ای وجود داشته باشد ) قطعا در جدول پارسینگ بالا به پایین این گرامر در ستون x ؛ تداخل داریم که باعث نقض شرایط LL1 برای این گرامر میشود . میتونم یه مثال ساده هم بزنم براتون ، شرایطی مساله رو برای گرامر زیر پیاده سازی و تحلیل کنید برای خودتون تا به صحبت های من پی ببرید ، البته ممکنه اشتباه کرده باشم و نیاز به مطالعه بیشتر داشته باشم روی این موضوع ... ( در گرامر زیر آلفا برابر B و بتا برابر c در نظر گرفتم ) [tex]....\: \: \: S\: \: \longrightarrow\: \: \: aAb\: \: \: \: ,\: \: \: A\: \longrightarrow\: c\: \mid\: B\: \: ,\: \: \: B\: \longrightarrow\: b\: \mid\: \lambda\: \: \: ...[/tex]
|
RE: سوال ۱۰۶ کامپیوتر ۹۵ - msour44 - 27 فروردین ۱۳۹۶ ۱۲:۱۲ ق.ظ
سلام در مورد وجود چنین قضیه ای اطلاعی ندارم.اگر عنوان کتاب را به خاطر دارد بگید شاید اطلاعات بیشتری در این باره وجود داشته باشد. به هر حال وجود برخورد در خود A با توجه به سه مورد اول منتفی است (نتیجه گیری مباحث مطرح شده)ولی درمورد چهارم می توانیم به این صورت بیان کنیم که [tex]fi(A)\: \cap\: fo(A)\ne\phi\: \: \longrightarrow\: \: (fi(\alpha)\: \cup\: fi(\beta))\: \cap\: fo(A)\ne\phi\: \longrightarrow\: (fi(\alpha)\cap\: fo(A))\: \cup\: (fi(\beta)\cap fo(A))\: \ne\phi[/tex] چون [tex]fi(\beta)\: \cap\: fo(A)\: =\phi[/tex] موردسوم پس [tex]fi(\alpha)\: \cap\: fo(A)\: \ne\phi[/tex] از طرفی از [tex]\alpha[/tex] میتوان [tex]\lambda[/tex] را مشتق کرد واین به دو صورت رخ می دهد اول اینکه خود [tex]\alpha[/tex] برابر با [tex]\lambda[/tex] است و یا اینکه [tex]\alpha[/tex] از تعدادی متغیر تشکیل شده که به صورت غیر مستقیم [tex]\lambda[/tex] را تولید می کند مثل B و یا BC و ...نمی تواند شامل الفبا باشد چون باید رشته تهی را تولید کند. حال با توجه به [tex]fi(\alpha)\: \cap\: fo(A)\: \ne\phi[/tex] و اینکه در follow رشته تهی نخواهیم داشت پس [tex]\alpha[/tex] تمام متغیر است پس [tex]A\longrightarrow\alpha|\beta\: \: \: \Longrightarrow\: A\longrightarrow B|\beta[/tex] (درنظر گرفتن متغیر بیشتر برای الفا تاثیری در روند اثبات ندارد) و واضح است که [tex]fo(A)\: \subseteq\: fo(B)[/tex] است از طرفی B باید [tex]\lambda[/tex] را تولید کند(مستقیم یا غیر مستقیم تاثیری ندارد) و همچنین حداقل قاعده دیگری نیز باید داشته باشد تا first ان قاعده با فالو A اشتراک داشته باشد(با توجه به[tex]fi(\alpha)\: \cap\: fo(A)\: \ne\phi[/tex] و اینکه الفا برابر B گرفتیم ) پس داریم [tex]B\: \longrightarrow\: \lambda\: |\: \delta\: |.....[/tex] که [tex]fi(\delta\: )\: \cap\: fo(A)\: \ne\phi[/tex] حال اگر برخورد ها را برای متغیر B بررسی کنیم در بدترین حالت اگر هیچ برخورد fi/fi بین قاعده های تولیدی B نباشد ولی چون یکی از قاعده ها [tex]\lambda[/tex] تولید می کند(مستقیم یا غیر مستقیم) پس باید اشتراک fi دیگر قاعده ها با [tex]fo(B)[/tex] را بررسی کنیم چون [tex]fo(A)\: \subseteq\: fo(B)[/tex] است و [tex]fi(\delta\: )\: \cap\: fo(A)\: \ne\phi[/tex] پس [tex]fi(\delta)\: \cap\: fo(B)\: \ne\: \phi[/tex] است یعنی برخورد fi/fo برای متغیر B اگر هم الفا مثلا دو متغیره باشد مثل BC باز این BC باید رشته تهی را تولید کند و باز fo A زیر مجموعه هم B ,و هم C می شود گزینه ۲ زمان زیادی صرف شد.منتظر نظرات دوستان هستم |