commit 14a0bcc74a121525917aefc8c9034e283e94884b Author: Piotr Szydełko Date: Sat May 20 08:14:27 2017 +0200 Fix C# property initializer parsing int Property {get; set;} = 23; The parser was ending the property at the closing bracket, which resulted in the initializer being assigned to the following property. diff --git a/src/scanner.l b/src/scanner.l index 9ff082d4..632c8a51 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -6198,6 +6198,14 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) } } "{" { curlyCount++; } +"}"{B}*"=" { + // fall back to next rule if it's not the right bracket + if (curlyCount != 0) REJECT; + current->initializer = "="; + current->endBodyLine=yyLineNr; + lastInitializerContext = FindMembers; + BEGIN(ReadInitializer); + } "}" { if (curlyCount) { @@ -6207,6 +6215,8 @@ OPERATOR "operator"{B}*({ARITHOP}|{ASSIGNOP}|{LOGICOP}|{BITOP}) { mtype = Method; virt = Normal; + // not really important, but while we are at it + current->endBodyLine=yyLineNr; unput(';'); BEGIN(FindMembers); }