rustpython-parser 0.1.2

Parser for python code.
# RustPython/parser

This directory has the code for python lexing, parsing and generating Abstract Syntax Trees (AST).

The steps are:
- Lexical analysis: splits the source code into tokens.
- Parsing and generating the AST: transforms those tokens into an AST. Uses `LALRPOP`, a Rust parser generator framework.

This crate is published on [](

We wrote [a blog post]( with screenshots and an explanation to help you understand the steps by seeing them in action.

For more information on LALRPOP, here is a link to the [LALRPOP book](

There is a readme in the `src` folder with the details of each file.

## Directory content

``: The build script.
`Cargo.toml`: The config file.

The `src` directory has:

This is the crate's root.

This module takes care of lexing python source text. This means source code is translated into separate tokens.

A python parsing module. Use this module to parse python code into an AST. There are three ways to parse python code. You could parse a whole program, a single statement, or a single expression.

 Implements abstract syntax tree (AST) nodes for the python language. Roughly equivalent to [the python AST](

Python grammar.

Different token definitions. Loosely based on token.h from CPython source.

Define internal parse error types. The goal is to provide a matching and a safe error API, masking errors from LALR.

Format strings.

Collection of functions for parsing parameters, arguments.

Datatypes to support source location information.

Execution mode check. Allowed modes are `exec`, `eval` or `single`.

## How to use

For example, one could do this:
  use rustpython_parser::{parser, ast};
  let python_source = "print('Hello world')";
  let python_ast = parser::parse_expression(python_source).unwrap();