Skip to content

Commit 5d2f063

Browse files
committed
Support annotation trailing comma.
1 parent 0b5e3c3 commit 5d2f063

File tree

2 files changed

+35
-2
lines changed

2 files changed

+35
-2
lines changed

ServerCodeExciserTest/AngelscriptSyntaxTests.cs

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,5 +89,37 @@ public void DataType(string type, string value)
8989
parser.AddErrorListener(new ThrowingErrorListener());
9090
new UnrealAngelscriptSimpleVisitor(script).VisitChildren(parser.script());
9191
}
92+
93+
[TestMethod]
94+
[DataRow("")]
95+
[DataRow("UCLASS()")]
96+
[DataRow("UCLASS(Abstract)")]
97+
public void UClass(string annotation)
98+
{
99+
var script = $"{annotation} class ClassName : BaseClass {{}};";
100+
var lexer = new UnrealAngelscriptLexer(new AntlrInputStream(script));
101+
var tokenStream = new CommonTokenStream(lexer);
102+
var parser = new UnrealAngelscriptParser(tokenStream);
103+
parser.RemoveErrorListeners();
104+
parser.AddErrorListener(new ThrowingErrorListener());
105+
new UnrealAngelscriptSimpleVisitor(script).VisitChildren(parser.script());
106+
}
107+
108+
[TestMethod]
109+
[DataRow("")]
110+
[DataRow("UPROPERTY()")]
111+
[DataRow("UPROPERTY(DefaultComponent)")]
112+
[DataRow("UPROPERTY(DefaultComponent,)")]
113+
[DataRow("UPROPERTY(DefaultComponent, RootComponent)")]
114+
public void UProperty(string annotation)
115+
{
116+
var script = $"class ClassName : BaseClass\r\n{{\r\n\t{annotation}\r\nDummyType DummyProperty;\r\n}};";
117+
var lexer = new UnrealAngelscriptLexer(new AntlrInputStream(script));
118+
var tokenStream = new CommonTokenStream(lexer);
119+
var parser = new UnrealAngelscriptParser(tokenStream);
120+
parser.RemoveErrorListeners();
121+
parser.AddErrorListener(new ThrowingErrorListener());
122+
new UnrealAngelscriptSimpleVisitor(script).VisitChildren(parser.script());
123+
}
92124
}
93125
}

UnrealAngelscriptParser/Grammar/UnrealAngelscriptParser.g4

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,9 @@ script:
3535
declarationseq? EOF;
3636

3737
/*Angelscript */
38+
3839
annotationList:
39-
annotation (Comma annotation)*;
40+
annotation (Comma annotation)* Comma?; // trailing commas are permitted in AS
4041

4142
annotation:
4243
Identifier (Assign expression)?;
@@ -477,7 +478,7 @@ initializerClause:
477478
| bracedInitList;
478479

479480
initializerList:
480-
initializerClause (Comma initializerClause)* Comma?; // I *really* don't like that trailing commas are a thing in AS...
481+
initializerClause (Comma initializerClause)* Comma?; // trailing commas are permitted in AS
481482

482483
bracedInitList: (LeftBrace|LeftBracket) (initializerList Comma?)? (RightBrace|RightBracket);
483484

0 commit comments

Comments
 (0)