backyard-parser

Crates.iobackyard-parser
lib.rsbackyard-parser
version0.1.10
created_at2024-11-27 13:54:34.426434+00
updated_at2024-12-17 03:40:28.729961+00
descriptionParse PHP code to AST node.
homepage
repositoryhttps://github.com/Alzera/backyard
max_upload_size
id1463096
size624,575
Alzera Cita (Alzera)

documentation

README

backyard-parser

Parse PHP code to AST node.

features

  • Parse string to AST (parse() & parse_eval())

usage

fn main() {
  let arena = bumpalo::Bump::new();
  let code = r#"<?php
  function hello_world($foo) {
    var_dump($foo);
  }"#;

  let parsed = backyard_parser::parse(&arena, code).unwrap();
  println!("{:?}", parsed.print(false, false));
}

Notice this output is not including leadings, trailings and location because we print it with print(false, false), more on backyard-nodes.

ProgramNode
└-children[]
  ╙-FunctionNode
    ├-is_ref: false
    ├-name
    │ └-IdentifierNode
    │   └-name: "hello_world"
    ├-parameters[]
    │ ╙-ParameterNode
    │   ├-variable_type: -
    │   ├-is_ref: false
    │   ├-is_ellipsis: false
    │   ├-name
    │   │ └-IdentifierNode
    │   │   └-name: "foo"
    │   └-value: -
    ├-return_type: -
    └-body
      └-BlockNode
        └-statements[]
          ╙-CallNode
            ├-name
            │ └-IdentifierNode
            │   └-name: "var_dump"
            └-arguments[]
              ╙-CallArgumentNode
                ├-name: -
                └-value
                  └-VariableNode
                    └-name
                      └-IdentifierNode
                        └-name: "foo"

ecosystem

heavily inspired by

license

MIT

Commit count: 197

cargo fmt