aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2023-04-27 18:16:44 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2023-05-11 09:38:20 +0200
commit7358d90bb61ca30b6e22066306a8b77e373ed7e8 (patch)
treec9ca0def71a46d0a0185d262efb86ab385146f1f
parentf087501e3372e62477c9ad17670fc73245ade4a4 (diff)
downloadgcc-7358d90bb61ca30b6e22066306a8b77e373ed7e8.zip
gcc-7358d90bb61ca30b6e22066306a8b77e373ed7e8.tar.gz
gcc-7358d90bb61ca30b6e22066306a8b77e373ed7e8.tar.bz2
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>
-rw-r--r--gcc/rust/ast/rust-ast-tokenstream.cc16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/rust/ast/rust-ast-tokenstream.cc b/gcc/rust/ast/rust-ast-tokenstream.cc
index 7a28634..5442e1c 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: