Design Pattern Interpreter

Design Pattern Interpreter

omid sotooni

omidsotooni

الگو Interpreter امکان توسعه دادن نوتیشن زبان ها را به ما می دهد. این الگو این امکان را می دهد که گرامر یک زبان را تعریف و به راحتی آن را گسترش داد. الگوی مفسر یا مترجم وقتی که کار زیاد مهم نباشد بهتر است استفاده شود، ولی گسترش و مقیاس پذیری خوبی دارد. این الگو طراحی در پرژه های بزرگ و کامپایلر زبان ها استفاده نمی شود. برای مثال یک مفسر برای یک ماشین حساب مهندسی پیاده سازی نمایید.

هدفتعریف گرامر یک زبان به صورت شی گرا برای بیان دستورات زبان و فراهم کردن مفسری که بتواند دستورات زبان را تفسیرکند.

انگیزهالگوی که به ما کمک کند که زبان های برنامه نویسی را پردازش کنیم. این الگو برای پردازش زبان برنامه نویسی مفید هست اما برای کامپایلری که مراحل چون تحلیل لغوی، تحلیل نحوی، .... مناسب نیست.

کاربرد• برای تفسیر زبان

• گرامر زبان ساده است.

• می توان در زمان اجرا درخت گرامر زبان را تغییر داد.

ساختاردر زیر نمودار کلاس دیاگرام الگوی Interpreter را می توان مشاهده نمود

interpreter pattern

اجزا:Abstract Expressions: کلاسی است که به صورت انتزاعی برای هر Token تعریف می شود.

Terminal Expressions: کلاسی که به ازای هر Token تعریف می شود.

None terminal Expression: کلاسی هست که برای هر None Terminal تعریف می شود.

Context :حاوی اطلاعاتی است که برای مفسر قابل دسترسی است.

الگو های مرتبط: Composite: درخت گرامر انتزاعی نمونه ای از الگو Composite است.

Visitor: با استفاده از الگوی Visitor می توان عملیات مختلفی را روی درخت اجرا کنید.

پیامد• کلاس Token میانی باید همه ی قوانین خود را پوشش بدهد.

• اگر Token های زبان زیاد هستند از الگوی Flyweight استفاده کنید.

نقاط قوت:1-قوانین این الگو بسیار ساده است

2-می توان درخت گرامر را روی دیسک سخت ذخیره نمود و بعدا بار گزاری کنید.

نقاط ضعف:1- برای زبان های که قوانین زیاد دارند مناسب نیست

آدرس این مقاله در وبسایت هیلتن:
🔗 http://heilton.com/Article/design-pattern/Interpreter

کانال تلگرام گروه هیلتن😊👇

 JOiN → @HeiltonProgramming

Report Page