Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
S
sparrowzz
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
sgool
sparrowzz
Commits
d797d415
Commit
d797d415
authored
Mar 03, 2025
by
dongshufeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
chore: Bump
parent
c67d0a0d
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
5 个修改的文件
包含
22 行增加
和
24 行删除
+22
-24
Cargo.lock
+0
-0
eig-expr/Cargo.toml
+1
-1
eig-expr/src/expr_tensor.rs
+2
-2
eig-expr/src/lib.rs
+19
-21
eig-expr/src/tokenizer.rs
+0
-0
没有找到文件。
Cargo.lock
查看文件 @
d797d415
差异被折叠。
点击展开。
eig-expr/Cargo.toml
查看文件 @
d797d415
...
...
@@ -7,7 +7,7 @@ rust-version.workspace = true
[dependencies]
fnv
=
"1.0"
nom
=
"
7.1
"
nom
=
"
8.0
"
serde
=
{
version
=
"1.0"
,
features
=
["derive"]
}
num-traits
=
"0.2"
num-complex
=
"0.4"
...
...
eig-expr/src/expr_tensor.rs
查看文件 @
d797d415
...
...
@@ -3,7 +3,7 @@ use fnv::FnvHashMap;
use
ndarray
::{
Array
,
Ix1
,
Ix2
,
IxDyn
};
use
num_complex
::
Complex64
;
use
crate
::{
Ctx
Provider
,
Expr
,
Operation
,
Token
::
*
};
use
crate
::{
Ctx
Maps
,
Expr
,
Operation
,
Token
::
*
};
use
crate
::{
ContextProvider
,
Error
,
factorial
,
FuncEvalError
,
MyCx
,
MyF
};
use
crate
::
expr
::
Context
;
use
crate
::
expr_complex
::
ContextCx
;
...
...
@@ -13,7 +13,7 @@ use crate::tsfn_basic::*;
thread_local!
(
static
DEFAULT_CONTEXT
:
Context
<
'static
>
=
Context
::
new
());
thread_local!
(
pub
static
DEFAULT_CONTEXT_TENSOR
:
ContextTensor
<
'static
>
=
ContextTensor
::
new
());
impl
ContextProvider
for
Ctx
Provider
{
impl
ContextProvider
for
Ctx
Maps
{
fn
get_var
(
&
self
,
name
:
&
str
)
->
Option
<
f64
>
{
self
.var_values
.get
(
name
)
.cloned
()
}
...
...
eig-expr/src/lib.rs
查看文件 @
d797d415
...
...
@@ -33,7 +33,7 @@ pub enum MyCx {
pub
enum
ParseError
{
/// A token that is not allowed at the given location (contains the location of the offending
/// character in the source string).
UnexpectedToken
(
usize
),
UnexpectedToken
(
usize
,
usize
),
/// Missing right parentheses at the end of the source string (contains the number of missing
/// parens).
MissingRParen
(
i32
),
...
...
@@ -44,13 +44,9 @@ pub enum ParseError {
impl
Display
for
ParseError
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
fmt
::
Result
{
match
*
self
{
ParseError
::
UnexpectedToken
(
i
)
=>
write!
(
f
,
"Unexpected token at byte {}."
,
i
),
ParseError
::
MissingRParen
(
i
)
=>
write!
(
f
,
"Missing {} right parenthes{}."
,
i
,
if
i
==
1
{
"is"
}
else
{
"es"
}
),
ParseError
::
UnexpectedToken
(
row
,
col
)
=>
write!
(
f
,
"Unexpected char at line: {row} column: {col}"
),
ParseError
::
MissingRParen
(
i
)
=>
write!
(
f
,
"Missing {i} right parenthes{}."
,
if
i
==
1
{
"is"
}
else
{
"es"
}),
ParseError
::
MissingArgument
=>
write!
(
f
,
"Missing argument at the end of expression."
),
}
}
...
...
@@ -59,7 +55,7 @@ impl Display for ParseError {
impl
std
::
error
::
Error
for
ParseError
{
fn
description
(
&
self
)
->
&
str
{
match
*
self
{
ParseError
::
UnexpectedToken
(
_
)
=>
"unexpected token"
,
ParseError
::
UnexpectedToken
(
_
,
_
)
=>
"unexpected token"
,
ParseError
::
MissingRParen
(
_
)
=>
"missing right parenthesis"
,
ParseError
::
MissingArgument
=>
"missing argument"
,
}
...
...
@@ -79,7 +75,7 @@ impl Display for FuncEvalError {
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
fmt
::
Result
{
match
*
self
{
FuncEvalError
::
UnknownFunction
=>
write!
(
f
,
"Unknown function"
),
FuncEvalError
::
NumberArgs
(
i
)
=>
write!
(
f
,
"Expected {
} arguments"
,
i
),
FuncEvalError
::
NumberArgs
(
i
)
=>
write!
(
f
,
"Expected {
i} arguments"
),
FuncEvalError
::
TooFewArguments
=>
write!
(
f
,
"Too few arguments"
),
FuncEvalError
::
TooManyArguments
=>
write!
(
f
,
"Too many arguments"
),
}
...
...
@@ -134,19 +130,19 @@ impl Display for RPNError {
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
fmt
::
Result
{
match
*
self
{
RPNError
::
MismatchedLParen
(
i
)
=>
{
write!
(
f
,
"Mismatched left parenthesis at token {
}."
,
i
)
write!
(
f
,
"Mismatched left parenthesis at token {
i}."
)
}
RPNError
::
MismatchedRParen
(
i
)
=>
{
write!
(
f
,
"Mismatched right parenthesis at token {
}."
,
i
)
write!
(
f
,
"Mismatched right parenthesis at token {
i}."
)
}
RPNError
::
MismatchedLBracket
(
i
)
=>
{
write!
(
f
,
"Mismatched left blackets at token {
}."
,
i
)
write!
(
f
,
"Mismatched left blackets at token {
i}."
)
}
RPNError
::
MismatchedRBracket
(
i
)
=>
{
write!
(
f
,
"Mismatched right blackets at token {
}."
,
i
)
write!
(
f
,
"Mismatched right blackets at token {
i}."
)
}
RPNError
::
UnexpectedComma
(
i
)
=>
write!
(
f
,
"Unexpected comma at token {
}"
,
i
),
RPNError
::
NotEnoughOperands
(
i
)
=>
write!
(
f
,
"Missing operands at token {
}"
,
i
),
RPNError
::
UnexpectedComma
(
i
)
=>
write!
(
f
,
"Unexpected comma at token {
i}"
),
RPNError
::
NotEnoughOperands
(
i
)
=>
write!
(
f
,
"Missing operands at token {
i}"
),
RPNError
::
TooManyOperands
=>
{
write!
(
f
,
"Too many operands left at the end of expression."
)
}
...
...
@@ -306,7 +302,7 @@ pub struct Expr {
}
impl
Display
for
Expr
{
fn
fmt
(
&
self
,
f
:
&
mut
fmt
::
Formatter
)
->
fmt
::
Result
{
fn
fmt
(
&
self
,
f
:
&
mut
Formatter
)
->
fmt
::
Result
{
write!
(
f
,
"{:?}"
,
self
)
}
}
...
...
@@ -344,22 +340,22 @@ pub trait ContextProvider {
}
}
pub
struct
Ctx
Provider
{
pub
struct
Ctx
Maps
{
var_values
:
HashMap
<
String
,
f64
>
,
var_values_cx
:
HashMap
<
String
,
Complex64
>
,
var_values_tensor
:
HashMap
<
String
,
Array
<
f64
,
IxDyn
>>
,
var_values_tensor_cx
:
HashMap
<
String
,
Array
<
Complex64
,
IxDyn
>>
,
}
impl
Default
for
Ctx
Provider
{
impl
Default
for
Ctx
Maps
{
fn
default
()
->
Self
{
Self
::
new
()
}
}
impl
Ctx
Provider
{
impl
Ctx
Maps
{
pub
fn
new
()
->
Self
{
Ctx
Provider
{
Ctx
Maps
{
var_values
:
Default
::
default
(),
var_values_cx
:
Default
::
default
(),
var_values_tensor
:
Default
::
default
(),
...
...
@@ -427,3 +423,4 @@ pub fn parse_exprs(s: &str) -> Option<Vec<(String, Expr)>> {
}
Some
(
exprs
)
}
// above should as same as in sparrowzz
\ No newline at end of file
eig-expr/src/tokenizer.rs
查看文件 @
d797d415
差异被折叠。
点击展开。
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论