mirror of https://github.com/astral-sh/ruff
Add utility scripts for AST printing (#105)
This commit is contained in:
parent
a3fb0d6c20
commit
826bdfeb63
|
|
@ -0,0 +1,25 @@
|
||||||
|
/// Print the AST for a given Python file.
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use anyhow::Result;
|
||||||
|
use clap::{Parser, ValueHint};
|
||||||
|
use rustpython_parser::parser;
|
||||||
|
|
||||||
|
use ruff::fs;
|
||||||
|
|
||||||
|
#[derive(Debug, Parser)]
|
||||||
|
struct Cli {
|
||||||
|
#[clap(parse(from_os_str), value_hint = ValueHint::FilePath, required = true)]
|
||||||
|
file: PathBuf,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> Result<()> {
|
||||||
|
let cli = Cli::parse();
|
||||||
|
|
||||||
|
let contents = fs::read_file(&cli.file)?;
|
||||||
|
let python_ast = parser::parse_program(&contents, &cli.file.to_string_lossy())?;
|
||||||
|
|
||||||
|
println!("{:#?}", python_ast);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,25 @@
|
||||||
|
/// Print the token stream for a given Python file.
|
||||||
|
use std::path::PathBuf;
|
||||||
|
|
||||||
|
use anyhow::Result;
|
||||||
|
use clap::{Parser, ValueHint};
|
||||||
|
use rustpython_parser::{lexer, parser};
|
||||||
|
|
||||||
|
use ruff::fs;
|
||||||
|
|
||||||
|
#[derive(Debug, Parser)]
|
||||||
|
struct Cli {
|
||||||
|
#[clap(parse(from_os_str), value_hint = ValueHint::FilePath, required = true)]
|
||||||
|
file: PathBuf,
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() -> Result<()> {
|
||||||
|
let cli = Cli::parse();
|
||||||
|
|
||||||
|
let contents = fs::read_file(&cli.file)?;
|
||||||
|
for (_, tok, _) in lexer::make_tokenizer(&contents).flatten() {
|
||||||
|
println!("{:#?}", tok);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue