Skip to content

AST format #2

@tst2005

Description

@tst2005

Hello,

I wonder if you already know the AST format defined/used by metalua ?

It use a type name into a ["tag"] key, all data are used by numerical indexes.

It is shorter to dump for human debug

The current lua-sh-parser ast format :

{
        type = "Program",
        body = {
                {
                        type = "SimpleCommand",
                        prefix = {
                                {
                                        type = "Assignment",
                                        name = {
                                                type = "Name",
                                                text = "FOO",
                                        },
                                        value = {
                                                type = "Word",
                                                content = {
                                                        "bar",
                                                },
                                        },
                                },
                        },
                },
        },
}

the current format but shown with a metalua style

`Program{
        body=`SimpleCommand{
                prefix=`Assignment{
                        value=`Word{
                                content="bar"
                        },
                        name=`Name{
                                text="FOO"
                        }
                }
        },
}

The same data in metalua AST format

{
        tag = "Program",
        {
                {
                        tag = "SimpleCommand",
                        {
                                {
                                        tag = "Assignment",
                                        {
                                                tag = "Word",
                                                {
                                                        "bar",
                                                },
                                        },
                                        {
                                                tag = "Name",
                                                "FOO",
                                        },
                                },
                        },
                },
        },
}

The metalua usual form for the same sample

`Program{
        `SimpleCommand{
                `Assignment{
                        `Name{
                                "FOO"
                        }
                        `Word{
                                "bar"
                        },
                },
        },
}

What did you think about the metalua AST format ?

I'm working on the step that I want convert back AST to sh then I'm trying to move ast format to a common one ;-)

Regards,

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions