首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 程式碼轉 HTML 語法高亮引擎實作完整解析

     編輯:關於C語言

專案目標

將 C#、VB.NET、JavaScript、ASPX 原始碼轉換為帶語法高亮的 HTML,支援關鍵字著色、註解辨識、字串常數、ASPX 標記標籤等,適用於程式碼分享網站、文件產生器、部落格編輯器。

核心架構設計

TranslateCode (進入點)
├── Render(string input) → string HTML
│   ├── 偵測語言 (副檔名 / @Page Language / 
 
";
converter.Language = ""; // 自動模式
html = converter.Render(aspxCode);

輸出 HTML 結構範例



public class Hello {
    // 問候方法
    public void SayHi() {
        Console.WriteLine("Hello World"); // 輸出
    }
}

效能優化建議

  1. 編譯 Regex:`static readonly Regex KeywordRegex = new Regex(pattern, RegexOptions.Compiled);`
  2. 單次遍歷:使用 `Regex.Replace` 配合 `MatchEvaluator` 一次完成所有取代,避免多次掃描
  3. StringBuilder:大量字串拼接必須用 `StringBuilder`
  4. 記憶體流:處理大檔案時用 `StreamReader`/`StreamWriter` 串流處理,避免全載入記憶體
  5. 快取高亮器實例:靜態單例重用,避免重複建立關鍵字陣列與 Regex

現代化擴充方向

  • Roslyn 語法樹:`Microsoft.CodeAnalysis.CSharp.SyntaxTree.ParseText` 取得精確 Token 分類 (識別子、字面值、運算子、前置處理器指令等)
  • TextMate Grammar / VS Code 主題:支援數百種語言、主題可換、與編輯器一致
  • Blazor 元件化:`` 直接在 Razor 中使用
  • 輸出 CSS 類別而非內嵌 style:`public` + 外部 CSS,支援深色/淺色主題切換

結語

程式碼轉 HTML 高亮看似簡單,實則涉及詞法分析狀態機 (ASPX 混合模式)、正則表達式優先序衝突 (關鍵字 vs 註解 vs 字串常數)、HTML 編碼時機 (高亮前 vs 後)、效能與記憶體平衡。本文實作展示了從零建構高亮引擎的核心邏輯,現代專案建議直接採用 Roslyn 或成熟庫 (Highlight.js, Prism, Chroma) 以獲得完整語言支援與維護性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved