VB.NET语法编码

时间:2010-04-25 03:51:33

标签: vb.net syntax-highlighting

我知道很多人会问这些问题是如何完成的,但我不明白使用答案的背景,所以...

我正在为Python语言的颠覆构建一个代码编辑器,我找到了一种非常好的方法,可以通过以下方式突出显示RichTextBox中的关键字:

  bluwords.Add(KEYWORDS GO HERE)
  If scriptt.Text.Length > 0 Then
       Dim selectStart2 As Integer = scriptt.SelectionStart
       scriptt.Select(0, scriptt.Text.Length)
       scriptt.SelectionColor = Color.Black
       scriptt.DeselectAll()
       For Each oneWord As String In bluwords
            Dim pos As Integer = 0
            Do While scriptt.Text.ToUpper.IndexOf(oneWord.ToUpper, pos) >= 0
                 pos = scriptt.Text.ToUpper.IndexOf(oneWord.ToUpper, pos)
                 scriptt.Select(pos, oneWord.Length)
                 scriptt.SelectionColor = Color.Blue
                 pos += 1
            Loop
       Next
       scriptt.SelectionStart = selectStart2
  End If

(scriptt是richtextbox) 但是当输入任何适当数量的代码(或通过OpenFileDialog加载)时,代码块就会丢失,语法选择就会崩溃,而且它只会破坏它。 我正在寻找一种更有效的方法,也许更像是视觉工作室本身...因为没有必要突出显示所有文本,将其设置为黑色,然后重做所有语法,文本开始结束 - 如果你回去在文本之间插入字符。 此外,在此版本的Python中,hash(#)用于仅注释行的注释,而double hash(##)用于同一行的注释。 现在我看到有人问过这个问题,选择到行尾的工作答案是:^ \'[^ \ r \ n] + $ |''[^ \ r \ n] + $ 我似乎无法付诸实践。 我还想在引号之间选择文字并将其变为绿松石,例如在第一个引号和第二个引号之间,文本是绿松石,第三个和第四个之间相同......

感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

Visual Studio使用基于语言语法的完整解析器;使用一些简单的正则表达式永远不会给你相同的结果。

你看过SyntaxHighlighter吗?

(另见:Syntax Highlighting