Fixed up errors
This commit is contained in:
@@ -1,15 +1,40 @@
|
|||||||
#include "Error.h"
|
#include "Error.h"
|
||||||
|
|
||||||
shared_ptr<Error> Error::builderError(int line, int column, string message) {
|
shared_ptr<Error> Error::lexerError(int line, int column, string lexme) {
|
||||||
Error e = Error(ErrorKind::BUILDER_ERROR, line, column, {}, nullptr, {}, message);
|
return make_shared<Error>(
|
||||||
return nullptr;
|
ErrorKind::LEXER_ERROR,
|
||||||
|
line,
|
||||||
|
column,
|
||||||
|
lexme,
|
||||||
|
nullptr,
|
||||||
|
optional<TokenKind>(),
|
||||||
|
optional<string>()
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
Error::Error(int line, int column, string lexme) :
|
shared_ptr<Error> Error::parserError(shared_ptr<Token> actualToken, optional<TokenKind> expectedTokenKind, optional<string> message) {
|
||||||
kind(ErrorKind::LEXER_ERROR), line(line), column(column), lexme(lexme) { }
|
return make_shared<Error>(
|
||||||
|
ErrorKind::PARSER_ERROR,
|
||||||
|
0,
|
||||||
|
0,
|
||||||
|
optional<string>(),
|
||||||
|
actualToken,
|
||||||
|
expectedTokenKind,
|
||||||
|
message
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Error::Error(shared_ptr<Token> actualToken, optional<TokenKind> expectedTokenKind, optional<string> message) :
|
shared_ptr<Error> Error::builderError(int line, int column, string message) {
|
||||||
kind(ErrorKind::PARSER_ERROR), actualToken(actualToken), expectedTokenKind(expectedTokenKind), message(message) { }
|
return make_shared<Error>(
|
||||||
|
ErrorKind::BUILDER_ERROR,
|
||||||
|
line,
|
||||||
|
column,
|
||||||
|
optional<string>(),
|
||||||
|
nullptr,
|
||||||
|
optional<TokenKind>(),
|
||||||
|
message
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
Error::Error(ErrorKind kind, int line, int column, optional<string> lexme, shared_ptr<Token> actualToken, optional<TokenKind> expectedTokenKind, optional<string> message):
|
Error::Error(ErrorKind kind, int line, int column, optional<string> lexme, shared_ptr<Token> actualToken, optional<TokenKind> expectedTokenKind, optional<string> message):
|
||||||
kind(kind), line(line), column(column), lexme(lexme), actualToken(actualToken), expectedTokenKind(expectedTokenKind), message(message) { }
|
kind(kind), line(line), column(column), lexme(lexme), actualToken(actualToken), expectedTokenKind(expectedTokenKind), message(message) { }
|
||||||
|
|||||||
@@ -27,10 +27,10 @@ private:
|
|||||||
optional<string> message;
|
optional<string> message;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static shared_ptr<Error> lexerError(int line, int column, string lexme);
|
||||||
|
static shared_ptr<Error> parserError(shared_ptr<Token> actualToken, optional<TokenKind> expectedTokenKind, optional<string> message);
|
||||||
static shared_ptr<Error> builderError(int line, int column, string message);
|
static shared_ptr<Error> builderError(int line, int column, string message);
|
||||||
|
|
||||||
Error(int line, int column, string lexme);
|
|
||||||
Error(shared_ptr<Token> actualToken, optional<TokenKind> expectedTokenKind, optional<string> message);
|
|
||||||
Error(ErrorKind kind, int line, int column, optional<string> lexme, shared_ptr<Token> actualToken, optional<TokenKind> expectedTokenKind, optional<string> message);
|
Error(ErrorKind kind, int line, int column, optional<string> lexme, shared_ptr<Token> actualToken, optional<TokenKind> expectedTokenKind, optional<string> message);
|
||||||
|
|
||||||
ErrorKind getKind();
|
ErrorKind getKind();
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
#include "Lexer.h"
|
#include "Lexer.h"
|
||||||
|
|
||||||
#include "Token.h"
|
|
||||||
#include "Error.h"
|
#include "Error.h"
|
||||||
#include "Logger.h"
|
#include "Logger.h"
|
||||||
|
|
||||||
|
#include "Token.h"
|
||||||
|
|
||||||
Lexer::Lexer(string source):
|
Lexer::Lexer(string source):
|
||||||
source(source) { }
|
source(source) { }
|
||||||
|
|
||||||
@@ -506,5 +507,5 @@ void Lexer::markError() {
|
|||||||
} else {
|
} else {
|
||||||
lexme = "EOF";
|
lexme = "EOF";
|
||||||
}
|
}
|
||||||
errors.push_back(make_shared<Error>(currentLine, startColumn, lexme));
|
errors.push_back(Error::lexerError(currentLine, startColumn, lexme));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -655,5 +655,5 @@ void Parser::markError(optional<TokenKind> expectedTokenKind, optional<string> m
|
|||||||
while (!tryMatchingTokenKinds(safeKinds, false, true))
|
while (!tryMatchingTokenKinds(safeKinds, false, true))
|
||||||
currentIndex++;
|
currentIndex++;
|
||||||
|
|
||||||
errors.push_back(make_shared<Error>(actualToken, expectedTokenKind, message));
|
errors.push_back(Error::parserError(actualToken, expectedTokenKind, message));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user