Trait Parse

Source
pub trait Parse: Sized {
    // Required methods
    fn lex_starts_at(
        source: &str,
        offset: TextSize,
    ) -> SoftKeywordTransformer<Lexer<Chars<'_>>>;
    fn parse_tokens(
        lxr: impl IntoIterator<Item = Result<(Tok, TextRange), LexicalError>>,
        source_path: &str,
    ) -> Result<Self, BaseError<ParseErrorType>>;

    // Provided methods
    fn parse(
        source: &str,
        source_path: &str,
    ) -> Result<Self, BaseError<ParseErrorType>> { ... }
    fn parse_without_path(
        source: &str,
    ) -> Result<Self, BaseError<ParseErrorType>> { ... }
    fn parse_starts_at(
        source: &str,
        source_path: &str,
        offset: TextSize,
    ) -> Result<Self, BaseError<ParseErrorType>> { ... }
}
Expand description

Parse Python code string to implementor’s type.

§Example

For example, parsing a simple function definition and a call to that function:

use rustpython_parser::{self as parser, ast, Parse};
let source = r#"
def foo():
   return 42

print(foo())
"#;
let program = ast::Suite::parse(source, "<embedded>");
assert!(program.is_ok());

Parsing a single expression denoting the addition of two numbers, but this time specifying a different, somewhat silly, location:

use rustpython_parser::{self as parser, ast, Parse, text_size::TextSize};

let expr = ast::Expr::parse_starts_at("1 + 2", "<embedded>", TextSize::from(400));
assert!(expr.is_ok());

Required Methods§

Source

fn lex_starts_at( source: &str, offset: TextSize, ) -> SoftKeywordTransformer<Lexer<Chars<'_>>>

Source

fn parse_tokens( lxr: impl IntoIterator<Item = Result<(Tok, TextRange), LexicalError>>, source_path: &str, ) -> Result<Self, BaseError<ParseErrorType>>

Provided Methods§

Source

fn parse( source: &str, source_path: &str, ) -> Result<Self, BaseError<ParseErrorType>>

Source

fn parse_without_path(source: &str) -> Result<Self, BaseError<ParseErrorType>>

Source

fn parse_starts_at( source: &str, source_path: &str, offset: TextSize, ) -> Result<Self, BaseError<ParseErrorType>>

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.

Implementations on Foreign Types§

Source§

impl Parse for Vec<Stmt>

Source§

fn lex_starts_at( source: &str, offset: TextSize, ) -> SoftKeywordTransformer<Lexer<Chars<'_>>>

Source§

fn parse_tokens( lxr: impl IntoIterator<Item = Result<(Tok, TextRange), LexicalError>>, source_path: &str, ) -> Result<Vec<Stmt>, BaseError<ParseErrorType>>

Implementors§

Source§

impl Parse for Constant

Source§

impl Parse for Expr

Source§

impl Parse for Stmt

Source§

impl Parse for ExprAttribute

Source§

impl Parse for ExprAwait

Source§

impl Parse for ExprBinOp

Source§

impl Parse for ExprBoolOp

Source§

impl Parse for ExprCall

Source§

impl Parse for ExprCompare

Source§

impl Parse for ExprConstant

Source§

impl Parse for ExprDict

Source§

impl Parse for ExprDictComp

Source§

impl Parse for ExprFormattedValue

Source§

impl Parse for ExprGeneratorExp

Source§

impl Parse for ExprIfExp

Source§

impl Parse for ExprJoinedStr

Source§

impl Parse for ExprLambda

Source§

impl Parse for ExprList

Source§

impl Parse for ExprListComp

Source§

impl Parse for ExprName

Source§

impl Parse for ExprNamedExpr

Source§

impl Parse for ExprSet

Source§

impl Parse for ExprSetComp

Source§

impl Parse for ExprSlice

Source§

impl Parse for ExprStarred

Source§

impl Parse for ExprSubscript

Source§

impl Parse for ExprTuple

Source§

impl Parse for ExprUnaryOp

Source§

impl Parse for ExprYield

Source§

impl Parse for ExprYieldFrom

Source§

impl Parse for Identifier

Source§

impl Parse for ModExpression

Source§

impl Parse for ModInteractive

Source§

impl Parse for ModModule

Source§

impl Parse for StmtAnnAssign

Source§

impl Parse for StmtAssert

Source§

impl Parse for StmtAssign

Source§

impl Parse for StmtAsyncFor

Source§

impl Parse for StmtAsyncFunctionDef

Source§

impl Parse for StmtAsyncWith

Source§

impl Parse for StmtAugAssign

Source§

impl Parse for StmtBreak

Source§

impl Parse for StmtClassDef

Source§

impl Parse for StmtContinue

Source§

impl Parse for StmtDelete

Source§

impl Parse for StmtExpr

Source§

impl Parse for StmtFor

Source§

impl Parse for StmtFunctionDef

Source§

impl Parse for StmtGlobal

Source§

impl Parse for StmtIf

Source§

impl Parse for StmtImport

Source§

impl Parse for StmtImportFrom

Source§

impl Parse for StmtMatch

Source§

impl Parse for StmtNonlocal

Source§

impl Parse for StmtPass

Source§

impl Parse for StmtRaise

Source§

impl Parse for StmtReturn

Source§

impl Parse for StmtTry

Source§

impl Parse for StmtTryStar

Source§

impl Parse for StmtTypeAlias

Source§

impl Parse for StmtWhile

Source§

impl Parse for StmtWith