Skip to content

Commit f7f90d1

Browse files
author
linzhijun
committed
fix
1 parent 4d7df5c commit f7f90d1

File tree

9 files changed

+126
-39
lines changed

9 files changed

+126
-39
lines changed

csharp/ToolGood.Algorithm2.Test/AlgorithmEngineHelper/AlgorithmEngineHelperTest.cs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,37 +16,37 @@ public class AlgorithmEngineHelperTest
1616
public void Test()
1717
{
1818
DiyNameInfo p = AlgorithmEngineHelper.GetDiyNames("[dd]");
19-
Assert.AreEqual("dd", p.Parameters[0]);
19+
Assert.AreEqual("dd", p.Parameters[0].ToString());
2020
p = AlgorithmEngineHelper.GetDiyNames("@dd");
21-
Assert.AreEqual("dd", p.Parameters[0]);
21+
Assert.AreEqual("dd", p.Parameters[0].ToString());
2222
p = AlgorithmEngineHelper.GetDiyNames("#dd#");
23-
Assert.AreEqual("dd", p.Parameters[0]);
23+
Assert.AreEqual("dd", p.Parameters[0].ToString());
2424
p = AlgorithmEngineHelper.GetDiyNames("dd");
25-
Assert.AreEqual("dd", p.Parameters[0]);
25+
Assert.AreEqual("dd", p.Parameters[0].ToString());
2626

2727
// 注,这里的 ddd 是数组内有 ddd
2828
DiyNameInfo p2 = AlgorithmEngineHelper.GetDiyNames("{ddd}");
29-
Assert.AreEqual("ddd", p2.Parameters[0]);
29+
Assert.AreEqual("ddd", p2.Parameters[0].ToString());
3030

3131
DiyNameInfo p3 = AlgorithmEngineHelper.GetDiyNames("【dd】");
32-
Assert.AreEqual("dd", p3.Parameters[0]);
32+
Assert.AreEqual("dd", p3.Parameters[0].ToString());
3333
p3 = AlgorithmEngineHelper.GetDiyNames("【dd.1】");
34-
Assert.AreEqual("dd.1", p3.Parameters[0]);
34+
Assert.AreEqual("dd.1", p3.Parameters[0].ToString());
3535

3636
DiyNameInfo p4 = AlgorithmEngineHelper.GetDiyNames("@ddd+2");
37-
Assert.AreEqual("ddd", p4.Parameters[0]);
37+
Assert.AreEqual("ddd", p4.Parameters[0].ToString());
3838
p4 = AlgorithmEngineHelper.GetDiyNames("ddd+2");
39-
Assert.AreEqual("ddd", p4.Parameters[0]);
39+
Assert.AreEqual("ddd", p4.Parameters[0].ToString());
4040

4141
DiyNameInfo p5 = AlgorithmEngineHelper.GetDiyNames("ddd(d1,22)");
4242
Assert.AreEqual("ddd", p5.Functions[0]);
43-
Assert.AreEqual("d1", p5.Parameters[0]);
43+
Assert.AreEqual("d1", p5.Parameters[0].ToString());
4444

4545
DiyNameInfo p6 = AlgorithmEngineHelper.GetDiyNames("长");
46-
Assert.AreEqual("长", p6.Parameters[0]);
46+
Assert.AreEqual("长", p6.Parameters[0].ToString());
4747

4848
DiyNameInfo p7 = AlgorithmEngineHelper.GetDiyNames("#ddd#+2");
49-
Assert.AreEqual("ddd", p7.Parameters[0]);
49+
Assert.AreEqual("ddd", p7.Parameters[0].ToString());
5050

5151
}
5252

csharp/ToolGood.Algorithm2/DiyNameInfo.cs

Lines changed: 45 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using System;
22
using System.Collections.Generic;
3+
using System.Xml.Linq;
34

