/****************************************************************************
|
**
|
** 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
|
{
|
/// <summary><![CDATA[
|
/// Equivalent to: [\w]
|
/// ]]></summary>
|
public static CharClassLiteral CharWord
|
{ get { return new CharClassLiteral { LiteralChars = @"\w" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\w]*
|
/// ]]></summary>
|
public static RegExpr Word
|
{ get { return CharWord.Repeat(); } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\d]
|
/// ]]></summary>
|
public static CharClassLiteral CharDigit
|
{ get { return new CharClassLiteral { LiteralChars = @"\d" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\d]*
|
/// ]]></summary>
|
public static RegExpr Number
|
{ get { return CharDigit.Repeat(); } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\r]
|
/// ]]></summary>
|
public static CharClassLiteral CharCr
|
{ get { return new CharClassLiteral { LiteralChars = @"\r" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\n]
|
/// ]]></summary>
|
public static CharClassLiteral CharLf
|
{ get { return new CharClassLiteral { LiteralChars = @"\n" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\s]
|
/// ]]></summary>
|
public static CharClassLiteral CharSpace
|
{ get { return new CharClassLiteral { LiteralChars = @"\s" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\S]
|
/// ]]></summary>
|
public static CharClassLiteral CharNonSpace
|
{ get { return new CharClassLiteral { LiteralChars = @"\S" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\r\n]
|
/// ]]></summary>
|
public static CharClassSet CharVertSpace
|
{ get { return CharSet[CharCr + CharLf]; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [^\S\r\n]
|
/// ]]></summary>
|
public static CharClassSet CharHorizSpace
|
{ get { return CharSet[~(CharNonSpace + CharVertSpace)]; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: .
|
/// ]]></summary>
|
public static RegExprLiteral AnyChar
|
{ get { return new RegExprLiteral { LiteralExpr = "." }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: ^
|
/// ]]></summary>
|
public static RegExprLiteral StartOfLine
|
{ get { return new RegExprLiteral { LiteralExpr = "^" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: $
|
/// ]]></summary>
|
public static RegExprLiteral EndOfLine
|
{ get { return new RegExprLiteral { LiteralExpr = "$" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: \A
|
/// ]]></summary>
|
public static RegExprLiteral StartOfFile
|
{ get { return new RegExprLiteral { LiteralExpr = @"\A" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: \z
|
/// ]]></summary>
|
public static RegExprLiteral EndOfFile
|
{ get { return new RegExprLiteral { LiteralExpr = @"\z" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: \r?\n
|
/// ]]></summary>
|
public static RegExprSequence LineBreak
|
{ get { return CharCr.Optional() & CharLf; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\s]*
|
/// ]]></summary>
|
public static RegExpr Space
|
{ get { return CharSpace.Repeat(); } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\S]*
|
/// ]]></summary>
|
public static RegExpr NonSpace
|
{ get { return CharNonSpace.Repeat(); } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [\r\n]*
|
/// ]]></summary>
|
public static RegExpr VertSpace
|
{ get { return CharVertSpace.Repeat(); } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [^\S\r\n]*
|
/// ]]></summary>
|
public static RegExpr HorizSpace
|
{ get { return CharHorizSpace.Repeat(); } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: [^\r\n]*
|
/// ]]></summary>
|
public static RegExpr Line
|
{ get { return CharSet[~CharVertSpace].Repeat(); } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: (?i)
|
/// ]]></summary>
|
public static RegExprLiteral IgnoreCase
|
{ get { return new RegExprLiteral { LiteralExpr = @"(?i)" }; } }
|
|
/// <summary><![CDATA[
|
/// Equivalent to: (?-i)
|
/// ]]></summary>
|
public static RegExprLiteral SenseCase
|
{ get { return new RegExprLiteral { LiteralExpr = @"(?-i)" }; } }
|
|
/// <summary>
|
/// Applies the same whitespace skipping rules as tokens, but does not any capture text.
|
/// </summary>
|
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;
|
}
|
}
|