diff options
author | Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com> | 2023-04-27 15:17:35 +0200 |
---|---|---|
committer | Arthur Cohen <arthur.cohen@embecosm.com> | 2024-01-16 18:37:16 +0100 |
commit | c1b343da33fe7038522d7c0f28b7e061707ccec7 (patch) | |
tree | 731187800dd08ceaa5e89cc975c49ea5b0d10cb2 | |
parent | c010c77c47964f0d660bff1313a57cea565b8506 (diff) | |
download | gcc-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.cc | 36 |
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: |