Пишу компилятор для игрушечного ОО-языка. Я пишу это на C, используя Flex и Bison.
Рассмотрим следующий синтаксис:
class MyClass {
int m_n;
void MyFunc(int b) {
m_n = 5;
m_p = b;
}
int m_p;
}
Мой текущий код будет жаловаться на то, что в MyFunc m_p еще не объявлен (по уважительной причине). Итак, я пришел к выводу, что мне нужна техника многопроходного разбора — что-то вроде:
1-й проход - обработка объявлений переменных
2-й проход - определение функции обработки
Во-первых - это лучший способ решить проблему? Есть ли другие методы, которые я должен изучить? Во-вторых, если это благоприятное решение, могу ли я реализовать его с помощью реентерабельного лексера/парсера?
Спасибо