     else
       @tag(1, 'PROPERTY_ACCESS')
   tag: 'IDENTIFIER'
-  tag:  id.toUpperCase() if KEYWORDS.indexOf(id) >= 0 and not (ACCESSORS.indexOf(@tag()) >= 0)
+  tag:  id.toUpperCase() if KEYWORDS.indexOf(id) >= 0 and
+    not ((ACCESSORS.indexOf(@tag()) >= 0) and not @prev().spaced)
   throw new Error('SyntaxError: Reserved word "' + id + '" on line ' + @line) if RESERVED.indexOf(id) >= 0
   tag: 'LEADING_WHEN' if tag is 'WHEN' and BEFORE_WHEN.indexOf(@tag()) >= 0
   @token(tag, id)

# Matches and consumes non-meaningful whitespace.
lex::whitespace_token: ->
  return false unless space: @match WHITESPACE, 1
  prev: @tokens[@tokens.length - 1]
  prev.spaced: true if prev
  @i += space.length
  true

    throw new Error('SyntaxError: Reserved word "' + @value() + '" on line ' + @line + ' can\'t be assigned') if JS_FORBIDDEN.indexOf(@value()) >= 0
  tag: 'TERMINATOR' if value == ';'

  if CALLABLE.indexOf(@tag()) >= 0 and (not @prev() or not @prev().spaced)
    tag: 'CALL_START'  if value is '('
    tag: 'INDEX_START' if value is '['
  @token tag, value
