Lex ব্যবহার করে লেক্সিকাল অ্যানালাইসার তৈরি করা

কম্পাইলার নির্মাণ টুলস - কম্পাইলার ডিজাইন (Compiler Design) - Computer Science

191

Lex ব্যবহার করে লেক্সিকাল অ্যানালাইজার তৈরি করা

Lex একটি লেক্সিকাল বিশ্লেষক জেনারেটর যা সোর্স কোড থেকে টোকেন তৈরি করতে ব্যবহৃত হয়। এটি একটি প্রোগ্রামিং ভাষার জন্য টোকেন শনাক্তকরণের নিয়ম সংজ্ঞায়িত করতে সহায়ক। নিচে Lex ব্যবহার করে একটি মৌলিক লেক্সিকাল অ্যানালাইজার তৈরি করার পদক্ষেপগুলো বিস্তারিতভাবে আলোচনা করা হলো।


পদক্ষেপ ১: Lex ইনস্টলেশন

প্রথমে, নিশ্চিত করুন যে আপনার সিস্টেমে Lex ইনস্টল করা আছে। এটি সাধারণত Linux/Unix সিস্টেমে পূর্বনির্ধারিত থাকে, তবে এটি যদি ইনস্টল না থাকে, তবে আপনার প্যাকেজ ম্যানেজার ব্যবহার করে ইনস্টল করুন।

sudo apt-get install flex   # Ubuntu/Debian

পদক্ষেপ ২: Lex ফাইল তৈরি

একটি .l এক্সটেনশনের ফাইল তৈরি করুন। উদাহরণস্বরূপ, lexer.l নামে একটি ফাইল তৈরি করুন।

%{
#include <stdio.h>
%}

%%

// নিয়ম এখানে লিখুন
[0-9]+      { printf("Integer: %s\n", yytext); }
[+*/-]     { printf("Operator: %s\n", yytext); }
[ \t\n]+   ; // whitespace গুলো উপেক্ষা করা হবে
.          { printf("Unknown: %s\n", yytext); }

%%

// মেইন ফাংশন
int main(void) {
    yylex(); // লেক্সারকে কল করা
    return 0;
}

int yywrap() {
    return 1;
}

পদক্ষেপ ৩: Lex ফাইল কম্পাইল করা

Lex ফাইলটি কম্পাইল করতে নীচের কমান্ডটি ব্যবহার করুন:

flex lexer.l  # This generates lex.yy.c
gcc lex.yy.c -o lexer -lfl  # Compile the generated C code

পদক্ষেপ ৪: লেক্সিকাল অ্যানালাইজার চালানো

অতঃপর, আপনার লেক্সিকাল অ্যানালাইজারটি চালান:

./lexer

এখন আপনি কিছু ইনপুট দিতে পারেন, যেমন:

3 + 5 7 * 2

এটি আপনার ইনপুটের টোকেনগুলি শনাক্ত করবে এবং তাদের প্রকার নির্ধারণ করে আউটপুট দিবে:

Integer: 3
Operator: +
Integer: 5
Integer: 7
Operator: *
Integer: 2

উপসংহার

Lex ব্যবহার করে একটি মৌলিক লেক্সিকাল অ্যানালাইজার তৈরি করার প্রক্রিয়া এইভাবে সম্পন্ন হয়। আপনি নিয়মগুলিতে পরিবর্তন এবং নতুন নিয়ম যুক্ত করে লেক্সিকাল বিশ্লেষকের কার্যকারিতা বাড়াতে পারেন। এটি প্রোগ্রামিং ভাষার নির্মাণের জন্য একটি গুরুত্বপূর্ণ প্রথম পদক্ষেপ এবং প্রোগ্রামিং ভাষার সিনট্যাক্স বিশ্লেষণের জন্য পরবর্তী পর্যায়ে সহায়ক হয়।

Content added By
Promotion

Are you sure to start over?

Loading...