تالار گفتمان مانشت
نوشتن برنامه تجزیه کننده پشینگر - نسخه‌ی قابل چاپ

نوشتن برنامه تجزیه کننده پشینگر - 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;