[go: nahoru, domu]

Skip to content

exectails/RegexLexer

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RegexLexer

A simple lexer for C# using regular expressions.

Example

var example = @"
// Some comment
123 + 456
test
";

var lexer = new Lexer();
lexer.AddDefinition(new TokenDefinition("COMMENT", new Regex(@"//[^\r\n]*", RegexOptions.Compiled)));
lexer.AddDefinition(new TokenDefinition("LITERAL", new Regex(@"[+-]?[\d]+", RegexOptions.Compiled)));
lexer.AddDefinition(new TokenDefinition("PLUS", new Regex(@"+", RegexOptions.Compiled)));
lexer.AddDefinition(new TokenDefinition("IDENTIFIER", new Regex(@"[a-z]+[a-z0-9_]*", RegexOptions.Compiled | RegexOptions.IgnoreCase)));
lexer.AddDefinition(new TokenDefinition("LINE_BREAK", new Regex(@"\r?\n", RegexOptions.Compiled)));

var tokens = lexer.Tokenize(example);

// Tokens:
// - LINE_BREAK
// - COMMENT:    // Some comment
// - LINE_BREAK
// - LITERAL:    123
// - PLUS:       +
// - LITERAL:    456
// - LINE_BREAK
// - IDENTIFIER: test
// - LINE_BREAK

Releases

No releases published

Packages

No packages published

Languages