اصولا می دونین که Design Pattern ها الگوهای طراحی هستند. یعنی شرایطی که زیاد در طراحی پیش می یاد مدل شده و به عنوان الگو قابل استفاده و استناد هستند.
یکی از انواع این الگوها Interpreter است.این الگو :
1. گرامر یک زبان را تعریف می کنه . هر گرامر با یک کلاس مشخص می شه.(مثل <=)
2. جملات زبان رو ارائه می ده. جملات داخل گرامر به صورت یک درخت انتزاعی با کلاسهای این الگو ارائه می شوند(مثل age<35 and maritalStatus=Married)
3. جملات زبا رو تفسیر می کنه
الگوی کلی به صورت زیر است.
(شکل 1 جواب)
که در آن Terminal Expression ها عبارات خاتمه دهنده هستند که معمولا لیترال ها هستند.
و Non-Terminal Expression معمولا کلاسهایی هستند که برای پیاده سازی قوانین داخل گرامر زبان به کار می روند. مثل :
1. Alternations
2. Repetitions
3. Sequences
حالا به مدل خودمون یه نگاهی بندازیم ببنیم چطور جمله زیر رو تفسیر می کنه:
Marital Status=Married AND (StartValidDate>EndValidDate OR Age>35)
گرامرهای ما در اینجا = <= >= < > <> AND OR هستند. و لیترالهای ما Married(مقدار ثابت است), 35 , EndValidDate , Age , StartValidDate, Marital Status هستند.
یعنی:
BooleanExp ::= VariableExp | Constant | And | ‘(‘ expression ‘)’ //AbstractExpression
AndExp ::= expression ‘and’ expression //TerminalExpression
Constant ::= ‘true’ | ‘false’ |'married'
VariableExp ::= ‘StartValidDate’ | ‘EndValidDate’ | …// NonTerminalExpression
….
![]()






پاسخ با نقل قول