Unnamed repository; edit this file 'description' to name the repository.
update vhdl tree-sitter (#13091)
Chris44442 12 months ago
parent 63ed85b · commit 8d590e8
-rw-r--r--languages.toml2
-rw-r--r--runtime/queries/vhdl/highlights.scm451
2 files changed, 348 insertions, 105 deletions
diff --git a/languages.toml b/languages.toml
index ecef7880..df69d6f3 100644
--- a/languages.toml
+++ b/languages.toml
@@ -3177,7 +3177,7 @@ injection-regex = "vhdl"
[[grammar]]
name = "vhdl"
-source = { git = "https://github.com/teburd/tree-sitter-vhdl", rev = "c57313adee2231100db0a7880033f6865deeadb2" }
+source = { git = "https://github.com/jpt13653903/tree-sitter-vhdl", rev = "32d3e3daa745bf9f1665676f323be968444619e1" }
[[language]]
name = "rego"
diff --git a/runtime/queries/vhdl/highlights.scm b/runtime/queries/vhdl/highlights.scm
index 1b9742fc..71b8a5bd 100644
--- a/runtime/queries/vhdl/highlights.scm
+++ b/runtime/queries/vhdl/highlights.scm
@@ -1,134 +1,377 @@
+(line_comment) @comment.line
+
+(block_comment) @comment.block
+
+(identifier) @variable
+
[
- "alias" "package" "file" "entity" "architecture" "type" "subtype"
- "attribute" "to" "downto" "signal" "variable" "record" "array"
- "others" "process" "component" "shared" "constant" "port" "generic"
- "generate" "range" "map" "in" "inout" "of" "out" "configuration"
- "pure" "impure" "is" "begin" "end" "context" "wait" "until" "after"
- "report" "open" "exit" "assert" "next" "null" "force" "property"
- "release" "sequence" "transport" "unaffected" "select" "severity"
- "register" "reject" "postponed" "on" "new" "literal" "linkage"
- "inertial" "guarded" "group" "disconnect" "bus" "buffer" "body"
- "all" "block" "access"
+ "access"
+ "after"
+ "alias"
+ "architecture"
+ "array"
+ "attribute"
+ "block"
+ "body"
+ "component"
+ "configuration"
+ "context"
+ "disconnect"
+ "entity"
+ "file"
+ "force"
+ "generate"
+ "generic"
+ "group"
+ "label"
+ "literal"
+ "map"
+ "new"
+ "package"
+ "parameter"
+ "port"
+ "property"
+ "range"
+ "reject"
+ "release"
+ "sequence"
+ "transport"
+ "unaffected"
+ "view"
+ "vunit"
] @keyword
[
- "function" "procedure"
+ (ALL)
+ (OTHERS)
+ "<>"
+ (DEFAULT)
+ (OPEN)
+] @constant.builtin
+
+[
+ "is"
+ "begin"
+ "end"
+] @keyword
+
+(parameter_specification
+ "in" @keyword)
+
+[
+ "process"
+ "wait"
+ "on"
+ "until"
+] @keyword
+
+(timeout_clause
+ "for" @keyword)
+
+[
+ "function"
+ "procedure"
] @keyword.function
[
- "return"
-] @keyword.control.return
+ "to"
+ "downto"
+ "of"
+] @keyword.operator
+
+[
+ "library"
+ "use"
+] @keyword.control.import
+
+[
+ "subtype"
+ "type"
+ "record"
+ "units"
+ "constant"
+ "signal"
+ "variable"
+] @keyword.storage.type
[
- "for" "loop" "while"
+ "protected"
+ "private"
+ "pure"
+ "impure"
+ "inertial"
+ "postponed"
+ "guarded"
+ "out"
+ "inout"
+ "linkage"
+ "buffer"
+ "register"
+ "bus"
+ "shared"
+] @keyword.storage.modifier
+
+(mode
+ "in" @keyword.storage.modifier)
+
+(force_mode
+ "in" @keyword.storage.modifier)
+
+[
+ "while"
+ "loop"
+ "next"
+ "exit"
] @keyword.control.repeat
-[
- "if" "elsif" "else" "case" "then" "when"
-] @keyword.control.conditional
+(for_loop
+ "for" @keyword.control.repeat)
-[
- "library" "use"
-] @keyword.control.import
+(block_configuration
+ "for" @keyword)
-(comment) @comment
+(configuration_specification
+ "for" @keyword)
-(type_mark) @type
+(component_configuration
+ "for" @keyword)
+
+(end_for
+ "for" @keyword)
+
+"return" @keyword.control.return
[
- "(" ")" "[" "]"
-] @punctuation.bracket
+ "assert"
+ "report"
+ "severity"
+] @keyword
[
- "." ";" "," ":"
-] @punctuation.delimiter
+ "if"
+ "then"
+ "elsif"
+ "case"
+] @keyword.control.conditional
+
+(when_element
+ "when" @keyword.control.conditional)
+
+(case_generate_alternative
+ "when" @keyword.control.conditional)
+
+(else_statement
+ "else" @keyword.control.conditional)
+
+(else_generate
+ "else" @keyword.control.conditional)
+
+[
+ "with"
+ "select"
+] @keyword.control.conditional
+
+(when_expression
+ "when" @keyword.control.conditional)
+
+(else_expression
+ "else" @keyword.control.conditional)
+
+(else_waveform
+ "else" @keyword.control.conditional)
+
+(else_expression_or_unaffected
+ "else" @keyword.control.conditional)
+
+"null" @constant.builtin
+
+(user_directive) @keyword.directive
+
+(protect_directive) @keyword.directive
+
+(warning_directive) @keyword.directive
+
+(error_directive) @keyword.directive
+
+(if_conditional_analysis
+ "if" @keyword.directive)
+
+(if_conditional_analysis
+ "then" @keyword.directive)
+
+(elsif_conditional_analysis
+ "elsif" @keyword.directive)
+
+(else_conditional_analysis
+ "else" @keyword.directive)
+
+(end_conditional_analysis
+ "end" @keyword.directive)
+
+(end_conditional_analysis
+ "if" @keyword.directive)
+
+(directive_body) @keyword.directive
+
+(directive_constant_builtin) @constant.builtin
+
+(directive_error) @keyword.directive
+
+(directive_protect) @keyword.directive
+
+(directive_warning) @keyword.directive
[
- "=>" "<=" "+" ":=" "=" "/=" "<" ">" "-" "*"
- "**" "/" "?>" "?<" "?<=" "?>=" "?=" "?/="
-; "?/" errors, maybe due to escape character
- (attribute_name "'")
- (index_subtype_definition (any))
+ (condition_conversion)
+ (relational_operator)
+ (sign)
+ (adding_operator)
+ (exponentiate)
+ (variable_assignment)
+ (signal_assignment)
+ "*"
+ "/"
+ ":"
+ "=>"
] @operator
[
- "not" "xor" "xnor" "and" "nand" "or" "nor" "mod" "rem"
- (attribute_name "'")
- (index_subtype_definition (any))
+ (unary_operator)
+ (logical_operator)
+ (shift_operator)
+ "mod"
+ "not"
+ "rem"
] @keyword.operator
[
- (real_decimal)
- (integer_decimal)
-] @constant.numeric
+ "'"
+ ","
+ "."
+ ";"
+] @punctuation.delimiters
-(character_literal) @constant.character
+[
+ "("
+ ")"
+ "["
+ "]"
+ "<<"
+ ">>"
+] @punctuation.bracket
+
+"@" @punctuation.special
[
- (string_literal)
- (bit_string_literal)
-] @string
-
-(physical_literal
- unit: (simple_name) @attribute)
-
-(attribute_name
- prefix: (_) @variable
- designator: (_) @attribute)
-
-((simple_name) @variable.builtin (#any-of? @variable.builtin
- "true" "false" "now"))
-
-(severity_expression) @constant.builtin
-
-(procedure_call_statement
- procedure: (simple_name) @function)
-
-(ambiguous_name
- prefix: (simple_name) @function.builtin (#any-of? @function.builtin
- "rising_edge" "falling_edge" "find_rightmost" "find_leftmost"
- "maximum" "minimum" "shift_left" "shift_right" "rotate_left"
- "rotate_right" "sll" "srl" "rol" "ror" "sla" "sra" "resize"
- "mod" "rem" "abs" "saturate"
- "to_sfixed" "to_ufixed" "to_signed" "to_unsigned" "to_real"
- "to_integer" "sfixed_low" "ufixed_low" "sfixed_high"
- "ufixed_high" "to_slv" "to_stdulogicvector" "to_sulv"
- "to_float" "std_logic" "std_logic_vector" "integer" "signed"
- "unsigned" "real" "std_ulogic_vector"
- "std_ulogic" "x01" "x01z" "ux01" "ux01Z"
-;math_real
- "sign" "ceil" "floor" "round" "fmax" "fmin" "uniform" "srand"
- "rand" "get_rand_max" "sqrt" "cbrt" "exp" "log" "log2" "log10"
- "sin" "cos" "tan" "asin" "acos" "atan" "atan2" "sinh" "cosh"
- "tanh" "asinh" "acosh" "atanh" "realmax" "realmin" "trunc"
- "conj" "arg" "polar_to_complex" "complex_to_polar"
- "get_principal_value" "cmplx"
-;std_textio
- "read" "write" "hread" "hwrite" "to_hstring" "to_string"
- "from_hstring" "from_string"
- "justify" "readline" "sread" "string_read" " bread"
- "binary_read" "oread" "octal_read" "hex_read"
- "writeline" "swrite" "string_write" "bwrite"
- "binary_write" "owrite" "octal_write" "hex_write"
- "synthesis_return"
-;std_logic_1164
- "resolved" "logic_type_encoding" "is_signed" "to_bit"
- "to_bitvector" "to_stdulogic" "to_stdlogicvector"
- "to_bit_vector" "to_bv" "to_std_logic_vector"
- "to_std_ulogic_vector" "to_01" "to_x01" "to_x01z" "to_ux01"
- "is_x" "to_bstring" "to_binary_string" "to_ostring"
- "to_octal_string" "to_hex_string"
-;float_pkg
- "add" "subtract" "multiply" "divide" "remainder" "modulo"
- "reciprocal" "dividebyp2" "mac" "eq" "ne" "lt" "gt" "le" "ge"
- "to_float32" "to_float64" "to_float128" "realtobits" "bitstoreal"
- "break_number" "normalize" "copysign" "scalb" "logb" "nextafter"
- "unordered" "finite" "isnan" "zerofp" "nanfp" "qnanfp"
- "pos_inffp" "neg_inffp" "neg_zerofp" "from_bstring"
- "from_binary_string" "from_ostring" "from_octal_string"
- "from_hex_string"
-;fixed_pkg
- "add_carry" "to_ufix" "to_sfix" "ufix_high"
- "ufix_low" "sfix_high" "sfix_low"
-))
+ (decimal_integer)
+ (string_literal_std_logic)
+] @constant.numeric.integer
+
+(decimal_float) @constant.numeric.float
+
+(bit_string_length) @type.parameter
+
+(bit_string_base) @type.builtin
+
+(bit_string_value) @constant.numeric.integer
+
+(based_literal
+ (based_base) @type.builtin
+ (based_integer) @constant.numeric.integer)
+
+(based_literal
+ (based_base) @type.builtin
+ (based_float) @constant.numeric.float)
+
+(string_literal) @string
+
+(character_literal) @constant.character
+
+(library_constant_std_logic) @constant.builtin
+
+(library_constant) @constant.builtin
+
+(library_function) @function.builtin
+
+(library_constant_boolean) @constant.builtin.boolean
+
+(library_constant_character) @constant.character
+
+(unit) @keyword.storage.modifier
+
+(library_constant_unit) @keyword.storage.modifier
+
+(label) @label
+
+(generic_map_aspect
+ "generic" @constructor
+ "map" @constructor)
+
+(port_map_aspect
+ "port" @constructor
+ "map" @constructor)
+
+(selection
+ (identifier) @variable.other.member)
+
+(_
+ view: (_) @type)
+
+(_
+ type: (_) @type)
+
+(_
+ library: (_) @namespace)
+
+(_
+ package: (_) @namespace)
+
+(_
+ entity: (_) @namespace)
+
+(_
+ component: (_) @namespace)
+
+(_
+ configuration: (_) @type.parameter)
+
+(_
+ architecture: (_) @type.parameter)
+
+(_
+ function: (_) @function)
+
+(_
+ procedure: (_) @function.method)
+
+(_
+ attribute: (_) @attribute)
+
+(_
+ constant: (_) @constant)
+
+(_
+ generic: (_) @variable.parameter)
+
+(_
+ view: (name
+ (_)) @type)
+
+(_
+ type: (name
+ (_)) @type)
+
+(_
+ entity: (name
+ (_)) @namespace)
+
+(_
+ component: (name
+ (_)) @namespace)
+
+(_
+ configuration: (name
+ (_)) @namespace)
+
+(library_type) @type.builtin