 
     queryParts.forEach (item) =>
 
-      # a single unspecified token
-      if m is '[]'
-        min = 1
-        max = 1
-
-      # an interval, e.g. []{1,2}
-      else if m = item.match(/\[\]\{(.+?)\}/)
+      if m = item.match(@intervalRegexp)
         [min, max] = @handleIntervalSpecification(m)
 
-      # an attribute/value expression such as [lemma="car" %c] or [(lemma="car" & pos="n")]
-      else if m = item.match(/\[\(?(.+?)(?:\s+%c)?\)?\]/)
+      else if m = item.match(@attributeValueRegexp)
         dq.push @handleAttributes(m, min, max)
         min = null
         max = null
 
-      # just a quoted string
-      else
+      else if m = item.match(@quotedStringOrEmptyTermRegexp)
         word    = item.substring(1, item.length-1)
         isStart = /\.\+$/.test(word)
         isEnd   = /^\.\+/.test(word)

      @props.handleSearch()


  constructQueryTerms: (queryObj) ->
    queryParts = @splitQuery(queryObj.query)


        max = null

    dq


  handleIntervalSpecification: (m) ->
