#include <iostream>
#include <string>
#include <sstream>
#include <cstdlib> // للاستخدام مع atoi
using namespace std;
// تعريف الأنواع المختلفة من الرموز
enum Token {
VARIABLE, PRINT, IF, LOOP, ASSIGN, NUMBER, IDENTIFIER,
SEMICOLON, ELSE, OPERATOR, END, INVALID
};
// دالة لتحليل الكلمات وتحديد النوع (Token)
Token getToken(const string &word) {
if (word == "متغير") return VARIABLE;
if (word == "اطبع") return PRINT;
if (word == "إذا") return IF;
if (word == "كرر") return LOOP;
if (word == "=") return ASSIGN;
if (word == ";") return SEMICOLON;
if (word == "غير_ذلك") return ELSE;
if (word == "+" || word == "-" || word == "*" || word == "/") return OPERATOR;
if (isdigit(word[0])) return NUMBER;
return IDENTIFIER;
}
// دالة لتنفيذ أوامر البرمجة
void parse(const string &line) {
stringstream ss(line);
string word;
while (ss >> word) {
Token token = getToken(word);
switch (token) {
case VARIABLE:
cout << "تعريف متغير" << endl;
break;
case PRINT:
cout << "طباعة متغير" << endl;
break;
case IF:
cout << "جملة شرطية: إذا تحقق الشرط" << endl;
break;
case LOOP:
cout << "حلقة تكرار: تنفيذ الأوامر عدة مرات" << endl;
break;
case ASSIGN:
cout << "تعيين قيمة لمتغير" << endl;
break;
case NUMBER:
cout << "عدد: " << word << endl;
break;
case IDENTIFIER:
cout << "معرف: " << word << endl;
break;
case SEMICOLON:
cout << "نهاية الجملة" << endl;
break;
case ELSE:
cout << "الجملة البديلة: غير ذلك" << endl;
break;
case OPERATOR:
cout << "عملية حسابية: " << word << endl;
break;
default:
cout << "خطأ: " << word << " غير صالح" << endl;
break;
}
}
}
int main() {
cout << "مرحبًا بك في اللغة العربية!" << endl;
// استقبال الكود البرمجي من المستخدم
string program;
cout << "يرجى إدخال كود البرمجة بالعربية: " << endl;
getline(cin, program); // قراءة الكود من المستخدم
cout << "معالجة الكود: " << endl;
parse(program);
return 0;
}