mirror of
https://github.com/rm-dr/daisy
synced 2025-07-14 00:14:48 -07:00
Added prompt replacement
This commit is contained in:
66
src/parser/find_subs.rs
Normal file
66
src/parser/find_subs.rs
Normal file
@ -0,0 +1,66 @@
|
||||
use std::collections::VecDeque;
|
||||
|
||||
use crate::parser::Operator;
|
||||
use crate::parser::Token;
|
||||
use crate::parser::LineLocation;
|
||||
|
||||
|
||||
pub fn p_find_subs(
|
||||
mut g: VecDeque<Token>,
|
||||
) -> Vec<(LineLocation, String)> {
|
||||
|
||||
let mut r: Vec<(LineLocation, String)> = Vec::with_capacity(8);
|
||||
|
||||
while g.len() > 0 {
|
||||
// Read in reverse. Very important!
|
||||
let t = g.pop_back().unwrap();
|
||||
|
||||
match &t {
|
||||
|
||||
Token::PreOperator(l, o) => {
|
||||
match o {
|
||||
Operator::Multiply => { r.push((l.clone(), String::from("×"))); },
|
||||
Operator::Divide => { r.push((l.clone(), String::from("÷"))); },
|
||||
_ => {}
|
||||
}
|
||||
},
|
||||
|
||||
Token::PreWord(l, s) => {
|
||||
match &s[..] {
|
||||
|
||||
// Greek letters
|
||||
"alpha" => { r.push((l.clone(), String::from("α"))); },
|
||||
"beta" => { r.push((l.clone(), String::from("β"))); },
|
||||
"gamma" => { r.push((l.clone(), String::from("γ"))); },
|
||||
"delta" => { r.push((l.clone(), String::from("δ"))); },
|
||||
"epsilon" => { r.push((l.clone(), String::from("ε"))); },
|
||||
"zeta" => { r.push((l.clone(), String::from("ζ"))); },
|
||||
"eta" => { r.push((l.clone(), String::from("η"))); },
|
||||
"theta" => { r.push((l.clone(), String::from("θ"))); },
|
||||
"iota" => { r.push((l.clone(), String::from("ι"))); },
|
||||
//"kappa" => { r.push((l.clone(), String::from("κ"))); },
|
||||
"lambda" => { r.push((l.clone(), String::from("λ"))); },
|
||||
"mu" => { r.push((l.clone(), String::from("μ"))); },
|
||||
"nu" => { r.push((l.clone(), String::from("ν"))); },
|
||||
"xi" => { r.push((l.clone(), String::from("ξ"))); },
|
||||
//"omicron" => { r.push((l.clone(), String::from("ο"))); },
|
||||
"pi" => { r.push((l.clone(), String::from("π"))); },
|
||||
"rho" => { r.push((l.clone(), String::from("ρ"))); },
|
||||
"sigma" => { r.push((l.clone(), String::from("σ"))); },
|
||||
"tau" => { r.push((l.clone(), String::from("τ"))); },
|
||||
//"upsilon" => { r.push((l.clone(), String::from("υ"))); },
|
||||
"phi" => { r.push((l.clone(), String::from("φ"))); },
|
||||
"chi" => { r.push((l.clone(), String::from("χ"))); },
|
||||
"psi" => { r.push((l.clone(), String::from("ψ"))); },
|
||||
"omega" => { r.push((l.clone(), String::from("ω"))); }
|
||||
|
||||
_ => {}
|
||||
}
|
||||
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
||||
|
||||
return r;
|
||||
}
|
@ -82,10 +82,9 @@ pub fn p_tokenize(input: &String) -> VecDeque<Token> {
|
||||
|
||||
// Operator
|
||||
// Always one character
|
||||
'*'|'×'|
|
||||
'/'|'÷'|
|
||||
'+'|'%'|
|
||||
'^'|'!' => {
|
||||
'*'|'/'|'+'|
|
||||
'^'|'!'|'%'
|
||||
=> {
|
||||
if t.is_some() { g.push_back(update_line_location(t.unwrap(), i)); }
|
||||
t = Some(Token::PreOperator(
|
||||
LineLocation{pos: i, len: 0},
|
||||
|
Reference in New Issue
Block a user