   # The error for when you try to use a forbidden word in JavaScript as
   # an identifier.
   identifierError: (word) ->
-    throw new Error "SyntaxError: Reserved word \"#{word}\" on line #{@line + 1}"
+    throw SyntaxError "Reserved word \"#{word}\" on line #{@line + 1}"
 
   # The error for when you try to assign to a reserved word in JavaScript,
   # like "function" or "default".
   assignmentError: ->
-    throw new Error "SyntaxError: Reserved word \"#{@value()}\" on line #{@line + 1} can't be assigned"
+    throw SyntaxError "Reserved word \"#{@value()}\" on line #{@line + 1} can't be assigned"
 
   # Matches a balanced group such as a single or double-quoted string. Pass in
   # a series of delimiters, all of which must be nested correctly within the

        id  = tag.toLowerCase()
        tag = 'BOOL'
    @token tag, id
    true

  # Matches numbers, including decimals, hex, and exponential notation.

  tagParameters: ->
    return if @tag() isnt ')'
    i = @tokens.length
    while tok = @tokens[--i]
      switch tok[0]
        when 'IDENTIFIER'       then tok[0] = 'PARAM'
        when ')'                then tok[0] = 'PARAM_END'
        when '(', 'CALL_START'  then tok[0] = 'PARAM_START'; return true
    true

  # Close up all remaining open blocks at the end of the file.
