Skip to content

QingGo/rust_expression

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

5 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

用 Rust 实现整数的带括号四则运算: 四则运算的 EBNF 定义如下:

Expression ::= (Expression [+-])? PriorityExpression
PriorityExpression ::= (PriorityExpression [*/])? Factor
Factor ::= Number | "(" Expression ")"

消除左递归,转化为 LL(1) 文法:

Expression ::= PriorityExpression ExpressionTail
ExpressionTail ::= ([+-] PriorityExpression ExpressionTail)?
PriorityExpression ::= PriorityExpression PriorityExpressionTail
PriorityExpressionTail ::= ([*/] Factor PriorityExpressionTail)?
Factor ::= Number | "(" Expression ")"

Railroad Diagram 如下:

Expression:

PriorityExpression:

Factor:

相关 Railroad Diagram 在这个网站生成 https://www.bottlecaps.de/rr/ui

About

用 Rust 实现整数的带括号四则运算

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages