[gcc r14-7571] gccrs: tokenstream: Add string and byte string literals

Arthur Cohen cohenarthur@gcc.gnu.org
Tue Jan 16 17:41:35 GMT 2024


https://gcc.gnu.org/g:e9ced4a3a581fd06e9bd6c8862a53607b4395f34

commit r14-7571-ge9ced4a3a581fd06e9bd6c8862a53607b4395f34
Author: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Date:   Thu Apr 27 18:16:44 2023 +0200

    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 <pierre-emmanuel.patry@embecosm.com>

Diff:
---
 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 7a28634b60a..5442e1c0423 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<uint8_t> data (str.begin (), str.end ());
+	    trees.back ().push (ProcMacro::TokenTree::make_tokentree (
+	      ProcMacro::Literal::make_byte_string (data)));
+	  }
+	  break;
 	// Ident
 	case IDENTIFIER:
 	case ABSTRACT:


More information about the Gcc-cvs mailing list