class Rouge::Lexers::FSharp

def self.keyopts

def self.keyopts
  @keyopts ||= Set.new %w(
    != # & && ( ) * \+ , - -. -> . .. : :: := :> ; ;; < <- =
    > >] >} ? ?? [ [< [> [| ] _ ` { {< | |] } ~ |> <| <>
  )
end

def self.keywords

def self.keywords
  @keywords ||= Set.new %w(
    abstract and as assert base begin class default delegate do
    done downcast downto elif else end exception extern false
    finally for fun function global if in inherit inline interface
    internal lazy let let! match member module mutable namespace
    new not null of open or override private public rec return
    return! select static struct then to true try type upcast
    use use! val void when while with yield yield! sig atomic 
    break checked component const constraint constructor 
    continue eager event external fixed functor include method 
    mixin object parallel process protected pure sealed tailcall 
    trait virtual volatile
  )
end

def self.primitives

def self.primitives
  @primitives ||= Set.new %w(unit int float bool string char list array)
end

def self.word_operators

def self.word_operators
  @word_operators ||= Set.new %w(and asr land lor lsl lxor mod or)
end