123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156 |
- /*
- Language: Go
- Author: Stephan Kountso aka StepLg <steplg@gmail.com>
- Contributors: Evgeny Stepanischev <imbolk@gmail.com>
- Description: Google go language (golang). For info about language
- Website: http://golang.org/
- Category: common, system
- */
- function go(hljs) {
- const LITERALS = [
- "true",
- "false",
- "iota",
- "nil"
- ];
- const BUILT_INS = [
- "append",
- "cap",
- "close",
- "complex",
- "copy",
- "imag",
- "len",
- "make",
- "new",
- "panic",
- "print",
- "println",
- "real",
- "recover",
- "delete"
- ];
- const TYPES = [
- "bool",
- "byte",
- "complex64",
- "complex128",
- "error",
- "float32",
- "float64",
- "int8",
- "int16",
- "int32",
- "int64",
- "string",
- "uint8",
- "uint16",
- "uint32",
- "uint64",
- "int",
- "uint",
- "uintptr",
- "rune"
- ];
- const KWS = [
- "break",
- "case",
- "chan",
- "const",
- "continue",
- "default",
- "defer",
- "else",
- "fallthrough",
- "for",
- "func",
- "go",
- "goto",
- "if",
- "import",
- "interface",
- "map",
- "package",
- "range",
- "return",
- "select",
- "struct",
- "switch",
- "type",
- "var",
- ];
- const KEYWORDS = {
- keyword: KWS,
- type: TYPES,
- literal: LITERALS,
- built_in: BUILT_INS
- };
- return {
- name: 'Go',
- aliases: [ 'golang' ],
- keywords: KEYWORDS,
- illegal: '</',
- contains: [
- hljs.C_LINE_COMMENT_MODE,
- hljs.C_BLOCK_COMMENT_MODE,
- {
- className: 'string',
- variants: [
- hljs.QUOTE_STRING_MODE,
- hljs.APOS_STRING_MODE,
- {
- begin: '`',
- end: '`'
- }
- ]
- },
- {
- className: 'number',
- variants: [
- {
- match: /-?\b0[xX]\.[a-fA-F0-9](_?[a-fA-F0-9])*[pP][+-]?\d(_?\d)*i?/, // hex without a present digit before . (making a digit afterwards required)
- relevance: 0
- },
- {
- match: /-?\b0[xX](_?[a-fA-F0-9])+((\.([a-fA-F0-9](_?[a-fA-F0-9])*)?)?[pP][+-]?\d(_?\d)*)?i?/, // hex with a present digit before . (making a digit afterwards optional)
- relevance: 0
- },
- {
- match: /-?\b0[oO](_?[0-7])*i?/, // leading 0o octal
- relevance: 0
- },
- {
- match: /-?\.\d(_?\d)*([eE][+-]?\d(_?\d)*)?i?/, // decimal without a present digit before . (making a digit afterwards required)
- relevance: 0
- },
- {
- match: /-?\b\d(_?\d)*(\.(\d(_?\d)*)?)?([eE][+-]?\d(_?\d)*)?i?/, // decimal with a present digit before . (making a digit afterwards optional)
- relevance: 0
- }
- ]
- },
- { begin: /:=/ // relevance booster
- },
- {
- className: 'function',
- beginKeywords: 'func',
- end: '\\s*(\\{|$)',
- excludeEnd: true,
- contains: [
- hljs.TITLE_MODE,
- {
- className: 'params',
- begin: /\(/,
- end: /\)/,
- endsParent: true,
- keywords: KEYWORDS,
- illegal: /["']/
- }
- ]
- }
- ]
- };
- }
- export { go as default };
|