From 52aa014bfeb886edade65479ce57c07c3e8ee6b5 Mon Sep 17 00:00:00 2001 From: John Lapeyre Date: Thu, 29 Feb 2024 20:23:24 -0500 Subject: [PATCH] Remove objects left over from lexing timing numbers (#172) Timing numbers and also a "simple float" was lexed. There were a few variants and associated types that would be completely useless now. --- codegen_scripts/cpnodes.sh | 3 +- crates/oq3_parser/src/grammar/expressions.rs | 2 +- .../src/grammar/expressions/atom.rs | 4 - .../src/syntax_kind/syntax_kind_enum.rs | 13 +--- .../oq3_semantics/src/syntax_to_semantics.rs | 5 +- crates/oq3_syntax/src/ast/expr_ext.rs | 12 --- crates/oq3_syntax/src/ast/generated/tokens.rs | 77 ------------------- crates/oq3_syntax/src/ast/token_ext.rs | 39 ---------- crates/oq3_syntax/src/tests/ast_src.rs | 3 - crates/oq3_syntax/src/tests/sourcegen_ast.rs | 9 +-- crates/oq3_syntax/src/validation.rs | 3 - 11 files changed, 9 insertions(+), 161 deletions(-) diff --git a/codegen_scripts/cpnodes.sh b/codegen_scripts/cpnodes.sh index 0176714..001225b 100755 --- a/codegen_scripts/cpnodes.sh +++ b/codegen_scripts/cpnodes.sh @@ -7,4 +7,5 @@ # Copy the generated code from the temporary files to which it is written # to its final location where it will be compiled into the library. -cd .. && cp -a --backup=t crates/oq3_syntax/src/ast/generated/_new_nodes.rs crates/oq3_syntax/src/ast/generated/nodes.rs +cd .. && cp -a --backup=t crates/oq3_syntax/src/ast/generated/_new_nodes.rs crates/oq3_syntax/src/ast/generated/nodes.rs && \ + cp -a --backup=t crates/oq3_syntax/src/ast/generated/_new_tokens.rs crates/oq3_syntax/src/ast/generated/tokens.rs diff --git a/crates/oq3_parser/src/grammar/expressions.rs b/crates/oq3_parser/src/grammar/expressions.rs index 1199725..8406bc2 100644 --- a/crates/oq3_parser/src/grammar/expressions.rs +++ b/crates/oq3_parser/src/grammar/expressions.rs @@ -411,7 +411,7 @@ pub(crate) fn designator(p: &mut Parser<'_>) -> bool { // see this addressed in the spec. if matches!( p.current(), - FLOAT_NUMBER | SIMPLE_FLOAT_NUMBER | BYTE | CHAR | STRING | BIT_STRING + FLOAT_NUMBER | BYTE | CHAR | STRING | BIT_STRING ) && matches!(p.nth(1), T![']']) { p.error("Literal type designator must be an integer.") diff --git a/crates/oq3_parser/src/grammar/expressions/atom.rs b/crates/oq3_parser/src/grammar/expressions/atom.rs index 950ce55..685c023 100644 --- a/crates/oq3_parser/src/grammar/expressions/atom.rs +++ b/crates/oq3_parser/src/grammar/expressions/atom.rs @@ -11,11 +11,7 @@ pub(crate) const LITERAL_FIRST: TokenSet = TokenSet::new(&[ CHAR, FLOAT_NUMBER, INT_NUMBER, - SIMPLE_FLOAT_NUMBER, STRING, - // FIXME, remove the following two. They are no longer used. - TIMING_FLOAT_NUMBER, - TIMING_INT_NUMBER, T![true], T![false], ]); diff --git a/crates/oq3_parser/src/syntax_kind/syntax_kind_enum.rs b/crates/oq3_parser/src/syntax_kind/syntax_kind_enum.rs index ffb2448..b3da507 100644 --- a/crates/oq3_parser/src/syntax_kind/syntax_kind_enum.rs +++ b/crates/oq3_parser/src/syntax_kind/syntax_kind_enum.rs @@ -111,13 +111,10 @@ pub enum SyntaxKind { #[doc = r" literals"] INT_NUMBER, FLOAT_NUMBER, - SIMPLE_FLOAT_NUMBER, CHAR, BYTE, STRING, BIT_STRING, - TIMING_FLOAT_NUMBER, - TIMING_INT_NUMBER, #[doc = r" scalar_types"] FLOAT_TY, INT_TY, @@ -331,15 +328,7 @@ impl SyntaxKind { pub fn is_literal(self) -> bool { matches!( self, - INT_NUMBER - | FLOAT_NUMBER - | SIMPLE_FLOAT_NUMBER - | CHAR - | BYTE - | STRING - | BIT_STRING - | TIMING_FLOAT_NUMBER - | TIMING_INT_NUMBER + INT_NUMBER | FLOAT_NUMBER | CHAR | BYTE | STRING | BIT_STRING ) } pub fn is_scalar_type(self) -> bool { diff --git a/crates/oq3_semantics/src/syntax_to_semantics.rs b/crates/oq3_semantics/src/syntax_to_semantics.rs index c77ed96..69820a3 100644 --- a/crates/oq3_semantics/src/syntax_to_semantics.rs +++ b/crates/oq3_semantics/src/syntax_to_semantics.rs @@ -850,10 +850,7 @@ fn from_literal(literal: &synast::Literal) -> Option { synast::LiteralKind::Byte(_) | synast::LiteralKind::Char(_) - | synast::LiteralKind::SimpleFloatNumber(_) - | synast::LiteralKind::String(_) - | synast::LiteralKind::TimingFloatNumber(_) - | synast::LiteralKind::TimingIntNumber(_) => todo!(), + | synast::LiteralKind::String(_) => todo!(), }; Some(literal_texpr) } diff --git a/crates/oq3_syntax/src/ast/expr_ext.rs b/crates/oq3_syntax/src/ast/expr_ext.rs index 1440926..131a327 100644 --- a/crates/oq3_syntax/src/ast/expr_ext.rs +++ b/crates/oq3_syntax/src/ast/expr_ext.rs @@ -293,10 +293,7 @@ pub enum LiteralKind { Char(ast::Char), FloatNumber(ast::FloatNumber), IntNumber(ast::IntNumber), - SimpleFloatNumber(ast::SimpleFloatNumber), String(ast::String), - TimingFloatNumber(ast::TimingFloatNumber), - TimingIntNumber(ast::TimingIntNumber), } // Literal strings in OQ3 occur only in a few contexts. @@ -355,15 +352,6 @@ impl ast::Literal { if let Some(t) = ast::FloatNumber::cast(token.clone()) { return LiteralKind::FloatNumber(t); } - if let Some(t) = ast::SimpleFloatNumber::cast(token.clone()) { - return LiteralKind::SimpleFloatNumber(t); - } - if let Some(t) = ast::TimingFloatNumber::cast(token.clone()) { - return LiteralKind::TimingFloatNumber(t); - } - if let Some(t) = ast::TimingIntNumber::cast(token.clone()) { - return LiteralKind::TimingIntNumber(t); - } if let Some(t) = ast::String::cast(token.clone()) { return LiteralKind::String(t); } diff --git a/crates/oq3_syntax/src/ast/generated/tokens.rs b/crates/oq3_syntax/src/ast/generated/tokens.rs index d117999..5366d3f 100644 --- a/crates/oq3_syntax/src/ast/generated/tokens.rs +++ b/crates/oq3_syntax/src/ast/generated/tokens.rs @@ -1,6 +1,3 @@ -// Copyright contributors to the openqasm-parser project -// SPDX-License-Identifier: Apache-2.0 - //! Generated by `sourcegen_ast`, do not edit by hand. use crate::{ @@ -200,80 +197,6 @@ impl AstToken for Ident { &self.syntax } } -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct TimingIntNumber { - pub(crate) syntax: SyntaxToken, -} -impl std::fmt::Display for TimingIntNumber { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - std::fmt::Display::fmt(&self.syntax, f) - } -} -impl AstToken for TimingIntNumber { - fn can_cast(kind: SyntaxKind) -> bool { - kind == TIMING_INT_NUMBER - } - fn cast(syntax: SyntaxToken) -> Option { - if Self::can_cast(syntax.kind()) { - Some(Self { syntax }) - } else { - None - } - } - fn syntax(&self) -> &SyntaxToken { - &self.syntax - } -} -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct TimingFloatNumber { - pub(crate) syntax: SyntaxToken, -} -impl std::fmt::Display for TimingFloatNumber { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - std::fmt::Display::fmt(&self.syntax, f) - } -} -impl AstToken for TimingFloatNumber { - fn can_cast(kind: SyntaxKind) -> bool { - kind == TIMING_FLOAT_NUMBER - } - fn cast(syntax: SyntaxToken) -> Option { - if Self::can_cast(syntax.kind()) { - Some(Self { syntax }) - } else { - None - } - } - fn syntax(&self) -> &SyntaxToken { - &self.syntax - } -} - -#[derive(Debug, Clone, PartialEq, Eq, Hash)] -pub struct SimpleFloatNumber { - pub(crate) syntax: SyntaxToken, -} -impl std::fmt::Display for SimpleFloatNumber { - fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { - std::fmt::Display::fmt(&self.syntax, f) - } -} -impl AstToken for SimpleFloatNumber { - fn can_cast(kind: SyntaxKind) -> bool { - kind == SIMPLE_FLOAT_NUMBER - } - fn cast(syntax: SyntaxToken) -> Option { - if Self::can_cast(syntax.kind()) { - Some(Self { syntax }) - } else { - None - } - } - fn syntax(&self) -> &SyntaxToken { - &self.syntax - } -} - #[derive(Debug, Clone, PartialEq, Eq, Hash)] pub struct BitString { pub(crate) syntax: SyntaxToken, diff --git a/crates/oq3_syntax/src/ast/token_ext.rs b/crates/oq3_syntax/src/ast/token_ext.rs index 4ab9bc9..3f62d1f 100644 --- a/crates/oq3_syntax/src/ast/token_ext.rs +++ b/crates/oq3_syntax/src/ast/token_ext.rs @@ -371,45 +371,6 @@ impl ast::FloatNumber { } } -// impl ast::TimingFloatNumber { -// pub fn split_into_parts(&self) -> (&str, &str) { -// let text = self.text(); -// let mut float_text = self.text(); -// let mut suffix = ""; -// let mut indices = text.char_indices(); -// if let Some((mut suffix_start, c)) = indices.by_ref().find(|(_, c)| c.is_ascii_alphabetic()) -// { -// if c == 'e' || c == 'E' { -// if let Some(suffix_start_tuple) = indices.find(|(_, c)| c.is_ascii_alphabetic()) { -// suffix_start = suffix_start_tuple.0; - -// float_text = &text[..suffix_start]; -// suffix = &text[suffix_start..]; -// } -// } else { -// float_text = &text[..suffix_start]; -// suffix = &text[suffix_start..]; -// } -// } - -// (float_text, suffix) -// } - -// pub fn suffix(&self) -> Option<&str> { -// let (_, suffix) = self.split_into_parts(); -// if suffix.is_empty() { -// None -// } else { -// Some(suffix) -// } -// } - -// pub fn value(&self) -> Option { -// let (text, _) = self.split_into_parts(); -// text.replace('_', "").parse::().ok() -// } -// } - #[derive(Debug, PartialEq, Eq, Copy, Clone)] pub enum Radix { Binary = 2, diff --git a/crates/oq3_syntax/src/tests/ast_src.rs b/crates/oq3_syntax/src/tests/ast_src.rs index f97852d..a0cff04 100644 --- a/crates/oq3_syntax/src/tests/ast_src.rs +++ b/crates/oq3_syntax/src/tests/ast_src.rs @@ -127,13 +127,10 @@ pub(crate) const KINDS_SRC: KindsSrc<'_> = KindsSrc { literals: &[ "INT_NUMBER", "FLOAT_NUMBER", - "SIMPLE_FLOAT_NUMBER", "CHAR", "BYTE", "STRING", "BIT_STRING", - "TIMING_FLOAT_NUMBER", - "TIMING_INT_NUMBER", ], tokens: &[ "ERROR", diff --git a/crates/oq3_syntax/src/tests/sourcegen_ast.rs b/crates/oq3_syntax/src/tests/sourcegen_ast.rs index aad54a1..601a4b8 100644 --- a/crates/oq3_syntax/src/tests/sourcegen_ast.rs +++ b/crates/oq3_syntax/src/tests/sourcegen_ast.rs @@ -662,11 +662,10 @@ impl Field { fn lower(grammar: &Grammar) -> AstSrc { let mut res = AstSrc { - tokens: - "Whitespace Comment String IntNumber FloatNumber Char Byte Ident TimingIntNumber TimingFloatNumber SimpleFloatNumber BitString" - .split_ascii_whitespace() - .map(|it| it.to_string()) - .collect::>(), + tokens: "Whitespace Comment String IntNumber FloatNumber Char Byte Ident BitString" + .split_ascii_whitespace() + .map(|it| it.to_string()) + .collect::>(), ..Default::default() }; diff --git a/crates/oq3_syntax/src/validation.rs b/crates/oq3_syntax/src/validation.rs index 461e8ea..9a72a72 100644 --- a/crates/oq3_syntax/src/validation.rs +++ b/crates/oq3_syntax/src/validation.rs @@ -175,9 +175,6 @@ fn validate_literal(literal: ast::Literal, acc: &mut Vec) { } ast::LiteralKind::IntNumber(_) | ast::LiteralKind::FloatNumber(_) - | ast::LiteralKind::TimingFloatNumber(_) - | ast::LiteralKind::TimingIntNumber(_) - | ast::LiteralKind::SimpleFloatNumber(_) | ast::LiteralKind::Bool(_) => {} } }