You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@royale.apache.org by jo...@apache.org on 2022/11/28 22:04:12 UTC

[royale-compiler] 01/04: Add raw string literals

This is an automated email from the ASF dual-hosted git repository.

joshtynjala pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/royale-compiler.git

commit 00d9cb21560f03325c0d3d91b4d3fef229933586
Author: Chris Feger <ch...@yahoo.com>
AuthorDate: Mon Nov 21 14:31:04 2022 -0700

    Add raw string literals
---
 .../compiler/internal/parsing/as/RawASTokenizer.lex      | 16 +++++++++++++---
 1 file changed, 13 insertions(+), 3 deletions(-)

diff --git a/compiler/src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.lex b/compiler/src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.lex
index d9f72faff..580c8739d 100644
--- a/compiler/src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.lex
+++ b/compiler/src/main/jflex/org/apache/royale/compiler/internal/parsing/as/RawASTokenizer.lex
@@ -47,7 +47,7 @@ import org.apache.royale.compiler.constants.IASKeywordConstants;
  */
 private enum StringKind
 {
-	CHAR, STRING
+	CHAR, STRING, RAW
 }
 
 private StringKind stringKind;
@@ -312,12 +312,19 @@ REGEX_CLASS="[" ({REGEX_ESCAPE}|[^\n\r\]\\])* "]"
 	yybegin(STRINGLITERAL);
 }
 
+<YYINITIAL> "@\""
+{
+	startAggregate();
+	stringKind = StringKind.RAW;
+	yybegin(STRINGLITERAL);
+}
+
 // String handling for both double and single quoted strings
 
 <STRINGLITERAL> "\""
 {
 	continueAggregate();
-	if (stringKind == StringKind.STRING)
+	if (stringKind == StringKind.STRING || stringKind == StringKind.RAW)
 	{
 		yybegin(YYINITIAL);
 		return buildAggregateToken(TOKEN_LITERAL_STRING);
@@ -336,7 +343,10 @@ REGEX_CLASS="[" ({REGEX_ESCAPE}|[^\n\r\]\\])* "]"
 
 <STRINGLITERAL> "\\"
 {
-	yybegin(ESCAPE_SEQUENCE);
+	if (stringKind != StringKind.RAW)
+	{
+		yybegin(ESCAPE_SEQUENCE);
+	}
 }
 
 <STRINGLITERAL> {LINE_TERMINATOR}+