{"id":18768678,"url":"https://github.com/slimenull/ncalculator","last_synced_at":"2026-03-09T02:32:03.460Z","repository":{"id":104252792,"uuid":"308201572","full_name":"SlimeNull/NCalculator","owner":"SlimeNull","description":"基于递归下降语法分析的简单计算器实现.","archived":false,"fork":false,"pushed_at":"2023-06-08T13:15:48.000Z","size":239,"stargazers_count":5,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-10-09T10:35:34.716Z","etag":null,"topics":["calculator","compiler-principles","recursive-descent-parser"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SlimeNull.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2020-10-29T02:57:47.000Z","updated_at":"2024-07-08T08:02:27.000Z","dependencies_parsed_at":null,"dependency_job_id":"f3bdd2d6-6c19-4762-b8ad-7ed5a7222553","html_url":"https://github.com/SlimeNull/NCalculator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SlimeNull/NCalculator","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlimeNull%2FNCalculator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlimeNull%2FNCalculator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlimeNull%2FNCalculator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlimeNull%2FNCalculator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SlimeNull","download_url":"https://codeload.github.com/SlimeNull/NCalculator/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SlimeNull%2FNCalculator/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":30280852,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-09T02:23:26.802Z","status":"ssl_error","status_checked_at":"2026-03-09T02:22:46.175Z","response_time":61,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["calculator","compiler-principles","recursive-descent-parser"],"created_at":"2024-11-07T19:13:34.906Z","updated_at":"2026-03-09T02:32:03.453Z","avatar_url":"https://github.com/SlimeNull.png","language":"C#","funding_links":[],"categories":[],"sub_categories":[],"readme":"# NCalculator\n这是一个简单的, 功能较为完善的计算器, 使用递归下降分析表达式语法.\n\n支持:\n- [x] 四则运算 + - * /\n- [x] 拓展运算 幂(**或^) 求余(%)\n- [x] 嵌套计算 可使用任意层级括号进行嵌套\n- [x] 关系运算 大于(\u003e) 小于(\u003c) 大于等于(\u003e=) 小于等于(\u003c=) 等于(=或==) 不等于(!=或\u003c\u003e或\u003e\u003c)\n- [x] 常量变量 可自定义常量与变量\n- [x] 函数运算 可调用 Math 中所有数学运算函数, 同时也支持自定义\n- [ ] 逻辑运算 支持逻辑 与(\u0026) 或(|) 非(!)\n- [x] 表达式编译\n\n## 使用\n\n解析:\n```csharp\nExpr expr = NCalc.Parse(\"1+1\");\n```\n\n解析并计算:\n```csharp\nExpr expr = NCalc.Parse(\"1+1\");\ndouble value = expr.Eval();\n```\n\n计算:\n```csharp\nNCalc.Eval(\"1+1\");   // returns 2\nNCalc.Eval(\"pi\");    // returns 3.141592653589793\nNCalc.Eval(\"2 \u003e 3\"); // returns 0 (false)\nNCalc.Eval(\"2 \u003e 1\"); // returns 1 (true)\nNCalc.Eval(\"1 \u003e 3 ? 114 : 514\");   // returns 514\nNCalc.Eval(\"pow(2, 10)\");          // returns 1024\nNCalc.Eval(\"sqrt(4)\");             // returns 2\n```\n\n带参数计算:\n```csharp\nNCalcContext context = new NCalcContext();\ncontext.Varialble[\"my_var\"] = () =\u003e DateTime.Now.Year;\n\ndouble value = NCalc.Eval(context, \"my_var + 1\");\n```\n\n编译:\n```csharp\nFunc\u003cdouble\u003e func = NCalc.Compile(\"1+1\");\n```\n\n带上下文编译:\n```csharp\nNCalcContext context = new NCalcContext();\ncontext.Varialble[\"my_var\"] = () =\u003e DateTime.Now.Year;\n\nFunc\u003cdouble\u003e func = NCalc.Compile(context, \"my_var + 1\");\n```\n\n自定义常量:\n```csharp\nNCalcContext.Default.Constants[\"x\"] = 10;\nNCalcContext.Default.Eval(\"x + 1\"); // returns 11\n```\n\n自定义变量:\n```csharp\ndouble count = 0;\nNCalcContext.Default.Variables[\"count\"] = () =\u003e count++;\nNCalcContext.Default.Eval(\"count\"); // returns 0\nNCalcContext.Default.Eval(\"count\"); // returns 1\nNCalcContext.Default.Eval(\"count\"); // returns 2\n```\n\n自定义函数:\n```csharp\nNCalcContext.Default.Functions[\"myfunc\"] = (values) =\u003e values.Sum();\nNCalcContext.Default.Eval(\"myfunc(1, 2, 3)\");    // returns 6\n```\n\n## 类型\n\n- Expr 及其子类: 可运算的表达式\n- Lexer 词法分析器\n- Parser 语法分析器\n- Token 词法单元\n- NCalc 计算器\n\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslimenull%2Fncalculator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fslimenull%2Fncalculator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fslimenull%2Fncalculator/lists"}