class Syntax { /** * Checks and validates whether the code complies with the syntax/grammar rules */ fun check(statements: MutableList>>): Boolean { statements.forEachIndexed { i, statement -> removePadding(statement) mergeStrings(statement) } return true } /** * Removed empty characters from the start and end of statements */ private fun removePadding(statement: MutableList>) { while (statement[0].second == TokenType.Empty) { statement.removeAt(0) } while (statement[statement.size - 1].second == TokenType.Empty) { statement.removeAt(statement.size - 1) } } /** * Merges classified strings to constants */ private fun mergeStrings(statement: MutableList>) { var stringing = false statement.forEachIndexed { i, token -> if (token.second == TokenType.Classifier) stringing = !stringing if (stringing) statement[i] = token.first to TokenType.Constant } } }