{ "fileTypes": [ "w", "p", "i" ], "name": "OpenEdge ABL", "patterns": [ { "begin": "/\\*", "end": "\\*/(?![^/]*?\\*/)", "name": "comment.block.source.abl" }, { "match": "('(?:'|.)*?')", "name": "string.single.source.abl" }, { "match": "\\\"\\\"[a-zA-Z0-9_\\.\\-]+\\\"\\\"", "name": "string.double.source.abl" }, { "begin": "(\\\"(?!\\\"[a-zA-Z]+)|\\\"\\\"[a-zA-Z]+)", "end": "\\\"(?!\\\")", "name": "string.double.complex.abl", "patterns": [ { "match": "(~(x\\h{2}|[0-2][0-7]{,2}|3[0-6][0-7]|37[0-7]?|[4-7][0-7]?|.)|\\\"\\\")", "name": "constant.character.escape.abl" } ] }, { "match": "(?|,|\\.))", "name": "keyword.operator.source.abl" }, { "match": "(?i)(\\b(return|function|return(s)?|forward|input|output|like|new|no-undo|no-box|no-labels|(share|no|exclusive)-lock|no-error|format|colon|label|init(ial)?|side-labels|width|primary|use-index)\\b|@)", "name": "keyword.option.source.abl" }, { "match": "(?i)\\b(disp(lay)?|for|do|repeat|delete|create|update|empty|assign|import( unformatted)?|input\\s+(from|close)|with|skip)\\b", "name": "keyword.statement.source.abl" }, { "match": "(?i)\\b(as|for(?!\\s+(each|first|last)))\\b", "name": "keyword.type.source.abl" }, { "captures": { "1": { "name": "keyword.type.source.abl" }, "2": { "name": "storage.type.source.abl" } }, "match": "(?i)\\b(like)\\s+([a-zA-Z0-9_\\.-]+)," }, { "match": "(?i)(\\b(if|avail(able)?|down|where|else( if)?|each|first|last|while|find( first|last)?|then( do( transaction)?)?|next|page|quit)\\b|(?