{"name":"GDScript","scopeName":"source.gdscript","patterns":[{"include":"#base_expression"},{"include":"#logic_op"},{"include":"#compare_op"},{"include":"#arithmetic_op"},{"include":"#assignment_op"},{"include":"#keywords"},{"include":"#self"},{"include":"#const_def"},{"include":"#type_declear"},{"include":"#class_def"},{"include":"#class_name"},{"include":"#builtin_func"},{"include":"#builtin_get_node_shorthand"},{"include":"#builtin_classes"},{"include":"#const_vars"},{"include":"#class_new"},{"include":"#class_is"},{"include":"#class_enum"},{"include":"#function-declaration"},{"include":"#function-return-type"},{"include":"#any-method"},{"include":"#any-property"},{"include":"#extends"},{"include":"#pascal_case_class"}],"repository":{"annotated-parameter":{"begin":"(?x)\n  \\b\n  ([[:alpha:]_]\\w*) \\s* (:)\n","end":"(,)|(?=\\))","patterns":[{"name":"keyword.operator.assignment.gdscript","match":"=(?!=)"}],"beginCaptures":{"1":{"name":"variable.parameter.function.language.gdscript"},"2":{"name":"punctuation.separator.annotation.gdscript"}},"endCaptures":{"1":{"name":"punctuation.separator.parameters.gdscript"}}},"any-method":{"name":"support.function.any-method.gdscript","match":"\\b([A-Za-z_]\\w*)\\b(?=\\s*(?:[(]))"},"any-property":{"name":"variable.other.property.gdscript","match":"(?\u003c=[^.]\\.)\\b([A-Za-z_]\\w*)\\b(?![(])"},"arithmetic_op":{"name":"keyword.operator.arithmetic.gdscript","match":"\\+=|-=|\\*=|/=|%=|\u0026=|\\|=|\\*|/|%|\\+|-|\u003c\u003c|\u003e\u003e|\u0026|\\||\\^|~"},"assignment_op":{"name":"keyword.operator.assignment.gdscript","match":"="},"base_expression":{"patterns":[{"include":"#strings"},{"include":"#comment"},{"include":"#letter"},{"include":"#numbers"},{"include":"#line-continuation"}]},"builtin_classes":{"name":"support.class.library.gdscript","match":"(?\u003c![^.]\\.|:)\\b(Vector2|Vector3|Color|Rect2|Array|Basis|Dictionary|Plane|Quat|RID|Rect3|Transform|Transform2D|AABB|String|Color|NodePath|RID|Object|Dictionary|Array|PoolByteArray|PoolIntArray|PoolRealArray|PoolStringArray|PoolVector2Array|PoolVector3Array|PoolColorArray)\\b"},"builtin_func":{"name":"support.function.builtin.gdscript","match":"(?\u003c![^.]\\.|:)\\b(sin|cos|tan|sinh|cosh|tanh|asin|acos|atan|atan2|sqrt|fmod|fposmod|floor|ceil|round|abs|sign|pow|log|exp|is_nan|is_inf|ease|decimals|stepify|lerp|dectime|randomize|randi|randf|rand_range|seed|rand_seed|deg2rad|rad2deg|linear2db|db2linear|max|min|clamp|nearest_po2|weakref|funcref|convert|typeof|type_exists|char|str|print|printt|prints|printerr|printraw|var2str|str2var|var2bytes|bytes2var|range|load|inst2dict|dict2inst|hash|Color8|print_stack|instance_from_id|preload|yield|assert)\\b(?=(\\()([^)]*)(\\)))"},"builtin_get_node_shorthand":{"name":"support.function.builtin.shorthand.gdscript","match":"\\$((\\\"(\\.\\.\\/)+|\\\"\\/|\\\"[0-9]+|\\\")([0-9A-Za-z\\_]+\\/)*[A-Za-z0-9\\_]+\\\"|[A-Za-z\\_]+(\\/[A-Za-z\\_]+)*)"},"class_def":{"match":"(?\u003c=^class)\\s+([a-zA-Z_]\\w*)\\s*(?=:)","captures":{"1":{"name":"entity.name.type.class.gdscript"},"2":{"name":"class.other.gdscript"}}},"class_enum":{"match":"\\b([A-Z][a-zA-Z_0-9]*)\\.([A-Z_0-9]+)","captures":{"1":{"name":"entity.name.type.class.gdscript"},"2":{"name":"constant.language.gdscript"}}},"class_is":{"match":"\\s+(is)\\s+([a-zA-Z_][a-zA-Z_0-9]*)","captures":{"1":{"name":"storage.type.is.gdscript"},"2":{"name":"entity.name.type.class.gdscript"}}},"class_name":{"match":"(?\u003c=class_name)\\s+([a-zA-Z_][a-zA-Z_0-9]*(\\.([a-zA-Z_][a-zA-Z_0-9]*))?)","captures":{"1":{"name":"entity.name.type.class.gdscript"},"2":{"name":"class.other.gdscript"}}},"class_new":{"match":"\\b([a-zA-Z_][a-zA-Z_0-9]*).(new)\\(","captures":{"1":{"name":"entity.name.type.class.gdscript"},"2":{"name":"storage.type.new.gdscript"}}},"comment":{"name":"comment.line.number-sign.gdscript","match":"(#).*$\\n?","captures":{"1":{"name":"punctuation.definition.comment.number-sign.gdscript"}}},"compare_op":{"name":"keyword.operator.comparison.gdscript","match":"\u003c=|\u003e=|==|\u003c|\u003e|!="},"const_def":{"match":"\\b(?i:(const))\\s+([a-zA-Z_][a-zA-Z_0-9]*)","captures":{"1":{"name":"storage.type.const.gdscript"},"2":{"name":"constant.language.gdscript"}}},"const_vars":{"name":"constant.language.gdscript","match":"\\b([A-Z_0-9]+)\\b"},"extends":{"name":"entity.other.inherited-class.gdscript","match":"(?\u003c=extends)\\s+[a-zA-Z_][a-zA-Z_0-9]*(\\.([a-zA-Z_][a-zA-Z_0-9]*))?"},"function-declaration":{"name":"meta.function.gdscript","begin":"(?x)\n  \\s*\n  (?:\\b(static) \\s+)? \\b(func|signal)\\s+\n    (?=\n      [[:alpha:]_][[:word:]]* \\s* \\(\n    )\n","end":"(:|(?=[#'\"\\n]))","patterns":[{"include":"#function-def-name"},{"include":"#parameters"},{"include":"#line-continuation"},{"include":"#return-annotation"}],"beginCaptures":{"1":{"name":"storage.type.function.static.gdscript"},"2":{"name":"storage.type.function.gdscript"}},"endCaptures":{"1":{"name":"punctuation.section.function.begin.gdscript"}}},"function-def-name":{"patterns":[{"name":"entity.name.function.gdscript","match":"(?x)\n  \\b ([[:alpha:]_]\\w*) \\b\n"}]},"function-return-type":{"match":"\\)\\s*\\-\\\u003e\\s*([a-zA-Z_][a-zA-Z_0-9]*)\\s*\\:","captures":{"1":{"name":"entity.name.type.class.gdscript"}}},"keywords":{"name":"keyword.language.gdscript","match":"\\b(?i:if|elif|else|for|while|break|continue|pass|return|match|func|class|class_name|extends|is|in|onready|tool|static|export|setget|const|var|as|void|enum|preload|assert|yield|signal|breakpoint|rpc|sync|remote|master|puppet|slave|remotesync|mastersync|puppetsync|in)\\b"},"letter":{"name":"constant.language.gdscript","match":"\\b(?i:true|false|null)\\b"},"line-continuation":{"patterns":[{"match":"(\\\\)\\s*(\\S.*$\\n?)","captures":{"1":{"name":"punctuation.separator.continuation.line.gdscript"},"2":{"name":"invalid.illegal.line.continuation.gdscript"}}},{"begin":"(\\\\)\\s*$\\n?","end":"(?x)\n  (?=^\\s*$)\n  |\n  (?! (\\s* [rR]? (\\'\\'\\'|\\\"\\\"\\\"|\\'|\\\"))\n      |\n      (\\G $)  (?# '\\G' is necessary for ST)\n  )\n","patterns":[{"include":"#base_expression"}],"beginCaptures":{"1":{"name":"punctuation.separator.continuation.line.gdscript"}}}]},"logic_op":{"name":"keyword.operator.logical.gdscript","match":"\\b(and|or|not)\\b"},"loose-default":{"begin":"(=)","end":"(,)|(?=\\))","patterns":[{"include":"#base_expression"}],"beginCaptures":{"1":{"name":"keyword.operator.gdscript"}},"endCaptures":{"1":{"name":"punctuation.separator.parameters.gdscript"}}},"numbers":{"patterns":[{"name":"constant.numeric.integer.hexadecimal.gdscript","match":"\\b(?i:0x[[:xdigit:]]*)\\b"},{"name":"constant.numeric.float.gdscript","match":"\\b(?i:(\\d+\\.\\d*(e[\\-\\+]?\\d+)?))\\b"},{"name":"constant.numeric.float.gdscript","match":"\\b(?i:(\\.\\d+(e[\\-\\+]?\\d+)?))\\b"},{"name":"constant.numeric.float.gdscript","match":"\\b(?i:(\\d+e[\\-\\+]?\\d+))\\b"},{"name":"constant.numeric.integer.gdscript","match":"\\b\\d+\\b"}]},"parameter-special":{"match":"(?x)\n  \\b ((self)|(cls)) \\b \\s*(?:(,)|(?=\\)))\n","captures":{"1":{"name":"variable.parameter.function.language.gdscript"},"2":{"name":"variable.parameter.function.language.special.self.gdscript"},"3":{"name":"variable.parameter.function.language.special.cls.gdscript"},"4":{"name":"punctuation.separator.parameters.gdscript"}}},"parameters":{"name":"meta.function.parameters.gdscript","begin":"(\\()","end":"(\\))","patterns":[{"name":"keyword.operator.unpacking.parameter.gdscript","match":"(\\*\\*|\\*)"},{"include":"#parameter-special"},{"match":"(?x)\n  ([[:alpha:]_]\\w*)\n    \\s* (?: (,) | (?=[)#\\n=]))\n","captures":{"1":{"name":"variable.parameter.function.language.gdscript"},"2":{"name":"punctuation.separator.parameters.gdscript"}}},{"include":"#comment"},{"include":"#loose-default"},{"include":"#annotated-parameter"}],"beginCaptures":{"1":{"name":"punctuation.definition.parameters.begin.gdscript"}},"endCaptures":{"1":{"name":"punctuation.definition.parameters.end.gdscript"}}},"pascal_case_class":{"match":"\\b([A-Z][a-zA-Z_0-9]*)\\b","captures":{"1":{"name":"entity.name.type.class.gdscript"}}},"self":{"name":"variable.language.gdscript","match":"\\bself\\b"},"strings":{"patterns":[{"name":"string.quoted.double.gdscript","begin":"\"","end":"\"","patterns":[{"name":"constant.character.escape.untitled","match":"\\\\."}]},{"name":"string.quoted.single.gdscript","begin":"'","end":"'","patterns":[{"name":"constant.character.escape.untitled","match":"\\\\."}]},{"name":"string.nodepath.gdscript","begin":"@\"","end":"\"","patterns":[{"name":"constant.character.escape.untitled","match":"\\."}]}]},"type_declear":{"match":"\\:\\s*([a-zA-Z_][a-zA-Z_0-9]*)","captures":{"1":{"name":"entity.name.type.class.gdscript"}}},"var_def":{"match":"\\b(?i:(var))\\s+([a-zA-Z_][a-zA-Z_0-9]*)","captures":{"1":{"name":"storage.type.var.gdscript"},"2":{"name":"variable.language.gdscript"}}}}}