using System;
using System.IO;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var line = "[A] == [B] * 10 - FUNCTION{[C], STRING_EXPRESSION, FUNCTION{[D],[C],[E]}}, FUNCTION{[C], [X]}, 100";
var matches = Regex.Matches(line, @"(?:(?:\{(?>[^{}]+|{(?<n>)|}(?<-n>))*(?(n)(?!))})|[^,])+");
foreach (Match m in matches)
Console.WriteLine(m.Value.Trim());
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQl2YXIgbGluZSA9ICJbQV0gPT0gW0JdICogMTAgLSBGVU5DVElPTntbQ10sIFNUUklOR19FWFBSRVNTSU9OLCBGVU5DVElPTntbRF0sW0NdLFtFXX19LCBGVU5DVElPTntbQ10sIFtYXX0sIDEwMCI7CiAgICAgICAgdmFyIG1hdGNoZXMgPSBSZWdleC5NYXRjaGVzKGxpbmUsIEAiKD86KD86XHsoPz5bXnt9XSt8eyg/PG4+KXx9KD88LW4+KSkqKD8obikoPyEpKX0pfFteLF0pKyIpOwogICAgICAgIGZvcmVhY2ggKE1hdGNoIG0gaW4gbWF0Y2hlcykKICAgICAgICAJQ29uc29sZS5Xcml0ZUxpbmUobS5WYWx1ZS5UcmltKCkpOwogICAgICAgIAoJfQp9