表达式解析器

Go语言写的一个表达式

特性

  • 支持四则运算 +, -, *, /, (, )
  • 支持函数

Examples:

                                                                   Expression     Result Expected
                                                                      1+(2+3)          6 6
                                                                    1+(2+3)*4         21 21
                                                                        1+2*3          7 7
                                                                      1*2*3*4         24 24
                                                                    1+2+3+4+5         15 15
                                                                        2*3+4         10 10
                                                                        4+5*2         14 14
                                                                      1+2*3+4         11 11
                                                         1+2*3+4+5+6+7+8+9*10        127 127
                                                                1+((2+3)*4)*5        101 101
                                                          1+(2*3)*((4*5+1)+1)        133 133
                                                                    (((111)))        111 111
                                                         min(1, max(1,2,3)+1)          1 1
                                                    max(1,2,3,4,5,6,7,8,9,10)         10 10
                                                    min(1,2,3,4,5,6,7,8,9,10)          1 1
                          min(1,2,3,4,5,6,7,8,9,10)+max(1,2,3,4,5,6,7,8,9,10)         11 11
                          min(1,2,3,4,5,6,7,8,9,10)*max(1,2,3,4,5,6,7,8,9,10)         10 10
min(1,2,3,4,5,6,7,8,9,10)+max(1,2,3,4,5,6,7,8,9,10)*min(1,2,3,4,5,6,7,8,9,10)         11 11
min(1,2,3,4,5,6,7,8,9,10)*max(1,2,3,4,5,6,7,8,9,10)+min(1,2,3,4,5,6,7,8,9,10)         11 11
                                                    sum(1,2,3,4,5,6,7,8,9,10)         55 55
                                 sum(1+2+3, 4+5+6, 7+8+9, min(1,10))*max(1,2)         92 92
                             sum(1+2+3, 2*(5+6), 7+8+9, min(1,10)) * max(1,2)        106 106
                            sum(1+22+3, 2*(5+6), 7+8+9, min(1,10)) * max(1,2)        146 146