نوشتن برنامه تجزیه کننده پشینگر - نسخهی قابل چاپ |
نوشتن برنامه تجزیه کننده پشینگر - Hussein39 - 23 دى ۱۳۹۲ ۰۹:۱۷ ب.ظ
سلام دوستان من میخوام واسه گرامر زیر یک تجزیه کننده پیش نگر بنویسم همانطور که می دونید برای هر پایانه بایستی یک پروسیجر تعریف بشه و توکن ها رو باید با تابع match صدا کنیم. من نوشتم به دو روش ولی نمی دونم کدوم درسته اگه امکانش هست کمکم کنید> این گرامر [tex]E \rightarrow TR[/tex] [tex]T \rightarrow '1' | '2' | '3'[/tex] [tex]R \rightarrow ' 'E |'*'E|\xi[/tex] برنامه ای که من نوشتم: procedure E() begin if lookahead in {'1','2','3') then T(); R(); else error; end; procedure T() begin if lookahead == '1' then match('1'); else if lookahead == '2' then match('2'); else if lookahead=='3' then match('3'); else error; end; procedure R() begin if lookahead=='+' then begin match('+'); E(); end else if lookahead=='*' then begin match('*'); E(); end else error; end; procedure match(token:T) begin if(lookahead==T) nextToken(); else error; end; |