|
14 | 14 | namespace LCompilers {
|
15 | 15 |
|
16 | 16 | namespace ASRUtils {
|
17 |
| - |
| 17 | +static inline void print_symbol(const ASR::symbol_t *f) { |
| 18 | + if (!f) { |
| 19 | + std::cout << "(null)\n"; |
| 20 | + } |
| 21 | + switch (f->type) { |
| 22 | + case ASR::symbolType::Program: { |
| 23 | + std::cout << "Program_t\n"; |
| 24 | + break;} |
| 25 | + case ASR::symbolType::Module: { |
| 26 | + std::cout << "Module_t\n"; |
| 27 | + break;} |
| 28 | + case ASR::symbolType::Function: { |
| 29 | + std::cout << "Function_t\n"; |
| 30 | + break;} |
| 31 | + case ASR::symbolType::GenericProcedure: { |
| 32 | + std::cout << "GenericProcedure_t\n"; |
| 33 | + break;} |
| 34 | + case ASR::symbolType::StructType: { |
| 35 | + std::cout << "StructType_t\n"; |
| 36 | + break;} |
| 37 | + case ASR::symbolType::EnumType: { |
| 38 | + std::cout << "EnumType_t\n"; |
| 39 | + break;} |
| 40 | + case ASR::symbolType::UnionType: { |
| 41 | + std::cout << "UnionType_t\n"; |
| 42 | + break;} |
| 43 | + case ASR::symbolType::Variable: { |
| 44 | + std::cout << "Variable_t\n"; |
| 45 | + break;} |
| 46 | + case ASR::symbolType::ExternalSymbol: { |
| 47 | + std::cout << "ExternalSymbol_t\n"; |
| 48 | + break;} |
| 49 | + case ASR::symbolType::ClassProcedure: { |
| 50 | + std::cout << "ClassProcedure_t\n"; |
| 51 | + break;} |
| 52 | + case ASR::symbolType::CustomOperator: { |
| 53 | + std::cout << "CustomOperator_t\n"; |
| 54 | + break;} |
| 55 | + case ASR::symbolType::AssociateBlock: { |
| 56 | + std::cout << "AssociateBlock_t\n"; |
| 57 | + break;} |
| 58 | + case ASR::symbolType::Block: { |
| 59 | + std::cout << "Block_t\n"; |
| 60 | + break;} |
| 61 | + default : throw LCompilersException("Not implemented"); |
| 62 | + } |
| 63 | +} |
18 | 64 | static inline double extract_real(const char *s) {
|
19 | 65 | // TODO: this is inefficient. We should
|
20 | 66 | // convert this in the tokenizer where we know most information
|
|
0 commit comments