Skip to content

bug: accepting incorrect syntax #275

@stackmystack

Description

@stackmystack

Did you check existing issues?

  • I have read all the tree-sitter docs if it relates to using the parser
  • I have searched the existing issues of tree-sitter-c

Tree-Sitter CLI Version, if relevant (output of tree-sitter --version)

No response

Describe the bug

The parser accepts incorrect syntax in at least 2 cases:

Unary

Should reject:

bool = not true

Should accept:

bool = (not true)

Ranges

Should reject:

range = 0..
range = 1..2

Which is interpreted as:

range = 0..(range = 1..2)

by the official ruby parser.

Should accept:

range = (0..)
range = 1..2

Steps To Reproduce/Bad Parse Tree

Use tree-sitter-parse.

For the not example:

(program [0, 0] - [1, 0]
  (assignment [0, 0] - [0, 15]
    left: (identifier [0, 0] - [0, 4])
    right: (unary [0, 7] - [0, 15]
      operand: (true [0, 11] - [0, 15]))))

For the ranges example:

(program [0, 0] - [2, 0]
  (assignment [0, 0] - [0, 11]
    left: (identifier [0, 0] - [0, 5])
    right: (range [0, 8] - [0, 11]
      begin: (integer [0, 8] - [0, 9])))
  (assignment [1, 0] - [1, 12]
    left: (identifier [1, 0] - [1, 5])
    right: (range [1, 8] - [1, 12]
      begin: (integer [1, 8] - [1, 9])
      end: (integer [1, 11] - [1, 12]))))

Expected Behavior/Parse Tree

Using tree-sitter parse on the provided example should fail.

Repro

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions