File tree 2 files changed +39
-9
lines changed
src/main/java/io/polypen/parse
2 files changed +39
-9
lines changed Original file line number Diff line number Diff line change 10
10
/examples /out
11
11
/gradle.properties
12
12
/dependencies
13
+ * .swp
Original file line number Diff line number Diff line change @@ -77,19 +77,48 @@ private static Token unwrap(HeadToken expr) {
77
77
return expr .size () == 1 ? expr .getFirst () : expr ;
78
78
}
79
79
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 ;
83
87
}
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 ;
86
93
}
87
- if (left instanceof MinusToken ) {
88
- return true ;
94
+ if (right instanceof PlusToken ) {
95
+ return Troolean . FALSE ;
89
96
}
90
97
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 ;
92
120
}
93
- return true ;
121
+ Troolean r = isRightStrong (right );
122
+ return r .b ;
94
123
}
95
124
}
You can’t perform that action at this time.
0 commit comments