You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: freefem.rb
    path of file: ./repos/rouge/lib/rouge/lexers
    
    the code of the file until where you have to start completion: # -*- coding: utf-8 -*- #
# frozen_string_literal: true

module Rouge
  module Lexers
    load_lexer 'cpp.rb'

    class FreeFEM < Cpp
      title "FreeFEM"
      desc "The FreeFEM programming language (freefem.org)"

      tag 'freefem'
      aliases 'ff'
      filenames '*.edp', '*.idp'
      mimetypes 'text/x-ffhdr', 'text/x-ffsrc'

      # Override C/C++ ones (for example, `do` does not exists)
      def self.keywords
        @keywords ||= Set.new(%w(
          break catch continue else for if return try while
        ))
      end

      # Override C/C++ ones (for example, `double` does not exists)
      def self.keywords_type
        @keywords_type ||= Set.new(%w(
          bool border complex dmatrix
    
      def self.reserved
        @reserved ||= Set.new(%w(
          BDM1 BDM1Ortho Edge03d Edge13d Edge23d FEQF HCT P0 P03d P0Edge P1
          P13d P1b P1b3d P1bl P1bl3d P1dc P1Edge P1nc P2 P23d P2b P2BR P2dc
          P2Edge P2h P2Morley P2pnc P3 P3dc P3Edge P4 P4dc P4Edge P5Edge RT0
          RT03d RT0Ortho RT1 RT1Ortho RT2 RT2Ortho

          qf1pE qf1pElump qf1pT qf1pTlump qfV1 qfV1lump qf2pE qf2pT qf2pT4P1
          qfV2 qf3pE qf4pE qf5pE qf5pT qfV5 qf7pT qf9pT qfnbpE

          ARGV append area be binary BoundaryEdge bordermeasure CG Cholesky cin
          cout Crout default diag edgeOrientation endl FILE fixed GMRES good
          hTriangle im imax imin InternalEdge l1 l2 label lenEdge length LINE
          linfty LU m max measure min mpiAnySource mpiBAND mpiBXOR mpiCommWorld
          mpiLAND mpiLOR mpiLXOR mpiMAX mpiMIN mpiPROD mpirank mpisize mpiSUM
          mpiUndefined n N nbe ndof ndofK noshowbase noshowpos notaregion nt
          nTonEdge nuEdge nuTriangle nv P pi precision quantile re region
          scientific searchMethod setw showbase showpos sparsesolver sum tellp
          true UMFPACK unused whoinElement verbosity version volume x y z
        ))
      end