/**************************************************************************** ** ** Copyright (C) 2019 The Qt Company Ltd. ** Contact: https://www.qt.io/licensing/ ** ** This file is part of the Qt VS Tools. ** ** $QT_BEGIN_LICENSE:GPL-EXCEPT$ ** Commercial License Usage ** Licensees holding valid commercial Qt licenses may use this file in ** accordance with the commercial license agreement provided with the ** Software or, alternatively, in accordance with the terms contained in ** a written agreement between you and The Qt Company. For licensing terms ** and conditions see https://www.qt.io/terms-conditions. For further ** information use the contact form at https://www.qt.io/contact-us. ** ** GNU General Public License Usage ** Alternatively, this file may be used under the terms of the GNU ** General Public License version 3 as published by the Free Software ** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT ** included in the packaging of this file. Please review the following ** information to ensure the GNU General Public License requirements will ** be met: https://www.gnu.org/licenses/gpl-3.0.html. ** ** $QT_END_LICENSE$ ** ****************************************************************************/ using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace QtVsTools.SyntaxAnalysis { using static CharClass; public abstract partial class RegExpr { /// public static CharClassLiteral CharWord { get { return new CharClassLiteral { LiteralChars = @"\w" }; } } /// public static RegExpr Word { get { return CharWord.Repeat(); } } /// public static CharClassLiteral CharDigit { get { return new CharClassLiteral { LiteralChars = @"\d" }; } } /// public static RegExpr Number { get { return CharDigit.Repeat(); } } /// public static CharClassLiteral CharCr { get { return new CharClassLiteral { LiteralChars = @"\r" }; } } /// public static CharClassLiteral CharLf { get { return new CharClassLiteral { LiteralChars = @"\n" }; } } /// public static CharClassLiteral CharSpace { get { return new CharClassLiteral { LiteralChars = @"\s" }; } } /// public static CharClassLiteral CharNonSpace { get { return new CharClassLiteral { LiteralChars = @"\S" }; } } /// public static CharClassSet CharVertSpace { get { return CharSet[CharCr + CharLf]; } } /// public static CharClassSet CharHorizSpace { get { return CharSet[~(CharNonSpace + CharVertSpace)]; } } /// public static RegExprLiteral AnyChar { get { return new RegExprLiteral { LiteralExpr = "." }; } } /// public static RegExprLiteral StartOfLine { get { return new RegExprLiteral { LiteralExpr = "^" }; } } /// public static RegExprLiteral EndOfLine { get { return new RegExprLiteral { LiteralExpr = "$" }; } } /// public static RegExprLiteral StartOfFile { get { return new RegExprLiteral { LiteralExpr = @"\A" }; } } /// public static RegExprLiteral EndOfFile { get { return new RegExprLiteral { LiteralExpr = @"\z" }; } } /// public static RegExprSequence LineBreak { get { return CharCr.Optional() & CharLf; } } /// public static RegExpr Space { get { return CharSpace.Repeat(); } } /// public static RegExpr NonSpace { get { return CharNonSpace.Repeat(); } } /// public static RegExpr VertSpace { get { return CharVertSpace.Repeat(); } } /// public static RegExpr HorizSpace { get { return CharHorizSpace.Repeat(); } } /// public static RegExpr Line { get { return CharSet[~CharVertSpace].Repeat(); } } /// public static RegExprLiteral IgnoreCase { get { return new RegExprLiteral { LiteralExpr = @"(?i)" }; } } /// public static RegExprLiteral SenseCase { get { return new RegExprLiteral { LiteralExpr = @"(?-i)" }; } } /// /// Applies the same whitespace skipping rules as tokens, but does not any capture text. /// public static RegExpr SkipWs { get { return new Token(); } } static CharExprBuilder _Char = new CharExprBuilder(); public static CharExprBuilder Char { get { return _Char; } } public static CharExprBuilder Chars { get { return _Char; } } static CharSetExprBuilder _CharSet = new CharSetExprBuilder(); public static CharSetExprBuilder CharSet { get { return _CharSet; } } static CharSetRawExprBuilder _CharSetRaw = new CharSetRawExprBuilder(); public static CharSetRawExprBuilder CharSetRaw { get { return _CharSetRaw; } } static AssertExprBuilder _LookAhead = new AssertExprBuilder(AssertLookAhead); public static AssertExprBuilder LookAhead { get { return _LookAhead; } } static AssertExprBuilder _LookBehind = new AssertExprBuilder(AssertLookBehind); public static AssertExprBuilder LookBehind { get { return _LookBehind; } } public const SkipWhitespace SkipWs_Disable = SkipWhitespace.Disable; } }