Skip to content

Nautilus Grammar Macro #3343

@AshrafIbrahim03

Description

@AshrafIbrahim03

Is your feature request related to a problem? Please describe.
When writing Nautilus grammar, I've found it's annoying to use a separate file or just have to embed it in my Rust code in a way that doesn't benefit from Rust's typing system.

Describe the solution you'd like
I want there to be some sort of macro that makes it easy to make a Nautilus grammar, is checked at compile time, and just allows for more synergy in my code.

Describe alternatives you've considered
I've looked around for a macro that does something similar but I haven't found anything. The only alternatives are ones I don't really like working with, e.g. NautilusContext::from_file or hand rolling a vector in my code using NautilusContext::with_rules

Additional context
I made a small macro crate that solves the exact problem I describe. I don't have a lot of experience making macros, but this seemed like a nice place to start. I would appreciate some feedback if this seems like a good feature.

The macro makes a Vec<[(&str,&[u8])]> which is what's needed by NautilusContext::with_rules. Using this macro with NautilusContext::with_rules allows for compile time checked Nautilus grammar definitions.

I figured making a PoC before directly submitting a PR would be better.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions