
Description="Swift"

Keywords={
  {  Id=1,
   List={"class", "deinit", "enum", "extension", "func", "import", "init",
	"internal", "let", "operator", "private", "protocol", "public", "static",
	"struct", "subscript", "typealias", "var",
	 "break", "case", "continue", "default", "do", "else", "fallthrough", "for", "if", "in", "return", "switch", "where", "while",
	 "try","throw","catch"
        }
  },
  { Id=2,
    List= { "as", "dynamicType", "false", "is", "nil", "self", "Self", "super", "true", "__COLUMN__", "__FILE__", "__FUNCTION__", "__LINE__"
          }
  },
 -- { Id=3,
   -- Regex=[[ @\w*]]
 -- },
    { Id=3,
    Regex=[[ (let|var)\s+(\w+)]], Group=2
  },
  { Id=4,
    Regex=[[(\w+)\s*\(]]
  }
}

 -- add keywords to list 3
     function OnStateChange(oldState, newState, token, kwgroup)
       if  newState==HL_KEYWORD and kwgroup==3 then
	    AddKeyword(token, 3)
      end
      return newState
    end

Identifiers=[[ [a-zA-Z_]\w* ]]

Digits=[[ (?:0x|0o|0b)[0-9a-fA-F]+|\d*[\.\_]?\d+(?:[eE][\-\+]\d+)? ]]

Strings = {
  Delimiter=[["]],
  Interpolation = [[ \\\(.+?\)\)? ]],
  RawPrefix="R",
}

Comments = {
   { Block=true,
     Nested=true,
     Delimiter = { [[\/\*]], [[\*\/]] }
   },
   {
     Block=false,
     Delimiter = { [[//]] }
   }
}

IgnoreCase=false

PreProcessor = {
  Prefix=[[#]],
  Continuation="\\",
}

Operators=[[\(|\)|\[|\]|\{|\}|\,|\;|\.|\:|\&|<|>|\!|=|\/|\*|\%|\+|\-|\~|\||\^]]

EnableIndentation=false
