Fix ParserException not catched
This commit is contained in:
parent
d3769e5630
commit
966bd36dad
@ -11,7 +11,7 @@ Node parse(vector<Token> tokens) {
|
|||||||
reverse(tokens.begin(), tokens.end());
|
reverse(tokens.begin(), tokens.end());
|
||||||
|
|
||||||
if (tokens.size() == 0)
|
if (tokens.size() == 0)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
|
|
||||||
// At least 1 instruction
|
// At least 1 instruction
|
||||||
@ -47,7 +47,7 @@ ParseReturn parse_instruction(vector<Token> tokens) {
|
|||||||
tokens = ret.tokens;
|
tokens = ret.tokens;
|
||||||
|
|
||||||
if (tokens.back().type != TokenType::Semicolon)
|
if (tokens.back().type != TokenType::Semicolon)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
.node=ret.node,
|
.node=ret.node,
|
||||||
@ -60,7 +60,7 @@ ParseReturn parse_instruction(vector<Token> tokens) {
|
|||||||
tokens = ret.tokens;
|
tokens = ret.tokens;
|
||||||
|
|
||||||
if (tokens.size() < 1 || tokens.back().type != TokenType::Semicolon)
|
if (tokens.size() < 1 || tokens.back().type != TokenType::Semicolon)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
return {
|
return {
|
||||||
.node=ret.node,
|
.node=ret.node,
|
||||||
@ -69,7 +69,7 @@ ParseReturn parse_instruction(vector<Token> tokens) {
|
|||||||
}
|
}
|
||||||
catch (const ParseException& pex) { //* Instruction -> ;
|
catch (const ParseException& pex) { //* Instruction -> ;
|
||||||
if (tokens.size() < 1 || tokens.back().type != TokenType::Semicolon)
|
if (tokens.size() < 1 || tokens.back().type != TokenType::Semicolon)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
vector<Node> children;
|
vector<Node> children;
|
||||||
InnerNode epsilon_node = {
|
InnerNode epsilon_node = {
|
||||||
@ -90,18 +90,18 @@ ParseReturn parse_instruction(vector<Token> tokens) {
|
|||||||
ParseReturn parse_statement(vector<Token> tokens) {
|
ParseReturn parse_statement(vector<Token> tokens) {
|
||||||
(void)tokens;
|
(void)tokens;
|
||||||
// Aucune règle
|
// Aucune règle
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
}
|
}
|
||||||
|
|
||||||
ParseReturn parse_expr_statement(vector<Token> tokens) {
|
ParseReturn parse_expr_statement(vector<Token> tokens) {
|
||||||
if (tokens.size() < 1 || tokens.back().type != TokenType::Type)
|
if (tokens.size() < 1 || tokens.back().type != TokenType::Type)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
Token type = tokens.back();
|
Token type = tokens.back();
|
||||||
tokens.pop_back();
|
tokens.pop_back();
|
||||||
|
|
||||||
if (tokens.size() < 1 || tokens.back().type != TokenType::Identifier)
|
if (tokens.size() < 1 || tokens.back().type != TokenType::Identifier)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
Token identifier = tokens.back();
|
Token identifier = tokens.back();
|
||||||
tokens.pop_back();
|
tokens.pop_back();
|
||||||
@ -136,7 +136,7 @@ ParseReturn parse_expr_statement(vector<Token> tokens) {
|
|||||||
|
|
||||||
ParseReturn parse_expr(vector<Token> tokens) {
|
ParseReturn parse_expr(vector<Token> tokens) {
|
||||||
if (tokens.size() == 0)
|
if (tokens.size() == 0)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
// At least 1 T
|
// At least 1 T
|
||||||
ParseReturn ret = parse_t(tokens);
|
ParseReturn ret = parse_t(tokens);
|
||||||
@ -181,7 +181,7 @@ ParseReturn parse_expr(vector<Token> tokens) {
|
|||||||
|
|
||||||
ParseReturn parse_t(vector<Token> tokens) {
|
ParseReturn parse_t(vector<Token> tokens) {
|
||||||
if (tokens.size() == 0)
|
if (tokens.size() == 0)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
|
|
||||||
// At least 1 U
|
// At least 1 U
|
||||||
@ -268,7 +268,7 @@ ParseReturn parse_u(vector<Token> tokens) {
|
|||||||
|
|
||||||
ParseReturn parse_f(vector<Token> tokens) {
|
ParseReturn parse_f(vector<Token> tokens) {
|
||||||
if (tokens.size() == 0)
|
if (tokens.size() == 0)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
switch (tokens.back().type) {
|
switch (tokens.back().type) {
|
||||||
case TokenType::Int: { //* U -> Number
|
case TokenType::Int: { //* U -> Number
|
||||||
@ -285,7 +285,7 @@ ParseReturn parse_f(vector<Token> tokens) {
|
|||||||
tokens=ret.tokens;
|
tokens=ret.tokens;
|
||||||
|
|
||||||
if (tokens.size() < 1 || tokens.back().type != TokenType::RParenthese)
|
if (tokens.size() < 1 || tokens.back().type != TokenType::RParenthese)
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
|
|
||||||
tokens.pop_back();
|
tokens.pop_back();
|
||||||
|
|
||||||
@ -318,6 +318,6 @@ ParseReturn parse_f(vector<Token> tokens) {
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
throw new ParseException;
|
throw ParseException();
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user