JavaPatternMatching/src/de/dhbwstuttgart/parser/SyntaxTreeGenerator/SyntacticSugar.java

36 lines
1.2 KiB
Java
Raw Normal View History

2017-03-29 15:28:29 +00:00
package de.dhbwstuttgart.parser.SyntaxTreeGenerator;
import de.dhbwstuttgart.parser.NullToken;
import de.dhbwstuttgart.syntaxtree.statement.*;
2017-03-29 15:28:29 +00:00
import java.util.List;
public class SyntacticSugar {
public static List<Statement> addTrailingReturn(List<Statement> statements){
if(statements.size()!=0) {
Statement lastStmt = statements.get(statements.size() - 1);
if (lastStmt instanceof Return) return statements;
if (lastStmt instanceof WhileStmt) {
2017-08-17 13:08:30 +00:00
//TODO
//if (hasReturn(((WhileStmt) lastStmt).loopBlock)) return statements;
} else if (lastStmt instanceof IfStmt) {
if (hasReturn(((IfStmt) lastStmt).then_block)
&& hasReturn(((IfStmt) lastStmt).else_block)) return statements;
} else if (lastStmt instanceof ForStmt) {
if (hasReturn(((ForStmt) lastStmt).body_Loop_block)) return statements;
} else {
}
}
statements.add(new ReturnVoid(new NullToken()));
2017-03-29 15:28:29 +00:00
return statements;
}
private static boolean hasReturn(Block block){
for(Statement s : block.getStatements())
if(s instanceof Return)return true;
return false;
}
2017-03-29 15:28:29 +00:00
}