diff --git a/docs/tutorial/LangImpl2.rst b/docs/tutorial/LangImpl2.rst index dab60172b988..f01e3f90f20d 100644 --- a/docs/tutorial/LangImpl2.rst +++ b/docs/tutorial/LangImpl2.rst @@ -176,17 +176,17 @@ be parsed. .. code-block:: c++ - /// Error* - These are little helper functions for error handling. - std::unique_ptr Error(const char *Str) { - fprintf(stderr, "Error: %s\n", Str); + /// LogError* - These are little helper functions for error handling. + std::unique_ptr LogError(const char *Str) { + fprintf(stderr, "LogError: %s\n", Str); return nullptr; } - std::unique_ptr ErrorP(const char *Str) { - Error(Str); + std::unique_ptr LogErrorP(const char *Str) { + LogError(Str); return nullptr; } -The ``Error`` routines are simple helper routines that our parser will +The ``LogError`` routines are simple helper routines that our parser will use to handle errors. The error recovery in our parser will not be the best and is not particular user-friendly, but it will be enough for our tutorial. These routines make it easier to handle errors in routines @@ -233,7 +233,7 @@ the parenthesis operator is defined like this: return nullptr; if (CurTok != ')') - return Error("expected ')'"); + return LogError("expected ')'"); getNextToken(); // eat ). return V; } @@ -241,7 +241,7 @@ the parenthesis operator is defined like this: This function illustrates a number of interesting things about the parser: -1) It shows how we use the Error routines. When called, this function +1) It shows how we use the LogError routines. When called, this function expects that the current token is a '(' token, but after parsing the subexpression, it is possible that there is no ')' waiting. For example, if the user types in "(4 x" instead of "(4)", the parser should emit an @@ -288,7 +288,7 @@ function calls: break; if (CurTok != ',') - return Error("Expected ')' or ',' in argument list"); + return LogError("Expected ')' or ',' in argument list"); getNextToken(); } } @@ -324,7 +324,7 @@ primary expression, we need to determine what sort of expression it is: static std::unique_ptr ParsePrimary() { switch (CurTok) { default: - return Error("unknown token when expecting an expression"); + return LogError("unknown token when expecting an expression"); case tok_identifier: return ParseIdentifierExpr(); case tok_number: @@ -571,20 +571,20 @@ expressions): /// ::= id '(' id* ')' static std::unique_ptr ParsePrototype() { if (CurTok != tok_identifier) - return ErrorP("Expected function name in prototype"); + return LogErrorP("Expected function name in prototype"); std::string FnName = IdentifierStr; getNextToken(); if (CurTok != '(') - return ErrorP("Expected '(' in prototype"); + return LogErrorP("Expected '(' in prototype"); // Read the list of argument names. std::vector ArgNames; while (getNextToken() == tok_identifier) ArgNames.push_back(IdentifierStr); if (CurTok != ')') - return ErrorP("Expected ')' in prototype"); + return LogErrorP("Expected ')' in prototype"); // success. getNextToken(); // eat ')'. diff --git a/docs/tutorial/LangImpl3.rst b/docs/tutorial/LangImpl3.rst index 83ad35f14aee..89ecee9d729a 100644 --- a/docs/tutorial/LangImpl3.rst +++ b/docs/tutorial/LangImpl3.rst @@ -67,7 +67,7 @@ way to model this. Again, this tutorial won't dwell on good software engineering practices: for our purposes, adding a virtual method is simplest. -The second thing we want is an "Error" method like we used for the +The second thing we want is an "LogError" method like we used for the parser, which will be used to report errors found during code generation (for example, use of an undeclared parameter): @@ -77,8 +77,8 @@ parser, which will be used to report errors found during code generation static IRBuilder<> Builder(getGlobalContext()); static std::map NamedValues; - Value *ErrorV(const char *Str) { - Error(Str); + Value *LogErrorV(const char *Str) { + LogError(Str); return nullptr; } @@ -133,7 +133,7 @@ are all uniqued together and shared. For this reason, the API uses the // Look this variable up in the function. Value *V = NamedValues[Name]; if (!V) - ErrorV("Unknown variable name"); + LogErrorV("Unknown variable name"); return V; } @@ -168,7 +168,7 @@ variables `_. return Builder.CreateUIToFP(L, Type::getDoubleTy(getGlobalContext()), "booltmp"); default: - return ErrorV("invalid binary operator"); + return LogErrorV("invalid binary operator"); } } @@ -214,11 +214,11 @@ would return 0.0 and -1.0, depending on the input value. // Look up the name in the global module table. Function *CalleeF = TheModule->getFunction(Callee); if (!CalleeF) - return ErrorV("Unknown function referenced"); + return LogErrorV("Unknown function referenced"); // If argument mismatch error. if (CalleeF->arg_size() != Args.size()) - return ErrorV("Incorrect # arguments passed"); + return LogErrorV("Incorrect # arguments passed"); std::vector ArgsV; for (unsigned i = 0, e = Args.size(); i != e; ++i) { @@ -328,7 +328,7 @@ codegen and attach a function body. return nullptr; if (!TheFunction->empty()) - return (Function*)ErrorV("Function cannot be redefined."); + return (Function*)LogErrorV("Function cannot be redefined."); For function definitions, we start by searching TheModule's symbol table for an diff --git a/docs/tutorial/LangImpl5.rst b/docs/tutorial/LangImpl5.rst index d916f92bf99e..e4dc8ab7d854 100644 --- a/docs/tutorial/LangImpl5.rst +++ b/docs/tutorial/LangImpl5.rst @@ -127,7 +127,7 @@ First we define a new parsing function: return nullptr; if (CurTok != tok_then) - return Error("expected then"); + return LogError("expected then"); getNextToken(); // eat the then auto Then = ParseExpression(); @@ -135,7 +135,7 @@ First we define a new parsing function: return nullptr; if (CurTok != tok_else) - return Error("expected else"); + return LogError("expected else"); getNextToken(); @@ -154,7 +154,7 @@ Next we hook it up as a primary expression: static std::unique_ptr ParsePrimary() { switch (CurTok) { default: - return Error("unknown token when expecting an expression"); + return LogError("unknown token when expecting an expression"); case tok_identifier: return ParseIdentifierExpr(); case tok_number: @@ -518,13 +518,13 @@ value to null in the AST node: getNextToken(); // eat the for. if (CurTok != tok_identifier) - return Error("expected identifier after for"); + return LogError("expected identifier after for"); std::string IdName = IdentifierStr; getNextToken(); // eat identifier. if (CurTok != '=') - return Error("expected '=' after for"); + return LogError("expected '=' after for"); getNextToken(); // eat '='. @@ -532,7 +532,7 @@ value to null in the AST node: if (!Start) return nullptr; if (CurTok != ',') - return Error("expected ',' after for start value"); + return LogError("expected ',' after for start value"); getNextToken(); auto End = ParseExpression(); @@ -549,7 +549,7 @@ value to null in the AST node: } if (CurTok != tok_in) - return Error("expected 'in' after for"); + return LogError("expected 'in' after for"); getNextToken(); // eat 'in'. auto Body = ParseExpression(); diff --git a/examples/Kaleidoscope/Chapter2/toy.cpp b/examples/Kaleidoscope/Chapter2/toy.cpp index 69f359961293..24cb424c9856 100644 --- a/examples/Kaleidoscope/Chapter2/toy.cpp +++ b/examples/Kaleidoscope/Chapter2/toy.cpp @@ -187,13 +187,13 @@ static int GetTokPrecedence() { return TokPrec; } -/// Error* - These are little helper functions for error handling. -std::unique_ptr Error(const char *Str) { +/// LogError* - These are little helper functions for error handling. +std::unique_ptr LogError(const char *Str) { fprintf(stderr, "Error: %s\n", Str); return nullptr; } -std::unique_ptr ErrorP(const char *Str) { - Error(Str); +std::unique_ptr LogErrorP(const char *Str) { + LogError(Str); return nullptr; } @@ -214,7 +214,7 @@ static std::unique_ptr ParseParenExpr() { return nullptr; if (CurTok != ')') - return Error("expected ')'"); + return LogError("expected ')'"); getNextToken(); // eat ). return V; } @@ -244,7 +244,7 @@ static std::unique_ptr ParseIdentifierExpr() { break; if (CurTok != ',') - return Error("Expected ')' or ',' in argument list"); + return LogError("Expected ')' or ',' in argument list"); getNextToken(); } } @@ -262,7 +262,7 @@ static std::unique_ptr ParseIdentifierExpr() { static std::unique_ptr ParsePrimary() { switch (CurTok) { default: - return Error("unknown token when expecting an expression"); + return LogError("unknown token when expecting an expression"); case tok_identifier: return ParseIdentifierExpr(); case tok_number: @@ -324,19 +324,19 @@ static std::unique_ptr ParseExpression() { /// ::= id '(' id* ')' static std::unique_ptr ParsePrototype() { if (CurTok != tok_identifier) - return ErrorP("Expected function name in prototype"); + return LogErrorP("Expected function name in prototype"); std::string FnName = IdentifierStr; getNextToken(); if (CurTok != '(') - return ErrorP("Expected '(' in prototype"); + return LogErrorP("Expected '(' in prototype"); std::vector ArgNames; while (getNextToken() == tok_identifier) ArgNames.push_back(IdentifierStr); if (CurTok != ')') - return ErrorP("Expected ')' in prototype"); + return LogErrorP("Expected ')' in prototype"); // success. getNextToken(); // eat ')'. diff --git a/examples/Kaleidoscope/Chapter3/toy.cpp b/examples/Kaleidoscope/Chapter3/toy.cpp index 05697ea70a49..8c5252312a7e 100644 --- a/examples/Kaleidoscope/Chapter3/toy.cpp +++ b/examples/Kaleidoscope/Chapter3/toy.cpp @@ -189,14 +189,14 @@ static int GetTokPrecedence() { return TokPrec; } -/// Error* - These are little helper functions for error handling. -std::unique_ptr Error(const char *Str) { +/// LogError* - These are little helper functions for error handling. +std::unique_ptr LogError(const char *Str) { fprintf(stderr, "Error: %s\n", Str); return nullptr; } -std::unique_ptr ErrorP(const char *Str) { - Error(Str); +std::unique_ptr LogErrorP(const char *Str) { + LogError(Str); return nullptr; } @@ -217,7 +217,7 @@ static std::unique_ptr ParseParenExpr() { return nullptr; if (CurTok != ')') - return Error("expected ')'"); + return LogError("expected ')'"); getNextToken(); // eat ). return V; } @@ -247,7 +247,7 @@ static std::unique_ptr ParseIdentifierExpr() { break; if (CurTok != ',') - return Error("Expected ')' or ',' in argument list"); + return LogError("Expected ')' or ',' in argument list"); getNextToken(); } } @@ -265,7 +265,7 @@ static std::unique_ptr ParseIdentifierExpr() { static std::unique_ptr ParsePrimary() { switch (CurTok) { default: - return Error("unknown token when expecting an expression"); + return LogError("unknown token when expecting an expression"); case tok_identifier: return ParseIdentifierExpr(); case tok_number: @@ -327,19 +327,19 @@ static std::unique_ptr ParseExpression() { /// ::= id '(' id* ')' static std::unique_ptr ParsePrototype() { if (CurTok != tok_identifier) - return ErrorP("Expected function name in prototype"); + return LogErrorP("Expected function name in prototype"); std::string FnName = IdentifierStr; getNextToken(); if (CurTok != '(') - return ErrorP("Expected '(' in prototype"); + return LogErrorP("Expected '(' in prototype"); std::vector ArgNames; while (getNextToken() == tok_identifier) ArgNames.push_back(IdentifierStr); if (CurTok != ')') - return ErrorP("Expected ')' in prototype"); + return LogErrorP("Expected ')' in prototype"); // success. getNextToken(); // eat ')'. @@ -384,8 +384,8 @@ static std::unique_ptr TheModule; static IRBuilder<> Builder(getGlobalContext()); static std::map NamedValues; -Value *ErrorV(const char *Str) { - Error(Str); +Value *LogErrorV(const char *Str) { + LogError(Str); return nullptr; } @@ -397,7 +397,7 @@ Value *VariableExprAST::codegen() { // Look this variable up in the function. Value *V = NamedValues[Name]; if (!V) - return ErrorV("Unknown variable name"); + return LogErrorV("Unknown variable name"); return V; } @@ -420,7 +420,7 @@ Value *BinaryExprAST::codegen() { return Builder.CreateUIToFP(L, Type::getDoubleTy(getGlobalContext()), "booltmp"); default: - return ErrorV("invalid binary operator"); + return LogErrorV("invalid binary operator"); } } @@ -428,11 +428,11 @@ Value *CallExprAST::codegen() { // Look up the name in the global module table. Function *CalleeF = TheModule->getFunction(Callee); if (!CalleeF) - return ErrorV("Unknown function referenced"); + return LogErrorV("Unknown function referenced"); // If argument mismatch error. if (CalleeF->arg_size() != Args.size()) - return ErrorV("Incorrect # arguments passed"); + return LogErrorV("Incorrect # arguments passed"); std::vector ArgsV; for (unsigned i = 0, e = Args.size(); i != e; ++i) { diff --git a/examples/Kaleidoscope/Chapter4/toy.cpp b/examples/Kaleidoscope/Chapter4/toy.cpp index e9fc5a05fb00..4b5b1585a3d4 100644 --- a/examples/Kaleidoscope/Chapter4/toy.cpp +++ b/examples/Kaleidoscope/Chapter4/toy.cpp @@ -196,14 +196,14 @@ static int GetTokPrecedence() { return TokPrec; } -/// Error* - These are little helper functions for error handling. -std::unique_ptr Error(const char *Str) { +/// LogError* - These are little helper functions for error handling. +std::unique_ptr LogError(const char *Str) { fprintf(stderr, "Error: %s\n", Str); return nullptr; } -std::unique_ptr ErrorP(const char *Str) { - Error(Str); +std::unique_ptr LogErrorP(const char *Str) { + LogError(Str); return nullptr; } @@ -224,7 +224,7 @@ static std::unique_ptr ParseParenExpr() { return nullptr; if (CurTok != ')') - return Error("expected ')'"); + return LogError("expected ')'"); getNextToken(); // eat ). return V; } @@ -254,7 +254,7 @@ static std::unique_ptr ParseIdentifierExpr() { break; if (CurTok != ',') - return Error("Expected ')' or ',' in argument list"); + return LogError("Expected ')' or ',' in argument list"); getNextToken(); } } @@ -272,7 +272,7 @@ static std::unique_ptr ParseIdentifierExpr() { static std::unique_ptr ParsePrimary() { switch (CurTok) { default: - return Error("unknown token when expecting an expression"); + return LogError("unknown token when expecting an expression"); case tok_identifier: return ParseIdentifierExpr(); case tok_number: @@ -334,19 +334,19 @@ static std::unique_ptr ParseExpression() { /// ::= id '(' id* ')' static std::unique_ptr ParsePrototype() { if (CurTok != tok_identifier) - return ErrorP("Expected function name in prototype"); + return LogErrorP("Expected function name in prototype"); std::string FnName = IdentifierStr; getNextToken(); if (CurTok != '(') - return ErrorP("Expected '(' in prototype"); + return LogErrorP("Expected '(' in prototype"); std::vector ArgNames; while (getNextToken() == tok_identifier) ArgNames.push_back(IdentifierStr); if (CurTok != ')') - return ErrorP("Expected ')' in prototype"); + return LogErrorP("Expected ')' in prototype"); // success. getNextToken(); // eat ')'. @@ -394,8 +394,8 @@ static std::unique_ptr TheFPM; static std::unique_ptr TheJIT; static std::map> FunctionProtos; -Value *ErrorV(const char *Str) { - Error(Str); +Value *LogErrorV(const char *Str) { + LogError(Str); return nullptr; } @@ -422,7 +422,7 @@ Value *VariableExprAST::codegen() { // Look this variable up in the function. Value *V = NamedValues[Name]; if (!V) - return ErrorV("Unknown variable name"); + return LogErrorV("Unknown variable name"); return V; } @@ -445,7 +445,7 @@ Value *BinaryExprAST::codegen() { return Builder.CreateUIToFP(L, Type::getDoubleTy(getGlobalContext()), "booltmp"); default: - return ErrorV("invalid binary operator"); + return LogErrorV("invalid binary operator"); } } @@ -453,11 +453,11 @@ Value *CallExprAST::codegen() { // Look up the name in the global module table. Function *CalleeF = getFunction(Callee); if (!CalleeF) - return ErrorV("Unknown function referenced"); + return LogErrorV("Unknown function referenced"); // If argument mismatch error. if (CalleeF->arg_size() != Args.size()) - return ErrorV("Incorrect # arguments passed"); + return LogErrorV("Incorrect # arguments passed"); std::vector ArgsV; for (unsigned i = 0, e = Args.size(); i != e; ++i) { diff --git a/examples/Kaleidoscope/Chapter5/toy.cpp b/examples/Kaleidoscope/Chapter5/toy.cpp index afcb28ae247e..d54c66962665 100644 --- a/examples/Kaleidoscope/Chapter5/toy.cpp +++ b/examples/Kaleidoscope/Chapter5/toy.cpp @@ -238,14 +238,14 @@ static int GetTokPrecedence() { return TokPrec; } -/// Error* - These are little helper functions for error handling. -std::unique_ptr Error(const char *Str) { +/// LogError* - These are little helper functions for error handling. +std::unique_ptr LogError(const char *Str) { fprintf(stderr, "Error: %s\n", Str); return nullptr; } -std::unique_ptr ErrorP(const char *Str) { - Error(Str); +std::unique_ptr LogErrorP(const char *Str) { + LogError(Str); return nullptr; } @@ -266,7 +266,7 @@ static std::unique_ptr ParseParenExpr() { return nullptr; if (CurTok != ')') - return Error("expected ')'"); + return LogError("expected ')'"); getNextToken(); // eat ). return V; } @@ -296,7 +296,7 @@ static std::unique_ptr ParseIdentifierExpr() { break; if (CurTok != ',') - return Error("Expected ')' or ',' in argument list"); + return LogError("Expected ')' or ',' in argument list"); getNextToken(); } } @@ -317,7 +317,7 @@ static std::unique_ptr ParseIfExpr() { return nullptr; if (CurTok != tok_then) - return Error("expected then"); + return LogError("expected then"); getNextToken(); // eat the then auto Then = ParseExpression(); @@ -325,7 +325,7 @@ static std::unique_ptr ParseIfExpr() { return nullptr; if (CurTok != tok_else) - return Error("expected else"); + return LogError("expected else"); getNextToken(); @@ -342,20 +342,20 @@ static std::unique_ptr ParseForExpr() { getNextToken(); // eat the for. if (CurTok != tok_identifier) - return Error("expected identifier after for"); + return LogError("expected identifier after for"); std::string IdName = IdentifierStr; getNextToken(); // eat identifier. if (CurTok != '=') - return Error("expected '=' after for"); + return LogError("expected '=' after for"); getNextToken(); // eat '='. auto Start = ParseExpression(); if (!Start) return nullptr; if (CurTok != ',') - return Error("expected ',' after for start value"); + return LogError("expected ',' after for start value"); getNextToken(); auto End = ParseExpression(); @@ -372,7 +372,7 @@ static std::unique_ptr ParseForExpr() { } if (CurTok != tok_in) - return Error("expected 'in' after for"); + return LogError("expected 'in' after for"); getNextToken(); // eat 'in'. auto Body = ParseExpression(); @@ -392,7 +392,7 @@ static std::unique_ptr ParseForExpr() { static std::unique_ptr ParsePrimary() { switch (CurTok) { default: - return Error("unknown token when expecting an expression"); + return LogError("unknown token when expecting an expression"); case tok_identifier: return ParseIdentifierExpr(); case tok_number: @@ -458,19 +458,19 @@ static std::unique_ptr ParseExpression() { /// ::= id '(' id* ')' static std::unique_ptr ParsePrototype() { if (CurTok != tok_identifier) - return ErrorP("Expected function name in prototype"); + return LogErrorP("Expected function name in prototype"); std::string FnName = IdentifierStr; getNextToken(); if (CurTok != '(') - return ErrorP("Expected '(' in prototype"); + return LogErrorP("Expected '(' in prototype"); std::vector ArgNames; while (getNextToken() == tok_identifier) ArgNames.push_back(IdentifierStr); if (CurTok != ')') - return ErrorP("Expected ')' in prototype"); + return LogErrorP("Expected ')' in prototype"); // success. getNextToken(); // eat ')'. @@ -518,8 +518,8 @@ static std::unique_ptr TheFPM; static std::unique_ptr TheJIT; static std::map> FunctionProtos; -Value *ErrorV(const char *Str) { - Error(Str); +Value *LogErrorV(const char *Str) { + LogError(Str); return nullptr; } @@ -546,7 +546,7 @@ Value *VariableExprAST::codegen() { // Look this variable up in the function. Value *V = NamedValues[Name]; if (!V) - return ErrorV("Unknown variable name"); + return LogErrorV("Unknown variable name"); return V; } @@ -569,7 +569,7 @@ Value *BinaryExprAST::codegen() { return Builder.CreateUIToFP(L, Type::getDoubleTy(getGlobalContext()), "booltmp"); default: - return ErrorV("invalid binary operator"); + return LogErrorV("invalid binary operator"); } } @@ -577,11 +577,11 @@ Value *CallExprAST::codegen() { // Look up the name in the global module table. Function *CalleeF = getFunction(Callee); if (!CalleeF) - return ErrorV("Unknown function referenced"); + return LogErrorV("Unknown function referenced"); // If argument mismatch error. if (CalleeF->arg_size() != Args.size()) - return ErrorV("Incorrect # arguments passed"); + return LogErrorV("Incorrect # arguments passed"); std::vector ArgsV; for (unsigned i = 0, e = Args.size(); i != e; ++i) {