Save
This commit is contained in:
20
Convention/[RScript]/Matcher/BackMatcher.cs
Normal file
20
Convention/[RScript]/Matcher/BackMatcher.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace Convention.RScript.Matcher
|
||||||
|
{
|
||||||
|
public class BackMatcher : IRSentenceMatcher
|
||||||
|
{
|
||||||
|
public bool Match(string expression, ref RScriptSentence sentence)
|
||||||
|
{
|
||||||
|
Regex LabelRegex = new(@"^back\s*\(\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\)$");
|
||||||
|
var LabelMatch = LabelRegex.Match(expression);
|
||||||
|
if (LabelMatch.Success)
|
||||||
|
{
|
||||||
|
sentence.mode = RScriptSentence.Mode.Label;
|
||||||
|
sentence.content = LabelMatch.Groups[1].Value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
20
Convention/[RScript]/Matcher/BreakMatcher.cs
Normal file
20
Convention/[RScript]/Matcher/BreakMatcher.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace Convention.RScript.Matcher
|
||||||
|
{
|
||||||
|
public class BreakMatcher : IRSentenceMatcher
|
||||||
|
{
|
||||||
|
public bool Match(string expression, ref RScriptSentence sentence)
|
||||||
|
{
|
||||||
|
Regex LabelRegex = new(@"^break\(\s*(.+)\s*\)$");
|
||||||
|
var LabelMatch = LabelRegex.Match(expression);
|
||||||
|
if (LabelMatch.Success)
|
||||||
|
{
|
||||||
|
sentence.mode = RScriptSentence.Mode.Label;
|
||||||
|
sentence.content = LabelMatch.Groups[1].Value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
20
Convention/[RScript]/Matcher/DefineVariableMatcher.cs
Normal file
20
Convention/[RScript]/Matcher/DefineVariableMatcher.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace Convention.RScript.Matcher
|
||||||
|
{
|
||||||
|
public class DefineVariableMatcher : IRSentenceMatcher
|
||||||
|
{
|
||||||
|
public bool Match(string expression, ref RScriptSentence sentence)
|
||||||
|
{
|
||||||
|
Regex DefineVariableRegex = new(@"^(string|int|double|float|bool|var)\s+([a-zA-Z_][a-zA-Z0-9_]*)$");
|
||||||
|
var DefineVariableMatch = DefineVariableRegex.Match(expression);
|
||||||
|
if (DefineVariableMatch.Success)
|
||||||
|
{
|
||||||
|
sentence.mode = RScriptSentence.Mode.DefineVariable;
|
||||||
|
sentence.info = new() { DefineVariableMatch.Groups[1].Value, DefineVariableMatch.Groups[2].Value };
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
22
Convention/[RScript]/Matcher/GotoMatcher.cs
Normal file
22
Convention/[RScript]/Matcher/GotoMatcher.cs
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace Convention.RScript.Matcher
|
||||||
|
{
|
||||||
|
public class GotoMatcher : IRSentenceMatcher
|
||||||
|
{
|
||||||
|
public bool Match(string expression, ref RScriptSentence sentence)
|
||||||
|
{
|
||||||
|
|
||||||
|
Regex GotoRegex = new(@"^goto\s*\(\s*(.+)\s*,\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\)$");
|
||||||
|
var GotoMatch = GotoRegex.Match(expression);
|
||||||
|
if (GotoMatch.Success)
|
||||||
|
{
|
||||||
|
sentence.mode = RScriptSentence.Mode.Goto;
|
||||||
|
sentence.content = GotoMatch.Groups[2].Value;
|
||||||
|
sentence.info = new() { GotoMatch.Groups[1].Value, GotoMatch.Groups[2].Value };
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
20
Convention/[RScript]/Matcher/LabelMatcher.cs
Normal file
20
Convention/[RScript]/Matcher/LabelMatcher.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
using System.Text.RegularExpressions;
|
||||||
|
|
||||||
|
namespace Convention.RScript.Matcher
|
||||||
|
{
|
||||||
|
public class LabelMatcher : IRSentenceMatcher
|
||||||
|
{
|
||||||
|
public bool Match(string expression, ref RScriptSentence sentence)
|
||||||
|
{
|
||||||
|
Regex LabelRegex = new(@"^label\s*\(\s*([a-zA-Z_][a-zA-Z0-9_]*)\s*\)$");
|
||||||
|
var LabelMatch = LabelRegex.Match(expression);
|
||||||
|
if (LabelMatch.Success)
|
||||||
|
{
|
||||||
|
sentence.mode = RScriptSentence.Mode.Label;
|
||||||
|
sentence.content = LabelMatch.Groups[1].Value;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
20
Convention/[RScript]/Matcher/NamespaceMater.cs
Normal file
20
Convention/[RScript]/Matcher/NamespaceMater.cs
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
namespace Convention.RScript.Matcher
|
||||||
|
{
|
||||||
|
public class NamespaceMater : IRSentenceMatcher
|
||||||
|
{
|
||||||
|
public bool Match(string expression, ref RScriptSentence sentence)
|
||||||
|
{
|
||||||
|
if (expression == "{")
|
||||||
|
{
|
||||||
|
sentence.mode = RScriptSentence.Mode.EnterNamespace;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else if (expression == "}")
|
||||||
|
{
|
||||||
|
sentence.mode = RScriptSentence.Mode.ExitNamespace;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Reference in New Issue
Block a user