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 } }