@@ -10,6 +10,7 @@ module.exports = grammar({
1010 _statement : ( $ ) =>
1111 choice (
1212 $ . let_stmt ,
13+ $ . const_stmt ,
1314 $ . assign_stmt ,
1415 $ . fn_stmt ,
1516 $ . if_stmt ,
@@ -26,6 +27,8 @@ module.exports = grammar({
2627
2728 let_stmt : ( $ ) =>
2829 seq ( "let" , $ . identifier , "=" , $ . _expression ) ,
30+ const_stmt : ( $ ) =>
31+ seq ( "const" , $ . identifier , "=" , $ . _expression ) ,
2932 assign_stmt : ( $ ) =>
3033 seq ( $ . identifier , choice ( "=" , "+=" , "-=" , "*=" , "/=" , "%=" ) , $ . _expression ) ,
3134 fn_stmt : ( $ ) =>
@@ -96,15 +99,16 @@ module.exports = grammar({
9699 ) ,
97100
98101 unary_expr : ( $ ) =>
99- seq ( choice ( "!" , "-" ) , $ . _expression ) ,
102+ seq ( choice ( "!" , "-" , "~" ) , $ . _expression ) ,
100103
101104 binary_expr : ( $ ) =>
102105 choice (
103106 prec . left ( 1 , seq ( $ . _expression , choice ( "and" , "or" ) , $ . _expression ) ) ,
104107 prec . left ( 2 , seq ( $ . _expression , choice ( "==" , "!=" , "<" , ">" , "<=" , ">=" ) , $ . _expression ) ) ,
105- prec . left ( 3 , seq ( $ . _expression , choice ( "+" , "-" ) , $ . _expression ) ) ,
106- prec . left ( 4 , seq ( $ . _expression , choice ( "*" , "/" , "%" ) , $ . _expression ) ) ,
107- prec . left ( 5 , seq ( $ . _expression , "**" , $ . _expression ) )
108+ prec . left ( 3 , seq ( $ . _expression , choice ( "&" , "|" , "^" , "<<" , ">>" ) , $ . _expression ) ) ,
109+ prec . left ( 4 , seq ( $ . _expression , choice ( "+" , "-" ) , $ . _expression ) ) ,
110+ prec . left ( 5 , seq ( $ . _expression , choice ( "*" , "/" , "%" ) , $ . _expression ) ) ,
111+ prec . left ( 6 , seq ( $ . _expression , "**" , $ . _expression ) )
108112 ) ,
109113
110114 call_expr : ( $ ) =>
0 commit comments