move SeqSep to parser.rs
This commit is contained in:
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
use crate::ast;
|
use crate::ast;
|
||||||
use crate::parse::parser::{Parser, emit_unclosed_delims};
|
use crate::parse::parser::{Parser, emit_unclosed_delims};
|
||||||
use crate::parse::token::{Nonterminal, TokenKind};
|
use crate::parse::token::Nonterminal;
|
||||||
use crate::tokenstream::{self, TokenStream, TokenTree};
|
use crate::tokenstream::{self, TokenStream, TokenTree};
|
||||||
use crate::print::pprust;
|
use crate::print::pprust;
|
||||||
use crate::sess::ParseSess;
|
use crate::sess::ParseSess;
|
||||||
@@ -271,30 +271,6 @@ pub fn stream_to_parser_with_base_dir<'a>(
|
|||||||
Parser::new(sess, stream, Some(base_dir), true, false, None)
|
Parser::new(sess, stream, Some(base_dir), true, false, None)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// A sequence separator.
|
|
||||||
pub struct SeqSep {
|
|
||||||
/// The separator token.
|
|
||||||
pub sep: Option<TokenKind>,
|
|
||||||
/// `true` if a trailing separator is allowed.
|
|
||||||
pub trailing_sep_allowed: bool,
|
|
||||||
}
|
|
||||||
|
|
||||||
impl SeqSep {
|
|
||||||
pub fn trailing_allowed(t: TokenKind) -> SeqSep {
|
|
||||||
SeqSep {
|
|
||||||
sep: Some(t),
|
|
||||||
trailing_sep_allowed: true,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
pub fn none() -> SeqSep {
|
|
||||||
SeqSep {
|
|
||||||
sep: None,
|
|
||||||
trailing_sep_allowed: false,
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// NOTE(Centril): The following probably shouldn't be here but it acknowledges the
|
// NOTE(Centril): The following probably shouldn't be here but it acknowledges the
|
||||||
// fact that architecturally, we are using parsing (read on below to understand why).
|
// fact that architecturally, we are using parsing (read on below to understand why).
|
||||||
|
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ use crate::ast::{
|
|||||||
self, DUMMY_NODE_ID, AttrStyle, Attribute, CrateSugar, Ident,
|
self, DUMMY_NODE_ID, AttrStyle, Attribute, CrateSugar, Ident,
|
||||||
IsAsync, MacDelimiter, Mutability, StrStyle, Visibility, VisibilityKind, Unsafety,
|
IsAsync, MacDelimiter, Mutability, StrStyle, Visibility, VisibilityKind, Unsafety,
|
||||||
};
|
};
|
||||||
use crate::parse::{PResult, Directory, DirectoryOwnership, SeqSep};
|
use crate::parse::{PResult, Directory, DirectoryOwnership};
|
||||||
use crate::parse::lexer::UnmatchedBrace;
|
use crate::parse::lexer::UnmatchedBrace;
|
||||||
use crate::parse::lexer::comments::{doc_comment_style, strip_doc_comment_decoration};
|
use crate::parse::lexer::comments::{doc_comment_style, strip_doc_comment_decoration};
|
||||||
use crate::parse::token::{self, Token, TokenKind, DelimToken};
|
use crate::parse::token::{self, Token, TokenKind, DelimToken};
|
||||||
@@ -329,6 +329,30 @@ enum TokenExpectType {
|
|||||||
NoExpect,
|
NoExpect,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// A sequence separator.
|
||||||
|
struct SeqSep {
|
||||||
|
/// The separator token.
|
||||||
|
sep: Option<TokenKind>,
|
||||||
|
/// `true` if a trailing separator is allowed.
|
||||||
|
trailing_sep_allowed: bool,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl SeqSep {
|
||||||
|
fn trailing_allowed(t: TokenKind) -> SeqSep {
|
||||||
|
SeqSep {
|
||||||
|
sep: Some(t),
|
||||||
|
trailing_sep_allowed: true,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn none() -> SeqSep {
|
||||||
|
SeqSep {
|
||||||
|
sep: None,
|
||||||
|
trailing_sep_allowed: false,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl<'a> Parser<'a> {
|
impl<'a> Parser<'a> {
|
||||||
pub fn new(
|
pub fn new(
|
||||||
sess: &'a ParseSess,
|
sess: &'a ParseSess,
|
||||||
|
|||||||
@@ -1,8 +1,7 @@
|
|||||||
|
use super::{SeqSep, PResult, Parser, TokenType, PathStyle};
|
||||||
use crate::attr;
|
use crate::attr;
|
||||||
use crate::ast;
|
use crate::ast;
|
||||||
use crate::parse::{SeqSep, PResult};
|
|
||||||
use crate::parse::token::{self, Nonterminal, DelimToken};
|
use crate::parse::token::{self, Nonterminal, DelimToken};
|
||||||
use crate::parse::parser::{Parser, TokenType, PathStyle};
|
|
||||||
use crate::tokenstream::{TokenStream, TokenTree};
|
use crate::tokenstream::{TokenStream, TokenTree};
|
||||||
use crate::source_map::Span;
|
use crate::source_map::Span;
|
||||||
|
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
|
use super::{
|
||||||
|
BlockMode, PathStyle, SemiColonMode, TokenType, TokenExpectType,
|
||||||
|
SeqSep, PResult, Parser
|
||||||
|
};
|
||||||
use crate::ast::{
|
use crate::ast::{
|
||||||
self, Param, BinOpKind, BindingMode, BlockCheckMode, Expr, ExprKind, Ident, Item, ItemKind,
|
self, Param, BinOpKind, BindingMode, BlockCheckMode, Expr, ExprKind, Ident, Item, ItemKind,
|
||||||
Mutability, Pat, PatKind, PathSegment, QSelf, Ty, TyKind,
|
Mutability, Pat, PatKind, PathSegment, QSelf, Ty, TyKind,
|
||||||
};
|
};
|
||||||
use crate::parse::{SeqSep, PResult, Parser};
|
|
||||||
use crate::parse::parser::{BlockMode, PathStyle, SemiColonMode, TokenType, TokenExpectType};
|
|
||||||
use crate::parse::token::{self, TokenKind};
|
use crate::parse::token::{self, TokenKind};
|
||||||
use crate::print::pprust;
|
use crate::print::pprust;
|
||||||
use crate::ptr::P;
|
use crate::ptr::P;
|
||||||
|
|||||||
Reference in New Issue
Block a user