


Программирование
+2Синтаксический анализатор С++ помогите, пж
помогите, пж
программа синтаксического анализатора не проходит тест
int main ()
{
int d;
d = 3;
}
На выводе выходит ошибка присвоение значения неизвестной переменной d, но она инициализирована
Как сделать так, чтобы программа научилась хранить переменные?
void SyntaxAnalyzer::ParseStatement() {
if (currentToken == typeID) {
char name[100];
strcpy(name, currentLex);
GetNextToken();
if (!sem->semanticCheckVariable(name)) {
Error("Unknown variable");
return;
}
}
bool TSemantic::semanticCheckVariable(const char* name) { //проверка, что для переменной ввели тип данных
if (!scopes.empty()) {
auto& currentScope = scopes.top ();
return currentScope.count(name) > 0;
}
return false;
}
По дате
По рейтингу
1234567891011121314151617181920212223242526272829303132333435363738
void TSemantic::addVariable(const char* name, const char* type) {
if (!scopes.empty()) {
auto& currentScope = scopes.top();
currentScope[name] = type;
}
}
void SyntaxAnalyzer::ParseStatement() {
if (currentToken == typeInt || currentToken == typeFloat) {
char type[100];
strcpy(type, currentLex);
GetNextToken();
if (currentToken == typeID) {
char name[100];
strcpy(name, currentLex);
GetNextToken();
sem->addVariable(name, type);
if (currentToken == typeSemicolon) {
GetNextToken();
} else {
Error("Expected semicolon");
}
}
}
else if (currentToken == typeID) {
char name[100];
strcpy(name, currentLex);
GetNextToken();
if (!sem->semanticCheckVariable(name)) {
Error("Unknown variable");
return;
}
}
}
Больше по теме