Using Multiple Tokens As Operators
if x is greater than 5 then error ""
if x is equal to 7 then error ""public class MultipleTokenOperatorMatcher : IMatcher
{
public static readonly string[] Operators = ["is less than", "is greather than", "is equal to"];
public bool Match(Lexer lexer, char c)
{
return Operators.Any(op => lexer.IsMatch(op));
}
public Token Build(Lexer lexer, ref int index, ref int column, ref int line)
{
var oldColumn = column;
var oldIndex = index;
string type = null;
foreach (var op in Operators)
{
if (lexer.AdvanceIfMatch(op))
{
type = op;
break;
}
}
return new(op, lexer.Document.Source[oldIndex..index], line, oldColumn, lexer.Document);
}
}Last updated