تالار گفتمان مانشت

نسخه‌ی کامل: نوشتن برنامه تجزیه کننده پشینگر
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام دوستان
من میخوام واسه گرامر زیر یک تجزیه کننده پیش نگر بنویسم همانطور که می دونید برای هر پایانه بایستی یک پروسیجر تعریف بشه و توکن ها رو باید با تابع 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;
لینک مرجع