نمایش نتایج: از شماره 1 تا 2 , از مجموع 2

موضوع: Sql Parser

  1. #1

    آخرین بازدید
    01-31-2010 [ 15:05]
    تاریخ عضویت
    Nov 2007
    محل سکونت
    Earth
    نوشته ها
    84
    سپاس ها
    0
    سپاس شده 44 در 27 پست

    پیش فرض Sql Parser

    چكيده:

    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 استفاده مي$كنيم. مفاهيم اين كار در كتابهاي درسي و دانشگاهي گفته شده، بشخصه هيچ گاه فكر نمي$كردم كه اين مفاهيم روزي برايم كاربردي شود.

    نتيجه نهايي كار را اول خواهم گفت و سپس مشكلات و دردسرهاي استفاده از اين نتيجه گيري را:
    در ابتدا شما به يك فايل گرامر نياز داريد تا زبان شما را شرح دهد، سپس به ابزاري كه آن گرامر را بفهمد و در نهايت اين ابزار بايستي توانايي توليد خروجي به زبان دلخواه شما را داشته باشد.



    پرطرفدارترين ابزار توليد گرامر 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:
    1. <LI class=MsoNormal dir=rtl>فايل [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] و گرامر را از سايت دريافت كرده.
    2. اين فايل باينري به شكل خط – فرمان مي$باشد. به عنوان اولين پارامتر فايل گرامر را با مسير كامل بدهيد. (خروجي شما توليد خواهد شد.)

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]:
    1. اولين مشكل حل كردن مسئله$اي به نام 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 دريافت كنيد.

    1. براي استفاده از ANTLR ابزار جاوا را اجرا كنيد. (در قسمت Run تايپ كنيد cmd و در پنجره Console بنويسيد Java)
    java org.antlr.Tool SimpleC.gبا فراخواني دستور بالا گرامر شما ساخته خواهد شد.(فقط به جاي SimpleC.g$ فايل گرامر خود را قرار دهيد). (اگر دراجرا دستور بالا به مشكل برخورديد بهتر است اين دستور را در محلي كه فايلهاي ANTLR قرار دارد اجرا كنيد. بدين منظور از منظور از طريق خط فرمان به مسير زير برويد
    "c:\ antlr-3.0.1\src" (يا هر محل ديگري فايلهاي شما وجود دارد) و سپس دستور بالا را اجرا كنيد)

    براي توليد كد به زبان دلخواه لازمست كه شما در ابتداي فايل گرامر زبان را تغيير دهيد.

    options
    {
    output=AST;
    ASTLabelType=CommonTree;
    language=CSharp;
    }


    ابزارهاي ترجمه كننده از روشهاي متنوعي براي ترجمه متون استفاده مي$كنند. كه شما در ابتداي فايل مي$توانيد اين روش$ها را مشخص كنيد. (شايد بتوان براي زبان فارسي هم چنين مترجمي نوشت، كه حتما مي$توان)

  2. کاربر روبرو از پست مفید Travis سپاس کرده است .

    mr.bahram (04-04-2008)

  3. #2

    آخرین بازدید
    01-31-2010 [ 15:05]
    تاریخ عضویت
    Nov 2007
    محل سکونت
    Earth
    نوشته ها
    84
    سپاس ها
    0
    سپاس شده 44 در 27 پست

    پیش فرض پاسخ : Sql Parser

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]
    پس از تلاش بسيار و عدم موفقيت در استفاده از ANTLR براي توليد كد مورد نظر، [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید] ابزار gold Parser پيدا شد.

    Gold Parser ابزار بسيار راحتي براي استفاده مي$باشد. بدين معني كه شما به راحتي مي$توانيد خروجي خود را از اين ابزار استخراج كنيد. Gold Parser يك موتور ترجمه متن آزاد مي$باشد در نتيجه نگارش$هاي متفاوتي براي آن وجود دارد. (براي مثال سه نسخه به زبان c# ). Gold Parser$داراي ابزاري به نام Builder مي$باشد، كه اين ابزار فايل گرامر را در اولين قدمت صحت سنجي مي$كند و سپس مي تواند چارچوب برنامه را به زبان دلخواه شما توليد كند. (هنگامي Builder$ فايل گرامر را صحت سنجي كرد، بايستي اين فايل را در قالب جدولي ذخيره كند كه در واقع اين فايل جدول ذخيره شده است كه در برنامه شما مورد استفاده قرار مي$گيرد)

    پس از اين مرحله شما لازمست كه از Dll ها gold parser$ در نرم$افزار خود براي ترجمه متن استفاده كنيد.

    در اين مرحله تازه مشكل آغاز شده، زيرا متن به درستي تفكيك مي$شود و برمي$گردد اما فكر نكنيد كه شما متدي همانند : GetTables, GetColumns, GetJoins داريد، خير. حال شما بايد يك ساختار درختي را تبديل به ساختار منطقي خود كنيد. براي اين منظور و درك بهتر مي$توانيد از ابزار Calitha كه درسايت gold parser لينك دريافت آن وجود دارد استفاده كنيد.

    مشكلي كه در اين مرحله براي من بوجود آمد عدم درك فايل گرامر Sql توسط Builder بود. با گشت و گذار بيشتر و البته اقدام خداپسندانه "[برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]" كه ابزاري پولي براي نوشتن TSql برروي Dataset مي$باشد مشكل حل شد. اين سايت فايل گرامر TSql براي GoldParser را رايگان در سايت قرارداده است. (از قسمت فايل هاي اين مقاله مي$توانيد اين فايل را دريافت كنيد).

    در اين آدرس مقايسه ابزارهاي موجود را خواهي ديد:
    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

    [برای مشاهده لینک ها شما باید عضو سایت باشید برای عضویت در سایت بر روی اینجا کلیک بکنید]

  4. کاربر روبرو از پست مفید Travis سپاس کرده است .

    mr.bahram (04-04-2008)


LinkBacks (?)

اطلاعات موضوع

کاربرانی که در حال مشاهده این موضوع هستند

در حال حاضر 1 کاربر در حال مشاهده این موضوع است. (0 کاربران و 1 مهمان ها)

موضوعات مشابه

  1. اضافه کردن مجوزهایی جدید برای ارسال پست در گروه های کاربری Parser Permissions
    توسط mr.bahram در انجمن هک ها و پلاگین ها vBulletin 3.8.X
    پاسخ ها: 0
    آخرين نوشته: 07-08-2009, 23:06
  2. ایجاد بخشی برای تجزیه دسترسی ها Parser Permissions
    توسط mr.bahram در انجمن هک ها و پلاگین ها vBulletin 3.8.X
    پاسخ ها: 0
    آخرين نوشته: 04-26-2009, 23:27

کاربران خواننده این موضوع : 12

کلمات کلیدی این موضوع

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

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

مجوز های ارسال و ویرایش

  • شما نمیتوانید موضوع جدیدی ارسال کنید
  • شما امکان ارسال پاسخ را ندارید
  • شما نمیتوانید فایل پیوست کنید.
  • شما نمیتوانید پست های خود را ویرایش کنید
  •