fork download
  1. #include <iostream>
  2. #include <string>
  3. #include <sstream>
  4. #include <cstdlib> // للاستخدام مع atoi
  5.  
  6. using namespace std;
  7.  
  8. // تعريف الأنواع المختلفة من الرموز
  9. enum Token {
  10. VARIABLE, PRINT, IF, LOOP, ASSIGN, NUMBER, IDENTIFIER,
  11. SEMICOLON, ELSE, OPERATOR, END, INVALID
  12. };
  13.  
  14. // دالة لتحليل الكلمات وتحديد النوع (Token)
  15. Token getToken(const string &word) {
  16. if (word == "متغير") return VARIABLE;
  17. if (word == "اطبع") return PRINT;
  18. if (word == "إذا") return IF;
  19. if (word == "كرر") return LOOP;
  20. if (word == "=") return ASSIGN;
  21. if (word == ";") return SEMICOLON;
  22. if (word == "غير_ذلك") return ELSE;
  23. if (word == "+" || word == "-" || word == "*" || word == "/") return OPERATOR;
  24. if (isdigit(word[0])) return NUMBER;
  25. return IDENTIFIER;
  26. }
  27.  
  28. // دالة لتنفيذ أوامر البرمجة
  29. void parse(const string &line) {
  30. stringstream ss(line);
  31. string word;
  32. while (ss >> word) {
  33. Token token = getToken(word);
  34.  
  35. switch (token) {
  36. case VARIABLE:
  37. cout << "تعريف متغير" << endl;
  38. break;
  39. case PRINT:
  40. cout << "طباعة متغير" << endl;
  41. break;
  42. case IF:
  43. cout << "جملة شرطية: إذا تحقق الشرط" << endl;
  44. break;
  45. case LOOP:
  46. cout << "حلقة تكرار: تنفيذ الأوامر عدة مرات" << endl;
  47. break;
  48. case ASSIGN:
  49. cout << "تعيين قيمة لمتغير" << endl;
  50. break;
  51. case NUMBER:
  52. cout << "عدد: " << word << endl;
  53. break;
  54. case IDENTIFIER:
  55. cout << "معرف: " << word << endl;
  56. break;
  57. case SEMICOLON:
  58. cout << "نهاية الجملة" << endl;
  59. break;
  60. case ELSE:
  61. cout << "الجملة البديلة: غير ذلك" << endl;
  62. break;
  63. case OPERATOR:
  64. cout << "عملية حسابية: " << word << endl;
  65. break;
  66. default:
  67. cout << "خطأ: " << word << " غير صالح" << endl;
  68. break;
  69. }
  70. }
  71. }
  72.  
  73. int main() {
  74. cout << "مرحبًا بك في اللغة العربية!" << endl;
  75.  
  76. // استقبال الكود البرمجي من المستخدم
  77. string program;
  78. cout << "يرجى إدخال كود البرمجة بالعربية: " << endl;
  79. getline(cin, program); // قراءة الكود من المستخدم
  80.  
  81. cout << "معالجة الكود: " << endl;
  82. parse(program);
  83.  
  84. return 0;
  85. }
Success #stdin #stdout 0s 5288KB
stdin
Standard input is empty
stdout
مرحبًا بك في اللغة العربية!
يرجى إدخال كود البرمجة بالعربية: 
معالجة الكود: