vb6用于查找标记评论开头的撇号的规则是什么 一部分线?
由于以下原因,我对我定义此类规则的能力没有信心:
答案 0 :(得分:2)
字符串文字中的撇号被忽略。评论中的撇号也被忽略(因为它们已经在评论中)。你不能把撇号放在多行语句中,除非它在语句的最后一行 - 在这种情况下它只是遵循正常的规则。
你为什么如此关注?
答案 1 :(得分:2)
如果您真的想知道,VBA language specification在MSDN上在线并且具有BNF语法。 VBA与VB6相当99% - 当然,关于识别注释的规则必须相同。
如果您正在尝试消除死代码 - 只需获取MZ-Tools!免费。使用代码审查工具。 “MZ-Tools可以在项目组,项目或文件级别(通过上下文菜单)检查源代码,检测未使用的变量,常量,参数,私有程序等。”要消除未使用的子和函数,请使用列出所有调用者的MZ-Tools功能。
编辑评论中讨论了如何消除未经声明为Public
的项目:MZ工具对此没有帮助。
答案 2 :(得分:0)
这似乎适用于我尝试的任何示例 它使用的唯一规则是忽略字符串文字中的撇号 并且它没有考虑使用单词rem来开始评论。 令我感到羞耻的是,直到昨天我才意识到“”“”(4个双引号)是一个包含单引号的字符串文字。
Public Function CommentStripOut(ByVal strLine As String) As String
Dim InLiteral As Boolean
Dim strReturn As String
Dim LenLine As Long
Dim counter As Long
Dim s1 As String
Dim s2 As String
strReturn = strLine
LenLine = Len(strLine)
InLiteral = False
For counter = 1 To LenLine
s1 = Mid$(strLine, counter, 1)
If counter < LenLine Then
s2 = Mid$(strLine, counter + 1, 1)
Else
s2 = ""
End If
If s1 = """" Then
If Not InLiteral Then
InLiteral = True
Else
If s2 = """" Then
counter = counter + 1
'skip on by 1 because
'want to treat escaped
'double quote as a single
'character
Else
InLiteral = False
End If
End If
Else
If Not InLiteral Then
If s1 = "'" Then
strReturn = Left$(strLine, counter - 1)
Exit For
End If
End If
End If
Next counter
CommentStripOut = strReturn
End Function