কম্পিউটার টিউটোরিয়াল

C-তে C প্রোগ্রামের টোকেন ডিটেক্ট করা (লেক্সিক্যাল অ্যানালাইসিস)

C প্রোগ্রামের টোকেন (কীওয়ার্ড, আইডেন্টিফায়ার, কনস্ট্যান্ট, সিম্বল ইত্যাদি) ডিটেক্ট করার প্রোগ্রাম। এটি কম্পাইলারের লেক্সিক্যাল অ্যানালাইসিস ফেজের নমুনা।

টোকেন টাইপ

  • Keywords: for, if, include, int, return...
  • Identifiers: variables, functions...
  • Separators: , ; ( ) [ ] { }
  • Operators: + - * / = > < ++ --
  • Constants: integers, real numbers

পদ্ধতি

  • isValidDelimiter(), isValidOperator(), isvalidIdentifier(), isValidKeyword(), isValidInteger(), isRealNumber() হেল্পার ফাংশন।
  • detectTokens() ফাংশন স্ট্রিং স্ক্যান করে ডিলিমিটার পেলে সাবস্ট্রিং বের করে টোকেন টাইপ চেক করে প্রিন্ট করে।

C প্রোগ্রাম উদাহরণ (সংক্ষিপ্ত)

#include <stdbool.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>

bool isValidDelimiter(char ch) { /* চেক */ }
bool isValidOperator(char ch) { /* চেক */ }
bool isvalidIdentifier(char* str) { /* চেক */ }
bool isValidKeyword(char* str) { /* strcmp দিয়ে কীওয়ার্ড চেক */ }
bool isValidInteger(char* str) { /* সব ডিজিট কিনা চেক */ }
bool isRealNumber(char* str) { /* ডেসিমাল পয়েন্ট চেক */ }
char* subString(char* str, int left, int right) { /* সাবস্ট্রিং এক্সট্র্যাক্ট */ }

void detectTokens(char* str) {
    int left=0, right=0, len=strlen(str);
    while (right <= len && left <= right) {
        if (!isValidDelimiter(str[right])) right++;
        else if (isValidDelimiter(str[right]) && left==right) {
            if (isValidOperator(str[right])) printf("Valid operator: '%c'\n", str[right]);
            right++; left=right;
        } else {
            char* sub = subString(str, left, right-1);
            if (isValidKeyword(sub)) printf("Valid keyword: '%s'\n", sub);
            else if (isValidInteger(sub)) printf("Valid Integer: '%s'\n", sub);
            else if (isRealNumber(sub)) printf("Real Number: '%s'\n", sub);
            else if (isvalidIdentifier(sub)) printf("Valid Identifier: '%s'\n", sub);
            else printf("Invalid Identifier: '%s'\n", sub);
            left = right;
        }
    }
}

int main() {
    char str[100] = "float x = a + 1b; ";
    printf("Program: '%s'\nTokens:\n", str);
    detectTokens(str);
    return 0;
}

আউটপুট

Program: 'float x = a + 1b; '
Tokens:
Valid keyword: 'float'
Valid Identifier: 'x'
Valid operator: '='
Valid Identifier: 'a'
Valid operator: '+'
Invalid Identifier: '1b'
  1. C প্রোগ্রামিং-এ রেডিক্স সর্ট (Radix Sort)

  2. C প্রোগ্রাম: হেক্সাগোনাল (ষট্কোণাকার) প্যাটার্ন প্রিন্ট করা

  3. C প্রোগ্রাম: সমান্তরাল চতুর্ভুজের পরিধি (Circumference) বের করা

  4. ডায়রেক্টেড গ্রাফে সাইকেল ডিটেক্ট করার পাইথন প্রোগ্রাম