mirror of
https://github.com/danog/parser.git
synced 2024-11-26 20:04:57 +01:00
.github | ||
bin | ||
src | ||
tests | ||
.gitignore | ||
Cargo.toml | ||
Justfile | ||
LICENSE-APACHE | ||
LICENSE-MIT | ||
README.md |
PHP-Parser
A handwritten recursive-descent parser for PHP written in Rust, for fun.
Warning
: This crate is not ready for any form of production use yet. There are still a lot of things missing from the parser, so please use at your own risk.
Usage
Add php-parser-rs
in your Cargo.toml
's dependencies
section
[dependencies]
php-parser-rs = "0.0.0-b1"
or use cargo add
cargo add php-parser-rs
Example
use php_parser_rs::parse;
use php_parser_rs::lexer::Lexer;
fn main() -> ParseResult<()> {
let lexer = Lexer::new();
let code = "
<?php
function hello(): void {
echo 'Hello, World!';
}
hello();
";
let tokens = lexer.tokenize(code.as_bytes())?;
let ast = parse(tokens)?;
dbg!(ast);
Ok(())
}
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Contribution
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.