filetype: julia

detect:
    filename: "\\.jl$"
    header: "^#!.*/(env +)?julia( |$)"

rules:

    # built-in objects
    - constant.bool: "\\b(true|false)\\b"
      # built-in attributes
    - constant: "__[A-Za-z0-9_]+__"
      # definitions
    - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]"
      # keywords
    - statement: "\\b(baremodule|begin|break|catch|const|continue|do|else|elseif|end|export|finally|for|function|global|if|import|let|local|macro|module|quote|return|struct|try|using|while)\\b"
    - statement: "\\b(abstract type|primitive type|mutable struct\\b)"
      # decorators
    - identifier.macro: "@[A-Za-z0-9_]+"
      # operators
    - symbol.operator: "[-+*/|=%<>&~^]|\\b(and|not|or|is|in)\\b"
      # parentheses
    - symbol.brackets: "([(){}]|\\[|\\])"
      # numbers
    - constant.number: "\\b[0-9]+\\b"

    - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'"

    - constant.string:
        start: "\"\"\""
        end: "\"\"\""
        rules: []

    - constant.string:
        start: "'''"
        end: "'''"
        rules: []

    - comment:
        start: "#"
        end: "$"
        rules: []

filetype: julia

detect:
    filename: "\\.jl$"
    header: "^#!.*/(env +)?julia( |$)"

rules:

    # built-in objects
    - constant.bool: "\\b(true|false)\\b"
      # built-in attributes
    - constant: "__[A-Za-z0-9_]+__"
      # definitions
    - identifier: "[A-Za-z_][A-Za-z0-9_]*[[:space:]]*[(]"
      # keywords
    - statement: "\\b(baremodule|begin|break|catch|const|continue|do|else|elseif|end|export|finally|for|function|global|if|import|let|local|macro|module|quote|return|struct|try|using|while)\\b"
    - statement: "\\b(abstract type|primitive type|mutable struct\\b)"
      # decorators
    - identifier.macro: "@[A-Za-z0-9_]+"
      # operators
    - symbol.operator: "[-+*/|=%<>&~^]|\\b(in|isa|where)\\b"
      # parentheses
    - symbol.brackets: "([(){}]|\\[|\\])"
      # numbers
    - constant.number: "\\b[0-9]+\\b"

    - constant.string: "\"(\\\\.|[^\"])*\"|'(\\\\.|[^'])*'"

    - constant.string:
        start: "\"\"\""
        end: "\"\"\""
        rules: []

    - constant.string:
        start: "'''"
        end: "'''"
        rules: []

    - comment:
        start: "#"
        end: "$"
        rules: []

Update keywords for infix operators
Update keywords for infix operators
