diff options
Diffstat (limited to 'src/cexpr.rs')
| -rw-r--r-- | src/cexpr.rs | 20 | 
1 files changed, 9 insertions, 11 deletions
| diff --git a/src/cexpr.rs b/src/cexpr.rs index bac316c..5014f74 100644 --- a/src/cexpr.rs +++ b/src/cexpr.rs @@ -26,7 +26,7 @@ impl CNumber {          match self {              CNumber::Integer(v) => Ok(SExpr::SInteger(*v)),              CNumber::Rational(a, b) => Ok(SExpr::SList(vec![ -                SExpr::SBuiltin("/".to_string()), +                SExpr::SIdentifier("/".to_string()),                  SExpr::SInteger(*a),                  SExpr::SInteger(*b as i64),              ])), @@ -56,13 +56,11 @@ impl CExpr {          // not all cases are handled; some atoms are covered trivialy          match sexpr {              SExpr::SNull => Err("null not handled".to_string()), -            SExpr::STrue | SExpr::SFalse => Err("booleans not handled".to_string()), +            SExpr::SBoolean(_) => Err("booleans not handled".to_string()),              SExpr::SInteger(v) => Ok(CExpr::Number(CNumber::Integer(*v))),              SExpr::SFloat(v) => Err("floats not handled".to_string()), -            SExpr::SBuiltin(v) => Ok(CExpr::Symbol(v.to_string())), -            SExpr::SSymbol(v) => Err(format!("symbols (quoted identifiers) not handled: {}", v)), -            SExpr::SIdentifier(v) => Ok(CExpr::Symbol(v.to_string())),              SExpr::SString(_) => Err("null not handled".to_string()), +            SExpr::SIdentifier(v) => Ok(CExpr::Symbol(v.to_string())),              SExpr::SList(_) => Err("null not handled".to_string()),              //SExpr::SList(l) => CExpr::from_sexpr_list(l),          } @@ -74,16 +72,16 @@ impl CExpr {              unimplemented!()          }          match list[0] { -            SExpr::SBuiltin("+") => { +            SExpr::SIdentifier("+") => {                  Ok(CExpr::Sum(                      // XXX                      None,                      list[1..].iter().map(|v| CExpr::from_sexpr(v)).collect::<Result<Vec<SExpr>, String>>()?,                  ))              }, -            SExpr::SBuiltin("*") => { +            SExpr::SIdentifier("*") => {              }, -            SExpr::SBuiltin("^") => { +            SExpr::SIdentifier("^") => {              },              _ => {                  unimplemented!() @@ -105,17 +103,17 @@ impl CExpr {              CExpr::Symbol(s) => Ok(SExpr::SIdentifier(s.to_string())),              CExpr::Number(n) => n.to_sexpr(),              CExpr::Sum(n, l) => Ok(SExpr::SList(vec![ -                SExpr::SBuiltin("+".to_string()), +                SExpr::SIdentifier("+".to_string()),                  SExpr::SList(l.iter().map(|v| v.to_sexpr()).collect::<Result<Vec<SExpr>, String>>()?),                  // XXX: n              ])),              CExpr::Product(n, l) => Ok(SExpr::SList(vec![ -                SExpr::SBuiltin("*".to_string()), +                SExpr::SIdentifier("*".to_string()),                  SExpr::SList(l.iter().map(|v| v.to_sexpr()).collect::<Result<Vec<SExpr>, String>>()?),                  // XXX: n              ])),              CExpr::Power(a, b) => Ok(SExpr::SList(vec![ -                SExpr::SBuiltin("^".to_string()), +                SExpr::SIdentifier("^".to_string()),                  a.to_sexpr()?,                  b.to_sexpr()?,              ])), | 
