| | |
| | | if (tokens[i].type != TokenType::StringDeclaration && tokens[i].type != TokenType::BooleanDeclaration && |
| | | tokens[i].type != TokenType::IntDeclaration && tokens[i].type != TokenType::DoubleDeclaration && |
| | | tokens[i].type != TokenType::RightParenthesis) { |
| | | THROW_UNEXPECTED_TOKEN_ERROR_HELPER(tokens[i], "variable declaration", file, line); |
| | | THROW_UNEXPECTED_TOKEN_ERROR_HELPER(tokens[i], "variable declaration: 'type $" + tokens[i].lexeme + "'", file, |
| | | line); |
| | | } |
| | | if (tokens[i].type != TokenType::RightParenthesis) { |
| | | const auto parameter_type = getVariableTypeFromTokenTypeDeclaration(tokens[i].type); |
| | |
| | | THROW_UNEXPECTED_TOKEN_ERROR_HELPER(tokens[i], "valid type identifier", file, line); |
| | | } |
| | | |
| | | if (parameter_type == Variables::Type::VT_FUNCTION) { |
| | | THROW_UNEXPECTED_TOKEN_ERROR_HELPER(tokens[i], "valid type identifier", file, line); |
| | | } |
| | | // if (parameter_type == Variables::Type::VT_FUNCTION) { |
| | | // THROW_UNEXPECTED_TOKEN_ERROR_HELPER(tokens[i], "valid type identifier", file, line); |
| | | // } |
| | | |
| | | if (parameter_type == Variables::Type::VT_NULL) { |
| | | THROW_UNEXPECTED_TOKEN_ERROR_HELPER(tokens[i], "valid type identifier", file, line); |
| | |
| | | static void getFunctionBody(const std::vector<Token> & tokens, std::size_t & i, std::size_t & start, |
| | | std::size_t & end) { |
| | | start = tokens[i].pos.end; |
| | | std::cout << "START Token: " << tokens[i].lexeme << " start pos: " << std::to_string(tokens[i].pos.start) |
| | | << " end pos: " << std::to_string(tokens[i].pos.end) << '\n'; |
| | | |
| | | if (i >= tokens.size() || tokens[i].type != TokenType::LeftCurlyBracket) { |
| | | THROW_UNEXPECTED_TOKEN_ERROR(tokens[i], "{"); |
| | | } |
| | |
| | | continue; |
| | | } |
| | | if (tokens[i].type == TokenType::EndOfFile) { |
| | | throw std::runtime_error("Unexpected end of file"); |
| | | THROW_UNEXPECTED_END_OF_FILE_ERROR(tokens[i]); |
| | | break; |
| | | } |
| | | i++; |
| | | } |
| | | end = tokens[i].pos.start - 1; |
| | | |
| | | std::cout << "END Token: " << tokens[i].lexeme << " start pos: " << std::to_string(tokens[i].pos.start) |
| | | << " end pos: " << std::to_string(tokens[i].pos.end) << '\n'; |
| | | |
| | | if (i >= tokens.size() || tokens[i].type != TokenType::RightCurlyBracket) { |
| | | THROW_UNEXPECTED_TOKEN_ERROR(tokens[i], "}"); |