diff --git a/csharp/Platform.Protocols.Lino.Tests/ParserTests.cs b/csharp/Platform.Protocols.Lino.Tests/ParserTests.cs index 1106c9f..e6f5e08 100644 --- a/csharp/Platform.Protocols.Lino.Tests/ParserTests.cs +++ b/csharp/Platform.Protocols.Lino.Tests/ParserTests.cs @@ -221,11 +221,11 @@ public static void EmptyLinkWithParenthesesTest() Assert.Equal(target, formattedLinks); } - [Fact(Skip = "Not implemented yet")] + [Fact] public static void EmptyLinkWithEmptySelfReferenceTest() { var source = @"(:)"; - var target = @"(:)"; + var target = @"()"; var parser = new Parser(); var links = parser.Parse(source); var formattedLinks = links.Format(); diff --git a/csharp/Platform.Protocols.Lino/Parser.peg b/csharp/Platform.Protocols.Lino/Parser.peg index 3ca28f7..da4a4a0 100644 --- a/csharp/Platform.Protocols.Lino/Parser.peg +++ b/csharp/Platform.Protocols.Lino/Parser.peg @@ -14,8 +14,8 @@ multiLineValueAndWhitespace > = value:referenceOrLink _ { value } multiLineValues >> = _ list:multiLineValueAndWhitespace* { list } singleLineValueAndWhitespace > = __ value:referenceOrLink { value } singleLineValues >> = list:singleLineValueAndWhitespace+ { list } -singleLineLink > = __ id:(reference) __ ":" v:singleLineValues { new Link(id, v) } -multiLineLink > = "(" _ id:(reference) _ ":" v:multiLineValues _ ")" { new Link(id, v) } +singleLineLink > = __ id:(reference) __ ":" v:singleLineValues { new Link(id, v) } / __ ":" v:singleLineValues { new Link(null, v) } +multiLineLink > = "(" _ id:(reference) _ ":" v:multiLineValues _ ")" { new Link(id, v) } / "(" _ ":" v:multiLineValues _ ")" { new Link(null, v) } singleLineValueLink > = v:singleLineValues { new Link(v) } multiLineValueLink > = "(" v:multiLineValues _ ")" { new Link(v) } pointLink > = id:(reference) { new Link(id) }