diff --git a/ParserTools/ParserTools/DefaultLanguageInformation.cs b/ParserTools/ParserTools/DefaultLanguageInformation.cs index d81167fae..d23d3a0ce 100644 --- a/ParserTools/ParserTools/DefaultLanguageInformation.cs +++ b/ParserTools/ParserTools/DefaultLanguageInformation.cs @@ -2380,12 +2380,22 @@ namespace PascalABCCompiler.Parsers bool in_kav = false; Stack sk_stack = new Stack(); sk_stack.Push('(');i++; + bool default_value = false; while (i < meth.Length && sk_stack.Count > 0) { if (meth[i] == '\'') in_kav = !in_kav; else if (meth[i] == '(') {if (!in_kav) sk_stack.Push('(');} else if (meth[i] == ')') {if (!in_kav) sk_stack.Pop();} - sb.Append(meth[i]); + if (meth[i] == ':' && meth[i+1] == '=' && !in_kav) + default_value = true; + else if (meth[i] == ';' && !in_kav) + default_value = false; + if (!default_value || meth[i] == ')' && sk_stack.Count == 0) + { + if (meth[i] == ')' && sk_stack.Count == 0 && default_value) + sb = new StringBuilder(sb.ToString().TrimEnd()); + sb.Append(meth[i]); + } i++; } while (i