Skip to content

Commit

Permalink
Merge pull request #714 from SamieJim/js/ir
Browse files Browse the repository at this point in the history
Added IR nodes and cases for ASetPattern and AUnionPattern.
  • Loading branch information
peterwvj authored Feb 26, 2020
2 parents 51351ae + b83f224 commit 87e8945
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 0 deletions.
2 changes: 2 additions & 0 deletions core/codegen/ir/src/main/resources/ir.ast
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,8 @@ IR {-> package='org.overture.codegen.ir'
| {string} [value]:java_String
| {tuple} [patterns]:IR.#pattern*
| {record} [typename]:java_String [patterns]:IR.#pattern* [type]:IR.#type
| {set} [patterns]:IR.#pattern*
| {union} [left]:IR.#pattern [right]:IR.#pattern
;

#bind {-> package='org.overture.codegen.ir.patterns'
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,10 @@
import org.overture.ast.patterns.AQuotePattern;
import org.overture.ast.patterns.ARealPattern;
import org.overture.ast.patterns.ARecordPattern;
import org.overture.ast.patterns.ASetPattern;
import org.overture.ast.patterns.AStringPattern;
import org.overture.ast.patterns.ATuplePattern;
import org.overture.ast.patterns.AUnionPattern;
import org.overture.ast.patterns.PPattern;
import org.overture.ast.types.PType;
import org.overture.codegen.ir.IRInfo;
Expand All @@ -47,8 +49,10 @@
import org.overture.codegen.ir.patterns.AQuotePatternIR;
import org.overture.codegen.ir.patterns.ARealPatternIR;
import org.overture.codegen.ir.patterns.ARecordPatternIR;
import org.overture.codegen.ir.patterns.ASetPatternIR;
import org.overture.codegen.ir.patterns.AStringPatternIR;
import org.overture.codegen.ir.patterns.ATuplePatternIR;
import org.overture.codegen.ir.patterns.AUnionPatternIR;

public class PatternVisitorIR extends AbstractVisitorIR<IRInfo, SPatternIR>
{
Expand Down Expand Up @@ -173,6 +177,36 @@ public SPatternIR caseATuplePattern(ATuplePattern node, IRInfo question)
return tuplePatternCg;
}

@Override
public SPatternIR caseASetPattern(ASetPattern node, IRInfo question)
throws AnalysisException {
ASetPatternIR setPatternCg = new ASetPatternIR();

for (PPattern currentPattern : node.getPlist()) {
SPatternIR patternCg = currentPattern.apply(question.getPatternVisitor(), question);

if (patternCg != null) {
setPatternCg.getPatterns().add(patternCg);
} else {
return null;
}
}

return setPatternCg;
}

@Override
public SPatternIR caseAUnionPattern(AUnionPattern node, IRInfo question)
throws AnalysisException {
AUnionPatternIR unionPatternCg = new AUnionPatternIR();
SPatternIR leftPatternCg = node.getLeft().apply(question.getPatternVisitor(), question);
SPatternIR rightPatternCg = node.getRight().apply(question.getPatternVisitor(), question);
unionPatternCg.setLeft(leftPatternCg);
unionPatternCg.setRight(rightPatternCg);

return unionPatternCg;
}

@Override
public SPatternIR caseARecordPattern(ARecordPattern node, IRInfo question)
throws AnalysisException
Expand Down

0 comments on commit 87e8945

Please sign in to comment.