簡體   English   中英

ANTLR語法在Visual Studio中突出顯示DSL

[英]ANTLR Syntax Highlighting DSL in Visual Studio

我有一個定義DSL(特定於域的語言)的ANTLR語法。 這個語法相對簡單。 它正在解析語言並輸出C代碼以創建一個非常基本的翻譯器。

這種語言用於C#應用程序(鍵入某種控件,無論是RichTextBox還是自定義控件),一種要求是為此語言提供語法高亮顯示。 我已經瀏覽了互聯網,希望能找到關於如何實現這一目標的某種信息,或者找到一種工具來讓自己變得更容易。

在沒有找到太多信息之后,我最好的假設是我需要使用ANTLR生成的詞法分析器來查看標記並相應地對它們進行着色。 這是正確的操作路徑,還是有其他方法/工具為自定義域特定語言提供語法突出顯示? 如果這是正確的方法,我該如何識別特定的令牌?

如果我遺漏了任何重要信息,請詢問! 謝謝!

我成功地將AvalonEdit用於我的類似項目。 我剛剛用正確的語法高亮創建了一個小編輯器。

在項目中啟動和運行它非常簡單快捷。 您只需提供一個簡單的XML文件來記錄您的DSL的語法,您將獲得一個開箱即用的彩色輸出作為WPF控件。

看起來他們添加完成設施,因為我使用它,雖然我沒有經驗,但我懷疑如果質量與着色相同也做得很好。

這種語言用於C#應用程序(鍵入某種控件,無論是RichTextBox還是自定義控件),一種要求是為此語言提供語法高亮顯示。

考慮使用Scintilla進行控制。 它是IDE樣式文本編輯的文本控件。 Notepad ++將其用於文本控制,其源自SciTE IDE。 我在一個用C#編寫的小型自定義IDE項目中使用了非正式的.NET特定版本 - 我認為它是ScintillaNET

Scintilla支持自定義關鍵字突出顯示以及各種可編程功能,如波浪線下划線等。


如果你有一個你寧願使用的控件,我認為使用一個小的ANTLR詞法分析器來為你生成令牌是合理的。 每個令牌都包含行號,起始字符位置,源文本和令牌類型 - 您需要知道要突出顯示的內容以及如何突出顯示的內容。 每次更改文本時,唯一的麻煩就是通過詞法分析器運行文本。 有一些有效的方法可以在不重新整理整個文檔的情況下實現這一點,但仍需記住這一點。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM