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}+