@@ -51,40 +51,32 @@ internal class Tokenizer(
5151 return when {
5252 str.startsWith(" true" ) -> PUnit (Token .Operand .Boolean (true ), 4 )
5353 str.startsWith(" false" ) -> PUnit (Token .Operand .Boolean (false ), 5 )
54- str.startsWith(" &&" ) && str.requireOp( " && " ) -> PUnit (Token .Operator .And , 2 )
55- str.startsWith(" ||" ) && str.requireOp( " || " ) -> PUnit (Token .Operator .Or , 2 )
56- str.startsWith(" <=" ) && str.requireOp( " <= " ) -> PUnit (Token .Operator .LessEqualThan , 2 )
57- str.startsWith(" >=" ) && str.requireOp( " >= " ) -> PUnit (Token .Operator .GreaterEqualThan , 2 )
58- str.startsWith(" ==" ) && str.requireOp( " == " ) -> PUnit (Token .Operator .Equal , 2 )
59- str.startsWith(" !=" ) && str.requireOp( " != " ) -> PUnit (Token .Operator .NotEqual , 2 )
54+ str.startsWith(" &&" ) -> PUnit (Token .Operator .And , 2 )
55+ str.startsWith(" ||" ) -> PUnit (Token .Operator .Or , 2 )
56+ str.startsWith(" <=" ) -> PUnit (Token .Operator .LessEqualThan , 2 )
57+ str.startsWith(" >=" ) -> PUnit (Token .Operator .GreaterEqualThan , 2 )
58+ str.startsWith(" ==" ) -> PUnit (Token .Operator .Equal , 2 )
59+ str.startsWith(" !=" ) -> PUnit (Token .Operator .NotEqual , 2 )
6060 symbol in digitChars -> str.parseStartingNumber()
6161 symbol in letterChars -> str.parseVarOrConstOrFunction()
6262 symbol == argumentsDelimiter -> PUnit (Token .FunctionCall .Delimiter , 1 )
63- symbol == ' +' && str.requireOp(symbol) -> getPlus(result)
64- symbol == ' -' && str.requireOp(symbol) -> getMinus(result)
65- symbol == ' %' && str.requireOp(symbol) -> PUnit (Token .Operator .Modulo , 1 )
66- symbol == ' *' && str.requireOp(symbol) -> PUnit (Token .Operator .Multiplication , 1 )
67- symbol == ' /' && str.requireOp(symbol) -> PUnit (Token .Operator .Division , 1 )
68- symbol == ' ^' && str.requireOp(symbol) -> PUnit (Token .Operator .Power , 1 )
63+ symbol == ' +' -> getPlus(result)
64+ symbol == ' -' -> getMinus(result)
65+ symbol == ' %' -> PUnit (Token .Operator .Modulo , 1 )
66+ symbol == ' *' -> PUnit (Token .Operator .Multiplication , 1 )
67+ symbol == ' /' -> PUnit (Token .Operator .Division , 1 )
68+ symbol == ' ^' -> PUnit (Token .Operator .Power , 1 )
6969 symbol == ' )' -> PUnit (Token .Bracket .Right , 1 )
70- symbol == ' (' && str.requireOp(symbol) -> PUnit (Token .Bracket .Left , 1 )
71- symbol == ' <' && str.requireOp(symbol) -> PUnit (Token .Operator .LessThan , 1 )
72- symbol == ' >' && str.requireOp(symbol) -> PUnit (Token .Operator .GreaterThan , 1 )
73- symbol == ' !' && str.requireOp(symbol) -> PUnit (Token .Operator .Not , 1 )
74- symbol == ' ?' && str.requireOp(symbol) -> PUnit (Token .Operator .TernaryIf , 1 )
75- symbol == ' :' && str.requireOp(symbol) -> PUnit (Token .Operator .TernaryElse , 1 )
70+ symbol == ' (' -> PUnit (Token .Bracket .Left , 1 )
71+ symbol == ' <' -> PUnit (Token .Operator .LessThan , 1 )
72+ symbol == ' >' -> PUnit (Token .Operator .GreaterThan , 1 )
73+ symbol == ' !' -> PUnit (Token .Operator .Not , 1 )
74+ symbol == ' ?' -> PUnit (Token .Operator .TernaryIf , 1 )
75+ symbol == ' :' -> PUnit (Token .Operator .TernaryElse , 1 )
7676 else -> null
7777 }
7878 }
7979
80- private fun String.requireOp (str : String ): Boolean {
81- require(length > str.length) { " Malformed expression. '$str ' requires operand after it" }
82-
83- return true
84- }
85-
86- private fun String.requireOp (c : Char ) = requireOp(c.toString())
87-
8880 private fun getPlus (result : List <Token >) = PUnit (
8981 if (supposedToBeUnaryOperator(result)) Token .Operator .UnaryPlus else Token .Operator .Plus ,
9082 1
0 commit comments