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