Skip to content

Commit d23660a

Browse files
committed
some refactoring
1 parent ca9a5ec commit d23660a

File tree

2 files changed

+39
-9
lines changed

2 files changed

+39
-9
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,3 +10,4 @@ build
1010
/examples/out
1111
/gradle.properties
1212
/dependencies
13+
*.swp

src/main/java/io/polypen/parse/Macro.java

Lines changed: 38 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -77,19 +77,48 @@ private static Token unwrap(HeadToken expr) {
7777
return expr.size() == 1 ? expr.getFirst() : expr;
7878
}
7979

80-
public static boolean isStrong(Token left, Token right) {
81-
if (left instanceof MultToken || right instanceof MultToken) {
82-
return true;
80+
enum Troolean {
81+
TRUE(true), FALSE(false), DONT_CARE(true),
82+
;
83+
final boolean b;
84+
85+
Troolean(boolean b) {
86+
this.b = b;
8387
}
84-
if (left instanceof PlusToken || right instanceof PlusToken) {
85-
return false;
88+
}
89+
90+
private static Troolean isRightStrong(Token right) {
91+
if (right instanceof MultToken) {
92+
return Troolean.TRUE;
8693
}
87-
if (left instanceof MinusToken) {
88-
return true;
94+
if (right instanceof PlusToken) {
95+
return Troolean.FALSE;
8996
}
9097
if (right instanceof MinusToken) {
91-
return false;
98+
return Troolean.FALSE;
99+
}
100+
return Troolean.DONT_CARE;
101+
}
102+
103+
private static Troolean isLeftStrong(Token left) {
104+
if (left instanceof MultToken) {
105+
return Troolean.TRUE;
106+
}
107+
if (left instanceof PlusToken) {
108+
return Troolean.FALSE;
109+
}
110+
if (left instanceof MinusToken) {
111+
return Troolean.TRUE;
112+
}
113+
return Troolean.DONT_CARE;
114+
}
115+
116+
public static boolean isStrong(Token left, Token right) {
117+
Troolean l = isLeftStrong(left);
118+
if (l != Troolean.DONT_CARE) {
119+
return l.b;
92120
}
93-
return true;
121+
Troolean r = isRightStrong(right);
122+
return r.b;
94123
}
95124
}

0 commit comments

Comments
 (0)