...

Source file src/github.com/alecthomas/chroma/lexers/p/postscript.go

Documentation: github.com/alecthomas/chroma/lexers/p

     1  package p
     2  
     3  import (
     4  	. "github.com/alecthomas/chroma" // nolint
     5  	"github.com/alecthomas/chroma/lexers/internal"
     6  )
     7  
     8  // Postscript lexer.
     9  var Postscript = internal.Register(MustNewLazyLexer(
    10  	&Config{
    11  		Name:      "PostScript",
    12  		Aliases:   []string{"postscript", "postscr"},
    13  		Filenames: []string{"*.ps", "*.eps"},
    14  		MimeTypes: []string{"application/postscript"},
    15  	},
    16  	postscriptRules,
    17  ))
    18  
    19  func postscriptRules() Rules {
    20  	return Rules{
    21  		"root": {
    22  			{`^%!.+\n`, CommentPreproc, nil},
    23  			{`%%.*\n`, CommentSpecial, nil},
    24  			{`(^%.*\n){2,}`, CommentMultiline, nil},
    25  			{`%.*\n`, CommentSingle, nil},
    26  			{`\(`, LiteralString, Push("stringliteral")},
    27  			{`[{}<>\[\]]`, Punctuation, nil},
    28  			{`<[0-9A-Fa-f]+>(?=[()<>\[\]{}/%\s])`, LiteralNumberHex, nil},
    29  			{`[0-9]+\#(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)((e|E)[0-9]+)?(?=[()<>\[\]{}/%\s])`, LiteralNumberOct, nil},
    30  			{`(\-|\+)?([0-9]+\.?|[0-9]*\.[0-9]+|[0-9]+\.[0-9]*)((e|E)[0-9]+)?(?=[()<>\[\]{}/%\s])`, LiteralNumberFloat, nil},
    31  			{`(\-|\+)?[0-9]+(?=[()<>\[\]{}/%\s])`, LiteralNumberInteger, nil},
    32  			{`\/[^()<>\[\]{}/%\s]+(?=[()<>\[\]{}/%\s])`, NameVariable, nil},
    33  			{`[^()<>\[\]{}/%\s]+(?=[()<>\[\]{}/%\s])`, NameFunction, nil},
    34  			{`(false|true)(?=[()<>\[\]{}/%\s])`, KeywordConstant, nil},
    35  			{`(eq|ne|g[et]|l[et]|and|or|not|if(?:else)?|for(?:all)?)(?=[()<>\[\]{}/%\s])`, KeywordReserved, nil},
    36  			{Words(``, `(?=[()<>\[\]{}/%\s])`, `abs`, `add`, `aload`, `arc`, `arcn`, `array`, `atan`, `begin`, `bind`, `ceiling`, `charpath`, `clip`, `closepath`, `concat`, `concatmatrix`, `copy`, `cos`, `currentlinewidth`, `currentmatrix`, `currentpoint`, `curveto`, `cvi`, `cvs`, `def`, `defaultmatrix`, `dict`, `dictstackoverflow`, `div`, `dtransform`, `dup`, `end`, `exch`, `exec`, `exit`, `exp`, `fill`, `findfont`, `floor`, `get`, `getinterval`, `grestore`, `gsave`, `gt`, `identmatrix`, `idiv`, `idtransform`, `index`, `invertmatrix`, `itransform`, `length`, `lineto`, `ln`, `load`, `log`, `loop`, `matrix`, `mod`, `moveto`, `mul`, `neg`, `newpath`, `pathforall`, `pathbbox`, `pop`, `print`, `pstack`, `put`, `quit`, `rand`, `rangecheck`, `rcurveto`, `repeat`, `restore`, `rlineto`, `rmoveto`, `roll`, `rotate`, `round`, `run`, `save`, `scale`, `scalefont`, `setdash`, `setfont`, `setgray`, `setlinecap`, `setlinejoin`, `setlinewidth`, `setmatrix`, `setrgbcolor`, `shfill`, `show`, `showpage`, `sin`, `sqrt`, `stack`, `stringwidth`, `stroke`, `strokepath`, `sub`, `syntaxerror`, `transform`, `translate`, `truncate`, `typecheck`, `undefined`, `undefinedfilename`, `undefinedresult`), NameBuiltin, nil},
    37  			{`\s+`, Text, nil},
    38  		},
    39  		"stringliteral": {
    40  			{`[^()\\]+`, LiteralString, nil},
    41  			{`\\`, LiteralStringEscape, Push("escape")},
    42  			{`\(`, LiteralString, Push()},
    43  			{`\)`, LiteralString, Pop(1)},
    44  		},
    45  		"escape": {
    46  			{`[0-8]{3}|n|r|t|b|f|\\|\(|\)`, LiteralStringEscape, Pop(1)},
    47  			Default(Pop(1)),
    48  		},
    49  	}
    50  }
    51  

View as plain text