چكيده:
Parser, Interpreter, Compiler يا هر اسم ديگري كه بكار برده شود، تفاوتي ندارد. بهرحال مفاهيم سخت و پيچيده$اي هستند. مقاله$اي كه درادامه مي$آيد ماحصل يك هفته تحقيق در اينترنت براي يافتن يك مترجم TSQL مي$باشد.
كليد واژه:
جاوا – مفسر زبان Sql – ترجمه Sql
Query Builder, Query Compiler, TSql Parser , Sql Parser, Yacc , Antlr , Gold Parser, Interpreter, Query Algorithm, RegX Query ,ClassPath , -cp
</SPAN>
بسياري از ما برنامه$نويسان براي فهميدن منطق يك متن نوشتاري و تبديل آن به منطق مورد نياز، همانند Sql Query، از يك مشت If در كد يا نهايتا Switch – Case استفاده مي$كنيم. مفاهيم اين كار در كتابهاي درسي و دانشگاهي گفته شده، بشخصه هيچ گاه فكر نمي$كردم كه اين مفاهيم روزي برايم كاربردي شود.
نتيجه نهايي كار را اول خواهم گفت و سپس مشكلات و دردسرهاي استفاده از اين نتيجه گيري را:
در ابتدا شما به يك فايل گرامر نياز داريد تا زبان شما را شرح دهد، سپس به ابزاري كه آن گرامر را بفهمد و در نهايت اين ابزار بايستي توانايي توليد خروجي به زبان دلخواه شما را داشته باشد.
- <LI class=MsoNormal dir=rtl>[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] <LI class=MsoNormal dir=rtl>[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
دايناسور Parserها در اين بررسي آورده نشده است.- [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
پرطرفدارترين ابزار توليد گرامر Antlr مي$باشد. در زمان نوشتن اين مقاله نسخه 3.1 نيز منتشر شده است. اين ابزار تقريبا توانايي توليد به هرزباني را دارد، بدين معني كه شما مي$توانيد C#, Vb.Net , Java , Ruby و هرزبان زنده و مرده ديگري را براي خروجي تقاضا كنيد.اين ابزار از ديگر ابزارها محبوب تر است و گرامر$هاي متعددي را پشتيباني مي$كند. داراي مستندات بسياريست اما كيفيت اين مستندات آن چنان بالا نمي$باشد. بدين معني تنها با خواندن سايت كارشما آنچنان راه نخواهد افتاد و لازمست كه خود دست به آچار شويد. براي من در حدود 5 روز و روزي متوسط 2 ساعت زمان برد تا بتوانم از ابزار خروجي بگيرم. مشكل اول استفاده از اين ابزار، جاوايي بودن آن است كه طبيعتا براي برنامه نويسان ناوارد ايجاد مشكل مي$كند. (مشكل معروف ClassPath – سعي مي$كنم تعدادي از راههاي استفاده از Antlr را نيز در اينجا بياورم). البته پس از مقداري بررسي ابزار Native binary در اين سايت يافت شد، تمام امكانات نسخه جاوا را ندارد، اما كارراه انداز است، به علت مستندات كم زماني طول كشيد تا استفاده از اين ابزار ساده نيز مقدور شود.
مشكل دوم عدم همخواني نسخه$هاي مختلف اين برنامه با هم مي$باشد. Antlr$ داراي مجموعه بسيار كاملي از گرامرها مي$باشد، تقريبا هر$انچه كه فكرش را بكنيد.
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
اما متاسفانه بسياري از اين گرامرها با نسخه 2 اين برنامه نوشته شده$اند كه در نتيجه امكان استفاده در نسخه 3 وجود ندارد. (نسخه 3 اين نرم$افزار پيشرفت$هاي بسياري از لحاظ سرعت ترجمه متون و بازدهي كرده است، كه استفاده از نسخه 2 را كمي غير معقول مي$كند)
و يك مشكل ديگر (البته به نظر من) استفاده اين ابزار از ساختار EBNF براي فايل$هاي گرامر مي$باشد. (از نظر من اين موضوع ايجاد مشكل مي$كند، زيرا من به دنبال گرامر Sql و TSql بودم، كه گرامر$هاي موجود در اينترنت به اين منظور همگي به زبان BNF بودند.)
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
BNF = Backus Naur Form (قواعدي و نشانه$هاي كه يك زبان را توضيح مي$دهند)
EBNF = BNF توسعه داده شده (Extended)
در سايت Antlr گرامري براي TSql وجود دارد، اما براي نسخه 2 مي$باشد.
ANTLR خود داراي ابزاري براي تعريف زبان دلخواه مي$باشد. شما مي$توانيد زبان خود را با اين ابزار توليد كنيد و سپس كدي كه اين زبان را مي$فهمد توليد كنيد.
نحوه استفاده از ANTLR:
- <LI class=MsoNormal dir=rtl>فايل [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] و گرامر را از سايت دريافت كرده.
- اين فايل باينري به شكل خط – فرمان مي$باشد. به عنوان اولين پارامتر فايل گرامر را با مسير كامل بدهيد. (خروجي شما توليد خواهد شد.)
[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]:
- اولين مشكل حل كردن مسئله$اي به نام ClassPath مي$باشد، من برنامه نويس جاوا نيستم و نمي$دانم اين اصلا به چه معنيست، اما راه دور زدن آن را يادگرفتم، هنگامي كه شما يك برنامه جاوا را مي$خواهيم اجرا كنيد (اگر اشتباه نكنم) به خاطر ماهيت مفسري بودن آن بايستي تمام فايل$هاي مورد نياز را برايش مهيا كنيد، اما فكر نكنيد به راحتي گفتن C:\Dearjava\Here\MyFiles مي$باشد. براي خود داستاني دارد. براي رفع اين مشكل فايلهاي اجرايي Antlr$را در مسير زير
C:\Program Files\Java\jre1.5.0_05\lib\ext
كپي كنيد و مشكل حل مي$گردد.
فايلهايي كه بايد كپي كنيد:
antlr-3.0.1.jar - antlr-runtime-3.0.1.jar -stringtemplate-3.1b1.jar
اين فايلها را مي$توانيد از سايت ANTLR دريافت كنيد.
java org.antlr.Tool SimpleC.gبا فراخواني دستور بالا گرامر شما ساخته خواهد شد.(فقط به جاي SimpleC.g$ فايل گرامر خود را قرار دهيد). (اگر دراجرا دستور بالا به مشكل برخورديد بهتر است اين دستور را در محلي كه فايلهاي ANTLR قرار دارد اجرا كنيد. بدين منظور از منظور از طريق خط فرمان به مسير زير برويد
- براي استفاده از ANTLR ابزار جاوا را اجرا كنيد. (در قسمت Run تايپ كنيد cmd و در پنجره Console بنويسيد Java)
"c:\ antlr-3.0.1\src" (يا هر محل ديگري فايلهاي شما وجود دارد) و سپس دستور بالا را اجرا كنيد)
براي توليد كد به زبان دلخواه لازمست كه شما در ابتداي فايل گرامر زبان را تغيير دهيد.
options
{
output=AST;
ASTLabelType=CommonTree;
language=CSharp;
}
ابزارهاي ترجمه كننده از روشهاي متنوعي براي ترجمه متون استفاده مي$كنند. كه شما در ابتداي فايل مي$توانيد اين روش$ها را مشخص كنيد. (شايد بتوان براي زبان فارسي هم چنين مترجمي نوشت، كه حتما مي$توان)





LinkBack URL
About LinkBacks



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

علاقه مندی ها (Bookmarks)