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> | 2023-05-11 09:38:20 +0200 |
commit | 75eb15164a2253924e22b4559ae95b631e757759 (patch) | |
tree | 7dec66d1e76d5e0902f85bd2eb713336bcd9e9bd | |
parent | fb2a8509d7a3dc7c1afa55f6f63770a736dd5dde (diff) | |
download | gcc-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.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: |