Аст это абстрактное

Аст это абстрактное

Привет, я новичок в разработке компиляторов, и мне интересно, как выглядит AST. У меня есть небольшой фрагмент кода, и я использую Clang для генерации AST. Я не получаю много информации из этого. Судя по всему, дерево синтаксиса в точности совпадает с исходным, за исключением одной структуры, которая добавляется практически в любой пример, с которым я тестирую.

Источник:

class A { public:   int *a, *b, *c;   int i;   void sum() {     a = new int[5];     b = new int[5];     c = new int[5];     for (i = 0; i < 5; i++) {       a[i] = i;       b[i] = i;     }     for (i = 0; i < 5; i++) {       c[i] = a[i] + b[i];     }     delete[] a;   delete[] b;   delete[] c;   } };  class B : public A { };  int main() {   B bclass;    bclass.sum();   return 0; }  

Команда для генерации AST:

clang++ -cc1 -ast-print ~/sum.cpp 

Выход AST:

struct __va_list_tag {     unsigned int gp_offset;     unsigned int fp_offset;     void *overflow_arg_area;     void *reg_save_area; }; typedef struct __va_list_tag __va_list_tag; class A { public:     int *a;     int *b;     int *c;     int i;     void sum()     {         this->a = new int [5];         this->b = new int [5];         this->c = new int [5];         for (this->i = 0; this->i < 5; this->i++) {             this->a[this->i] = this->i;             this->b[this->i] = this->i;         }         for (this->i = 0; this->i < 5; this->i++) {             this->c[this->i] = this->a[this->i] + this->b[this->i];         }         delete [] this->a;         delete [] this->b;         delete [] this->c;     }   }; class B : public A { }; int main() {     B bclass;     bclass.sum();     return 0; } 

Спасибо



Источник: geekquestion.com


Добавить комментарий