{"version":3,"sources":["webpack:///./node_modules/react-syntax-highlighter/node_modules/highlight.js/lib/languages/matlab.js"],"names":["module","exports","hljs","TRANSPOSE","relevance","contains","begin","name","keywords","keyword","built_in","illegal","className","beginKeywords","end","UNDERSCORE_TITLE_MODE","variants","starts","C_NUMBER_RE","BACKSLASH_ESCAPE","COMMENT"],"mappings":"8EA6EAA,EAAOC,QAjEP,SAAgBC,GACd,IACIC,EAAY,CACdC,UAAW,EACXC,SAAU,CAAC,CACTC,MAJe,eAOnB,MAAO,CACLC,KAAM,SACNC,SAAU,CACRC,QAAS,qLACTC,SAAU,kwCAEZC,QAAS,0BACTN,SAAU,CAAC,CACTO,UAAW,WACXC,cAAe,WACfC,IAAK,IACLT,SAAU,CAACH,EAAKa,sBAAuB,CACrCH,UAAW,SACXI,SAAU,CAAC,CACTV,MAAO,MACPQ,IAAK,OACJ,CACDR,MAAO,MACPQ,IAAK,WAGR,CACDF,UAAW,WACXN,MAAO,aACPF,UAAW,EACXa,OAAQd,GACP,CACDG,MAAO,iCACPF,UAAW,GACV,CACDQ,UAAW,SACXN,MAAOJ,EAAKgB,YACZd,UAAW,EACXa,OAAQd,GACP,CACDS,UAAW,SACXN,MAAO,IACPQ,IAAK,IACLT,SAAU,CAACH,EAAKiB,iBAAkB,CAChCb,MAAO,QAER,CACDA,MAAO,UACPF,UAAW,EACXa,OAAQd,GACP,CACDS,UAAW,SACXN,MAAO,IACPQ,IAAK,IACLT,SAAU,CAACH,EAAKiB,iBAAkB,CAChCb,MAAO,OAETW,OAAQd,GACPD,EAAKkB,QAAQ,mBAAoB,oBAAqBlB,EAAKkB,QAAQ,MAAO","file":"react-syntax-highlighter_languages_highlight_matlab-39e9bdae36c09e39cd31.js","sourcesContent":["/*\nLanguage: Matlab\nAuthor: Denis Bardadym <bardadymchik@gmail.com>\nContributors: Eugene Nizhibitsky <nizhibitsky@ya.ru>, Egor Rogov <e.rogov@postgrespro.ru>\nWebsite: https://www.mathworks.com/products/matlab.html\nCategory: scientific\n*/\n\n/*\n  Formal syntax is not published, helpful link:\n  https://github.com/kornilova-l/matlab-IntelliJ-plugin/blob/master/src/main/grammar/Matlab.bnf\n*/\nfunction matlab(hljs) {\n  var TRANSPOSE_RE = '(\\'|\\\\.\\')+';\n  var TRANSPOSE = {\n    relevance: 0,\n    contains: [{\n      begin: TRANSPOSE_RE\n    }]\n  };\n  return {\n    name: 'Matlab',\n    keywords: {\n      keyword: 'arguments break case catch classdef continue else elseif end enumeration events for function ' + 'global if methods otherwise parfor persistent properties return spmd switch try while',\n      built_in: 'sin sind sinh asin asind asinh cos cosd cosh acos acosd acosh tan tand tanh atan ' + 'atand atan2 atanh sec secd sech asec asecd asech csc cscd csch acsc acscd acsch cot ' + 'cotd coth acot acotd acoth hypot exp expm1 log log1p log10 log2 pow2 realpow reallog ' + 'realsqrt sqrt nthroot nextpow2 abs angle complex conj imag real unwrap isreal ' + 'cplxpair fix floor ceil round mod rem sign airy besselj bessely besselh besseli ' + 'besselk beta betainc betaln ellipj ellipke erf erfc erfcx erfinv expint gamma ' + 'gammainc gammaln psi legendre cross dot factor isprime primes gcd lcm rat rats perms ' + 'nchoosek factorial cart2sph cart2pol pol2cart sph2cart hsv2rgb rgb2hsv zeros ones ' + 'eye repmat rand randn linspace logspace freqspace meshgrid accumarray size length ' + 'ndims numel disp isempty isequal isequalwithequalnans cat reshape diag blkdiag tril ' + 'triu fliplr flipud flipdim rot90 find sub2ind ind2sub bsxfun ndgrid permute ipermute ' + 'shiftdim circshift squeeze isscalar isvector ans eps realmax realmin pi i inf nan ' + 'isnan isinf isfinite j why compan gallery hadamard hankel hilb invhilb magic pascal ' + 'rosser toeplitz vander wilkinson max min nanmax nanmin mean nanmean type table ' + 'readtable writetable sortrows sort figure plot plot3 scatter scatter3 cellfun ' + 'legend intersect ismember procrustes hold num2cell '\n    },\n    illegal: '(//|\"|#|/\\\\*|\\\\s+/\\\\w+)',\n    contains: [{\n      className: 'function',\n      beginKeywords: 'function',\n      end: '$',\n      contains: [hljs.UNDERSCORE_TITLE_MODE, {\n        className: 'params',\n        variants: [{\n          begin: '\\\\(',\n          end: '\\\\)'\n        }, {\n          begin: '\\\\[',\n          end: '\\\\]'\n        }]\n      }]\n    }, {\n      className: 'built_in',\n      begin: /true|false/,\n      relevance: 0,\n      starts: TRANSPOSE\n    }, {\n      begin: '[a-zA-Z][a-zA-Z_0-9]*' + TRANSPOSE_RE,\n      relevance: 0\n    }, {\n      className: 'number',\n      begin: hljs.C_NUMBER_RE,\n      relevance: 0,\n      starts: TRANSPOSE\n    }, {\n      className: 'string',\n      begin: '\\'',\n      end: '\\'',\n      contains: [hljs.BACKSLASH_ESCAPE, {\n        begin: '\\'\\''\n      }]\n    }, {\n      begin: /\\]|}|\\)/,\n      relevance: 0,\n      starts: TRANSPOSE\n    }, {\n      className: 'string',\n      begin: '\"',\n      end: '\"',\n      contains: [hljs.BACKSLASH_ESCAPE, {\n        begin: '\"\"'\n      }],\n      starts: TRANSPOSE\n    }, hljs.COMMENT('^\\\\s*\\\\%\\\\{\\\\s*$', '^\\\\s*\\\\%\\\\}\\\\s*$'), hljs.COMMENT('\\\\%', '$')]\n  };\n}\n\nmodule.exports = matlab;"],"sourceRoot":""}