You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Originally posted by qobilidop April 20, 2023
Semantic highlighting is a feature supported by LSP[1], and major editors/IDEs (like VS Code[2]) through LSP. The benefits of semantic highlighting are explained in more detail in [2]. I think it is a very useful feature, and a natural fit for p4analyzer to implement. As a reference, rust-analyzer has implemented this feature already[3].
The challenge of building a good semantic highlighter is that it should be architecture-aware, meaning that things like:
The names of externs (extern constructors) and their parameters
The names of extern methods and their parameters
The names of architecture-specific types (typedefs, structs, headers, enums, etc.) and constants
The names of architecture-specific package (package constructrors) and their parameters
should be properly highlighted. All this information can be gleaned by analyzing the architecture-specific include files, such as tna.p4, psa.p4, etc.
In addition to that, the highlighter should also be target-aware so that it can properly highlight:
target-specific annotations
target-specific table attributes (properties)
Unfortunately, there is no standard method to retrieve those. Intel's Tofino compiler allows one to dump all Tofino-specific annotations, but there is no way to dump Tofino-specific table attributes (fortunately, there are not that many).
Semantic highlighter for Emacs supports all the above (@timjroberts -- ask me for the latest version), but only for TNA and T2NA, because all those definitions are hard-coded inside (and I do even update them periodically).
Discussed in #23
Originally posted by qobilidop April 20, 2023
Semantic highlighting is a feature supported by LSP[1], and major editors/IDEs (like VS Code[2]) through LSP. The benefits of semantic highlighting are explained in more detail in [2]. I think it is a very useful feature, and a natural fit for p4analyzer to implement. As a reference, rust-analyzer has implemented this feature already[3].
Reference:
The text was updated successfully, but these errors were encountered: