siraben / tree-sitter-promela

Promela grammar for tree-sitter
MIT License
7 stars 0 forks source link

Incorrect parsing of subsequent variable declarations #2

Closed siraben closed 2 years ago

siraben commented 2 years ago

The following program

init {
  mtype pkey;
  mtype pnonce;
}

produces the parse tree

(program
  (init
    (body
      (ERROR
        (sequence
          (step
            (one_decl
              (type)
              (var_list
                (ivar
                  (vardcl
                    (uname))))))))
      (sequence
        (step
          (one_decl
            (type)
            (var_list
              (ivar
                (vardcl
                  (uname))))))))))

Whereas we expect something like

(program
  (init
    (body
      (sequence
        (step
          (one_decl
            (type)
            (var_list
              (ivar
                (vardcl
                  (uname))))))
        (step
          (one_decl
            (type)
            (var_list
              (ivar
                (vardcl
                  (uname))))))))))
siraben commented 2 years ago

Changing sequence: $ => prec.left(1,sep1($.step,$._ms)), to sequence: $ => prec.right(1,sep1($.step,$._ms)), fixes the issue but causes other test cases to fail, would need to inspect precedence of nested program constructs.