aboutsummaryrefslogtreecommitdiff
path: root/lib/Parser/ParserFile.cc
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Parser/ParserFile.cc')
-rw-r--r--lib/Parser/ParserFile.cc15
1 files changed, 8 insertions, 7 deletions
diff --git a/lib/Parser/ParserFile.cc b/lib/Parser/ParserFile.cc
index 9aa4979..99a939f 100644
--- a/lib/Parser/ParserFile.cc
+++ b/lib/Parser/ParserFile.cc
@@ -1,3 +1,4 @@
+#include "cps/Diagnostics.h"
#include "cps/Parser.h"
#include "cps/FileAST.h"
#include <cstdio>
@@ -13,7 +14,7 @@ std::unique_ptr<StmtAST> Parser::ParseOpenFile() {
if (!FileName) return nullptr;
if (CurTok != tok_for) {
- fprintf(stderr, "error: Expected FOR after OPENFILE filename at line %d\n", Lex.getLine());
+ cps::sourceDiagnostic(Lex.getLine(), "error: Expected FOR after OPENFILE filename at line %d\n", Lex.getLine());
return nullptr;
}
getNextToken(); // eat FOR
@@ -24,11 +25,11 @@ std::unique_ptr<StmtAST> Parser::ParseOpenFile() {
case tok_write: Mode = FileMode::Write; break;
case tok_append: Mode = FileMode::Append; break;
case tok_random:
- fprintf(stderr, "error: File mode RANDOM is not implemented (text files only) at line %d\n",
+ cps::sourceDiagnostic(Lex.getLine(), "error: File mode RANDOM is not implemented (text files only) at line %d\n",
Lex.getLine());
return nullptr;
default:
- fprintf(stderr, "error: Expected file mode READ, WRITE or APPEND at line %d\n", Lex.getLine());
+ cps::sourceDiagnostic(Lex.getLine(), "error: Expected file mode READ, WRITE or APPEND at line %d\n", Lex.getLine());
return nullptr;
}
getNextToken(); // eat the mode keyword
@@ -45,13 +46,13 @@ std::unique_ptr<StmtAST> Parser::ParseReadFile() {
if (!FileName) return nullptr;
if (CurTok != ',') {
- fprintf(stderr, "error: Expected ',' after READFILE filename at line %d\n", Lex.getLine());
+ cps::sourceDiagnostic(Lex.getLine(), "error: Expected ',' after READFILE filename at line %d\n", Lex.getLine());
return nullptr;
}
getNextToken(); // eat ','
if (CurTok != tok_identifier) {
- fprintf(stderr, "error: Expected variable name after ',' in READFILE at line %d\n", Lex.getLine());
+ cps::sourceDiagnostic(Lex.getLine(), "error: Expected variable name after ',' in READFILE at line %d\n", Lex.getLine());
return nullptr;
}
std::string VarName = Lex.IdentifierStr;
@@ -61,7 +62,7 @@ std::unique_ptr<StmtAST> Parser::ParseReadFile() {
// Consume the whole designator so it cannot replay as statements.
std::vector<DesignatorAccess> Dummy;
ParseDesignatorSuffix(Dummy);
- fprintf(stderr, "error: READFILE target must be a plain STRING variable at line %d\n", Line);
+ cps::sourceDiagnostic(Lex.getLine(), "error: READFILE target must be a plain STRING variable at line %d\n", Line);
return nullptr;
}
@@ -77,7 +78,7 @@ std::unique_ptr<StmtAST> Parser::ParseWriteFile() {
if (!FileName) return nullptr;
if (CurTok != ',') {
- fprintf(stderr, "error: Expected ',' after WRITEFILE filename at line %d\n", Lex.getLine());
+ cps::sourceDiagnostic(Lex.getLine(), "error: Expected ',' after WRITEFILE filename at line %d\n", Lex.getLine());
return nullptr;
}
getNextToken(); // eat ','