📄 modscanning.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 + -