开源 企业版 高校版 私有云 模力方舟 AI 队友
代码拉取完成,页面将自动刷新
捐赠
捐赠前请先登录
扫描微信二维码支付
取消
支付完成
支付提示
将跳转至支付宝完成支付
确定
取消
3 Star 4 Fork 4

ToolGood/ToolGood.Algorithm

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
已有帐号? 立即登录
文件
master
分支 (7)
标签 (27)
master
js-dev
java-dev
Fast
v3.5
v2.x
v1.x
6.0.0.8
6.0.0.0
5.0.0.2
3.5.0.3
3.4.1.4
3.4.1.3
3.4.0.0
3.3.0.0
3.2.0.2
3.2.0.1
3.0.3
3.0.2
3.0.1
3.0.0.0
2.2.0.2
2.2.0.1-java
2.2.0.1
2.2
2.1.0.1
2.1
master
分支 (7)
标签 (27)
master
js-dev
java-dev
Fast
v3.5
v2.x
v1.x
6.0.0.8
6.0.0.0
5.0.0.2
3.5.0.3
3.4.1.4
3.4.1.3
3.4.0.0
3.3.0.0
3.2.0.2
3.2.0.1
3.0.3
3.0.2
3.0.1
3.0.0.0
2.2.0.2
2.2.0.1-java
2.2.0.1
2.2
2.1.0.1
2.1
克隆/下载
克隆/下载
提示
下载代码请复制以下命令到终端执行
为确保你提交的代码身份被 Gitee 正确识别,请执行以下命令完成配置
初次使用 SSH 协议进行代码克隆、推送等操作时,需按下述提示完成 SSH 配置
1 生成 RSA 密钥
2 获取 RSA 公钥内容,并配置到 SSH公钥
在 Gitee 上使用 SVN,请访问 使用指南
使用 HTTPS 协议时,命令行会出现如下账号密码验证步骤。基于安全考虑,Gitee 建议 配置并使用私人令牌 替代登录密码进行克隆、推送等操作
Username for 'https://gitee.com': userName
Password for 'https://userName@gitee.com': # 私人令牌
master
分支 (7)
标签 (27)
master
js-dev
java-dev
Fast
v3.5
v2.x
v1.x
6.0.0.8
6.0.0.0
5.0.0.2
3.5.0.3
3.4.1.4
3.4.1.3
3.4.0.0
3.3.0.0
3.2.0.2
3.2.0.1
3.0.3
3.0.2
3.0.1
3.0.0.0
2.2.0.2
2.2.0.1-java
2.2.0.1
2.2
2.1.0.1
2.1
Program.cs 6.91 KB
一键复制 编辑 原始数据 按行查看 历史
ToolGood 提交于 2026年02月01日 23:12 +08:00 . fix
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
using Antlr4Helper.JavaScriptHelper.Helpers;
namespace Antlr4Helper.JavaScriptHelper
{
class Program
{
static void Main(string[] args)
{
var filePath = Path.GetFullPath(@"..\..\..\..\..\g4\antlr4\mathParser.js");
var text = File.ReadAllText(filePath);
text = text.Replace("import antlr4 from 'antlr4';", "import antlr4 from '../antlr4/index.web.js';");
text = text.Replace("import mathVisitor from './mathVisitor.js';", "");
text = text.Replace("mathParser.EOF = antlr4.Token.EOF;", "");
text = Regex.Replace(text, @"mathParser\..*?Context = .*?Context;", "");
text = Regex.Replace(text, @"this\.state = \d+;[\r\n\t ]*this.match", "this.match");
// 替换所有的 mathParser.xxx = n 为字典,然后再替换回去
var ms = Regex.Matches(text, @"(mathParser\..*) = (\d+);");
Dictionary<string, string> dict = new Dictionary<string, string>();
dict["mathParser.EOF"] = "-1";
foreach(Match m in ms) {
dict[m.Groups[1].Value] = m.Groups[2].Value;
}
text = Regex.Replace(text, @"(mathParser\..*) = (\d+);", "");
var keys = dict.Keys.OrderByDescending(q => q.Length).ToList();
foreach(var item in keys) {
text = Regex.Replace(text, @$"\b{item}\b", dict[item]);
}
text = Regex.Replace(text, @"([A-Z][0-9A-Z]*\(\) \{)[\r\n\t ]*(return this\.getToken\()", "1ドル2ドル");
text = Regex.Replace(text, @"([A-Z][0-9A-Z]*\(\) \{return this\.getToken.*?;)[\r\n\t ]*};", "1ドル};");
text = Regex.Replace(text, @"([A-Z][0-9A-Z]*\(\) \{return this\.getToken.*?};)", "//1ドル");
text = text.Replace("//PARAMETER()", "PARAMETER()");
text = text.Replace("//NUM()", "NUM()");
text = text.Replace("//STRING()", "STRING()");
text = text.Replace("if ( visitor instanceof mathVisitor ) {", "");
text = Regex.Replace(text, @"\} else \{[\r\n\t ]*return visitor\.visitChildren\(this\);[\r\n\t ]*\}", "");
text = text.Replace("static grammarFileName = \"math.g4\";", "static grammarFileName = \"\";");
text = Regex.Replace(text, @"static literalNames = \[[\s\S]+?\];", "static literalNames =[];");
text = Regex.Replace(text, @"static symbolicNames = \[[\s\S]+?\];", "static symbolicNames =[];");
text = Regex.Replace(text, @"static ruleNames = \[[\s\S]+?\];", "static ruleNames =[];");
text = Regex.Replace(text, @"[\r\n]+[\t ]*throw new antlr4\.error\.FailedPredicateException.*?[\r\n]+", "");
text = Regex.Replace(text, @"[\r\n]+[\t ]*if \(!\( this\.precpred\(this\._ctx, \d+\)\)\) \{[\s\t ]+\}", "");
text = Regex.Replace(text, @"this\.state = \d+;[\r\n\t ]*this\.match", "this.match");
text = Regex.Replace(text, @"this\.state = \d+;[\r\n\t ]*this\._errHandler\.sync\(this\);", "this._errHandler.sync(this);");
text = Regex.Replace(text, @"this\.state = \d+;[\r\n\t ]*_la", "_la");
text = Regex.Replace(text, @"this\.state = \d+;[\r\n\t ]*localctx", "localctx");
text = Regex.Replace(text, @"this\.state = \d+;[\r\n\t ]*localctx", "localctx");
// expr 一般情况下返回 ExprContext 的数组 或 单个 ExprContext
text = Regex.Replace(text, @"expr = function\(i\) \{[\s\S]+?\};", "expr = function(i) {return this.getTypedRuleContexts(ExprContext);};");
text = Regex.Replace(text, @"arrayJson = function\(i\) \{[\s\S]+?\};", "arrayJson = function(i) {return this.getTypedRuleContexts(ArrayJsonContext);};");
text = Regex.Replace(text, @"if\(parent===undefined\) \{[\r\n\t ]*parent = null;[\r\n\t ]*\}", "");
text = Regex.Replace(text, @"if\(invokingState===undefined \|\| invokingState===null\) \{[\r\n\t ]*invokingState = -1;[\r\n\t ]*}", "");
text = Regex.Replace(text, @"let _prevctx = localctx;", "");
text = Regex.Replace(text, @"_prevctx = localctx;", "");
text = Regex.Replace(text, @"this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);[\r\n\t ]*this\.state = (\d+);[\r\n\t ]*this\.expr\((\d+)\);"
, "this.F(1,ドル2,ドル3,ドル4,ドル5,ドル6ドル);");
text = Regex.Replace(text, @"this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);[\r\n\t ]*this\.state = (\d+);[\r\n\t ]*this\.expr\((\d+)\);"
, "this.G(1,ドル2,ドル3,ドル4,ドル5ドル);");
text = Regex.Replace(text, @"this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);[\r\n\t ]*this\.state = (\d+);[\r\n\t ]*this\.expr\((\d+)\);"
, "this.I(1,ドル2,ドル3,ドル4ドル);");
text = Regex.Replace(text, @"this\.match\((\d+)\);[\r\n\t ]*this\.state = (\d+);[\r\n\t ]*this\.expr\((\d+)\);"
, "this.J(1,ドル2,ドル3ドル);");
text = Regex.Replace(text, @"this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);", "this.D(1,ドル2,ドル3,ドル4ドル);");
text = Regex.Replace(text, @"this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);", "this.C(1,ドル2,ドル3ドル);");
text = Regex.Replace(text, @"this\.match\((\d+)\);[\r\n\t ]*this\.match\((\d+)\);", "this.B(1,ドル2ドル);");
text = Regex.Replace(text, @"this\.match\((\d+)\);", "this.A(1ドル);");
text = Regex.Replace(text, @"this\.state = (\d+);[\r\n\t ]*this\.expr\((\d+)\);", "this.E(1,ドル2ドル);");
text = Regex.Replace(text, @"this\._errHandler\.sync\(this\);[\r\n\t ]*_la = this\._input\.LA\(1\);", "_la = this.Z();");
//text = Regex.Replace(text, @"this\._input\.LA\(1\);", "this.Y();");
text = Regex.Replace(text, @"this\._errHandler\.sync\(this\);", "this.X();");
text = text.Replace("this.pushNewRecursionContext(localctx, _startState, 1);", "this.W(localctx, _startState, 1);");
text = Regex.Replace(text, @"this\._errHandler\.reportMatch\(this\);[\r\n\t ]*this\.consume\(\);", "this.Q();");
text = text.Replace("this._input.LA(1);", "this.Y();");
text = text.Replace("this._input.LT(1);", "this.R();");
text = Regex.Replace(text, @"sempred\(localctx, ruleIndex, predIndex\) \{[\s\S]+?\};", @" sempred(localctx, ruleIndex, predIndex){return true;};
A(a){this.match(a);}
B(a,b){this.match(a);this.match(b);}
C(a,b,c){this.match(a);this.match(b);this.match(c);}
D(a,b,c,d){this.match(a);this.match(b);this.match(c);this.match(d);}
E(a,b){this.state=a;this.expr(b);}
F(a,b,c,d,e,f){this.match(a);this.match(b);this.match(c);this.match(d);this.state=e;this.expr(f);}
G(a,b,c,e,f){this.match(a);this.match(b);this.match(c);this.state=e;this.expr(f);}
I(a,b,e,f){this.match(a);this.match(b);this.state=e;this.expr(f);}
J(a,e,f){this.match(a);this.state=e;this.expr(f);}
R(){return this._input.LT(1);}
Q(){this._errHandler.reportMatch(this);this.consume();}
W(a,b,c){this.pushNewRecursionContext(a, b, c);}
X(){this._errHandler.sync(this);}
Y(){return this._input.LA(1);}
Z(){this._errHandler.sync(this);return this._input.LA(1);}
");
// 清理多余的空行和注释
text = Regex.Replace(text, @"[\t ]*//.*([\r\n])", "1ドル");
text = Regex.Replace(text, @"[\t ]*([\r\n])([\r\n])+", "1ドル");
text = Regex.Replace(text, @"([\r\n])([\r\n])+", "1ドル");
File.WriteAllText("mathParser.js", text);
}
}
}
Loading...
举报
举报成功
我们将于2个工作日内通过站内信反馈结果给你!
请认真填写举报原因,尽可能描述详细。
请选择举报类型
取消
发送
误判申诉

此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。

如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。

取消
提交

简介

ToolGood.Algorithm是一个功能强大、轻量级、兼容Excel公式的算法类库,旨在提高开发人员在不同业务场景中的生产力。
暂无标签
未知许可证
查看未知开源许可协议
取消

发行版

暂无发行版

贡献者

全部

近期动态

不能加载更多了
编辑仓库简介
简介内容
主页
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
C#
1
https://gitee.com/toolgood/ToolGood.Algorithm.git
git@gitee.com:toolgood/ToolGood.Algorithm.git
toolgood
ToolGood.Algorithm
ToolGood.Algorithm
master
点此查找更多帮助

搜索帮助

评论
仓库举报
回到顶部
登录提示
该操作需登录 Gitee 帐号,请先登录后再操作。
立即登录
没有帐号,去注册

AltStyle によって変換されたページ (->オリジナル) /