modminorparsing.vb

来自「visual basic课程设计案例精编」· VB 代码 · 共 51 行

VB
51
字号
Module modMinorParsing
    Public Function PostToken() As Object
        On Error GoTo ErrorHandler
        Dim Factorial As Double
        Dim i As Short
        If OutputString = "+" Or OutputString = "-" Or OutputString = "*" Or OutputString = "/" Or OutputString = "EOS" Or OutputString = ")" Or OutputString = "=" Or OutputString = "," Then
            PostToken = Value
            '处理在数值后的特殊符号!、^等
        Else
            Select Case OutputString
                Case "!" '阶乘
                    If (CDbl(Value) <> CInt(Value)) Or Value < 0 Then
                        TrapErrors(0)
                        Exit Function
                    End If
                    Factorial = 1
                    For i = Value To 1 Step -1
                        Factorial = Factorial * i  '阶乘计算
                    Next i
                    ExtractToken() '在往后读取一个符号

                    If OutputString = "+" Or OutputString = "-" Or OutputString = "*" Or OutputString = "/" Or OutputString = "EOS" Or OutputString = ")" Or OutputString = "=" Then
                        PostToken = Factorial '如果是低于该级的运算如加,乘,则返回阶乘值
                        ExtractToken()
                    Else                        ' 处理阶乘后的符号
                        Select Case OutputString
                            Case "!"
                                TrapErrors(0) '是!,则错误
                                Exit Function
                            Case "^" '指数,幂
                                ExtractToken()
                                PostToken = Factorial ^ GetF() '幂运算
                            Case Else '
                                PostToken = Factorial * GetF()
                        End Select
                    End If
                Case "^" '幂
                    ExtractToken()
                    PostToken = Value ^ GetF() '幂运算,下一级运算处理后面的值
                Case "(" '左括号
                    PostToken = Value * GetF() '下一级运算处理后面的值
                Case Else
                    PostToken = Value * GetF() '其他的后面跟随符号相乘,并将表达式交给下一级处理
            End Select
        End If
        Exit Function
ErrorHandler:
        TrapErrors(Err.Number)
    End Function
End Module

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?