{ "name": "PostScript", "scopeName": "source.postscript", "patterns": [ { "name": "meta.document.pdf", "begin": "\\A(?=%PDF)", "end": "(?=A)B", "patterns": [ { "include": "#main" } ] }, { "include": "#main" } ], "repository": { "array": { "name": "meta.array.postscript", "begin": "\\[", "end": "\\]", "patterns": [ { "include": "#main" } ], "beginCaptures": { "0": { "name": "punctuation.definition.array.begin.postscript" } }, "endCaptures": { "0": { "name": "punctuation.definition.array.end.postscript" } } }, "base85": { "name": "string.other.base85.postscript", "begin": "\u003c~", "end": "~\u003e", "patterns": [ { "name": "invalid.illegal.base85.char.postscript", "match": "(?:[^!-uz\\s]|~(?!\u003e))++" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.postscript" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.postscript" } } }, "comment": { "patterns": [ { "name": "punctuation.whitespace.comment.leading.postscript", "match": "^[ \\t]+(?=%)" }, { "include": "#dsc" }, { "name": "comment.line.percentage.postscript", "begin": "%", "end": "(?=$|\\r|\\f)", "beginCaptures": { "0": { "name": "punctuation.definition.comment.postscript" } } } ] }, "dictionary": { "name": "meta.dictionary.postscript", "begin": "\u003c\u003c", "end": "\u003e\u003e", "patterns": [ { "include": "#main" } ], "beginCaptures": { "0": { "name": "punctuation.definition.dictionary.begin.postscript" } }, "endCaptures": { "0": { "name": "punctuation.definition.dictionary.end.postscript" } } }, "dsc": { "name": "meta.Document-Structuring-Comment.postscript", "contentName": "string.unquoted.DSC.postscript", "begin": "(?x) ^ (%%)\n( BeginBinary\n| BeginCustomColor\n| BeginData\n| BeginDefaults\n| BeginDocument\n| BeginEmulation\n| BeginExitServer\n| BeginFeature\n| BeginFile\n| BeginFont\n| BeginObject\n| BeginPageSetup\n| BeginPaperSize\n| BeginPreview\n| BeginProcSet\n| BeginProcessColor\n| BeginProlog\n| BeginResource\n| BeginSetup\n| BoundingBox\n| CMYKCustomColor\n| ChangeFont\n| Copyright\n| CreationDate\n| Creator\n| DocumentCustomColors\n| DocumentData\n| DocumentFonts\n| DocumentMedia\n| DocumentNeededFiles\n| DocumentNeededFonts\n| DocumentNeededProcSets\n| DocumentNeededResources\n| DocumentPaperColors\n| DocumentPaperForms\n| DocumentPaperSizes\n| DocumentPaperWeights\n| DocumentPrinterRequired\n| DocumentProcSets\n| DocumentProcessColors\n| DocumentSuppliedFiles\n| DocumentSuppliedFonts\n| DocumentSuppliedProcSets\n| DocumentSuppliedResources\n| EOF\n| Emulation\n| EndBinary\n| EndComments\n| EndCustomColor\n| EndData\n| EndDefaults\n| EndDocument\n| EndEmulation\n| EndExitServer\n| EndFeature\n| EndFile\n| EndFont\n| EndObject\n| EndPageSetup\n| EndPaperSize\n| EndPreview\n| EndProcSet\n| EndProcessColor\n| EndProlog\n| EndResource\n| EndSetup\n| ExecuteFile\n| Extensions\n| Feature\n| For\n| IncludeDocument\n| IncludeFeature\n| IncludeFile\n| IncludeFont\n| IncludeProcSet\n| IncludeResource\n| LanguageLevel\n| OperatorIntervention\n| OperatorMessage\n| Orientation\n| PageBoundingBox\n| PageCustomColors\n| PageFiles\n| PageFonts\n| PageMedia\n| PageOrder\n| PageOrientation\n| PageProcessColors\n| PageRequirements\n| PageResources\n| PageTrailer\n| Pages\n| Page\n| PaperColor\n| PaperForm\n| PaperSize\n| PaperWeight\n| ProofMode\n| RGBCustomColor\n| Requirements\n| Routing\n| Title\n| Trailer\n| VMlocation\n| VMusage\n| Version\n| \\+\n| \\?BeginFeatureQuery\n| \\?BeginFileQuery\n| \\?BeginFontListQuery\n| \\?BeginFontQuery\n| \\?BeginPrinterQuery\n| \\?BeginProcSetQuery\n| \\?BeginQuery\n| \\?BeginResourceListQuery\n| \\?BeginResourceQuery\n| \\?BeginVMStatus\n| \\?EndFeatureQuery\n| \\?EndFileQuery\n| \\?EndFontListQuery\n| \\?EndFontQuery\n| \\?EndPrinterQuery\n| \\?EndProcSetQuery\n| \\?EndQuery\n| \\?EndResourceListQuery\n| \\?EndResourceQuery\n| \\?EndVMStatus\n) (:)? [^\\S\\r\\n]*", "end": "(?=$|\\r|\\f)", "beginCaptures": { "0": { "name": "keyword.other.DSC.postscript" }, "1": { "name": "punctuation.definition.keyword.DSC.postscript" }, "3": { "name": "keyword.operator.assignment.key-value.colon.postscript" } } }, "embedded": { "patterns": [ { "name": "meta.encrypted-source.base85.postscript", "contentName": "string.other.base85.postscript", "begin": "(?\u003c![^/\\s{}()\u003c\u003e\\[\\]%])\\b(currentfile)\\s*((/)ASCII85Decode)\\s+(filter)\\b(?![^/\\s{}()\u003c\u003e\\[\\]%])([^}\u003e\\]%]*?(?:exec|image|readstring)\\s*)$\\s*+", "end": "~\u003e|(?=cleartomark|closefile)", "beginCaptures": { "1": { "name": "keyword.operator.postscript" }, "2": { "name": "variable.other.literal.postscript" }, "3": { "name": "punctuation.definition.name.postscript" }, "4": { "name": "keyword.operator.postscript" }, "5": { "patterns": [ { "include": "#main" } ] } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.postscript" } } }, { "name": "meta.encrypted-source.eexec.postscript", "begin": "(?\u003c![^/\\s{}()\u003c\u003e\\[\\]%])\\b(currentfile)\\s+(eexec)(?:$|(?=.*[\\0-\\x08\\x14-\\x31\\x7F\\x80-\\x9F])(?=.{0,3}?[^A-Fa-f0-9]|\\b[A-Fa-f0-9]))", "end": "(cleartomark|closefile)\\b(?![^/\\s{}()\u003c\u003e\\[\\]%])|(?\u003c=\\G)(?=[^\\s0-9A-Fa-f])", "patterns": [ { "begin": "\\G(?=\\s*$)", "end": "(?=\\s*\\S)" }, { "begin": "(?:\\G|(?\u003c=\\n|^))\\s*(?=\\S)", "end": "(?!\\G)", "patterns": [ { "name": "string.other.raw.binary.postscript", "contentName": "sublimelinter.gutter-mark", "begin": "\\G(?!cleartomark|closefile)(?=.{0,3}?[^A-Fa-f0-9])", "end": "(?=\\s*(?:cleartomark|closefile))" }, { "name": "string.other.hexadecimal.postscript", "begin": "\\G(?!cleartomark|closefile)(?=\\s{0,3}?(?:[A-Fa-f0-9]))", "end": "(?=\\s*[^A-Fa-f0-9\\s]|cleartomark|closefile)" } ] } ], "beginCaptures": { "1": { "name": "keyword.operator.postscript" }, "2": { "name": "keyword.operator.postscript" } }, "endCaptures": { "1": { "name": "keyword.operator.postscript" } } } ] }, "embeddedRow": { "patterns": [ { "name": "string.other.base85.postscript", "match": "^[!-uz]{0,78}(~\u003e)", "captures": { "1": { "name": "punctuation.definition.string.end.postscript" } } }, { "name": "string.other.base85.postscript", "begin": "(?x) ^\n(?= [^%\\[]*? \\]\n| [^%(]*? \\)\n| [^%\u003c]*? \u003e\n| .*? \u003c(?!~|\u003c) [A-Fa-f0-9]* [^~\u003eA-Fa-f0-9]\n) [!-uz]{60,80} [^\\S\\r\\n]* $", "end": "^[!-uz]{0,78}(~\u003e)", "endCaptures": { "0": { "name": "punctuation.definition.string.end.postscript" } } } ] }, "hex": { "name": "string.other.hexadecimal.postscript", "begin": "\u003c", "end": "\u003e", "patterns": [ { "name": "invalid.illegal.hexadecimal.char.postscript", "match": "[^\u003e0-9A-Fa-f\\s]+" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.postscript" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.postscript" } } }, "main": { "patterns": [ { "include": "#string" }, { "include": "#comment" }, { "include": "#dictionary" }, { "include": "#array" }, { "include": "#procedure" }, { "include": "#base85" }, { "include": "#hex" }, { "include": "#radix" }, { "include": "#number" }, { "include": "#embedded" }, { "include": "#operators" }, { "include": "#embeddedRow" }, { "include": "#names" } ] }, "names": { "patterns": [ { "name": "variable.other.constant.immediately-evaluated.postscript", "match": "(//)[^()\u003c\u003e\\[\\]{}/%\\s]*", "captures": { "1": { "name": "punctuation.definition.name.postscript" } } }, { "name": "variable.other.constant.literal.postscript", "match": "(/)[^()\u003c\u003e\\[\\]{}/%\\s]*", "captures": { "1": { "name": "punctuation.definition.name.postscript" } } }, { "name": "variable.other.executable.postscript", "match": "[^()\u003c\u003e\\[\\]{}/%\\s]+" } ] }, "number": { "name": "constant.numeric.postscript", "match": "[-+]?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:[Ee][-+]?\\d+)?(?=$|[\\s\\[\\]{}(/%\u003c])" }, "operators": { "name": "keyword.operator.postscript", "match": "(?x) (?\u003c![^/\\s{}()\u003c\u003e\\[\\]%]) \\b\n( FontDirectory\n| GetHalftoneName\n| GetPageDeviceName\n| GetSubstituteCRD\n| GlobalFontDirectory\n| ISOLatin1Encoding\n| SharedFontDirectory\n| StandardEncoding\n| StartData\n| UserObjects\n| VMerror\n| abs\n| addglyph\n| add\n| aload\n| anchorsearch\n| and\n| arcn\n| arcto\n| arct\n| arc\n| array\n| ashow\n| astore\n| atan\n| awidthshow\n| beginbfchar\n| beginbfrange\n| begincidchar\n| begincidrange\n| begincmap\n| begincodespacerange\n| beginnotdefchar\n| beginnotdefrange\n| beginrearrangedfont\n| beginusematrix\n| begin\n| bind\n| bitshift\n| bytesavailable\n| cachestatus\n| ceiling\n| charpath\n| cleardictstack\n| cleartomark\n| clear\n| clippath\n| cliprestore\n| clipsave\n| clip\n| closefile\n| closepath\n| colorimage\n| composefont\n| concatmatrix\n| concat\n| condition\n| configurationerror\n| copypage\n| copy\n| cos\n| countdictstack\n| countexecstack\n| counttomark\n| count\n| cshow\n| currentblackgeneration\n| currentcacheparams\n| currentcmykcolor\n| currentcolorrendering\n| currentcolorscreen\n| currentcolorspace\n| currentcolortransfer\n| currentcolor\n| currentcontext\n| currentdash\n| currentdevparams\n| currentdict\n| currentfile\n| currentflat\n| currentfont\n| currentglobal\n| currentgray\n| currentgstate\n| currenthalftonephase\n| currenthalftone\n| currenthsbcolor\n| currentlinecap\n| currentlinejoin\n| currentlinewidth\n| currentmatrix\n| currentmiterlimit\n| currentobjectformat\n| currentoverprint\n| currentpacking\n| currentpagedevice\n| currentpoint\n| currentrgbcolor\n| currentscreen\n| currentshared\n| currentsmoothness\n| currentstrokeadjust\n| currentsystemparams\n| currenttransfer\n| currenttrapparams\n| currentundercolorremoval\n| currentuserparams\n| curveto\n| cvi\n| cvlit\n| cvn\n| cvrs\n| cvr\n| cvs\n| cvx\n| defaultmatrix\n| definefont\n| defineresource\n| defineusername\n| defineuserobject\n| def\n| deletefile\n| detach\n| deviceinfo\n| dictfull\n| dictstackoverflow\n| dictstackunderflow\n| dictstack\n| dict\n| div\n| dtransform\n| dup\n| echo\n| eexec\n| endbfchar\n| endbfrange\n| endcidchar\n| endcidrange\n| endcmap\n| endcodespacerange\n| endnotdefchar\n| endnotdefrange\n| endrearrangedfont\n| endusematrix\n| end\n| eoclip\n| eofill\n| eoviewclip\n| eq\n| erasepage\n| errordict\n| exch\n| execform\n| execstackoverflow\n| execstack\n| execuserobject\n| executeonly\n| executive\n| exec\n| exitserver\n| exit\n| exp\n| false\n| filenameforall\n| fileposition\n| file\n| fill\n| filter\n| findcolorrendering\n| findencoding\n| findfont\n| findresource\n| flattenpath\n| floor\n| flushfile\n| flush\n| forall\n| fork\n| for\n| gcheck\n| getinterval\n| get\n| ge\n| globaldict\n| glyphshow\n| grestoreall\n| grestore\n| gsave\n| gstate\n| gt\n| handleerror\n| identmatrix\n| idiv\n| idtransform\n| ifelse\n| if\n| imagemask\n| image\n| index\n| ineofill\n| infill\n| initclip\n| initgraphics\n| initmatrix\n| initviewclip\n| instroke\n| internaldict\n| interrupt\n| inueofill\n| inufill\n| inustroke\n| invalidaccess\n| invalidcontext\n| invalidexit\n| invalidfileaccess\n| invalidfont\n| invalidid\n| invalidrestore\n| invertmatrix\n| ioerror\n| itransform\n| join\n| known\n| kshow\n| languagelevel\n| length\n| le\n| limitcheck\n| lineto\n| ln\n| load\n| lock\n| log\n| loop\n| lt\n| makefont\n| makepattern\n| mark\n| matrix\n| maxlength\n| mod\n| monitor\n| moveto\n| mul\n| neg\n| newpath\n| ne\n| noaccess\n| nocurrentpoint\n| notify\n| not\n| nulldevice\n| null\n| or\n| packedarray\n| pathbbox\n| pathforall\n| pdfmark\n| pop\n| printobject\n| print\n| product\n| prompt\n| pstack\n| putinterval\n| put\n| quit\n| rand\n| rangecheck\n| rcheck\n| rcurveto\n| readhexstring\n| readline\n| readonly\n| readstring\n| read\n| realtime\n| rectclip\n| rectfill\n| rectstroke\n| rectviewclip\n| removeall\n| removeglyphs\n| renamefile\n| repeat\n| resetfile\n| resourceforall\n| resourcestatus\n| restore\n| reversepath\n| revision\n| rlineto\n| rmoveto\n| roll\n| rootfont\n| rotate\n| round\n| rrand\n| run\n| save\n| scalefont\n| scale\n| scheck\n| search\n| selectfont\n| serialnumber\n| serverdict\n| setbbox\n| setblackgeneration\n| setcachedevice2\n| setcachedevice\n| setcachelimit\n| setcacheparams\n| setcharwidth\n| setcmykcolor\n| setcolorrendering\n| setcolorscreen\n| setcolorspace\n| setcolortransfer\n| setcolor\n| setdash\n| setdevparams\n| setfileposition\n| setflat\n| setfont\n| setglobal\n| setgray\n| setgstate\n| sethalftonephase\n| sethalftone\n| sethsbcolor\n| setlinecap\n| setlinejoin\n| setlinewidth\n| setmatrix\n| setmiterlimit\n| setobjectformat\n| setoverprint\n| setpacking\n| setpagedevice\n| setpattern\n| setrgbcolor\n| setscreen\n| setshared\n| setsmoothness\n| setstrokeadjust\n| setsystemparams\n| settransfer\n| settrapparams\n| settrapzone\n| setucacheparams\n| setundercolorremoval\n| setuserparams\n| setvmthreshold\n| shareddict\n| shfill\n| showpage\n| show\n| sin\n| sqrt\n| srand\n| stackoverflow\n| stackunderflow\n| stack\n| startjob\n| start\n| statusdict\n| status\n| stopped\n| stop\n| store\n| stringwidth\n| string\n| strokepath\n| stroke\n| sub\n| syntaxerror\n| systemdict\n| timeout\n| token\n| transform\n| translate\n| true\n| truncate\n| typecheck\n| type\n| uappend\n| ucachestatus\n| ucache\n| ueofill\n| ufill\n| undefinedfilename\n| undefinedresource\n| undefinedresult\n| undefined\n| undefinefont\n| undefineresource\n| undefineuserobject\n| undef\n| unmatchedmark\n| unregistered\n| upath\n| usecmap\n| usefont\n| userdict\n| usertime\n| ustrokepath\n| ustroke\n| version\n| viewclippath\n| viewclip\n| vmreclaim\n| vmstatus\n| wait\n| wcheck\n| where\n| widthshow\n| writehexstring\n| writeobject\n| writestring\n| write\n| wtranslation\n| xcheck\n| xor\n| xshow\n| xyshow\n| yield\n| yshow\n) \\b (?![^/\\s{}()\u003c\u003e\\[\\]%])\n|\n# Stuff that starts with a non-word character\n(?\u003c=^|[/\\s{}()\u003c\u003e\\[\\]%])\n(=?=|\\$error)\n(?=$|[/\\s{}()\u003c\u003e\\[\\]%])" }, "procedure": { "name": "meta.procedure.postscript", "begin": "{", "end": "}", "patterns": [ { "include": "#main" } ], "beginCaptures": { "0": { "name": "punctuation.definition.procedure.begin.postscript" } }, "endCaptures": { "0": { "name": "punctuation.definition.procedure.end.postscript" } } }, "radix": { "name": "constant.numeric.radix.postscript", "match": "[0-3]?[0-9]#[0-9a-zA-Z]+" }, "string": { "name": "string.other.postscript", "begin": "\\(", "end": "\\)", "patterns": [ { "include": "#stringInnards" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.postscript" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.postscript" } } }, "stringInnards": { "patterns": [ { "name": "constant.numeric.octal.postscript", "match": "\\\\[0-7]{1,3}" }, { "name": "constant.character.escape.postscript", "match": "\\\\(\\\\|[bfnrt()]|[0-7]{1,3}|\\r?\\n)" }, { "name": "invalid.illegal.unknown-escape.postscript.ignored", "match": "\\\\" }, { "begin": "\\(", "end": "\\)", "patterns": [ { "include": "#stringInnards" } ] } ] } }, "injections": { "L:source.postscript meta.document.pdf - (meta.encrypted-source | source.embedded | text.embedded)": { "patterns": [ { "name": "meta.encrypted-source.stream.pdf", "begin": "(?:^|(?\u003c=\u003e\u003e)\\s*)(?=stream$)", "end": "endstream|(?=endobj\\b)", "patterns": [ { "begin": "\\G(stream)\\s*$\\s*", "end": "(?=endstream|(?=endobj\\b))", "patterns": [ { "contentName": "text.embedded.xml", "begin": "(\u003c\\?xpacket(?=\\s)[^\u003e]+\\?\u003e)(?=$|\u003cx:xmpmeta)", "end": "(\u003c\\?xpacket(?=\\s)[^\u003e]*end\\b[^\u003e]*\\?\u003e)|(?=\\s*(?:endstream|endobj\\b))", "patterns": [ { "include": "text.xml" } ], "beginCaptures": { "1": { "name": "text.embedded.xml", "patterns": [ { "include": "text.xml" } ] } }, "endCaptures": { "1": { "name": "text.embedded.xml", "patterns": [ { "include": "text.xml" } ] } } }, { "name": "string.other.base85.pdf", "begin": "(?!endstream)[!-uz]{50,80}\\s*$", "end": "~\u003e|(?=\\s*(?:endstream|endobj\\b))", "endCaptures": { "0": { "name": "punctuation.definition.string.end.pdf" } } }, { "name": "string.other.raw.binary.pdf", "contentName": "sublimelinter.gutter-mark", "begin": "(?!endstream|[!-uz]{50,80}\\s*$)(?:(?\u003c=[\\n\\r]|\\G|^))(?=.)", "end": "(?=\\s*(?:endstream|endobj\\b))" } ], "beginCaptures": { "1": { "name": "keyword.control.stream.begin.pdf" } } } ], "endCaptures": { "0": { "name": "keyword.control.stream.end.pdf" } } }, { "match": "(?\u003c![^/\\s{}()\u003c\u003e\\[\\]%])\\b(obj)\\s*(?=\u003c\u003c|$)|(?\u003c=^|\\n|\u003e\u003e)(endobj)", "captures": { "1": { "name": "keyword.control.object.begin.pdf" }, "2": { "name": "keyword.control.object.end.pdf" } } }, { "name": "keyword.control.$1.pdf", "match": "(?\u003c![^/\\s{}()\u003c\u003e\\[\\]%])\\b(trailer|startxref)(?![^/\\s{}()\u003c\u003e\\[\\]%])" } ] } } }