Skip to content

Commit

Permalink
feat(#2566): get rid of AtComposite in atoms
Browse files Browse the repository at this point in the history
  • Loading branch information
maxonfjvipon committed Oct 30, 2023
1 parent 4bcf573 commit d2a0cec
Show file tree
Hide file tree
Showing 34 changed files with 273 additions and 100 deletions.
1 change: 0 additions & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EObool$EOif.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
Expand Down
5 changes: 4 additions & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EObool$EOwhile.java
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,10 @@ public class EObool$EOwhile extends PhDefault {
rho -> {
Phi last = new Data.ToPhi(false);
long count = 0L;
while (new Param(rho).strong(Boolean.class)) {
while (true) {
if (!new Param(rho).strong(Boolean.class)) {
break;
}
new Dataized(last).take();
last = rho.attr("f").get().copy();
last.attr("ρ").put(rho);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
package EOorg.EOeolang;

import java.util.Arrays;
import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EObytes$EOxor.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.AtVararg;
import org.eolang.Attr;
import org.eolang.Bytes;
Expand Down
27 changes: 23 additions & 4 deletions eo-runtime/src/main/java/EOorg/EOeolang/EOcage.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,10 @@
*/
package EOorg.EOeolang;

import org.eolang.AtAtom;
import org.eolang.AtCage;
import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtOnce;
import org.eolang.AtSimple;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.PhDefault;
Expand Down Expand Up @@ -59,7 +58,27 @@ public EOcage(final Phi sigma) {
super(sigma);
this.add("enclosure", new AtCage());
this.add(Attr.LAMBDA, new AtLambda(this, rho -> rho.attr("enclosure").get()));
this.add("write", new AtOnce(new AtSimple(new EOcage.Write(this))));
this.add("write", new AtWrite(this));
}

/**
* Cage.write attribute.
* @since 0.33.0
*/
private static final class AtWrite extends AtAtom {

/**
* Ctor.
* @param cage The {@link EOcage} object
*/
AtWrite(final Phi cage) {
super(new EOcage.Write(cage));
}

@Override
public Attr copy(final Phi self) {
return new AtWrite(self);
}
}

/**
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EOerror.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.ExAbstract;
import org.eolang.ExFailure;
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EOfloat$EOdiv.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EOfloat$EOgt.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
Expand Down
61 changes: 51 additions & 10 deletions eo-runtime/src/main/java/EOorg/EOeolang/EOgoto.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,10 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtAtom;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Dataized;
import org.eolang.ExAbstract;
import org.eolang.PhDefault;
Expand Down Expand Up @@ -90,15 +92,54 @@ public EOgoto(final Phi sigma) {
* @since 0.17
*/
@XmirObject(oname = "goto.token")
private final class Token extends PhDefault {
private static final class Token extends PhDefault {
/**
* Ctor.
* @param sigma Sigma
*/
Token(final Phi sigma) {
super(sigma);
this.add("backward", new AtComposite(this, EOgoto.Backward::new));
this.add("forward", new AtComposite(this, EOgoto.Forward::new));
this.add("backward", new EOgoto.Token.AtBackward(this));
this.add("forward", new EOgoto.Token.AtForward(this));
}

/**
* Goto.token.forward attribute.
* @since 0.33.0
*/
private static final class AtForward extends AtAtom {

/**
* Ctor.
* @param token The {@link EOgoto.Token} object
*/
AtForward(final Phi token) {
super(new EOgoto.Forward(token));
}

@Override
public Attr copy(final Phi self) {
return new AtForward(self);
}
}

/**
* Goto.token.backward attribute.
* @since 0.33.0
*/
private static final class AtBackward extends AtAtom {
/**
* Ctor.
* @param token The {@link EOgoto.Token} object
*/
AtBackward(final Phi token) {
super(new EOgoto.Backward(token));
}

@Override
public Attr copy(final Phi self) {
return new AtBackward(self);
}
}
}

Expand All @@ -107,16 +148,16 @@ private final class Token extends PhDefault {
* @since 0.17
*/
@XmirObject(oname = "goto.token.backward")
private final class Backward extends PhDefault {
private static final class Backward extends PhDefault {
/**
* Ctor.
* @param sigma Sigma
*/
Backward(final Phi sigma) {
super(sigma);
this.add(
"φ",
new AtComposite(
Attr.LAMBDA,
new AtLambda(
this,
rho -> {
throw new EOgoto.BackwardException(
Expand All @@ -133,7 +174,7 @@ private final class Backward extends PhDefault {
* @since 0.17
*/
@XmirObject(oname = "goto.token.forward")
private final class Forward extends PhDefault {
private static final class Forward extends PhDefault {
/**
* Ctor.
* @param sigma Sigma
Expand All @@ -142,8 +183,8 @@ private final class Forward extends PhDefault {
super(sigma);
this.add("ret", new AtFree());
this.add(
"φ",
new AtComposite(
Attr.LAMBDA,
new AtLambda(
this,
rho -> {
throw new EOgoto.ForwardException(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,10 @@
package EOorg.EOeolang;

import java.util.Arrays;
import org.eolang.AtLambda;
import org.eolang.AtAtom;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
import org.eolang.PhDefault;
Expand All @@ -56,7 +58,7 @@ public class EOheap$EOpointer$EOblock extends PhDefault {
super(sigma);
this.add("len", new AtFree());
this.add("inverse", new AtFree());
this.add("write", new AtComposite(this, EOheap$EOpointer$EOblock.Write::new));
this.add("write", new AtWrite(this));
this.add(
Attr.LAMBDA,
new AtLambda(
Expand All @@ -78,12 +80,31 @@ public class EOheap$EOpointer$EOblock extends PhDefault {
);
}

/**
* Head.pointer.block.write attribute.
* @since 0.33.0
*/
private static final class AtWrite extends AtAtom {
/**
* Ctor.
* @param block The {@link EOheap$EOpointer$EOblock} object
*/
AtWrite(final Phi block) {
super(new EOheap$EOpointer$EOblock.Write(block));
}

@Override
public Attr copy(final Phi self) {
return new AtWrite(self);
}
}

/**
* Write block.
* @since 0.19
*/
@XmirObject(oname = "heap.pointer.block.write")
private final class Write extends PhDefault {
private static final class Write extends PhDefault {
/**
* Ctor.
* @param sigma Sigma
Expand All @@ -92,8 +113,8 @@ private final class Write extends PhDefault {
super(sigma);
this.add("x", new AtFree());
this.add(
"φ",
new AtComposite(
Attr.LAMBDA,
new AtLambda(
this,
rho -> {
final Phi block = rho.attr("σ").get();
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EOint$EOdiv.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.ExFailure;
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EOint$EOgt.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EOint$EOplus.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EOint$EOtimes.java
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@
*/
package EOorg.EOeolang;

import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
Expand Down
2 changes: 1 addition & 1 deletion eo-runtime/src/main/java/EOorg/EOeolang/EOio/EOstdout.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,8 @@
package EOorg.EOeolang.EOio;

import java.io.PrintStream;
import org.eolang.AtLambda;
import org.eolang.AtFree;
import org.eolang.AtLambda;
import org.eolang.Attr;
import org.eolang.Data;
import org.eolang.Param;
Expand Down
Loading

1 comment on commit d2a0cec

@0pdd
Copy link

@0pdd 0pdd commented on d2a0cec Oct 31, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Puzzle 2566-db3f6d6c discovered in eo-runtime/src/main/java/org/eolang/AtComposite.java) and submitted as #2568. Please, remember that the puzzle was not necessarily added in this particular commit. Maybe it was added earlier, but we discovered it only now.

Please sign in to comment.