{
    "information_for_contributors": [
        "This file has been converted from https://github.com/fadeevab/make.tmbundle/blob/master/Syntaxes/bakefile.plist",
        "If you want to provide a fix or improvement, please create a pull request against the original repository.",
        "Once accepted there, we are happy to receive an update request."
    ],
    "version": "https://github.com/fadeevab/make.tmbundle/commit/fa280d2f20b0b63dc7c11b6001e9257e2c67f826",
    "name": "bakefile",
    "scopeName": "source.bakefile",
    "patterns": [
        {
            "include": "#comment"
        },
        {
            "include": "#target"
        },
        {
            "include": "#task"
        },
        {
            "include": "#directives"
        }
    ],
    "repository": {
        "comment": {
            "begin": "(^[ \\t]+)?(?=#)",
            "beginCaptures": {
                "1": {
                    "name": "punctuation.whitespace.comment.leading.bakefile"
                }
            },
            "end": "(?!\\G)",
            "patterns": [
                {
                    "begin": "#",
                    "beginCaptures": {
                        "0": {
                            "name": "punctuation.definition.comment.bakefile"
                        }
                    },
                    "end": "(?=[^\\\\])$",
                    "name": "comment.line.number-sign.bakefile",
                    "patterns": [
                        {
                            "match": "\\\\\\n",
                            "name": "constant.character.escape.continuation.bakefile"
                        }
                    ]
                }
            ]
        },
        "directives": {
            "patterns": [
                {
                    "begin": "^[ ]*([s\\-]?include)\\b",
                    "beginCaptures": {
                        "1": {
                            "name": "keyword.control.include.bakefile"
                        }
                    },
                    "end": "^",
                    "patterns": [
                        {
                            "include": "#comment"
                        },
                        {
                            "match": "%",
                            "name": "constant.other.placeholder.bakefile"
                        }
                    ]
                },
                {
                    "begin": "^[ ]*(vpath)\\b",
                    "beginCaptures": {
                        "1": {
                            "name": "keyword.control.vpath.bakefile"
                        }
                    },
                    "end": "^",
                    "patterns": [
                        {
                            "include": "#comment"
                        },
                        {
                            "match": "%",
                            "name": "constant.other.placeholder.bakefile"
                        }
                    ]
                },
                {
                    "begin": "^\\s*(?:(override)\\s*)?(define)\\s*([^\\s]+)\\s*(=|\\?=|:=|\\+=)?(?=\\s)",
                    "captures": {
                        "1": {
                            "name": "keyword.control.override.bakefile"
                        },
                        "2": {
                            "name": "keyword.control.define.bakefile"
                        },
                        "3": {
                            "name": "variable.other.bakefile"
                        },
                        "4": {
                            "name": "punctuation.separator.key-value.bakefile"
                        }
                    },
                    "end": "^\\s*(endef)\\b",
                    "name": "meta.scope.conditional.bakefile",
                    "patterns": [
                        {
                            "begin": "\\G(?!\\n)",
                            "end": "^",
                            "patterns": [
                                {
                                    "include": "#comment"
                                }
                            ]
                        },
                        {
                            "include": "#variables"
                        },
                        {
                            "include": "#comment"
                        },
                        {
                            "include": "#directives"
                        }
                    ]
                },
                {
                    "begin": "^[ ]*(export)\\b",
                    "beginCaptures": {
                        "1": {
                            "name": "keyword.control.$1.bakefile"
                        }
                    },
                    "end": "^",
                    "patterns": [
                        {
                            "include": "#comment"
                        },
                        {
                            "include": "#variable-assignment"
                        },
                        {
                            "match": "[^\\s]+",
                            "name": "variable.other.bakefile"
                        }
                    ]
                },
                {
                    "begin": "^[ ]*(override|private)\\b",
                    "beginCaptures": {
                        "1": {
                            "name": "keyword.control.$1.bakefile"
                        }
                    },
                    "end": "^",
                    "patterns": [
                        {
                            "include": "#comment"
                        },
                        {
                            "include": "#variable-assignment"
                        }
                    ]
                },
                {
                    "begin": "^[ ]*(unexport|undefine)\\b",
                    "beginCaptures": {
                        "1": {
                            "name": "keyword.control.$1.bakefile"
                        }
                    },
                    "end": "^",
                    "patterns": [
                        {
                            "include": "#comment"
                        },
                        {
                            "match": "[^\\s]+",
                            "name": "variable.other.bakefile"
                        }
                    ]
                },
                {
                    "begin": "^\\s*(ifdef|ifndef)\\s*([^\\s]+)(?=\\s)",
                    "captures": {
                        "1": {
                            "name": "keyword.control.$1.bakefile"
                        },
                        "2": {
                            "name": "variable.other.bakefile"
                        },
                        "3": {
                            "name": "punctuation.separator.key-value.bakefile"
                        }
                    },
                    "end": "^\\s*(endif)\\b",
                    "name": "meta.scope.conditional.bakefile",
                    "patterns": [
                        {
                            "begin": "\\G(?!\\n)",
                            "end": "^",
                            "patterns": [
                                {
                                    "include": "#comment"
                                }
                            ]
                        },
                        {
                            "include": "$self"
                        }
                    ]
                },
                {
                    "begin": "^\\s*(ifeq|ifneq)(?=\\s)",
                    "captures": {
                        "1": {
                            "name": "keyword.control.$1.bakefile"
                        }
                    },
                    "end": "^\\s*(endif)\\b",
                    "name": "meta.scope.conditional.bakefile",
                    "patterns": [
                        {
                            "begin": "\\G",
                            "end": "^",
                            "name": "meta.scope.condition.bakefile",
                            "patterns": [
                                {
                                    "include": "#variables"
                                },
                                {
                                    "include": "#comment"
                                }
                            ]
                        },
                        {
                            "begin": "^\\s*else(?=\\s)",
                            "beginCaptures": {
                                "0": {
                                    "name": "keyword.control.else.bakefile"
                                }
                            },
                            "end": "^"
                        },
                        {
                            "include": "$self"
                        }
                    ]
                }
            ]
        },
        "target": {
            "begin": "^(?!\\t)([^:]*)(:)(?!\\=)",
            "beginCaptures": {
                "1": {
                    "patterns": [
                        {
                            "captures": {
                                "1": {
                                    "name": "support.function.target.$1.bakefile"
                                }
                            },
                            "match": "^\\s*(\\.(PHONY|SUFFIXES|DEFAULT|PRECIOUS|INTERMEDIATE|SECONDARY|SECONDEXPANSION|DELETE_ON_ERROR|IGNORE|LOW_RESOLUTION_TIME|SILENT|EXPORT_ALL_VARIABLES|NOTPARALLEL|ONESHELL|POSIX))\\s*$"
                        },
                        {
                            "begin": "(?=\\S)",
                            "end": "(?=\\s|$)",
                            "name": "entity.name.function.target.bakefile",
                            "patterns": [
                                {
                                    "include": "#variables"
                                },
                                {
                                    "match": "%",
                                    "name": "constant.other.placeholder.bakefile"
                                }
                            ]
                        }
                    ]
                },
                "2": {
                    "name": "punctuation.separator.key-value.bakefile"
                }
            },
            "end": "[^\\\\]$",
            "name": "meta.scope.target.bakefile",
            "patterns": [
                {
                    "begin": "\\G",
                    "end": "(?=[^\\\\])$",
                    "name": "meta.scope.prerequisites.bakefile",
                    "patterns": [
                        {
                            "match": "\\\\\\n",
                            "name": "constant.character.escape.continuation.bakefile"
                        },
                        {
                            "match": "%|\\*",
                            "name": "constant.other.placeholder.bakefile"
                        },
                        {
                            "include": "#comment"
                        },
                        {
                            "include": "#variables"
                        }
                    ]
                }
            ]
        },
        "task": {
            "begin": "^(\\t| {4})([+\\-@]*)",
            "beginCaptures": {
                "1": {
                    "name": "keyword.control.$1.bakefile"
                }
            },
            "end": "[^\\\\]$",
            "name": "task",
            "patterns": [
                {
                    "match": "\\\\\\n",
                    "name": "constant.character.escape.continuation.bakefile"
                },
                {
                    "include": "#variables"
                }
            ]
        },
        "interpolation": {
            "patterns": [
                {
                    "include": "#parentheses-interpolation"
                }
            ]
        },
        "parentheses-interpolation": {
            "begin": "\\(",
            "end": "\\)",
            "patterns": [
                {
                    "include": "#interpolation"
                }
            ]
        },
        "braces-interpolation": {
            "begin": "{",
            "end": "}",
            "patterns": [
                {
                    "include": "#interpolation"
                }
            ]
        }
    }
}
