/****************************************************************************
**
** 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;
}
}