Semanti c Анализ с использованием зубров / Flex - PullRequest
0 голосов
/ 03 апреля 2020

Я создаю C компилятор для небольшого языка программирования, и я застрял в фазе анализа semanti c. Я читал об AST и таблицах символов и не знаю, как работать с ними обоими. Википедия говорит это о AST

The AST is used intensively during semantic analysis, where the compiler checks for correct usage of the elements of the program and the language.

У меня есть файлы lexer.l и parser.y.

Также у меня есть ast.h, где я объявил структуры вроде struct expression { ... } struct statement { ... }, и этот файл включен в parser.y, где я заполняю эти структуры. Я также объявил эти структуры в %union { ... }. Одним из примеров правила может быть

statements : statements SEMICOLON statement { 
            struct statement *stmt;
            stmt = $3; /*The statement */
            stmt->prev =  $1; /*The previous statement */
            $$ = stmt; 
           }
          | {$$ = NULL;}
          :

И другие правила похожи, поэтому, когда yyparse() заканчивается, я должен заполнить AST и указатель на узел root (я не проверял его но я не хочу продолжать, не зная, правильно ли я поступил)

После создания AST я не знаю, как начать анализ semanti c с использованием AST. Также я не знаю, как использовать таблицу символов (создать, заполнить и использовать ее) вместе с AST для этой цели.

...