-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
19 changed files
with
897 additions
and
28 deletions.
There are no files selected for viewing
46 changes: 46 additions & 0 deletions
46
src/main/java/dk/madsravn/interpreter/ast/ArrayLiteral.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
package dk.madsravn.interpreter.ast; | ||
|
||
import dk.madsravn.interpreter.tokens.Token; | ||
|
||
import java.lang.reflect.Array; | ||
import java.util.List; | ||
import java.util.stream.Collectors; | ||
|
||
public class ArrayLiteral implements IExpression { | ||
private Token token; | ||
private List<IExpression> elements; | ||
|
||
public ArrayLiteral(Token token, List<IExpression> elements) { | ||
this.token = token; | ||
this.elements = elements; | ||
} | ||
|
||
public int getElementsLength() { | ||
return elements.size(); | ||
} | ||
|
||
public List<IExpression> getElements() { | ||
return elements; | ||
} | ||
|
||
@Override | ||
public void expressionNode() {} | ||
|
||
@Override | ||
public String tokenLiteral() { | ||
return token.getLiteral(); | ||
} | ||
|
||
@Override | ||
public String string() { | ||
|
||
String elementsString = elements.stream().map(p -> p.string()).collect(Collectors.joining(", ")); | ||
StringBuilder sb = new StringBuilder(); | ||
sb.append("["); | ||
sb.append(elementsString); | ||
sb.append("]"); | ||
|
||
return sb.toString(); | ||
} | ||
|
||
} |
44 changes: 44 additions & 0 deletions
44
src/main/java/dk/madsravn/interpreter/ast/HashLiteral.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,44 @@ | ||
package dk.madsravn.interpreter.ast; | ||
|
||
import dk.madsravn.interpreter.tokens.Token; | ||
|
||
import java.util.Map; | ||
import java.util.stream.Collectors; | ||
|
||
public class HashLiteral implements IExpression { | ||
|
||
private Token token; | ||
private Map<IExpression, IExpression> pairs; | ||
|
||
public HashLiteral(Token token, Map<IExpression, IExpression> pairs) { | ||
this.token = token; | ||
this.pairs = pairs; | ||
} | ||
|
||
public Map<IExpression, IExpression> getPairs() { | ||
return pairs; | ||
} | ||
|
||
public int getPairsLength() { | ||
return pairs.size(); | ||
} | ||
|
||
@Override | ||
public void expressionNode() { } | ||
|
||
@Override | ||
public String tokenLiteral() { | ||
return token.getLiteral(); | ||
} | ||
|
||
@Override | ||
public String string() { | ||
StringBuilder sb = new StringBuilder(); | ||
String content = pairs.entrySet().stream().map(e -> e.getKey().string() + ": " + e.getValue().string()).collect(Collectors.joining(", ")); | ||
sb.append("{"); | ||
sb.append(content); | ||
sb.append("}"); | ||
|
||
return sb.toString(); | ||
} | ||
} |
43 changes: 43 additions & 0 deletions
43
src/main/java/dk/madsravn/interpreter/ast/IndexExpression.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
package dk.madsravn.interpreter.ast; | ||
|
||
import dk.madsravn.interpreter.tokens.Token; | ||
|
||
public class IndexExpression implements IExpression { | ||
private Token token; | ||
private IExpression left; | ||
private IExpression index; | ||
|
||
public IndexExpression(Token token, IExpression left, IExpression index) { | ||
this.token = token; | ||
this.left = left; | ||
this.index = index; | ||
} | ||
|
||
public IExpression getLeft() { | ||
return left; | ||
} | ||
|
||
public IExpression getIndex() { | ||
return index; | ||
} | ||
|
||
@Override | ||
public void expressionNode() { } | ||
|
||
@Override | ||
public String tokenLiteral() { | ||
return token.getLiteral(); | ||
} | ||
|
||
@Override | ||
public String string() { | ||
StringBuilder sb = new StringBuilder(); | ||
sb.append("("); | ||
sb.append(left.string()); | ||
sb.append("["); | ||
sb.append(index.string()); | ||
sb.append("])"); | ||
|
||
return sb.toString(); | ||
} | ||
} |
Oops, something went wrong.