pyacc(1) Pascal parser generator pyacc(1)

pyacc - مولد تجزیه‌کننده و کامپایلر کامپایلر Yacc برای زبان پاسکال

yacc [گزینه‌ها] yacc-file[.y] [output-file[.pas]]

پرگویی (Verbose): برنامه Pascal Yacc یک توصیف خوانا از تجزیه‌کننده تولیدشده را در yacc-file با پسوند جدید .lst می‌نویسد.
اشکال‌زدایی (Debug): برنامه TP Yacc تجزیه‌کننده‌ای همراه با خروجی اشکال‌زدایی تولید می‌کند.

TP Yacc برنامه‌ای است که امکان آماده‌سازی و ایجاد تجزیه‌کننده‌ها را بر اساس توصیف زبان‌های ورودی توسط گرامرهای شبیه به BNF فراهم می‌کند. کافی است گرامر زبان مقصد خود را به همراه کدهای توربو پاسکال لازم برای پردازش ساختارهای نحوی مشخص کنید؛ سپس TP Yacc گرامر شما را به کد توربو پاسکال برای زیرروال تجزیه‌کننده متناظری با نام yyparse ترجمه می‌کند.

برنامه TP Yacc گرامر منبع موجود در yacc-file (با پسوند پیش‌فرض .y) را تجزیه کرده و زیرروال تجزیه‌کننده ساخته‌شده را در output-file مشخص‌شده (با پسوند پیش‌فرض .pas) می‌نویسد؛ اگر فایلی برای خروجی مشخص نشود، خروجی در همان yacc-file با پسوند جدید .pas ذخیره می‌شود. اگر در حین کامپایل خطایی رخ دهد، پیام‌های خطا در فایل لیست (یعنی yacc-file با پسوند جدید .lst) نوشته می‌شوند.

زیرروال تجزیه‌کننده تولیدشده، yyparse، به این صورت اعلان می‌شود:

function yyparse : Integer;

این زیرروال را می‌توان از برنامه اصلی برای اجرای تجزیه‌کننده فراخوانی کرد. مقدار بازگشتی yyparse نشان‌دهنده موفقیت یا شکست تجزیه‌کننده است (مقادیر بازگشتی ممکن: 0 = موفقیت، 1 = خطای نحوی غیرقابل‌بازیابی یا سرریز پشته تجزیه).

مشابه با TP Lex، الگوی کد برای زیرروال yyparse را می‌توان در فایل yyparse.cod یافت. قوانین مربوط به یافتن این فایل مشابه قوانین TP Lex است (به بخش مربوط به `TP Lex' مراجعه کنید).

یونیت کتابخانه TP Yacc (YaccLib) برای برنامه‌هایی که از تجزیه‌کننده‌های تولیدشده با Yacc استفاده می‌کنند الزامی است؛ از این رو باید عبارت uses مناسب را در برنامه یا یونیت حاوی زیرروال تجزیه‌کننده قرار دهید. همچنین یونیت YaccLib روال‌هایی برای کنترل عملکرد تجزیه‌کننده ارائه می‌دهد. برای اطلاعات بیشتر به فایل yacclib.pas مراجعه کنید.

برای اطلاعات بیشتر، مستندات همراه با TP lex و yacc را ببینید.

Albert Graeff (<ag@muwiinfa.geschichte.uni-mainz.de>, <Dr.Graef@t-online.de>)

ppc386(1), plex(1)

19 Jan 2000 Free Pascal