代碼着色引擎如何工作,到底如何?他們是否只生成一個保留空白的分析樹,爲葉子着色並重建原始程序?實時代碼着色如何實現足夠高效的動態執行?代碼着色如何工作?
1
A
回答
5
我所瞭解的大多數語法高級組件都不會對語法樹做出反應,而只是根據它所形成的令牌種類標記源和文本文本。像熒光筆這樣最困難的任務是識別多行註釋(和/或字符串,如果語言允許的話);其他任何東西都可以保存在一個源代碼行中。
自動縮進引擎更多參與。從理論上講,最好的結果將來自重構一個完整的語法樹,但這很慢,並且引發了錯誤處理的問題(因爲大多數程序在編輯時都不是很完美)。相反,他們使用各種簡化的掃描和啓發式方法,但並不總是能夠匹配語言的真正語法。例如,Eclipse的Java編輯器也會根據它們是否命名局部變量,實例字段或靜態變量/方法來改變標識符的顏色,這種情況發生在在編輯器解析並查看實時交叉引用的代碼之後,從基本詞彙突出顯示中單獨傳遞)。
2
語法高亮通常工作在詞法水平,而不是解析器水平。
它本質上是一組由正則表達式派生而來的有限狀態機,所以它運行起來非常快。
相關問題
- 1. Javascript代碼着色繪圖。它是如何工作的?
- 2. visual studio如何着色c#代碼?
- 3. OpenGL:如何暫停着色器工作
- 4. 着色器編譯器如何工作?
- 5. 代碼着色在Dreamweaver像aptana工作室3?
- 6. 着色代碼消失
- 7. (C)代碼着的工作要條件
- 8. SFML着色器不工作
- 9. Visual Studio 2010 - 代碼着色不一致
- 10. Dreamweaver中SCSS的代碼着色
- 11. Xcode:代碼丟失語法着色
- 12. github上的代碼着色README
- 13. 有着色器/代碼的問題
- 14. 在線代碼着色服務
- 15. 在Dreamweaver CS6中重置代碼着色
- 16. 着色器渲染QR代碼
- 17. 網站顯示代碼着色
- 18. 覆蓋textmate語言代碼着色
- 19. Visual Studio 2010原生C++代碼覆蓋率着色無法正常工作
- 20. JFreeChart - 如何在StackedBarRenderer中爲多行代碼着色?
- 21. 如何恢復Dreamweaver CS4中的原生JavaScript代碼着色?
- 22. 如何爲我的代碼在octopress博客頁面着色
- 23. 發佈答案時,如何在Stack Overflow上着色代碼?
- 24. 編碼統一着色器與團結視覺工作室
- 25. 爲什麼不着色圖像工作?
- 26. QGraphicsScene&OpenGL片段着色器不工作
- 27. 我着色器停止工作
- 28. 多通道着色器如何在HLSL中工作?
- 29. 片段着色器模糊...這是如何工作的?
- 30. LWJGL中的延遲着色如何工作?