File tree Expand file tree Collapse file tree 2 files changed +39
-9
lines changed
src/main/java/io/polypen/parse Expand file tree Collapse file tree 2 files changed +39
-9
lines changed Original file line number Diff line number Diff line change 1010/examples /out
1111/gradle.properties
1212/dependencies
13+ * .swp
Original file line number Diff line number Diff 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}
You can’t perform that action at this time.
0 commit comments