Add escape methods for Char and String Literal Expr
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CharLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CharLiteralExpr.java
index 82ca769..da13d89 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CharLiteralExpr.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/CharLiteralExpr.java
@@ -22,10 +22,12 @@
 package com.github.javaparser.ast.expr;
 
 import com.github.javaparser.Range;
+import com.github.javaparser.ast.internal.Utils;
 import com.github.javaparser.ast.visitor.GenericVisitor;
 import com.github.javaparser.ast.visitor.VoidVisitor;
 
 import static com.github.javaparser.Position.pos;
+import static com.github.javaparser.Range.*;
 
 /**
  * @author Julio Vilmar Gesser
@@ -44,13 +46,20 @@
      */
     @Deprecated
     public CharLiteralExpr(int beginLine, int beginColumn, int endLine, int endColumn, String value) {
-        this(new Range(pos(beginLine, beginColumn), pos(endLine, endColumn)), value);
+        this(range(pos(beginLine, beginColumn), pos(endLine, endColumn)), value);
     }
     
     public CharLiteralExpr(Range range, String value) {
         super(range, value);
     }
 
+    /**
+     * Utility method that creates a new StringLiteralExpr. Escapes EOL characters.
+     */
+    public static CharLiteralExpr escape(String string) {
+        return new CharLiteralExpr(Utils.escapeEndOfLines(string));
+    }
+
     @Override
     public <R, A> R accept(GenericVisitor<R, A> v, A arg) {
         return v.visit(this, arg);
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/StringLiteralExpr.java b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/StringLiteralExpr.java
index af46255..56b5486 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/expr/StringLiteralExpr.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/expr/StringLiteralExpr.java
@@ -22,12 +22,14 @@
 package com.github.javaparser.ast.expr;
 
 import com.github.javaparser.Range;
+import com.github.javaparser.ast.internal.Utils;
 import com.github.javaparser.ast.visitor.GenericVisitor;
 import com.github.javaparser.ast.visitor.VoidVisitor;
 
 import static com.github.javaparser.Position.pos;
 
 /**
+ * Java® Language Specification 3.10.5 String Literals
  * @author Julio Vilmar Gesser
  */
 public class StringLiteralExpr extends LiteralExpr {
@@ -46,6 +48,13 @@
 	}
 
 	/**
+	 * Utility method that creates a new StringLiteralExpr. Escapes EOL characters.
+	 */
+	public static StringLiteralExpr escape(String string) {
+		return new StringLiteralExpr(Utils.escapeEndOfLines(string));
+	}
+
+	/**
 	 * @deprecated prefer using Range objects.
 	 */
 	@Deprecated
diff --git a/javaparser-core/src/main/java/com/github/javaparser/ast/internal/Utils.java b/javaparser-core/src/main/java/com/github/javaparser/ast/internal/Utils.java
index 983afef..514962d 100644
--- a/javaparser-core/src/main/java/com/github/javaparser/ast/internal/Utils.java
+++ b/javaparser-core/src/main/java/com/github/javaparser/ast/internal/Utils.java
@@ -26,14 +26,36 @@
 import java.util.List;
 
 /**
+ * Any kind of utility.
+ *
  * @author Federico Tomassetti
  */
 public class Utils {
-    public static <T> List<T> ensureNotNull(List<T> list) {
-        return list == null ? new ArrayList<T>() : list;
-    }
+	public static <T> List<T> ensureNotNull(List<T> list) {
+		return list == null ? new ArrayList<T>() : list;
+	}
 
-    public static <E> boolean isNullOrEmpty(Collection<E> collection) {
-        return collection == null || collection.isEmpty();
-    }
+	public static <E> boolean isNullOrEmpty(Collection<E> collection) {
+		return collection == null || collection.isEmpty();
+	}
+
+	/**
+	 * @return string with ASCII characters 10 and 13 replaced by the text "\n" and "\r".
+	 */
+	public static String escapeEndOfLines(String string) {
+		StringBuilder escapedString = new StringBuilder();
+		for (char c : string.toCharArray()) {
+			switch (c) {
+				case '\n':
+					escapedString.append("\\n");
+					break;
+				case '\r':
+					escapedString.append("\\r");
+					break;
+				default:
+					escapedString.append(c);
+			}
+		}
+		return escapedString.toString();
+	}
 }
diff --git a/javaparser-testing/src/test/resources/com/github/javaparser/bdd/parsing_scenarios.story b/javaparser-testing/src/test/resources/com/github/javaparser/bdd/parsing_scenarios.story
index 660931b..d06e98c 100644
--- a/javaparser-testing/src/test/resources/com/github/javaparser/bdd/parsing_scenarios.story
+++ b/javaparser-testing/src/test/resources/com/github/javaparser/bdd/parsing_scenarios.story
@@ -369,7 +369,7 @@
 Then the package name is com.github.javaparser.bdd
 
 
-Scenario: Strings with unescaped newlines are NOT parsed correctly
+Scenario: Strings with unescaped newlines are illegal (issue 211)
 Given the class:
 class A {
     public void helloWorld(String greeting, String name) {
@@ -379,6 +379,16 @@
 }
 Then the Java parser cannot parse it because of lexical errors
 
+Scenario: Chars with unescaped newlines are illegal (issue 211)
+Given the class:
+class A {
+    public void helloWorld(String greeting, String name) {
+        return '
+';
+    }
+}
+Then the Java parser cannot parse it because of lexical errors
+
 Scenario: Diamond Operator information is exposed
 
 Given a CompilationUnit