dartLanguage top-level constant
Language
const dartLanguage
Dart (source.dart).
Implementation
const dartLanguage = Language(
name: 'dart',
scopeName: 'source.dart',
displayName: 'Dart',
aliases: [],
grammar: <String, Object?>{
'displayName': 'Dart',
'name': 'dart',
'patterns': [
{'match': '^(#!.*)\$', 'name': 'meta.preprocessor.script.dart'},
{
'begin':
'^\\w*\\b(augment\\s+library|library|import\\s+augment|import|part\\s+of|part|export)\\b',
'beginCaptures': {
'0': {'name': 'keyword.other.import.dart'},
},
'end': ';',
'endCaptures': {
'0': {'name': 'punctuation.terminator.dart'},
},
'name': 'meta.declaration.dart',
'patterns': [
{'include': '#strings'},
{'include': '#comments'},
{
'match': '\\b(as|show|hide)\\b',
'name': 'keyword.other.import.dart',
},
{'match': '\\b(if)\\b', 'name': 'keyword.control.dart'},
],
},
{'include': '#comments'},
{'include': '#punctuation'},
{'include': '#annotations'},
{'include': '#keywords'},
{'include': '#constants-and-special-vars'},
{'include': '#class-identifier-with-optional-factory-method'},
{'include': '#function-identifier'},
{'include': '#operators'},
{'include': '#strings'},
],
'repository': {
'annotations': {
'patterns': [
{'match': '@[A-Za-z]+', 'name': 'storage.type.annotation.dart'},
],
},
'class-identifier': {
'patterns': [
{
'match': '(?<!\\\$)\\b(bool|num|int|double|dynamic)\\b(?!\\\$)',
'name': 'support.class.dart',
},
{
'match': '(?<!\\\$)\\bvoid\\b(?!\\\$)',
'name': 'storage.type.primitive.dart',
},
{
'begin': '(?<![\$0-9A-Z_a-z])([\$_]*[A-Z][\$0-9A-Z_a-z]*)\\b',
'beginCaptures': {
'1': {'name': 'support.class.dart'},
},
'end': '(?!<)',
'patterns': [
{'include': '#type-args'},
],
},
],
},
'class-identifier-with-optional-factory-method': {
'patterns': [
{
'captures': {
'1': {'name': 'support.class.dart'},
'2': {'name': 'entity.name.function.dart'},
},
'match':
'(?<!\\\$)\\b(bool|num|int|double|dynamic)\\b(?!\\\$)\\s*(factory\\b)?',
},
{
'captures': {
'1': {'name': 'storage.type.primitive.dart'},
'2': {'name': 'entity.name.function.dart'},
},
'match': '(?<!\\\$)\\b(void)\\b(?!\\\$)\\s*(factory\\b)?',
},
{
'begin':
'(?<![\$0-9A-Z_a-z])([\$_]*[A-Z][\$0-9A-Z_a-z]*)\\b\\s*(factory\\b)?',
'beginCaptures': {
'1': {'name': 'support.class.dart'},
'2': {'name': 'entity.name.function.dart'},
},
'end': '(?!<)',
'patterns': [
{'include': '#type-args'},
],
},
],
},
'comments': {
'patterns': [
{
'captures': {
'0': {'name': 'punctuation.definition.comment.dart'},
},
'match': '/\\*\\*/',
'name': 'comment.block.empty.dart',
},
{'include': '#comments-doc-oldschool'},
{'include': '#comments-doc'},
{'include': '#comments-inline'},
],
},
'comments-block': {
'patterns': [
{
'begin': '/\\*',
'end': '\\*/',
'name': 'comment.block.dart',
'patterns': [
{'include': '#comments-block'},
],
},
],
},
'comments-doc': {
'patterns': [
{
'begin': '///',
'end': '^(?!\\s*///)',
'name': 'comment.block.documentation.dart',
'patterns': [
{'include': '#dartdoc'},
],
},
],
},
'comments-doc-oldschool': {
'patterns': [
{
'begin': '/\\*\\*',
'end': '\\*/',
'name': 'comment.block.documentation.dart',
'patterns': [
{'include': '#comments-doc-oldschool'},
{'include': '#comments-block'},
{'include': '#dartdoc'},
],
},
],
},
'comments-inline': {
'patterns': [
{'include': '#comments-block'},
{
'captures': {
'1': {'name': 'comment.line.double-slash.dart'},
},
'match': '((//).*)\$',
},
],
},
'constants-and-special-vars': {
'patterns': [
{
'match': '(?<!\\\$)\\b(true|false|null)\\b(?!\\\$)',
'name': 'constant.language.dart',
},
{
'match': '(?<!\\\$)\\b(this|super|augmented)\\b(?!\\\$)',
'name': 'variable.language.dart',
},
{
'match':
'(?<!\\\$)\\b((0([Xx])\\h[_\\h]*)|(([0-9][0-9_]*\\.?[0-9_]*)|(\\.[0-9][0-9_]*))(([Ee])([-+])?[0-9][0-9_]*)?)\\b(?!\\\$)',
'name': 'constant.numeric.dart',
},
],
},
'dartdoc': {
'patterns': [
{
'captures': {
'0': {'name': 'variable.name.source.dart'},
},
'match': '(\\[.*?])',
},
{
'begin': '^\\s*///\\s*(```)',
'end': '^(?:\\s*///\\s*(```)|(?!\\s*///))',
'patterns': [
{'include': '#dartdoc-codeblock-triple'},
],
},
{
'begin': '^\\s*\\*\\s*(```)',
'end': '^(?:\\s*\\*\\s*(```)|(?=\\s*\\*/))',
'patterns': [
{'include': '#dartdoc-codeblock-block'},
],
},
{'match': '`[^\\n`]+`', 'name': 'variable.other.source.dart'},
{
'captures': {
'1': {'name': 'variable.other.source.dart'},
},
'match': '(?:\\*|//)\\s{4,}(.*?)(?=(\$|\\*/))',
},
],
},
'dartdoc-codeblock-block': {
'begin': '^\\s*\\*\\s*(?!(\\s*```|/))',
'contentName': 'variable.other.source.dart',
'end': '\$',
},
'dartdoc-codeblock-triple': {
'begin': '^\\s*///\\s*(?!\\s*```)',
'contentName': 'variable.other.source.dart',
'end': '\$',
},
'expression': {
'patterns': [
{'include': '#constants-and-special-vars'},
{'include': '#class-identifier-with-optional-factory-method'},
{'include': '#function-identifier'},
{'include': '#strings'},
{'match': '[0-9A-Z_a-z]+', 'name': 'variable.parameter.dart'},
{
'begin': '\\{',
'end': '}',
'patterns': [
{'include': '#expression'},
],
},
],
},
'function-identifier': {
'patterns': [
{
'captures': {
'1': {'name': 'entity.name.function.dart'},
'2': {
'patterns': [
{'include': '#type-args'},
],
},
},
'match':
'([\$_]*[a-z][\$0-9A-Z_a-z]*)(<(?:[\$0-9<>?A-Z_a-z]|,\\s*|\\s+extends\\s+)+>)?[!?]?\\(',
},
{'match': '(?<=\\.)new\\b', 'name': 'entity.name.function.dart'},
],
},
'keywords': {
'patterns': [
{'match': '(?<!\\\$)\\bas\\b(?!\\\$)', 'name': 'keyword.cast.dart'},
{
'match':
'(?<!\\\$)\\b(try|on|catch|finally|throw|rethrow)\\b(?!\\\$)',
'name': 'keyword.control.catch-exception.dart',
},
{
'match':
'(?<!\\\$)\\b(break|case|continue|default|do|else|for|if|in|switch|while|when)\\b(?!\\\$)',
'name': 'keyword.control.dart',
},
{
'match':
'(?<!\\\$)\\b(sync(\\*)?|async(\\*)?|await|yield(\\*)?)\\b(?!\\\$)',
'name': 'keyword.control.dart',
},
{
'match': '(?<!\\\$)\\bassert\\b(?!\\\$)',
'name': 'keyword.control.dart',
},
{
'match': '(?<![\$.])\\b(new)\\b(?!\\\$)',
'name': 'keyword.new.dart',
},
{
'match': '(?<!\\\$)\\b(return)\\b(?!\\\$)',
'name': 'keyword.control.return.dart',
},
{
'match':
'(?<!\\\$)\\b(abstract|sealed|base|interface|class|enum|extends|extension\\s+type|extension|external|factory|implements|get(?![(<])|mixin|native|operator|set(?![(<])|typedef|with|covariant)\\b(?!\\\$)',
'name': 'keyword.declaration.dart',
},
{
'match':
'(?<!\\\$)\\b(macro|augment|static|final|const|required|late)\\b(?!\\\$)',
'name': 'storage.modifier.dart',
},
{
'match': '(?<!\\\$)\\bvar\\b(?!\\\$)',
'name': 'storage.type.primitive.dart',
},
],
},
'operators': {
'patterns': [
{
'match': '(?<!\\\$)\\b(is!?)\\b(?!\\\$)',
'name': 'keyword.operator.dart',
},
{'match': '[:?]', 'name': 'keyword.operator.ternary.dart'},
{
'match': '(<<|>>>?|[\\&^|~])',
'name': 'keyword.operator.bitwise.dart',
},
{
'match': '(([\\&^|]|<<|>>>?)=)',
'name': 'keyword.operator.assignment.bitwise.dart',
},
{'match': '(=>)', 'name': 'keyword.operator.closure.dart'},
{
'match': '(==|!=|<=?|>=?)',
'name': 'keyword.operator.comparison.dart',
},
{
'match': '(([-%*+/~])=)',
'name': 'keyword.operator.assignment.arithmetic.dart',
},
{'match': '(=)', 'name': 'keyword.operator.assignment.dart'},
{
'match': '(--|\\+\\+)',
'name': 'keyword.operator.increment-decrement.dart',
},
{
'match': '([-*+/]|~/|%)',
'name': 'keyword.operator.arithmetic.dart',
},
{'match': '(!|&&|\\|\\|)', 'name': 'keyword.operator.logical.dart'},
],
},
'punctuation': {
'patterns': [
{'match': ',', 'name': 'punctuation.comma.dart'},
{'match': ';', 'name': 'punctuation.terminator.dart'},
{'match': '\\.', 'name': 'punctuation.dot.dart'},
],
},
'string-interp': {
'patterns': [
{
'captures': {
'1': {'name': 'variable.parameter.dart'},
},
'match': '\\\$([0-9A-Z_a-z]+)',
'name': 'meta.embedded.expression.dart',
},
{
'begin': '\\\$\\{',
'end': '}',
'name': 'meta.embedded.expression.dart',
'patterns': [
{'include': '#expression'},
],
},
{'match': '\\\\.', 'name': 'constant.character.escape.dart'},
],
},
'strings': {
'patterns': [
{
'begin': '(?<!r)"""',
'end': '"""(?!")',
'name': 'string.interpolated.triple.double.dart',
'patterns': [
{'include': '#string-interp'},
],
},
{
'begin': '(?<!r)\'\'\'',
'end': '\'\'\'(?!\')',
'name': 'string.interpolated.triple.single.dart',
'patterns': [
{'include': '#string-interp'},
],
},
{
'begin': 'r"""',
'end': '"""(?!")',
'name': 'string.quoted.triple.double.dart',
},
{
'begin': 'r\'\'\'',
'end': '\'\'\'(?!\')',
'name': 'string.quoted.triple.single.dart',
},
{
'begin': '(?<!\\|r)"',
'end': '"',
'name': 'string.interpolated.double.dart',
'patterns': [
{'match': '\\n', 'name': 'invalid.string.newline'},
{'include': '#string-interp'},
],
},
{
'begin': 'r"',
'end': '"',
'name': 'string.quoted.double.dart',
'patterns': [
{'match': '\\n', 'name': 'invalid.string.newline'},
],
},
{
'begin': '(?<!\\|r)\'',
'end': '\'',
'name': 'string.interpolated.single.dart',
'patterns': [
{'match': '\\n', 'name': 'invalid.string.newline'},
{'include': '#string-interp'},
],
},
{
'begin': 'r\'',
'end': '\'',
'name': 'string.quoted.single.dart',
'patterns': [
{'match': '\\n', 'name': 'invalid.string.newline'},
],
},
],
},
'type-args': {
'begin': '(<)',
'beginCaptures': {
'1': {'name': 'other.source.dart'},
},
'end': '(>)',
'endCaptures': {
'1': {'name': 'other.source.dart'},
},
'patterns': [
{'include': '#class-identifier'},
{'match': ','},
{'match': 'extends', 'name': 'keyword.declaration.dart'},
{'include': '#comments'},
],
},
},
'scopeName': 'source.dart',
},
);