import dopp;

// Parser checks tokens for correct program
export void parse(Token[] tokens){
  auto i = 0;
  while(i < tokens.length){
    if(tokens[i].type == TokenType.Keyword && tokens[i].lexeme == "if"){
      if(i + 2 < tokens.length && tokens[i+1].type == TokenType.Symbol && tokens[i+1].lexeme == "("){ // if begins
        writeln("Found 'if' statement");
        i++; // goto (
        // here parsing inside ( .. ) can be extended
        while(i < tokens.length && tokens[i].lexeme != ")"){
          i++;
        }
        
        if(i < tokens.length && tokens[i].lexeme == ")"){
          i++; // goto )
          
          if(i < tokens.length && tokens[i].lexeme == "{"){ // block of code
            writeln("Opening block for if statement");
            
            // here parsing inside { .. } can be extended
            while(i < tokens.length && tokens[i].lexeme != "}"){
              i++;
            }
            
            if(i < tokens.length && tokens[i].lexeme == "}"){
              writeln("Closing block for if statement");
              i++;
            }else{
              writeln("Error: Missing closing brace for if block");
              return;
            }
          
          }else{
            writeln("Error: Expected opening brace after if condition");
            return;
          }
        
        }else{
          writeln("Error: Missing closing parenthesis for if condition");
          return;
        }
      
      }else{
        writeln("Error: Invalid if statement syntax");
        return;
      }
    }
    i++; // goto next token
  }
}