class Rouge::Lexers::Magik

def self.character

def self.character
  @character ||= /%u[0-9a-z]{4}|%[^\s]+/i
end

def self.decimal

def self.decimal
  @decimal ||= /\.#{Magik.digits}/
end

def self.digits

def self.digits
  @digits ||= /[0-9]+/
end

def self.exponent

def self.exponent
  @exponent ||= /(e|&)[+-]?#{Magik.digits}/i
end

def self.global_ref

def self.global_ref
  @global_ref ||= /@[\s]*#{Magik.identifier}:#{Magik.identifier}/
end

def self.identifier

def self.identifier
  @identifier ||= /(?:#{Magik.simple_identifier}|#{Magik.piped_identifier})+/i
end

def self.keywords

def self.keywords
  @keywords ||= %w(
     _package
     _pragma
     _block _endblock
     _handling _default
     _protect _protection _endprotect
     _try _with _when _endtry
     _catch _endcatch
     _throw
     _lock _endlock
     _if _then _elif _else _endif
     _for _over _while _loop _finally _endloop _loopbody _continue _leave
     _return
     _class
     _local _constant _recursive _global _dynamic _import
     _private _iter _abstract _method _endmethod
     _proc _endproc
     _gather _scatter _allresults _optional
     _thisthread _self _clone _super
     _primitive
     _unset _true _false _maybe
     _is _isnt _not _and _or _xor _cf _andif _orif
     _div _mod
  )
end

def self.label

def self.label
  @label = /@[\s]*#{Magik.identifier}/
end

def self.number

def self.number
  @number = /#{Magik.digits}(#{Magik.radix}|#{Magik.exponent}|#{Magik.decimal})*/
end

def self.package_identifier

def self.package_identifier
  @package_identifier ||= /#{Magik.identifier}:#{Magik.identifier}/
end

def self.piped_identifier

def self.piped_identifier
  @piped_identifier ||= /\|[^\|\n]*\|/
end

def self.radix

def self.radix
  @radix ||= /r[0-9a-z]/i
end

def self.simple_identifier

def self.simple_identifier
  @simple_identifier ||= /(?>(?:[a-z0-9_!?]|\\.)+)/i
end

def self.string_double

def self.string_double
  @string_double ||= /"[^"\n]*?"/
end

def self.string_single

def self.string_single
  @string_single ||= /'[^'\n]*?'/
end

def self.symbol

def self.symbol
  @symbol ||= /:#{Magik.identifier}/i
end