diff --git a/ACSLLexer.cpp b/ACSLLexer.cpp
index caf93f6617694f3415701274b0639451a6f0517b..6476819070b6f44ed589b462bf56ad3981cac9bc 100644
--- a/ACSLLexer.cpp
+++ b/ACSLLexer.cpp
@@ -1581,6 +1581,21 @@ Lexer::readMain(const std::string& buffer, size_t& position, location loc) {
       advanceChar2(buffer,position,loc);
       _litState = LeadZero;
       return readNumberToken(buffer,position,loc);
+    case '"':
+      size_t i, n;
+      for (i = 1, n = buffer.length();
+           i < n && buffer[position+i] != '"' && buffer[position+i-1] != '\\';
+           i++);
+      if (position + i >= n) {
+        std::cerr << "no closing double quotes before EOF" << std::endl;
+        break;
+      }
+      std::string literal(buffer, position, i+1);
+      DLexer::StringLiteralToken* result =
+        new DLexer::StringLiteralToken(literal);
+      _token = DLexer::Token(result);
+      position += i+1;
+      return RRHasToken;
   };
   if (isalpha(ch) || ch == '_') {
     ReadResult res = readIdentifierToken(buffer, position, loc);