aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>2023-04-27 15:17:35 +0200
committerArthur Cohen <arthur.cohen@embecosm.com>2024-01-16 18:37:16 +0100
commitc1b343da33fe7038522d7c0f28b7e061707ccec7 (patch)
tree731187800dd08ceaa5e89cc975c49ea5b0d10cb2
parentc010c77c47964f0d660bff1313a57cea565b8506 (diff)
downloadgcc-c1b343da33fe7038522d7c0f28b7e061707ccec7.zip
gcc-c1b343da33fe7038522d7c0f28b7e061707ccec7.tar.gz
gcc-c1b343da33fe7038522d7c0f28b7e061707ccec7.tar.bz2
gccrs: tokenstream: Add joint punct token conversion
Add the conversion from tokens to punct structures in tokenstream conversion function. gcc/rust/ChangeLog: * ast/rust-ast-tokenstream.cc (TokenStream::collect): Add joint punct token conversion. Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
-rw-r--r--gcc/rust/ast/rust-ast-tokenstream.cc36
1 files changed, 36 insertions, 0 deletions
diff --git a/gcc/rust/ast/rust-ast-tokenstream.cc b/gcc/rust/ast/rust-ast-tokenstream.cc
index 1342921..faafac4 100644
--- a/gcc/rust/ast/rust-ast-tokenstream.cc
+++ b/gcc/rust/ast/rust-ast-tokenstream.cc
@@ -50,6 +50,42 @@ TokenStream::collect () const
{
switch (token->get_id ())
{
+ // Joint punct
+ case OR:
+ case PIPE_EQ:
+ case CARET_EQ:
+ case RIGHT_SHIFT_EQ:
+ case RIGHT_SHIFT:
+ case GREATER_OR_EQUAL:
+ case MATCH_ARROW:
+ case LESS_OR_EQUAL:
+ case LEFT_SHIFT_EQ:
+ case LEFT_SHIFT:
+ case DIV_EQ:
+ case ELLIPSIS:
+ case DOT_DOT_EQ:
+ case DOT_DOT:
+ case RETURN_TYPE:
+ case MINUS_EQ:
+ case PLUS_EQ:
+ case ASTERISK_EQ:
+ case LOGICAL_AND:
+ case AMP_EQ:
+ case PERCENT_EQ:
+ case SCOPE_RESOLUTION:
+ case NOT_EQUAL:
+ case EQUAL_EQUAL: {
+ auto str = token->as_string ();
+ auto it = str.cbegin ();
+ for (; it != str.cend () - 1; it++)
+ {
+ trees.back ().push (ProcMacro::TokenTree::make_tokentree (
+ ProcMacro::Punct::make_punct (*it, ProcMacro::JOINT)));
+ }
+ trees.back ().push (ProcMacro::TokenTree::make_tokentree (
+ ProcMacro::Punct::make_punct (*it, ProcMacro::ALONE)));
+ }
+ break;
// Alone punct tokens
case EQUAL:
case RIGHT_ANGLE: