From 67470aea034fd46f4bbcfe815c51ad3451043188 Mon Sep 17 00:00:00 2001 From: Ben Bridle Date: Thu, 27 Feb 2025 14:53:21 +1300 Subject: Finish first working version of Torque This is a huge and messy commit, worked on piecemeal while traveling and while the language was still being designed. --- src/parsers/constant_expression.rs | 52 -------------------------------------- 1 file changed, 52 deletions(-) delete mode 100644 src/parsers/constant_expression.rs (limited to 'src/parsers/constant_expression.rs') diff --git a/src/parsers/constant_expression.rs b/src/parsers/constant_expression.rs deleted file mode 100644 index 78dc697..0000000 --- a/src/parsers/constant_expression.rs +++ /dev/null @@ -1,52 +0,0 @@ -use crate::*; - - -pub fn parse_constant_expression(string: &str, parent: &Tokeniser) -> ConstantExpression { - use ConstantExpressionTokenVariant as TokenVar; - use ConstantExpressionParseError as ParseError; - - let mut tokens = Vec::new(); - let mut t = Tokeniser::new_child(string, parent); - t.position.to_next_char(); // skip opening delimiter - - loop { - t.drop_whitespace(); - t.mark_start_position(); - let token = t.eat_token(); - if token.is_empty() { - break; - } - - let variant = match token.as_str() { - "=" => TokenVar::Operator(Operator::Equal), - "!" => TokenVar::Operator(Operator::NotEqual), - "<" => TokenVar::Operator(Operator::LessThan), - ">" => TokenVar::Operator(Operator::GreaterThan), - "+" => TokenVar::Operator(Operator::Add), - "-" => TokenVar::Operator(Operator::Subtract), - "<<" => TokenVar::Operator(Operator::LeftShift), - ">>" => TokenVar::Operator(Operator::RightShift), - "&" => TokenVar::Operator(Operator::And), - "|" => TokenVar::Operator(Operator::Or), - "^" => TokenVar::Operator(Operator::Xor), - "~" => TokenVar::Operator(Operator::Not), - _ => if let Some(stripped) = token.strip_prefix("0x") { - match usize::from_str_radix(stripped, 16) { - Ok(value) => TokenVar::IntegerLiteral(value), - Err(_) => TokenVar::Error( - ParseError::InvalidHexadecimalLiteral(stripped.to_string())), - } - } else { - match usize::from_str_radix(&token, 10) { - Ok(value) => TokenVar::IntegerLiteral(value), - Err(_) => TokenVar::SymbolReference(token.to_string()), - } - } - }; - - let source = t.mark_end_position(); - tokens.push(ConstantExpressionToken { source, variant }); - } - - return ConstantExpression { tokens }; -} -- cgit v1.2.3-70-g09d2