هل هناك أي الدروس الجيدة التي تصف كيفية استخدام ANTLR تحليل سلاسل البحث منطقية

StackOverflow https://stackoverflow.com/questions/1209005

  •  05-07-2019
  •  | 
  •  

سؤال

وأنا في حاجة إلى تحليل سلسلة بحث منطقية من الكلمات الرئيسية والمشغلين في استعلام SQL ليتم تنفيذها من C # رمز. أعتقد أن شيئا من هذا القبيل ANTLR هو ما أنا بحاجة لهذه المهمة، ولكن لست متأكدا من كيفية القيام بذلك.

هل هناك أي دروس جيدة حول كيفية القيام بذلك؟ أو ربما كنت في حاجة الى أداة مختلفة؟

مثال على ما أعنيه هو أدناه. مشغلي الوحيدة أحتاج هي AND و OR. وأود أيضا أن تكون قادرة على استخدام الأقواس.

<اقتباس فقرة>   

والتعبير المدخلات: (الأزرق والأخضر) أو أصفر

     

والإخراج:

     

وSELECT *   من الجدول   حيث (يحتوي على (الوصف، "الأزرق") ويحتوي على (الوصف، "الخضراء")) OR> يحتوي على (الوصف، "الأصفر"

وإذا كان ذلك ممكنا وأود أيضا إلى دعم ضمني والإدراج. لذلك المشغل الافتراضي إذا تم تحديد أيا منها لا AND.

<اقتباس فقرة>   

والمدخلات: الأخضر (اللون الأزرق أو الأصفر)

     

والإخراج:   تحديد *   من الجدول   حيث يحتوي (الوصف، "الخضراء") AND (يحتوي على (الوصف، "الأزرق") OR> يحتوي على (الوصف، "الأصفر"))

هل كانت مفيدة؟

المحلول

وربما كنت تفعل هذا مع معالجة النص على التوالي. أساسا ما تريد القيام به هو أن تأخذ التعبير الأصلي، وسحب جميع الألوان واستبدالها تحتوي شبه جملة. في شبة الكود:

list of tokens = split input expression into tokens separated by spaces
foreach token in tokens
    if token is not keyword
        text = "CONTAINS(Description, \"" + token + "\")"
    else 
        text = token

    output = output + text
end

وأين الكلمات الرئيسية هي "("، "AND"، وما إلى ذلك ثم وضعت للتو الإخراج في بيان SQL الخاصة بك

<إدراج تحذير من هجمات حقن SQL هنا>

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top