45
namespace ToolGood.Algorithm
56
{
@@ -11,7 +12,7 @@ public sealed class DiyNameInfo
1112
/// <summary>
1213
/// 自定义 参数
1314
/// </summary>
14-
public List<String> Parameters { get; private set; }
15+
public List<ParameterInfo> Parameters { get; private set; }
1516
/// <summary>
1617
/// 自定义方法
1718
/// </summary>
@@ -22,8 +23,50 @@ public sealed class DiyNameInfo
2223
/// </summary>
2324
public DiyNameInfo()
2425
{
25-
Parameters = new List<String>();
26+
Parameters = new List<ParameterInfo>();
2627
Functions = new List<String>();
2728
}
2829
}
30+
31+
/// <summary>
32+
/// 参数信息
33+
/// </summary>
34+
public sealed class ParameterInfo
35+
{
36+
/// <summary>
37+
///
38+
/// </summary>
39+
/// <param name="name"></param>
40+
/// <param name="start"></param>
41+
/// <param name="end"></param>
42+
public ParameterInfo(string name, int start, int end)
43+
{
44+
Name = name;
45+
Start = start;
46+
End = end;
47+
}
48+
49+
/// <summary>
50+
/// 名称
51+
/// </summary>
52+
public string Name { get; set; }
53+
54+
/// <summary>
55+
/// 开始位置
56+
/// </summary>
57+
public int Start { get; set; }
58+
59+
/// <summary>
60+
/// 结束位置
61+
/// </summary>
62+
public int End { get; set; }
63+
/// <summary>
64+
/// 重写
65+
/// </summary>
66+
/// <returns></returns>
67+
public override string ToString()
68+
{
69+
return Name;
70+
}
71+
}
2972
}

