From 8d590e8aee362281715511226c2de689d1a6a02f Mon Sep 17 00:00:00 2001 From: Chris44442 <101070356+Chris44442@users.noreply.github.com> Date: Wed, 12 Mar 2025 15:47:37 +0100 Subject: [PATCH] update vhdl tree-sitter (#13091) --- languages.toml | 2 +- runtime/queries/vhdl/highlights.scm | 471 +++++++++++++++++++++------- 2 files changed, 358 insertions(+), 115 deletions(-) diff --git a/languages.toml b/languages.toml index ecef7880d..df69d6f33 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 1b9742fc8..71b8a5bd9 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 - -[ - "for" "loop" "while" -] @keyword.control.repeat - -[ - "if" "elsif" "else" "case" "then" "when" -] @keyword.control.conditional - -[ - "library" "use" -] @keyword.control.import - -(comment) @comment - -(type_mark) @type - -[ - "(" ")" "[" "]" -] @punctuation.bracket - -[ - "." ";" "," ":" -] @punctuation.delimiter - -[ - "=>" "<=" "+" ":=" "=" "/=" "<" ">" "-" "*" - "**" "/" "?>" "?<" "?<=" "?>=" "?=" "?/=" -; "?/" errors, maybe due to escape character - (attribute_name "'") - (index_subtype_definition (any)) -] @operator - -[ - "not" "xor" "xnor" "and" "nand" "or" "nor" "mod" "rem" - (attribute_name "'") - (index_subtype_definition (any)) + "to" + "downto" + "of" ] @keyword.operator [ - (real_decimal) - (integer_decimal) -] @constant.numeric + "library" + "use" +] @keyword.control.import + +[ + "subtype" + "type" + "record" + "units" + "constant" + "signal" + "variable" +] @keyword.storage.type + +[ + "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 + +(for_loop + "for" @keyword.control.repeat) + +(block_configuration + "for" @keyword) + +(configuration_specification + "for" @keyword) + +(component_configuration + "for" @keyword) + +(end_for + "for" @keyword) + +"return" @keyword.control.return + +[ + "assert" + "report" + "severity" +] @keyword + +[ + "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 + +[ + (condition_conversion) + (relational_operator) + (sign) + (adding_operator) + (exponentiate) + (variable_assignment) + (signal_assignment) + "*" + "/" + ":" + "=>" +] @operator + +[ + (unary_operator) + (logical_operator) + (shift_operator) + "mod" + "not" + "rem" +] @keyword.operator + +[ + "'" + "," + "." + ";" +] @punctuation.delimiters + +[ + "(" + ")" + "[" + "]" + "<<" + ">>" +] @punctuation.bracket + +"@" @punctuation.special + +[ + (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 -[ - (string_literal) - (bit_string_literal) -] @string +(library_constant_std_logic) @constant.builtin -(physical_literal - unit: (simple_name) @attribute) +(library_constant) @constant.builtin -(attribute_name - prefix: (_) @variable - designator: (_) @attribute) +(library_function) @function.builtin -((simple_name) @variable.builtin (#any-of? @variable.builtin - "true" "false" "now")) +(library_constant_boolean) @constant.builtin.boolean -(severity_expression) @constant.builtin +(library_constant_character) @constant.character -(procedure_call_statement - procedure: (simple_name) @function) +(unit) @keyword.storage.modifier -(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" -)) +(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