পার্সার কম্বিনেটর হলো এমন ফাংশন যা একটি ইনপুট স্ট্রিং নেয় এবং পার্স করা মানের সাথে অবশিষ্ট অপার্স্ড স্ট্রিং ফেরত দেয়। Parser<T> সংজ্ঞায়িত হয় (input: string) => [T, string] হিসেবে। যেমন, p Integer "10 20 30"-কে সংখ্যা 10 এবং অবশিষ্ট অংশ " 20 30"-এ পার্স করে। p Hello "Hello 100" থেকে "Hello" বের করে, " 100" অবশিষ্ট রেখে। p Ignore Whitespace স্পেস গ্রহণ করে " " এবং "100" ফেরত দেয়। এরপর p Integer "100"-কে সংখ্যা 100 এবং একটি খালি স্ট্রিং-এ পার্স করে।
p Seq-এর মতো সিকোয়েন্স কম্বিনেটর পার্সারগুলোকে একত্র করতে দেয়: p Seq(p Hello, p Ignore Whitespace, p Integer) "Hello 100"-কে টিপল ["Hello", null, 100]-এ পার্স করে। p Map কম্বিনেটর পার্স করা মান রূপান্তর করে, যেমন ["Hello", null, 100]-কে {greeting: "Hello", who: 100}-এ পরিণত করা। একইভাবে, p Seq(p Number, p Semicolon) বারবার পার্সার প্রয়োগ করে প্রতিটি সংখ্যা-সেমিকোলন জোড়া গ্রহণ করে "10;20;30;"-কে সংখ্যার তালিকায় পার্স করে।
নিবন্ধটি নেটওয়ার্ক ping আউটপুট পার্স করার উদাহরণও দেখায়, যা দেখায় কীভাবে এই কম্বিনেটর ব্যবহার করে কাঁচা টেক্সট থেকে কাঠামোবদ্ধ ডেটা বের করা যায়। fold ও unfold অপারেশন দেখায় কীভাবে পার্সার মান হ্রাস বা পুনর্গঠন করতে পারে, যেমন একটি তালিকার যোগফল বের করা, অথবা "Hello 100"-কে ["Hello", " ", 100]-এ রূপান্তর করা এবং এর বিপরীতও।
উৎস: Hacker News · সারাংশ: HeadlinesBriefing