filetype: forth

detect:
    filename: "\\.(forth|4th|fs|fs8|ft|fth|frt)$"

rules:
    - identifier: "\\b[A-Za-z_0-9-]*\\b"
    
    - statement: "\\b(?i:(if|else|then|do|loop|case|endcase|of|endof|begin|while|repeat|until|again|unloop|leave|exit|done|next|\\?do|\\+do|\\-do|\\+loop|\\-loop|\\?leave))\\b"

    - statement: "(^:|;$)"

    - type: "\\b(?i:(variable|constant|cells))\\b"

    - special: "\\B[?.]\\B" #for some reason, \b and \B are inverted for symbols

    - constant.number: "\\b[0-9]+\\b"

    - constant.string:
        start: "\\b([Ss.]\" )"
        end: "\""
        rules: []

    - comment:
        start: "\\("
        end: "\\)"
        rules:
            - todo: "(TODO|NOTE|XXX|FIXME):?"

    - comment:
        start: "\\\\"
        end: "$"
        rules:
            - todo: "(TODO|NOTE|XXX|FIXME):?"
