#include #include #include #define MAX_SYMBOLS 100 enum class SymbolType { KEYWORD, IDENTIFIER, OPERATOR, NUMBER }; struct Symbol { std::string name; int address; SymbolType type; }; int num_symbols = 0; std::vector symbols(MAX_SYMBOLS); void insert_symbol(std::string name, int address, SymbolType type) { if (num_symbols >= MAX_SYMBOLS) { std::cout << "Symbol table full" << std::endl; return; } Symbol& symbol = symbols[num_symbols++]; symbol.name = name; symbol.address = address; symbol.type = type; } void print_symbol_table() { std::cout << "Symbol | Address | Type" << std::endl; std::cout << "-----------------------" << std::endl; for (int i = 0; i < num_symbols; i++) { Symbol symbol = symbols[i]; std::cout << std::left << std::setw(7) << symbol.name << "|"; std::cout << std::right << std::setw(8) << symbol.address << " | "; switch (symbol.type) { case SymbolType::KEYWORD: std::cout << "Keywords"; break; case SymbolType::IDENTIFIER: std::cout << "Identifier"; break; case SymbolType::OPERATOR: std::cout << "Operator"; break; case SymbolType::NUMBER: std::cout << "Number"; break; } std::cout << std::endl; } } int main() { // Input insert_symbol("int", 1000, SymbolType::KEYWORD); insert_symbol("a", 2000, SymbolType::IDENTIFIER); insert_symbol("*", 2500, SymbolType::OPERATOR); insert_symbol("+", 2501, SymbolType::OPERATOR); insert_symbol("branch", 2002, SymbolType::IDENTIFIER); insert_symbol("rollno", 3000, SymbolType::NUMBER); // Output print_symbol_table(); return 0; }