⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modscanning.vb

📁 visual basic课程设计案例精编
💻 VB
字号:
Module modScanning
    Public Sub ExtractToken() '提取表达式符号
        Dim i As Short
        '设置默认值
        OutputString = ""
        OutputValue = 0
        ValueString = ""
        If CurrentEntryIndex > Len(InputString_Renamed) Then '字符指针到字符串地末尾
            OutputString = "EOS"  '输出EOS(End Of String)
            Exit Sub
        End If

        Char_Renamed = Mid(InputString_Renamed, CurrentEntryIndex, 1) '提取下一个字符
        '下面的代码是对提取的字符进行判断


        If Char_Renamed = " " Then
            CurrentEntryIndex = CurrentEntryIndex + 1  '如果是空格,指针后移,继续提取字符
            ExtractToken()
            Exit Sub
        End If


        If Char_Renamed = "+" Or Char_Renamed = "-" Or Char_Renamed = "*" Or Char_Renamed = "/" Or Char_Renamed = "^" Or Char_Renamed = "(" Or Char_Renamed = ")" Or Char_Renamed = "!" Or Char_Renamed = "=" Then
            CurrentEntryIndex = CurrentEntryIndex + 1 '如果是运算符或括号,指针后移
            OutputString = Char_Renamed '返回该字符
            Exit Sub
        End If

        If (Char_Renamed >= "0" And Char_Renamed <= "9") Or Char_Renamed = "." Then
            '如果是数字
            While Char_Renamed >= "0" And Char_Renamed <= "9"
                ValueString = ValueString & Char_Renamed ' 小数点前的数字
                CurrentEntryIndex = CurrentEntryIndex + 1
                If CurrentEntryIndex <= Len(InputString_Renamed) Then
                    Char_Renamed = Mid(InputString_Renamed, CurrentEntryIndex, 1)
                Else
                    Char_Renamed = ""
                End If
            End While

            While Char_Renamed = "."
                ValueString = ValueString & Char_Renamed ' 小数点
                CurrentEntryIndex = CurrentEntryIndex + 1
                If CurrentEntryIndex <= Len(InputString_Renamed) Then
                    Char_Renamed = Mid(InputString_Renamed, CurrentEntryIndex, 1)
                Else
                    Char_Renamed = ""
                End If
            End While

            While Char_Renamed >= "0" And Char_Renamed <= "9" ' 小数点后的数字
                ValueString = ValueString & Char_Renamed
                CurrentEntryIndex = CurrentEntryIndex + 1
                If CurrentEntryIndex <= Len(InputString_Renamed) Then
                    Char_Renamed = Mid(InputString_Renamed, CurrentEntryIndex, 1)
                Else
                    Char_Renamed = ""
                End If
            End While
            OutputString = "Number"  '表示返回的的是数字
            OutputValue = CDbl(ValueString) '返回数字值
            Exit Sub
        End If

        '下面是字母的情况
        If LCase(Char_Renamed) >= "a" And LCase(Char_Renamed) <= "z" Then
            While (LCase(Char_Renamed) >= "a" And LCase(Char_Renamed) <= "z")
                ValueString = ValueString & Char_Renamed
                CurrentEntryIndex = CurrentEntryIndex + 1
                If CurrentEntryIndex <= Len(InputString_Renamed) Then
                    Char_Renamed = Mid(InputString_Renamed, CurrentEntryIndex, 1)
                Else
                    Char_Renamed = ""
                End If
            End While

            'pi和自然对数
            If LCase(ValueString) = "pi" Or LCase(ValueString) = "e" Then
                OutputString = "Number"
                If LCase(ValueString) = "pi" Then
                    OutputValue = Pi
                Else
                    OutputValue = System.Math.Exp(1)
                End If
                Exit Sub
            End If
            OutputString = LCase(ValueString) '返回值
            Exit Sub
        End If

    End Sub
End Module

⌨️ 快捷键说明

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