[{"displayName":"ROS Interface","fileTypes":["msg","srv","action"],"name":"rosmsg","patterns":[{"include":"#separators"},{"include":"#lines"},{"include":"#comments"}],"repository":{"attributes":{"match":"@optional\\b","name":"storage.modifier.attribute.rosmsg"},"builtin-types":{"match":"\\b(?:bool|byte|char|u?int(?:8|16|32|64)|float(?:32|64)|w?string|time|duration)\\b","name":"storage.type.rosmsg"},"comments":{"match":"#.*","name":"comment.line.number-sign.rosmsg"},"field-other":{"begin":"(?=\\b[A-Z_a-z])","end":"$|(?=#)","patterns":[{"captures":{"0":{"patterns":[{"include":"#builtin-types"}]}},"match":"\\G[/-9A-Z_a-z]+","name":"support.type.rosmsg"},{"match":"\\d+","name":"constant.numeric.integer.rosmsg"},{"begin":"(?=[A-Z_a-z])","end":"$|(?=#)","patterns":[{"include":"#field-other-after-type"}]}]},"field-other-after-type":{"patterns":[{"match":"\\G[0-9A-Z_a-z]+","name":"variable.other.field.rosmsg"},{"begin":"","end":"$|(?=#)","patterns":[{"include":"#literal-other"},{"include":"#literal-other-array"}]}]},"field-string":{"begin":"(?=\\bw?string\\b)","end":"$|(?=#)","patterns":[{"captures":{"0":{"name":"storage.type.rosmsg"}},"match":"\\Gw?string\\b"},{"match":"\\d+","name":"constant.numeric.integer.rosmsg"},{"begin":"(?=[A-Z_a-z])","end":"$|(?=#)","patterns":[{"include":"#field-string-after-type"}]}]},"field-string-after-type":{"patterns":[{"match":"\\G[0-9A-Z_a-z]+","name":"variable.other.field.rosmsg"},{"begin":"=|(?<=\\s)","end":"$|(?=#)","patterns":[{"include":"#literal-string"}]}]},"field-string-array":{"begin":"(?=\\bw?string[<=\\d]*\\[)","end":"$|(?=#)","patterns":[{"captures":{"0":{"name":"storage.type.rosmsg"}},"match":"\\Gw?string\\b","name":"support.type.rosmsg"},{"match":"\\d+","name":"constant.numeric.integer.rosmsg"},{"begin":"(?=[A-Z_a-z])","end":"$|(?=#)","patterns":[{"include":"#field-string-array-after-type"}]}]},"field-string-array-after-type":{"patterns":[{"match":"\\G[0-9A-Z_a-z]+","name":"variable.other.field.rosmsg"},{"begin":"(?<=\\s)","end":"$|(?=#)","name":"meta.default-value.rosmsg","patterns":[{"include":"#literal-string-array"}]}]},"lines":{"patterns":[{"include":"#attributes"},{"include":"#field-string-array"},{"include":"#field-string"},{"include":"#field-other"}]},"literal-other":{"patterns":[{"match":"[-+]?(?:(?:\\d+(?:_\\d+)*)?\\.\\d+(?:_\\d+)*|\\d+(?:_\\d+)*\\.)(?:[Ee][-+]?\\d+(?:_\\d+)*)?","name":"constant.numeric.float.rosmsg"},{"match":"[-+]?\\d+(?:_\\d+)*","name":"constant.numeric.integer.rosmsg"},{"match":"(?i)\\b(?:true|false)\\b","name":"constant.language.boolean.rosmsg"}]},"literal-other-array":{"patterns":[{"begin":"\\[","end":"]|$|(?=#)","name":"meta.array.rosmsg","patterns":[{"include":"#literal-other"}]}]},"literal-string":{"patterns":[{"include":"#literal-string-quoted"},{"include":"#literal-string-unquoted"}]},"literal-string-array":{"patterns":[{"begin":"\\[","end":"]|$|(?=#)","name":"meta.array.rosmsg","patterns":[{"include":"#literal-string-quoted"},{"include":"#literal-string-unquoted-in-array"}]}]},"literal-string-escape":{"patterns":[{"match":"\\\\(?:[0-7]{3}|x\\h{2}|u\\h{4}|U\\h{8}|.)","name":"constant.character.escape.rosmsg"}]},"literal-string-quoted":{"patterns":[{"begin":"\"","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.rosmsg"}},"end":"\"|$","endCaptures":{"0":{"name":"punctuation.definition.string.end.rosmsg"}},"name":"string.quoted.double.rosmsg","patterns":[{"include":"#literal-string-escape"}]},{"begin":"'","beginCaptures":{"0":{"name":"punctuation.definition.string.begin.rosmsg"}},"end":"'|$","endCaptures":{"0":{"name":"punctuation.definition.string.end.rosmsg"}},"name":"string.quoted.single.rosmsg","patterns":[{"include":"#literal-string-escape"}]}]},"literal-string-unquoted":{"begin":"(?=[^\"'\\s])","end":"(?=\\s*(?:#|$))","name":"string.unquoted.rosmsg","patterns":[{"include":"#literal-string-escape"}]},"literal-string-unquoted-in-array":{"begin":"(?=[^]\"',\\s])","end":"(?=\\s*(?:$|[],]))","name":"string.unquoted.rosmsg","patterns":[{"include":"#literal-string-escape"}]},"separators":{"patterns":[{"match":"^---\\s*$\\n?","name":"meta.separator.rosmsg"},{"match":"^={3,}\\s*$\\n?","name":"meta.separator.rosmsg"},{"captures":{"1":{"name":"entity.name.type.class.rosmsg"}},"match":"^MSG:\\s+([/-9A-Z_a-z]+)\\s*$\\n?","name":"meta.separator.rosmsg"}]}},"scopeName":"source.rosmsg"}]