csharp/ToolGood.Algorithm2/Internals/AntlrCharStream.cs

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ namespace ToolGood.Algorithm.Internals
1616
/// 'BEGIN' if constructor parameter upper=true but getText() would return
1717
/// 'BeGiN'.
1818
/// </summary>
19-
sealed class AntlrCharStream : ICharStream
19+
public sealed class AntlrCharStream : ICharStream
2020
{
2121
private ICharStream stream;
2222

@@ -29,56 +29,81 @@ public AntlrCharStream(ICharStream stream)
2929
{
3030
this.stream = stream;
3131
}
32-
32+
/// <summary>
33+
///
34+
/// </summary>
3335
public int Index {
3436
get {
3537
return stream.Index;
3638
}
3739
}
38-
40+
/// <summary>
41+
///
42+
/// </summary>
3943
public int Size {
4044
get {
4145
return stream.Size;
4246
}
4347
}
44-
48+
/// <summary>
49+
///
50+
/// </summary>
4551
public string SourceName {
4652
get {
4753
return stream.SourceName;
4854
}
4955
}
50-
56+
/// <summary>
57+
///
58+
/// </summary>
5159
public void Consume()
5260
{
5361
stream.Consume();
5462
}
55-
63+
/// <summary>
64+
///
65+
/// </summary>
66+
/// <param name="interval"></param>
67+
/// <returns></returns>
5668
[return: NotNull]
5769
public string GetText(Interval interval)
5870
{
5971
return stream.GetText(interval);
6072
}
61-
73+
/// <summary>
74+
///
75+
/// </summary>
76+
/// <param name="i"></param>
77+
/// <returns></returns>
6278
public int LA(int i)
6379
{
6480
int c = stream.LA(i);
6581

6682
if (c <= 0) {
6783
return c;
6884
}
69-
return CharUtil.StandardChar((char)c);
85+
return CharUtil.StandardChar((char)c);
7086
}
71-
87+
/// <summary>
88+
///
89+
/// </summary>
90+
/// <returns></returns>
7291
public int Mark()
7392
{
7493
return stream.Mark();
7594
}
76-
95+
/// <summary>
96+
///
97+
/// </summary>
98+
/// <param name="marker"></param>
7799
public void Release(int marker)
78100
{
79101
stream.Release(marker);
80102
}
81-
103+
/// <summary>
104+
///
105+
/// </summary>
106+
/// <param name="index"></param>
82107
public void Seek(int index)
83108
{
84109
stream.Seek(index);

csharp/ToolGood.Algorithm2/Internals/AntlrErrorListener.cs

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,29 @@
33

44
namespace ToolGood.Algorithm.Internals
55
{
6-
sealed class AntlrErrorListener : IAntlrErrorListener<IToken>
6+
/// <summary>
7+
/// 自定义ErrorListener
8+
/// </summary>
9+
public sealed class AntlrErrorListener : IAntlrErrorListener<IToken>
710
{
11+
/// <summary>
12+
/// 是否出错
13+
/// </summary>
814
public bool IsError { get; private set; }
15+
/// <summary>
16+
/// 出错信息
17+
/// </summary>
918
public string ErrorMsg { get; private set; }
10-
19+
/// <summary>
20+
/// 重写
21+
/// </summary>
22+
/// <param name="output"></param>
23+
/// <param name="recognizer"></param>
24+
/// <param name="offendingSymbol"></param>
25+
/// <param name="line"></param>
26+
/// <param name="charPositionInLine"></param>
27+
/// <param name="msg"></param>
28+
/// <param name="e"></param>
1129
public void SyntaxError(TextWriter output, IRecognizer recognizer, IToken offendingSymbol, int line, int charPositionInLine, string msg, RecognitionException e)
1230
{
1331
IsError = true;

csharp/ToolGood.Algorithm2/Internals/DiyNameVisitor.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,25 +14,26 @@ public object VisitPARAMETER_fun(mathParser.PARAMETER_funContext context)
1414
{
1515
ITerminalNode node = context.PARAMETER();
1616
if (node != null) {
17-
diy.Parameters.Add(node.GetText());
17+
diy.Parameters.Add(new ParameterInfo(node.GetText(), node.Symbol.StartIndex, node.Symbol.StopIndex));
1818
}
1919
node = context.PARAMETER2();
2020
if (node != null) {
2121
string str = node.GetText();
22-
if (str.StartsWith("@")) {
23-
diy.Parameters.Add(str.AsSpan(1).ToString());
22+
if (str.StartsWith('@')) {
23+
diy.Parameters.Add(new ParameterInfo(str.AsSpan(1).ToString(), node.Symbol.StartIndex, node.Symbol.StopIndex));
24+
2425
} else if ((str.StartsWith("【") && str.EndsWith("】"))
2526
|| (str.StartsWith("[") && str.EndsWith("]"))
2627
|| (str.StartsWith("#") && str.EndsWith("#"))) {
27-
diy.Parameters.Add(str.AsSpan(1, str.Length - 2).ToString());
28-
28+
diy.Parameters.Add(new ParameterInfo(str.AsSpan(1, str.Length - 2).ToString(), node.Symbol.StartIndex, node.Symbol.StopIndex));
2929
} else {
30-
diy.Parameters.Add(str);
30+
diy.Parameters.Add(new ParameterInfo(str, node.Symbol.StartIndex, node.Symbol.StopIndex));
3131
}
3232
}
3333

3434
return VisitChildren(context);
3535
}
36+
3637
public object VisitDiyFunction_fun(mathParser.DiyFunction_funContext context)
3738
{
3839
diy.Functions.Add(context.PARAMETER().GetText());

csharp/ToolGood.Algorithm2/Internals/MathVisitor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
namespace ToolGood.Algorithm.Internals
1515
{
16-
class MathVisitor : AbstractParseTreeVisitor<Operand>, ImathVisitor<Operand>
16+
public class MathVisitor : AbstractParseTreeVisitor<Operand>, ImathVisitor<Operand>
1717
{
1818
public event Func<string, Operand> GetParameter;
1919
public event Func<string, List<Operand>, Operand> DiyFunction;

csharp/ToolGood.Algorithm2/ToolGood.Algorithm2.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,11 +16,11 @@
1616
<RootNamespace>ToolGood.Algorithm</RootNamespace>
1717
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
1818
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
19-
<PackageReleaseNotes>3.5版本为新版本,与上一版本有一点不兼容,替换后请测试</PackageReleaseNotes>
19+
<PackageReleaseNotes>3.6版本为新版本,与上一版本有一点不兼容,替换后请测试</PackageReleaseNotes>
2020
<Product>ToolGood.Algorithm</Product>
2121
<PackageLicenseFile>LICENSE</PackageLicenseFile>
2222
<SignAssembly>true</SignAssembly>
23-
<Version>3.5.0.1</Version>
23+
<Version>3.6.0.1</Version>
2424
<AssemblyOriginatorKeyFile>ToolGood.Algorithm.snk</AssemblyOriginatorKeyFile>
2525
<DelaySign>false</DelaySign>
2626
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\ToolGood.Algorithm.xml</DocumentationFile>

csharp/ToolGood.Algorithm2/math/mathLexer.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//------------------------------------------------------------------------------
1+
//------------------------------------------------------------------------------
22
// <auto-generated>
33
// This code was generated by a tool.
44
// ANTLR Version: 4.13.0
@@ -29,7 +29,7 @@
2929
namespace ToolGood.Algorithm.math
3030
{
3131
[System.CodeDom.Compiler.GeneratedCode("ANTLR", "4.13.0")]
32-
partial class mathLexer : Lexer {
32+
public partial class mathLexer : Lexer {
3333
protected static DFA[] decisionToDFA;
3434
protected static PredictionContextCache sharedContextCache = new PredictionContextCache();
3535

csharp/ToolGood.Algorithm2/math/mathParser.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//------------------------------------------------------------------------------
1+
//------------------------------------------------------------------------------
22
// <auto-generated>
33
// This code was generated by a tool.
44
// ANTLR Version: 4.13.0

0 commit comments

Comments
 (0)