diff --git a/lib/sass/script/lexer.rb b/lib/sass/script/lexer.rb
index <HASH>..<HASH> 100644
--- a/lib/sass/script/lexer.rb
+++ b/lib/sass/script/lexer.rb
@@ -169,6 +169,16 @@ module Sass
         @scanner.pos = @tok.pos if @tok
       end
 
+      # Rewinds the underlying StringScanner
+      # to before the previous token returned by \{#next}.
+      def return_previous!
+        if @prev
+          @scanner.pos = @prev.pos
+          @prev = nil
+          @tok = nil
+        end
+      end
+
       # @return [Boolean] Whether or not there's more source text to lex.
       def done?
         whitespace unless after_interpolation? && @interpolation_stack.last
diff --git a/lib/sass/script/parser.rb b/lib/sass/script/parser.rb
index <HASH>..<HASH> 100644
--- a/lib/sass/script/parser.rb
+++ b/lib/sass/script/parser.rb
@@ -378,6 +378,10 @@ RUBY
         peeked && names.include?(peeked.type) && @lexer.next
       end
 
+      def return_tok!
+        @lexer.return_previous!
+      end
+
       def assert_done
         return if @lexer.done?
         @lexer.expected!(EXPR_NAMES[:default])
Give the Sass Lexer a lookahead of 2 for keyword argument support.