コード例 #1
0
        public static Regex VisitLiteral(NyaParser.RegexLiteralContext context)
        {
            string raw   = context.GetText();
            int    start = raw.IndexOf('/');
            int    end   = raw.LastIndexOf('/');
            string regex = raw.Substring(start + 1, end - 1);
            string flags = raw.Substring(end + 1);

            RegexOptions options = RegexOptions.None;

            foreach (var flag in flags)
            {
                switch (flag)
                {
                case 'm':
                    options |= RegexOptions.Multiline;
                    break;

                case 'i':
                    options |= RegexOptions.IgnoreCase;
                    break;

                case 's':
                    options |= RegexOptions.Singleline;
                    break;

                case 'x':
                    options |= RegexOptions.IgnorePatternWhitespace;
                    break;

                case 'n':
                    options |= RegexOptions.ExplicitCapture;
                    break;
                }
            }

            return(new Regex(regex, options));
        }
コード例 #2
0
 public override object VisitRegexLiteral([NotNull] NyaParser.RegexLiteralContext context)
 {
     return(LiteralHelper.VisitLiteral(context));
 }