Преобразование C++ в Python
#include <iostream> #include <fstream> #include <cstdlib> #include <unordered_map> #include <unordered_set> #include <vector> #include <string> #include <locale> using namespace std; unordered_set<string> keywords = {"if","then","else","begin","end"}; unordered_set<string> special = {"(",")","[","]","+","-","=",",",";"}; unordered_set<string> digit_set = {"0","1","2","3","4","5","6","7","8","9"}; bool isKeyword(string key) { return keywords.find(key) != keywords.end(); } bool isSpecial(string key) { return special.find(key) != special.end(); } bool isDigit(string key) { return digit_set.find(key) != digit_set.end(); } bool isChar(string key) { return (key.length() == 1 && (key.at(0) >= 'A' && key.at(0) <= 'Z' && key.at(0) >= 'a' && key.at(0) <= 'z')); } bool isReal(string key) { int found = key.find("."); if(found != string::npos) { string part1 = key.substr(0,found-1); string part2 = key.substr(found+1,key.length()); if(isDigit(part1) && isDigit(part2)) return true; } return false; } int main(int argc, char *argv[]) { if(argc < 2) { cout << "Incorrect usage! use: ./tokenize filename.ext"; exit(-1); } ifstream fin; fin.open(argv[1]); unordered_map<string,vector<string>> symbol_table; vector<string> keyword_vec, real_vec, special_vec, character_vec, digit_vec; symbol_table["keyword"] = keyword_vec; symbol_table["real"] = real_vec; symbol_table["special"] = special_vec; symbol_table["character"] = character_vec; symbol_table["digit"] = digit_vec; string temp; while(fin) { getline(fin,temp,' '); if(isKeyword(temp)) symbol_table["keyword"].push_back(temp); else if(isReal(temp)) symbol_table["real"].push_back(temp); else if(isSpecial(temp)) symbol_table["special"].push_back(temp); else if(isChar(temp)) symbol_table["character"].push_back(temp); else if(isDigit(temp)) symbol_table["digit"].push_back(temp); } fin.close(); cout << "\n-----File Summary------"; cout << "\n-----------------------"; cout << "\nKeywords : \t" << symbol_table["keyword"].size(); cout << "\nReal Values : \t" << symbol_table["real"].size(); cout << "\nSpecials : \t" << symbol_table["special"].size(); cout << "\nCharacters : " << symbol_table["character"].size(); cout << "\nDigits : " << symbol_table["digit"].size(); return 0; }
Что я уже пробовал:
Есть ли способ преобразовать это в язык Python
Rick York
Да. Просить нас сделать это для вас-это не то.
Dana Gorsuch
Я никого не просил делать это за меня. Я сам искал ресурсы, чтобы помочь его преобразовать. В любом случае спасибо за помощь. Просто начинающий студент здесь пытается чему-то научиться.
Rick York
Google и DuckDuckGo-это лучшие ресурсы для поиска, чем спрашивать людей на форуме. Вопрос на форуме подразумевает либо:) вы не знаете, как искать, потому что иначе зачем бы вам ждать ответа больше часа или дольше, вместо того чтобы получить его за пять секунд? или б:) вы на самом деле просите кого-то сделать это за вас.
Я честно не могу понять, как и почему было бы лучше задать этот вопрос на форуме, а не в поисковой системе. Может быть, это только я. Иногда я бываю туповат.
Однако тот факт, что вы включили код, указывает на то, что ваш ответ неискренен. Если вы просто просили ресурсы, то код не имеет значения. Другими словами - Я не куплюсь на это ни на секунду.