From e9ced4a3a581fd06e9bd6c8862a53607b4395f34 Mon Sep 17 00:00:00 2001 From: Pierre-Emmanuel Patry Date: Thu, 27 Apr 2023 18:16:44 +0200 Subject: [PATCH] gccrs: tokenstream: Add string and byte string literals Add conversion to tokenstream Literals for string and byte strings. gcc/rust/ChangeLog: * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add conversion for byte string and string. Signed-off-by: Pierre-Emmanuel Patry --- gcc/rust/ast/rust-ast-tokenstream.cc | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/gcc/rust/ast/rust-ast-tokenstream.cc b/gcc/rust/ast/rust-ast-tokenstream.cc index 7a28634b60ab..5442e1c04236 100644 --- a/gcc/rust/ast/rust-ast-tokenstream.cc +++ b/gcc/rust/ast/rust-ast-tokenstream.cc @@ -50,6 +50,22 @@ TokenStream::collect () const { switch (token->get_id ()) { + // Literals + case CHAR_LITERAL: // TODO: UTF-8 handling + trees.back ().push (ProcMacro::TokenTree::make_tokentree ( + ProcMacro::Literal::make_char (token->as_string ()[0]))); + break; + case STRING_LITERAL: + trees.back ().push (ProcMacro::TokenTree::make_tokentree ( + ProcMacro::Literal::make_string (token->as_string ()))); + break; + case BYTE_STRING_LITERAL: { + auto str = token->as_string (); + std::vector data (str.begin (), str.end ()); + trees.back ().push (ProcMacro::TokenTree::make_tokentree ( + ProcMacro::Literal::make_byte_string (data))); + } + break; // Ident case IDENTIFIER: case ABSTRACT: -- 2.47.2