RavenLee Ответов: 2

Разбор вопроса? Равнина С


Я понимаю, что такое токенизация. Я могу заставить Лекса прочитать файл, разделить токены и отобразить его в консоли. Каков же процесс после этого? Как я могу получить маркированную информацию или передать ее синтаксическому анализатору и соединиться с treenode? Код, который у меня есть, печатает весь буфер, который считывается, а затем разбивает каждый на маркеры и помечает их в соответствии с ними.

1)в этот момент я снова пытаюсь вытащить определения из препроцессора и Лекса? Что должно быть в файле lex.h или в файле def, как у доктора Доббса?

2)я называю этот знак.h и treenode.h и начать пытаться сопоставить их?

3)делаю ли я таблицу символов на этом этапе?

Там должна быть какая-то добрая душа, которая поможет мне соединить точки. Лол.

Что я уже пробовал:

.

Patrice T

Этот код не является C.

Rick York

Я думаю, что он хочет написать парсер на языке Си.

Mohibur Rashid

c не имеет типа переменной bool

RavenLee

Что ты имеешь в виду? Код, кажется, работает нормально, без ошибок.

Mohibur Rashid

Как называется ваш файл? с расширением, пожалуйста. В любом случае, быстрый тест для вас

mohibur.rashid@pcname /cygdrive/c/Users/mohibur.rashid
$ echo -e '#include <stdio.h>\n int main() {\n\tbool b;\n\tb=true;\n\tprintf("%d\\n", b);\n\treturn 0;\n}' > x.c

mohibur.rashid@pcname /cygdrive/c/Users/mohibur.rashid
$ gcc x.c
x.c: In function ‘main’:
x.c:3:2: error: unknown type name ‘bool’
  bool b;
  ^~~~
x.c:4:4: error: ‘true’ undeclared (first use in this function)
  b=true;
    ^~~~
x.c:4:4: note: each undeclared identifier is reported only once for each function it appears in

RavenLee

Я понятия не имею об этом коде БАД. Все прекрасно работает в windows и Visual studio. Просто здесь, чтобы попытаться выяснить связи между файлами лексики и синтаксического анализа и деревом AST.

2 Ответов

Рейтинг:
2

Patrice T

Название этих программ - "компилятор".
Написание компилятора - это не для начинающих, это продвинутая тема.
если вы хотите узнать больше о компиляторах, я рекомендую книгу дракона:
Книга Дракона - Википедия[^]
Компиляторы: принципы, методы и инструменты - Википедия[^]


RavenLee

Давай, братан, я сам все сделаю, просто у меня проблемы с пониманием связей. Не запрашивая код, а просто шаги и понимание связывания. У меня уже есть несколько книг по компиляции, но они действительно не указывают на связь.

Рейтинг:
0

KarstenK

Вы можете использовать эту функцию функции strtok для разбора в с.


KarstenK

вы должны прочитать документацию для получения подробной информации об использовании strtok. Вы можете вспомнить strtok с последним результатом, чтобы получить следующий токен. Обычно в цикле while...

RavenLee

Эта часть у меня записана. Результаты консоли получают подстроки и говорят мне, если это delim, sep, ключевое слово. И т.д. Как я могу использовать эту информацию, это то, что я бы назвал синтаксическим анализом? Каков процесс получения дерева и начала проверки этих маркеров на соответствие этому дереву?