From 3cf57c203b2baf8602826fe41439b5aa43bd4da2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=91=D0=BE=D0=BD=D0=B4=D0=B0=D1=80=D0=B5=D0=B2=20=D0=98?= =?UTF-8?q?=D0=B2=D0=B0=D0=BD?= Date: Mon, 1 May 2017 11:49:21 +0200 Subject: [PATCH] fix #385 --- .../ParserTools/DefaultLanguageInformation.cs | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) 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