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>2023-05-11 09:38:20 +0200
commit75eb15164a2253924e22b4559ae95b631e757759 (patch)
tree7dec66d1e76d5e0902f85bd2eb713336bcd9e9bd
parentfb2a8509d7a3dc7c1afa55f6f63770a736dd5dde (diff)
downloadgcc-75eb15164a2253924e22b4559ae95b631e757759.zip
gcc-75eb15164a2253924e22b4559ae95b631e757759.tar.gz
gcc-75eb15164a2253924e22b4559ae95b631e757759.tar.bz2
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: