From 4f527bc5783f66d095a0e50442953cf2c2b166bc Mon Sep 17 00:00:00 2001 From: amy Date: Sun, 14 Sep 2025 13:01:56 +0100 Subject: [PATCH 1/2] & --- OpenDreamClient/Interface/DMF/DMFLexer.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/OpenDreamClient/Interface/DMF/DMFLexer.cs b/OpenDreamClient/Interface/DMF/DMFLexer.cs index cb6dd37a4b..c1a907ae63 100644 --- a/OpenDreamClient/Interface/DMF/DMFLexer.cs +++ b/OpenDreamClient/Interface/DMF/DMFLexer.cs @@ -55,6 +55,10 @@ public Token NextToken() { Advance(); _parsingAttributeName = true; // Still parsing an attribute name, the last one was actually an element name! return new(TokenType.Period, c); + case '&': // & is a valid splitter as well + Advance(); + _parsingAttributeName = true; + return new(TokenType.Semicolon, c); case ';': Advance(); _parsingAttributeName = true; @@ -126,7 +130,7 @@ public Token NextToken() { var textBuilder = new StringBuilder(); textBuilder.Append(c); - while (!char.IsWhiteSpace(Advance()) && GetCurrent() is not ';' and not '=' and not '?' and not ':' && !(_parsingAttributeName && GetCurrent() == '.') && !AtEndOfSource) + while (!char.IsWhiteSpace(Advance()) && GetCurrent() is not ';' and not '&' and not '=' and not '?' and not ':' && !(_parsingAttributeName && GetCurrent() == '.') && !AtEndOfSource) textBuilder.Append(GetCurrent()); var text = textBuilder.ToString(); From afc808312b26e1c3ea1b0eb0deeb35ec67bd0b37 Mon Sep 17 00:00:00 2001 From: amy Date: Sun, 14 Sep 2025 13:04:07 +0100 Subject: [PATCH 2/2] clean up --- OpenDreamClient/Interface/DMF/DMFLexer.cs | 3 --- 1 file changed, 3 deletions(-) diff --git a/OpenDreamClient/Interface/DMF/DMFLexer.cs b/OpenDreamClient/Interface/DMF/DMFLexer.cs index c1a907ae63..bc73afecc5 100644 --- a/OpenDreamClient/Interface/DMF/DMFLexer.cs +++ b/OpenDreamClient/Interface/DMF/DMFLexer.cs @@ -56,9 +56,6 @@ public Token NextToken() { _parsingAttributeName = true; // Still parsing an attribute name, the last one was actually an element name! return new(TokenType.Period, c); case '&': // & is a valid splitter as well - Advance(); - _parsingAttributeName = true; - return new(TokenType.Semicolon, c); case ';': Advance(); _parsingAttributeName = true;