...

Source file src/github.com/alecthomas/chroma/lexers/p/prolog.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  // Prolog lexer.
     9  var Prolog = internal.Register(MustNewLazyLexer(
    10  	&Config{
    11  		Name:      "Prolog",
    12  		Aliases:   []string{"prolog"},
    13  		Filenames: []string{"*.ecl", "*.prolog", "*.pro", "*.pl"},
    14  		MimeTypes: []string{"text/x-prolog"},
    15  	},
    16  	prologRules,
    17  ))
    18  
    19  func prologRules() Rules {
    20  	return Rules{
    21  		"root": {
    22  			{`/\*`, CommentMultiline, Push("nested-comment")},
    23  			{`%.*`, CommentSingle, nil},
    24  			{`0\'.`, LiteralStringChar, nil},
    25  			{`0b[01]+`, LiteralNumberBin, nil},
    26  			{`0o[0-7]+`, LiteralNumberOct, nil},
    27  			{`0x[0-9a-fA-F]+`, LiteralNumberHex, nil},
    28  			{`\d\d?\'[a-zA-Z0-9]+`, LiteralNumberInteger, nil},
    29  			{`(\d+\.\d*|\d*\.\d+)([eE][+-]?[0-9]+)?`, LiteralNumberFloat, nil},
    30  			{`\d+`, LiteralNumberInteger, nil},
    31  			{`[\[\](){}|.,;!]`, Punctuation, nil},
    32  			{`:-|-->`, Punctuation, nil},
    33  			{`"(?:\\x[0-9a-fA-F]+\\|\\u[0-9a-fA-F]{4}|\\U[0-9a-fA-F]{8}|\\[0-7]+\\|\\["\nabcefnrstv]|[^\\"])*"`, LiteralStringDouble, nil},
    34  			{`'(?:''|[^'])*'`, LiteralStringAtom, nil},
    35  			{`is\b`, Operator, nil},
    36  			{`(<|>|=<|>=|==|=:=|=|/|//|\*|\+|-)(?=\s|[a-zA-Z0-9\[])`, Operator, nil},
    37  			{`(mod|div|not)\b`, Operator, nil},
    38  			{`_`, Keyword, nil},
    39  			{`([a-z]+)(:)`, ByGroups(NameNamespace, Punctuation), nil},
    40  			{`([a-zÀ-῿぀-퟿-￯][\w$À-῿぀-퟿-￯]*)(\s*)(:-|-->)`, ByGroups(NameFunction, Text, Operator), nil},
    41  			{`([a-zÀ-῿぀-퟿-￯][\w$À-῿぀-퟿-￯]*)(\s*)(\()`, ByGroups(NameFunction, Text, Punctuation), nil},
    42  			{`[a-zÀ-῿぀-퟿-￯][\w$À-῿぀-퟿-￯]*`, LiteralStringAtom, nil},
    43  			{`[#&*+\-./:<=>?@\\^~¡-¿‐-〿]+`, LiteralStringAtom, nil},
    44  			{`[A-Z_]\w*`, NameVariable, nil},
    45  			{`\s+|[ -‏￰-￾￯]`, Text, nil},
    46  		},
    47  		"nested-comment": {
    48  			{`\*/`, CommentMultiline, Pop(1)},
    49  			{`/\*`, CommentMultiline, Push()},
    50  			{`[^*/]+`, CommentMultiline, nil},
    51  			{`[*/]`, CommentMultiline, nil},
    52  		},
    53  	}
    54  }
    55  

View as plain text