mirror of
https://github.com/HigherOrderCO/Kind1.git
synced 2024-09-11 08:45:32 +03:00
fix: fixed token print and string desugar
This commit is contained in:
parent
6dd1bffae2
commit
ef4c8f34cd
@ -267,8 +267,8 @@ fn codegen_all_expr(
|
||||
eval_ctr(quote, TermTag::Hole),
|
||||
vec![span_to_num(expr.span), mk_u60(*num)],
|
||||
),
|
||||
Str(str) => codegen_str(str),
|
||||
Hlp(_) => mk_lifted_ctr(eval_ctr(quote, TermTag::Hlp), vec![span_to_num(expr.span)]),
|
||||
Str(_) => todo!("Strings in codegen"),
|
||||
Err => panic!("Internal Error: Was not expecting an ERR node inside the HVM checker"),
|
||||
}
|
||||
}
|
||||
|
@ -144,7 +144,7 @@ impl fmt::Display for Token {
|
||||
Token::Num60(n) => write!(f, "{}", n),
|
||||
Token::Num120(n) => write!(f, "{}u120", n),
|
||||
Token::Float(start, end) => write!(f, "{}.{}", start, end),
|
||||
Token::Hole => write!(f, "-"),
|
||||
Token::Hole => write!(f, "_"),
|
||||
Token::Plus => write!(f, "+"),
|
||||
Token::Minus => write!(f, "-"),
|
||||
Token::Star => write!(f, "*"),
|
||||
|
@ -8,24 +8,6 @@ use crate::errors::{PassError, Sugar};
|
||||
use super::DesugarState;
|
||||
|
||||
impl<'a> DesugarState<'a> {
|
||||
pub(crate) fn desugar_str(&self, range: Range, input: &str) -> Box<desugared::Expr> {
|
||||
let cons = QualifiedIdent::new_static("String.cons", None, range);
|
||||
input.chars().rfold(
|
||||
desugared::Expr::ctr(
|
||||
range,
|
||||
QualifiedIdent::new_static("String.nil", None, range),
|
||||
vec![],
|
||||
),
|
||||
|right, chr| {
|
||||
desugared::Expr::ctr(
|
||||
range,
|
||||
cons.clone(),
|
||||
vec![desugared::Expr::num60(range, chr as u64), right],
|
||||
)
|
||||
},
|
||||
)
|
||||
}
|
||||
|
||||
pub(crate) fn desugar_literal(
|
||||
&mut self,
|
||||
range: Range,
|
||||
@ -38,7 +20,7 @@ impl<'a> DesugarState<'a> {
|
||||
Literal::NumType(kind_tree::NumType::U120) => desugared::Expr::u120(range),
|
||||
Literal::Number(kind_tree::Number::U60(num)) => desugared::Expr::num60(range, *num),
|
||||
Literal::Number(kind_tree::Number::U120(num)) => desugared::Expr::num120(range, *num),
|
||||
Literal::String(string) => self.desugar_str(range, string),
|
||||
Literal::String(string) => desugared::Expr::str(range, string.clone()),
|
||||
Literal::Char(cht) => desugared::Expr::num60(range, *cht as u64),
|
||||
}
|
||||
}
|
||||
|
@ -70,7 +70,7 @@ pub fn compile_term(expr: &desugared::Expr) -> Box<Term> {
|
||||
|
||||
let cons = |numb, next| {
|
||||
Box::new(Term::Ctr {
|
||||
name: String::from("U120.new"),
|
||||
name: String::from("String.cons"),
|
||||
args: vec![Box::new(Term::U6O { numb }), next],
|
||||
})
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user