102 lines
3.6 KiB
C#
102 lines
3.6 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using System.Text.RegularExpressions;
|
|
|
|
namespace Rokojori
|
|
{
|
|
public class LexerMatcherLibrary
|
|
{
|
|
public static readonly LexerMatcher CwordMatcher =
|
|
new LexerMatcher( "CWord", @"[a-zA-Z_]\w*" );
|
|
|
|
public static readonly LexerMatcher CFunctionMatcher =
|
|
new LexerMatcher( "CFunction", @"[a-zA-Z_]\w*(?=\s*\()" );
|
|
|
|
public static readonly LexerMatcher JSWordMatcher =
|
|
new LexerMatcher( "JSWord", @"[a-zA-Z_\$]\w*" );
|
|
|
|
public static readonly LexerMatcher PHPWordMatcher =
|
|
new LexerMatcher( "PHPWord", @"\$?[a-zA-Z_]\w*" );
|
|
|
|
|
|
public static readonly LexerMatcher CSS_ClassSelectorMatcher =
|
|
new LexerMatcher( "CSS_ClassSelector", @"\.[a-zA-Z_](\w|\-)*" );
|
|
|
|
public static readonly LexerMatcher CSS_IDSelectorMatcher =
|
|
new LexerMatcher( "CSS_IDSelector", @"\#[a-zA-Z_](\w|\-)*" );
|
|
|
|
public static readonly LexerMatcher CSS_WordMatcher =
|
|
new LexerMatcher( "CSS_Word", @"[a-zA-Z_](\w|\-)*" );
|
|
|
|
|
|
public static readonly LexerMatcher HTML_CustomElementMatcher =
|
|
new LexerMatcher( "HTML_CustomElement", @"[a-zA-Z]\w*\-(\w|\-)+" );
|
|
|
|
public static readonly LexerMatcher DoubleQuotedStringMatcher =
|
|
new LexerMatcher( "DoubleQuotedString", "\"(?:[^\"\\\\]|\\\\.)*\"" );
|
|
|
|
public static readonly LexerMatcher SingleQuotedStringMatcher =
|
|
new LexerMatcher( "SingleQuotedString", @"'(?:[^'\\]|\\.)*'" );
|
|
|
|
public static readonly LexerMatcher NumberMatcher =
|
|
new LexerMatcher( "Number", @"(?=\.\d|\d)(?:\d+)?(?:\.?\d*)(?:[eE][+-]?\d+)?" );
|
|
|
|
public static readonly LexerMatcher WhiteSpaceMatcher =
|
|
new LexerMatcher( "WhiteSpace", @"\s+" );
|
|
|
|
public static readonly LexerMatcher BreakMatcher =
|
|
new LexerMatcher( "Break", @"(\r\n|\r|\n)" );
|
|
|
|
|
|
public static readonly LexerMatcher NullMatcher =
|
|
new LexerMatcher( "Null", "null" );
|
|
|
|
public static readonly LexerMatcher BoolMatcher =
|
|
new LexerMatcher( "Bool", "true|false" );
|
|
|
|
public static readonly LexerMatcher LogicMatcher =
|
|
new LexerMatcher( "Logic", "if|else|switch|do|while|for|break|continue|return" );
|
|
|
|
public static readonly LexerMatcher OperatorMatcher =
|
|
new LexerMatcher( "Operator", "(?:\\=\\=)|(?:\\+\\+)|(?:\\-\\-)|\\+|\\-|\\*|\\/|\\^|\\||\\~|\\&|\\%|\\<|\\>|\\=|\\!|\\.|\\:|\\,|\\;" );
|
|
|
|
public static readonly LexerMatcher BracketMatcher =
|
|
new LexerMatcher( "Bracket", @"\(|\)|\[|\]|\{|\}" );
|
|
|
|
public static readonly LexerMatcher BlockStartMatcher =
|
|
new LexerMatcher( "BlockStart", @"\{" );
|
|
|
|
public static readonly LexerMatcher BlockEndMatcher =
|
|
new LexerMatcher( "BlockStart", @"\}" );
|
|
|
|
public static readonly LexerMatcher ClassMatcher =
|
|
new LexerMatcher( "Class", @"\bclass\b" );
|
|
|
|
public static readonly LexerMatcher AccessModifierMatcher =
|
|
new LexerMatcher( "AccessModifier", @"\b(?:public|protected|private)\b" );
|
|
|
|
public static readonly LexerMatcher SingleLineCommentMatcher =
|
|
new LexerMatcher( "SingleLineComment", @"//.*" );
|
|
|
|
public static readonly LexerMatcher CInstructionMatcher =
|
|
new LexerMatcher( "CInstruction", @"\#.*" );
|
|
|
|
public static readonly LexerMatcher MultiLineCommentMatcher =
|
|
new LexerMatcher( "MultiLineComment", @"\/\*(.|(\r\n|\r|\n))*?\*\/" );
|
|
|
|
public static readonly LexerMatcher AnySymbolMatcher =
|
|
new LexerMatcher( "AnySymbol", @"." );
|
|
|
|
public static readonly LexerMatcher HashTag =
|
|
new LexerMatcher( "HashTag", @"\#(\w|-|\d)+" );
|
|
|
|
public static readonly LexerMatcher URL =
|
|
new LexerMatcher( "URL", @"https?\:\/\/(\w|\.|\-|\?|\=|\+|\/)+" );
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} |