fortran function

Mode fortran(
  1. Highlight hljs
)

Highlight.js language definition for fortran.

Implementation

Mode fortran(Highlight hljs) {
  final Mode mode0 = Mode();
  mode0.begin = r'\\[\s\S]';
  mode0.relevance = 0;
  return Mode(
    name: r'Fortran',
    caseInsensitive: true,
    aliases: [r'f90', r'f95'],
    keywords: {
      r'$pattern': r'\b[a-z][a-z0-9_]+\b|\.[a-z][a-z0-9_]+\.',
      r'keyword': [
        r'kind',
        r'do',
        r'concurrent',
        r'local',
        r'shared',
        r'while',
        r'private',
        r'call',
        r'intrinsic',
        r'where',
        r'elsewhere',
        r'type',
        r'endtype',
        r'endmodule',
        r'endselect',
        r'endinterface',
        r'end',
        r'enddo',
        r'endif',
        r'if',
        r'forall',
        r'endforall',
        r'only',
        r'contains',
        r'default',
        r'return',
        r'stop',
        r'then',
        r'block',
        r'endblock',
        r'endassociate',
        r'public',
        r'subroutine|10',
        r'function',
        r'program',
        r'.and.',
        r'.or.',
        r'.not.',
        r'.le.',
        r'.eq.',
        r'.ge.',
        r'.gt.',
        r'.lt.',
        r'goto',
        r'save',
        r'else',
        r'use',
        r'module',
        r'select',
        r'case',
        r'access',
        r'blank',
        r'direct',
        r'exist',
        r'file',
        r'fmt',
        r'form',
        r'formatted',
        r'iostat',
        r'name',
        r'named',
        r'nextrec',
        r'number',
        r'opened',
        r'rec',
        r'recl',
        r'sequential',
        r'status',
        r'unformatted',
        r'unit',
        r'continue',
        r'format',
        r'pause',
        r'cycle',
        r'exit',
        r'c_null_char',
        r'c_alert',
        r'c_backspace',
        r'c_form_feed',
        r'flush',
        r'wait',
        r'decimal',
        r'round',
        r'iomsg',
        r'synchronous',
        r'nopass',
        r'non_overridable',
        r'pass',
        r'protected',
        r'volatile',
        r'abstract',
        r'extends',
        r'import',
        r'non_intrinsic',
        r'value',
        r'deferred',
        r'generic',
        r'final',
        r'enumerator',
        r'class',
        r'associate',
        r'bind',
        r'enum',
        r'c_int',
        r'c_short',
        r'c_long',
        r'c_long_long',
        r'c_signed_char',
        r'c_size_t',
        r'c_int8_t',
        r'c_int16_t',
        r'c_int32_t',
        r'c_int64_t',
        r'c_int_least8_t',
        r'c_int_least16_t',
        r'c_int_least32_t',
        r'c_int_least64_t',
        r'c_int_fast8_t',
        r'c_int_fast16_t',
        r'c_int_fast32_t',
        r'c_int_fast64_t',
        r'c_intmax_t',
        r'C_intptr_t',
        r'c_float',
        r'c_double',
        r'c_long_double',
        r'c_float_complex',
        r'c_double_complex',
        r'c_long_double_complex',
        r'c_bool',
        r'c_char',
        r'c_null_ptr',
        r'c_null_funptr',
        r'c_new_line',
        r'c_carriage_return',
        r'c_horizontal_tab',
        r'c_vertical_tab',
        r'iso_c_binding',
        r'c_loc',
        r'c_funloc',
        r'c_associated',
        r'c_f_pointer',
        r'c_ptr',
        r'c_funptr',
        r'iso_fortran_env',
        r'character_storage_size',
        r'error_unit',
        r'file_storage_size',
        r'input_unit',
        r'iostat_end',
        r'iostat_eor',
        r'numeric_storage_size',
        r'output_unit',
        r'c_f_procpointer',
        r'ieee_arithmetic',
        r'ieee_support_underflow_control',
        r'ieee_get_underflow_mode',
        r'ieee_set_underflow_mode',
        r'newunit',
        r'contiguous',
        r'recursive',
        r'pad',
        r'position',
        r'action',
        r'delim',
        r'readwrite',
        r'eor',
        r'advance',
        r'nml',
        r'interface',
        r'procedure',
        r'namelist',
        r'include',
        r'sequence',
        r'elemental',
        r'pure',
        r'impure',
        r'integer',
        r'real',
        r'character',
        r'complex',
        r'logical',
        r'codimension',
        r'dimension',
        r'allocatable|10',
        r'parameter',
        r'external',
        r'implicit|10',
        r'none',
        r'double',
        r'precision',
        r'assign',
        r'intent',
        r'optional',
        r'pointer',
        r'target',
        r'in',
        r'out',
        r'common',
        r'equivalence',
        r'data',
      ],
      r'literal': [r'.False.', r'.True.'],
      r'built_in': [
        r'alog',
        r'alog10',
        r'amax0',
        r'amax1',
        r'amin0',
        r'amin1',
        r'amod',
        r'cabs',
        r'ccos',
        r'cexp',
        r'clog',
        r'csin',
        r'csqrt',
        r'dabs',
        r'dacos',
        r'dasin',
        r'datan',
        r'datan2',
        r'dcos',
        r'dcosh',
        r'ddim',
        r'dexp',
        r'dint',
        r'dlog',
        r'dlog10',
        r'dmax1',
        r'dmin1',
        r'dmod',
        r'dnint',
        r'dsign',
        r'dsin',
        r'dsinh',
        r'dsqrt',
        r'dtan',
        r'dtanh',
        r'float',
        r'iabs',
        r'idim',
        r'idint',
        r'idnint',
        r'ifix',
        r'isign',
        r'max0',
        r'max1',
        r'min0',
        r'min1',
        r'sngl',
        r'algama',
        r'cdabs',
        r'cdcos',
        r'cdexp',
        r'cdlog',
        r'cdsin',
        r'cdsqrt',
        r'cqabs',
        r'cqcos',
        r'cqexp',
        r'cqlog',
        r'cqsin',
        r'cqsqrt',
        r'dcmplx',
        r'dconjg',
        r'derf',
        r'derfc',
        r'dfloat',
        r'dgamma',
        r'dimag',
        r'dlgama',
        r'iqint',
        r'qabs',
        r'qacos',
        r'qasin',
        r'qatan',
        r'qatan2',
        r'qcmplx',
        r'qconjg',
        r'qcos',
        r'qcosh',
        r'qdim',
        r'qerf',
        r'qerfc',
        r'qexp',
        r'qgamma',
        r'qimag',
        r'qlgama',
        r'qlog',
        r'qlog10',
        r'qmax1',
        r'qmin1',
        r'qmod',
        r'qnint',
        r'qsign',
        r'qsin',
        r'qsinh',
        r'qsqrt',
        r'qtan',
        r'qtanh',
        r'abs',
        r'acos',
        r'aimag',
        r'aint',
        r'anint',
        r'asin',
        r'atan',
        r'atan2',
        r'char',
        r'cmplx',
        r'conjg',
        r'cos',
        r'cosh',
        r'exp',
        r'ichar',
        r'index',
        r'int',
        r'log',
        r'log10',
        r'max',
        r'min',
        r'nint',
        r'sign',
        r'sin',
        r'sinh',
        r'sqrt',
        r'tan',
        r'tanh',
        r'print',
        r'write',
        r'dim',
        r'lge',
        r'lgt',
        r'lle',
        r'llt',
        r'mod',
        r'nullify',
        r'allocate',
        r'deallocate',
        r'adjustl',
        r'adjustr',
        r'all',
        r'allocated',
        r'any',
        r'associated',
        r'bit_size',
        r'btest',
        r'ceiling',
        r'count',
        r'cshift',
        r'date_and_time',
        r'digits',
        r'dot_product',
        r'eoshift',
        r'epsilon',
        r'exponent',
        r'floor',
        r'fraction',
        r'huge',
        r'iand',
        r'ibclr',
        r'ibits',
        r'ibset',
        r'ieor',
        r'ior',
        r'ishft',
        r'ishftc',
        r'lbound',
        r'len_trim',
        r'matmul',
        r'maxexponent',
        r'maxloc',
        r'maxval',
        r'merge',
        r'minexponent',
        r'minloc',
        r'minval',
        r'modulo',
        r'mvbits',
        r'nearest',
        r'pack',
        r'present',
        r'product',
        r'radix',
        r'random_number',
        r'random_seed',
        r'range',
        r'repeat',
        r'reshape',
        r'rrspacing',
        r'scale',
        r'scan',
        r'selected_int_kind',
        r'selected_real_kind',
        r'set_exponent',
        r'shape',
        r'size',
        r'spacing',
        r'spread',
        r'sum',
        r'system_clock',
        r'tiny',
        r'transpose',
        r'trim',
        r'ubound',
        r'unpack',
        r'verify',
        r'achar',
        r'iachar',
        r'transfer',
        r'dble',
        r'entry',
        r'dprod',
        r'cpu_time',
        r'command_argument_count',
        r'get_command',
        r'get_command_argument',
        r'get_environment_variable',
        r'is_iostat_end',
        r'ieee_arithmetic',
        r'ieee_support_underflow_control',
        r'ieee_get_underflow_mode',
        r'ieee_set_underflow_mode',
        r'is_iostat_eor',
        r'move_alloc',
        r'new_line',
        r'selected_char_kind',
        r'same_type_as',
        r'extends_type_of',
        r'acosh',
        r'asinh',
        r'atanh',
        r'bessel_j0',
        r'bessel_j1',
        r'bessel_jn',
        r'bessel_y0',
        r'bessel_y1',
        r'bessel_yn',
        r'erf',
        r'erfc',
        r'erfc_scaled',
        r'gamma',
        r'log_gamma',
        r'hypot',
        r'norm2',
        r'atomic_define',
        r'atomic_ref',
        r'execute_command_line',
        r'leadz',
        r'trailz',
        r'storage_size',
        r'merge_bits',
        r'bge',
        r'bgt',
        r'ble',
        r'blt',
        r'dshiftl',
        r'dshiftr',
        r'findloc',
        r'iall',
        r'iany',
        r'iparity',
        r'image_index',
        r'lcobound',
        r'ucobound',
        r'maskl',
        r'maskr',
        r'num_images',
        r'parity',
        r'popcnt',
        r'poppar',
        r'shifta',
        r'shiftl',
        r'shiftr',
        r'this_image',
        r'sync',
        r'change',
        r'team',
        r'co_broadcast',
        r'co_max',
        r'co_min',
        r'co_sum',
        r'co_reduce',
      ],
    },
    illegal: r'\/\*',
    contains: [
      Mode(
        scope: r'string',
        relevance: 0,
        variants: [
          Mode(
            scope: r'string',
            begin: r"'",
            end: r"'",
            illegal: r'\n',
            contains: [mode0],
          ),
          Mode(
            scope: r'string',
            begin: r'"',
            end: r'"',
            illegal: r'\n',
            contains: [mode0],
          ),
        ],
      ),
      Mode(
        scope: r'function',
        beginKeywords: r'subroutine function program',
        illegal: r'[${=\n]',
        contains: [
          Mode(scope: r'title', begin: r'[a-zA-Z_]\w*', relevance: 0),
          Mode(scope: r'params', begin: r'\(', end: r'\)'),
        ],
      ),
      Mode(begin: r'^C\s*=(?!=)', relevance: 0),
      Mode(
        variants: [
          Mode(
            scope: r'comment',
            begin: r'!',
            end: r'$',
            contains: [
              Mode(
                scope: r'doctag',
                begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
                end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
                excludeBegin: true,
                relevance: 0,
              ),
              Mode(
                begin:
                    r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
              ),
            ],
            relevance: 0,
          ),
          Mode(
            scope: r'comment',
            begin: r'^C[ ]',
            end: r'$',
            contains: [
              Mode(
                scope: r'doctag',
                begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
                end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
                excludeBegin: true,
                relevance: 0,
              ),
              Mode(
                begin:
                    r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
              ),
            ],
            relevance: 0,
          ),
          Mode(
            scope: r'comment',
            begin: r'^C$',
            end: r'$',
            contains: [
              Mode(
                scope: r'doctag',
                begin: r'[ ]*(?=(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):)',
                end: r'(TODO|FIXME|NOTE|BUG|OPTIMIZE|HACK|XXX):',
                excludeBegin: true,
                relevance: 0,
              ),
              Mode(
                begin:
                    r"[ ]+((?:I|a|is|so|us|to|at|if|in|it|on|[A-Za-z]+['](d|ve|re|ll|t|s|n)|[A-Za-z]+[-][a-z]+|[A-Za-z][a-z]{2,})[.]?[:]?([.][ ]|[ ])){3}",
              ),
            ],
            relevance: 0,
          ),
        ],
      ),
      Mode(
        scope: r'number',
        variants: [
          Mode(begin: r'\b\d+\.(\d*)([de][+-]?\d+)?(_[a-z_\d]+)?'),
          Mode(begin: r'\b\d+([de][+-]?\d+)?(_[a-z_\d]+)?'),
          Mode(begin: r'\.\d+([de][+-]?\d+)?(_[a-z_\d]+)?'),
        ],
        relevance: 0,
      ),
    ],
  );
}