HeadlinesBriefing HeadlinesBriefing.com

DuckDB v2.0-এ নতুন PEG-ভিত্তিক SQL পার্সার

Hacker News •
×

DuckDB v2.0 একটি নতুন PEG-ভিত্তিক SQL পার্সার চালু করেছে, যা ২০১৮ সালে প্রজেক্টের প্রথম কমিটের পর থেকে ব্যবহৃত PostgreSQL-উদ্ভূত পার্সারের স্থান নেয়। পূর্ববর্তী Bison-জেনারেটেড LALR(1) পার্সারটি Duck SQL বিবর্তিত হওয়ার সাথে সাথে shift/reduce এবং reduce/reduce দ্বন্দ্বের কারণে ক্রমশ সম্প্রসারণ করা কঠিন হয়ে পড়েছিল। নতুন পার্সারটি, Parsing Expression Grammars ব্যবহার করে নির্মিত, বিকল্পগুলির স্পষ্ট ক্রম নির্ধারণের মাধ্যমে এই দ্বন্দ্বগুলি দূর করে এবং রানটাইম এক্সটেনসিবিলিটি সক্ষম করে।

পার্সারটি তিনটি ধাপে SQL কোয়েরি প্রক্রিয়া করে: টোকেনাইজার, পার্সার এবং ট্রান্সফর্মার। টোকেনাইজার ইনপুটকে কীওয়ার্ড ও আইডেন্টিফায়ারের মতো টোকেনে বিভক্ত করে। পার্সার Duck SQL ব্যাকরণের বিপরীতে সিনট্যাক্স যাচাই করে, একটি পার্স ট্রি তৈরি করে। ট্রান্সফর্মার এটিকে বাইন্ডারের জন্য DuckDB-এর অভ্যন্তরীণ AST-তে রূপান্তরিত করে।

উন্নয়ন শুরু হয়েছিল একটি গবেষণা প্রোটোটাইপ দিয়ে যা শুধুমাত্র SQL-এর একটি উপসেট পরিচালনা করত। এটি ধাপে ধাপে সম্প্রসারিত হয় এবং DuckDB v1.5-এ একটি পরীক্ষামূলক বৈশিষ্ট্য হিসেবে চালু করা হয়। সম্পূর্ণ ব্যাকরণ এখন সমস্ত স্টেটমেন্ট ও এক্সপ্রেশন প্রকার, সঠিক অপারেটর প্রিসিডেন্স, যথাযথ কীওয়ার্ড শ্রেণিবিন্যাস এবং বিদ্যমান AST কাঠামোর সাথে সামঞ্জস্য সমর্থন করে।

বাস্তবায়নে উল্লেখযোগ্য পরিবর্তন হলেও, Duck SQL নিজেই অপরিবর্তিত থাকে। নতুন পার্সার ত্রুটি রিপোর্টিংও উন্নত করে, সিনট্যাক্স ব্যর্থতার জন্য আরও ভালো প্রসঙ্গ প্রদান করে। এই রূপান্তর অন্যান্য সিস্টেমের অনুরূপ পদক্ষেপের সাথে সামঞ্জস্যপূর্ণ, যেমন Python 3.9, যা আরও নমনীয়তার জন্য PEG-ভিত্তিক পার্সিং গ্রহণ করেছে।

উৎস: Hacker News · সারাংশ: HeadlinesBriefing