boolangery / py-lua-parser

A Lua parser and AST builder written in Python.
MIT License
124 stars 39 forks source link

Literal string gets evaluated as Lua code #51

Open bendrissou opened 1 year ago

bendrissou commented 1 year ago

Hi,

When a Lua string starts with prefix \u, the string is parsed as Lua code. For example:

a="\u9"

Returns the following output:

line 1:2 token recognition error at: '"\u'
line 1:6 token recognition error at: '"\n'
{
    "Chunk": {
        "body": {
            "Block": {
                "body": [
                    {
                        "Assign": {
                            "targets": [
                                {
                                    "Name": {
                                        "id": "a",
                                        "start_char": 0,
                                        "stop_char": 0,
                                        "line": 1
                                    }
                                }
                            ],
                            "values": [
                                {
                                    "Number": {
                                        "n": 9,
                                        "start_char": 5,
                                        "stop_char": 5,
                                        "line": 1
                                    }
                                }
                            ],
                            "start_char": 0,
                            "stop_char": 5,
                            "line": 1
                        }
                    }
                ],
                "start_char": 0,
                "stop_char": 5,
                "line": 1
            }
        },
        "start_char": 0,
        "stop_char": 5,
        "line": 1
    }
}

Digit 9 is evaluated to Number. I was expecting everything enclosed in quotes to be String.

Is that correct?

bendrissou commented 5 months ago

Hi @boolangery

Any new updates on this?

Thank you.

boolangery commented 1 month ago

Can you test it against master? Or give me a better code sample: a="\u9"does not compile on Lua 5.4

bendrissou commented 1 week ago

Hi @boolangery

Here is a valid Lua example:

a="\u{9}"

The input value should be parsed as a UTF-8 value, but py-lua-parser returns the following output:

line 1:2 token recognition error at: '"\u'
line 1:8 token recognition error at: '"\n'

Chunk: {} 2 keys
  body: {} 2 keys
    Block: {} 2 keys
      body: [] 1 item
        0: {} 1 key          
          Assign: {} 3 keys
            targets: [] 1 item
              0: {} 1 key                
                Name: {} 2 keys
                  id: 'a'
            values: [] 1 item
              0: {} 1 key                
                Table: {} 2 keys
                  fields: [] 1 item
                    0: {} 1 key                      
                      Field: {} 4 keys
                        key: {} 2 keys
                          Number: {} 2 keys
                            n: 1
                        value: {} 2 keys
                          Number: {} 2 keys
                            n: 9
                        between_brackets: False
bendrissou commented 1 week ago

Hi @boolangery Can you please confirm this?