/*! `actionscript` grammar compiled for Highlight.js 11.11.1 */
  (function(){
    var hljsGrammar = (function () {
  'use strict';

  /*
  Language: ActionScript
  Author: Alexander Myadzel <myadzel@gmail.com>
  Category: scripting
  Audit: 2020
  */

  /** @type LanguageFn */
  function actionscript(hljs) {
    const regex = hljs.regex;
    const IDENT_RE = /[a-zA-Z_$][a-zA-Z0-9_$]*/;
    const PKG_NAME_RE = regex.concat(
      IDENT_RE,
      regex.concat("(\\.", IDENT_RE, ")*")
    );
    const IDENT_FUNC_RETURN_TYPE_RE = /([*]|[a-zA-Z_$][a-zA-Z0-9_$]*)/;

    const AS3_REST_ARG_MODE = {
      className: 'rest_arg',
      begin: /[.]{3}/,
      end: IDENT_RE,
      relevance: 10
    };

    const KEYWORDS = [
      "as",
      "break",
      "case",
      "catch",
      "class",
      "const",
      "continue",
      "default",
      "delete",
      "do",
      "dynamic",
      "each",
      "else",
      "extends",
      "final",
      "finally",
      "for",
      "function",
      "get",
      "if",
      "implements",
      "import",
      "in",
      "include",
      "instanceof",
      "interface",
      "internal",
      "is",
      "namespace",
      "native",
      "new",
      "override",
      "package",
      "private",
      "protected",
      "public",
      "return",
      "set",
      "static",
      "super",
      "switch",
      "this",
      "throw",
      "try",
      "typeof",
      "use",
      "var",
      "void",
      "while",
      "with"
    ];
    const LITERALS = [
      "true",
      "false",
      "null",
      "undefined"
    ];

    return {
      name: 'ActionScript',
      aliases: [ 'as' ],
      keywords: {
        keyword: KEYWORDS,
        literal: LITERALS
      },
      contains: [
        hljs.APOS_STRING_MODE,
        hljs.QUOTE_STRING_MODE,
        hljs.C_LINE_COMMENT_MODE,
        hljs.C_BLOCK_COMMENT_MODE,
        hljs.C_NUMBER_MODE,
        {
          match: [
            /\bpackage/,
            /\s+/,
            PKG_NAME_RE
          ],
          className: {
            1: "keyword",
            3: "title.class"
          }
        },
        {
          match: [
            /\b(?:class|interface|extends|implements)/,
            /\s+/,
            IDENT_RE
          ],
          className: {
            1: "keyword",
            3: "title.class"
          }
        },
        {
          className: 'meta',
          beginKeywords: 'import include',
          end: /;/,
          keywords: { keyword: 'import include' }
        },
        {
          beginKeywords: 'function',
          end: /[{;]/,
          excludeEnd: true,
          illegal: /\S/,
          contains: [
            hljs.inherit(hljs.TITLE_MODE, { className: "title.function" }),
            {
              className: 'params',
              begin: /\(/,
              end: /\)/,
              contains: [
                hljs.APOS_STRING_MODE,
                hljs.QUOTE_STRING_MODE,
                hljs.C_LINE_COMMENT_MODE,
                hljs.C_BLOCK_COMMENT_MODE,
                AS3_REST_ARG_MODE
              ]
            },
            { begin: regex.concat(/:\s*/, IDENT_FUNC_RETURN_TYPE_RE) }
          ]
        },
        hljs.METHOD_GUARD
      ],
      illegal: /#/
    };
  }

  return actionscript;

})();

    hljs.registerLanguage('actionscript', hljsGrammar);
  })();