pub trait Tokens: Clone + Iterator<Item = TokenAndSpan> {
type Checkpoint;
Show 28 methods
// Required methods
fn set_ctx(&mut self, ctx: Context);
fn ctx(&self) -> Context;
fn ctx_mut(&mut self) -> &mut Context;
fn syntax(&self) -> SyntaxFlags;
fn target(&self) -> EsVersion;
fn checkpoint_save(&self) -> Self::Checkpoint;
fn checkpoint_load(&mut self, checkpoint: Self::Checkpoint);
fn set_expr_allowed(&mut self, allow: bool);
fn set_next_regexp(&mut self, start: Option<BytePos>);
fn add_error(&mut self, error: Error);
fn add_module_mode_error(&mut self, error: Error);
fn end_pos(&self) -> BytePos;
fn take_errors(&mut self) -> Vec<Error>;
fn take_script_module_errors(&mut self) -> Vec<Error>;
fn update_token_flags(&mut self, f: impl FnOnce(&mut TokenFlags));
fn token_flags(&self) -> TokenFlags;
fn clone_token_value(&self) -> Option<TokenValue>;
fn take_token_value(&mut self) -> Option<TokenValue>;
fn get_token_value(&self) -> Option<&TokenValue>;
fn set_token_value(&mut self, token_value: Option<TokenValue>);
fn scan_jsx_token(&mut self, allow_multiline_jsx_text: bool) -> TokenAndSpan;
fn scan_jsx_open_el_terminal_token(&mut self) -> TokenAndSpan;
fn rescan_jsx_open_el_terminal_token(
&mut self,
reset: BytePos,
) -> TokenAndSpan;
fn rescan_jsx_token(
&mut self,
allow_multiline_jsx_text: bool,
reset: BytePos,
) -> TokenAndSpan;
fn scan_jsx_identifier(&mut self, start: BytePos) -> TokenAndSpan;
fn scan_jsx_attribute_value(&mut self) -> TokenAndSpan;
fn rescan_template_token(
&mut self,
start: BytePos,
start_with_back_tick: bool,
) -> TokenAndSpan;
// Provided method
fn start_pos(&self) -> BytePos { ... }
}Expand description
Clone should be cheap if you are parsing typescript because typescript syntax requires backtracking.
Required Associated Types§
type Checkpoint
Required Methods§
fn set_ctx(&mut self, ctx: Context)
fn ctx(&self) -> Context
fn ctx_mut(&mut self) -> &mut Context
fn syntax(&self) -> SyntaxFlags
fn target(&self) -> EsVersion
fn checkpoint_save(&self) -> Self::Checkpoint
fn checkpoint_load(&mut self, checkpoint: Self::Checkpoint)
fn set_expr_allowed(&mut self, allow: bool)
fn set_next_regexp(&mut self, start: Option<BytePos>)
Sourcefn add_error(&mut self, error: Error)
fn add_error(&mut self, error: Error)
Implementors should use Rc<RefCell<Vec
It is required because parser should backtrack while parsing typescript code.
Sourcefn add_module_mode_error(&mut self, error: Error)
fn add_module_mode_error(&mut self, error: Error)
Add an error which is valid syntax in script mode.
This errors should be dropped if it’s not a module.
Implementor should check for if Context.module, and buffer errors if module is false. Also, implementors should move errors to the error buffer on set_ctx if the parser mode become module mode.
fn end_pos(&self) -> BytePos
fn take_errors(&mut self) -> Vec<Error>
Sourcefn take_script_module_errors(&mut self) -> Vec<Error>
fn take_script_module_errors(&mut self) -> Vec<Error>
If the program was parsed as a script, this contains the module errors should the program be identified as a module in the future.
fn update_token_flags(&mut self, f: impl FnOnce(&mut TokenFlags))
fn token_flags(&self) -> TokenFlags
fn clone_token_value(&self) -> Option<TokenValue>
fn take_token_value(&mut self) -> Option<TokenValue>
fn get_token_value(&self) -> Option<&TokenValue>
fn set_token_value(&mut self, token_value: Option<TokenValue>)
fn scan_jsx_token(&mut self, allow_multiline_jsx_text: bool) -> TokenAndSpan
fn scan_jsx_open_el_terminal_token(&mut self) -> TokenAndSpan
fn rescan_jsx_open_el_terminal_token(&mut self, reset: BytePos) -> TokenAndSpan
fn rescan_jsx_token( &mut self, allow_multiline_jsx_text: bool, reset: BytePos, ) -> TokenAndSpan
fn scan_jsx_identifier(&mut self, start: BytePos) -> TokenAndSpan
fn scan_jsx_attribute_value(&mut self) -> TokenAndSpan
fn rescan_template_token( &mut self, start: BytePos, start_with_back_tick: bool, ) -> TokenAndSpan
Provided Methods§
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.