| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 | 
							- /*
 
-  Language: Zephir
 
-  Description: Zephir, an open source, high-level language designed to ease the creation and maintainability of extensions for PHP with a focus on type and memory safety.
 
-  Author: Oleg Efimov <efimovov@gmail.com>
 
-  Website: https://zephir-lang.com/en
 
-  Audit: 2020
 
-  */
 
- /** @type LanguageFn */
 
- function zephir(hljs) {
 
-   const STRING = {
 
-     className: 'string',
 
-     contains: [ hljs.BACKSLASH_ESCAPE ],
 
-     variants: [
 
-       hljs.inherit(hljs.APOS_STRING_MODE, {
 
-         illegal: null
 
-       }),
 
-       hljs.inherit(hljs.QUOTE_STRING_MODE, {
 
-         illegal: null
 
-       })
 
-     ]
 
-   };
 
-   const TITLE_MODE = hljs.UNDERSCORE_TITLE_MODE;
 
-   const NUMBER = {
 
-     variants: [
 
-       hljs.BINARY_NUMBER_MODE,
 
-       hljs.C_NUMBER_MODE
 
-     ]
 
-   };
 
-   const KEYWORDS =
 
-     // classes and objects
 
-     'namespace class interface use extends ' +
 
-     'function return ' +
 
-     'abstract final public protected private static deprecated ' +
 
-     // error handling
 
-     'throw try catch Exception ' +
 
-     // keyword-ish things their website does NOT seem to highlight (in their own snippets)
 
-     // 'typeof fetch in ' +
 
-     // operators/helpers
 
-     'echo empty isset instanceof unset ' +
 
-     // assignment/variables
 
-     'let var new const self ' +
 
-     // control
 
-     'require ' +
 
-     'if else elseif switch case default ' +
 
-     'do while loop for continue break ' +
 
-     'likely unlikely ' +
 
-     // magic constants
 
-     // https://github.com/phalcon/zephir/blob/master/Library/Expression/Constants.php
 
-     '__LINE__ __FILE__ __DIR__ __FUNCTION__ __CLASS__ __TRAIT__ __METHOD__ __NAMESPACE__ ' +
 
-     // types - https://docs.zephir-lang.com/0.12/en/types
 
-     'array boolean float double integer object resource string ' +
 
-     'char long unsigned bool int uint ulong uchar ' +
 
-     // built-ins
 
-     'true false null undefined';
 
-   return {
 
-     name: 'Zephir',
 
-     aliases: [ 'zep' ],
 
-     keywords: KEYWORDS,
 
-     contains: [
 
-       hljs.C_LINE_COMMENT_MODE,
 
-       hljs.COMMENT(
 
-         /\/\*/,
 
-         /\*\//,
 
-         {
 
-           contains: [
 
-             {
 
-               className: 'doctag',
 
-               begin: /@[A-Za-z]+/
 
-             }
 
-           ]
 
-         }
 
-       ),
 
-       {
 
-         className: 'string',
 
-         begin: /<<<['"]?\w+['"]?$/,
 
-         end: /^\w+;/,
 
-         contains: [ hljs.BACKSLASH_ESCAPE ]
 
-       },
 
-       {
 
-         // swallow composed identifiers to avoid parsing them as keywords
 
-         begin: /(::|->)+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*/
 
-       },
 
-       {
 
-         className: 'function',
 
-         beginKeywords: 'function fn',
 
-         end: /[;{]/,
 
-         excludeEnd: true,
 
-         illegal: /\$|\[|%/,
 
-         contains: [
 
-           TITLE_MODE,
 
-           {
 
-             className: 'params',
 
-             begin: /\(/,
 
-             end: /\)/,
 
-             keywords: KEYWORDS,
 
-             contains: [
 
-               'self',
 
-               hljs.C_BLOCK_COMMENT_MODE,
 
-               STRING,
 
-               NUMBER
 
-             ]
 
-           }
 
-         ]
 
-       },
 
-       {
 
-         className: 'class',
 
-         beginKeywords: 'class interface',
 
-         end: /\{/,
 
-         excludeEnd: true,
 
-         illegal: /[:($"]/,
 
-         contains: [
 
-           {
 
-             beginKeywords: 'extends implements'
 
-           },
 
-           TITLE_MODE
 
-         ]
 
-       },
 
-       {
 
-         beginKeywords: 'namespace',
 
-         end: /;/,
 
-         illegal: /[.']/,
 
-         contains: [ TITLE_MODE ]
 
-       },
 
-       {
 
-         beginKeywords: 'use',
 
-         end: /;/,
 
-         contains: [ TITLE_MODE ]
 
-       },
 
-       {
 
-         begin: /=>/ // No markup, just a relevance booster
 
-       },
 
-       STRING,
 
-       NUMBER
 
-     ]
 
-   };
 
- }
 
- module.exports = zephir;
 
 
  |