1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import dopp;
- // Parser checks tokens for correct program
- //export void parse(Token[] tokens){
- export string parse(Token[] tokens){
- string result;
- 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;
- }
- }
- +/
- if(tokens[i].lexeme == "="){
- result ~= " " ~ tokens[i].lexeme ~ " "; // add whitespace before and after =
- }else{
- result ~= tokens[i].lexeme; // for just show all text
- }
-
- i++; // goto next token
- }
- return result;
- }
|