using System.Text.RegularExpressions; namespace Convention.RScript.Matcher { public class DefineVariableMatcher : IRSentenceMatcher { private readonly Regex DefineVariableRegex = new(@"(string|int|double|float|bool|var)\s+([a-zA-Z_][a-zA-Z0-9_]*)\s*=\s*(.+)"); private readonly Regex DeclareVariableRegex = new(@"(string|int|double|float|bool|var)\s+([a-zA-Z_][a-zA-Z0-9_]*)"); public bool Match(string expression, ref RScriptSentence sentence) { { var DefineVariableMatch = DefineVariableRegex.Match(expression); if (DefineVariableMatch.Success) { sentence.mode = RScriptSentence.Mode.DefineVariable; sentence.info = new() { DefineVariableMatch.Groups[1].Value, DefineVariableMatch.Groups[2].Value, DefineVariableMatch.Groups[3].Value }; return true; } } { var DeclareVariableMatch = DeclareVariableRegex.Match(expression); if (DeclareVariableMatch.Success) { sentence.mode = RScriptSentence.Mode.DefineVariable; sentence.info = new() { DeclareVariableMatch.Groups[1].Value, DeclareVariableMatch.Groups[2].Value, null }; return true; } } return false; } } }