File tree Expand file tree Collapse file tree 5 files changed +70741
-69657
lines changed Expand file tree Collapse file tree 5 files changed +70741
-69657
lines changed Original file line number Diff line number Diff line change @@ -752,6 +752,29 @@ a.map(|b: usize| b.push(c));
752752 (closure_parameters (parameter (identifier) (primitive_type)))
753753 (call_expression (field_expression (identifier) (field_identifier)) (arguments (identifier)))))))
754754
755+ ===========================================
756+ Generators
757+ ===========================================
758+
759+ move || {
760+ while i <= n {
761+ yield i;
762+ i += 1;
763+ }
764+ return;
765+ };
766+
767+ ---
768+
769+ (source_file
770+ (closure_expression
771+ (closure_parameters)
772+ (block
773+ (while_expression (binary_expression (identifier) (identifier))
774+ (block (yield_expression (identifier))
775+ (compound_assignment_expr (identifier) (integer_literal))))
776+ (return_expression))))
777+
755778===========================================
756779Unsafe blocks
757780===========================================
Original file line number Diff line number Diff line change @@ -842,6 +842,7 @@ module.exports = grammar({
842842 $ . range_expression ,
843843 $ . call_expression ,
844844 $ . return_expression ,
845+ $ . yield_expression ,
845846 $ . _literal ,
846847 prec . left ( $ . identifier ) ,
847848 alias ( choice ( ...primitive_types ) , $ . identifier ) ,
@@ -988,6 +989,11 @@ module.exports = grammar({
988989 prec ( - 1 , 'return' ) ,
989990 ) ,
990991
992+ yield_expression : $ => choice (
993+ prec . left ( seq ( 'yield' , $ . _expression ) ) ,
994+ prec ( - 1 , 'yield' ) ,
995+ ) ,
996+
991997 call_expression : $ => prec ( PREC . call , seq (
992998 field ( 'function' , $ . _expression ) ,
993999 field ( 'arguments' , $ . arguments )
Original file line number Diff line number Diff line change 46654665 "type" : " SYMBOL" ,
46664666 "name" : " return_expression"
46674667 },
4668+ {
4669+ "type" : " SYMBOL" ,
4670+ "name" : " yield_expression"
4671+ },
46684672 {
46694673 "type" : " SYMBOL" ,
46704674 "name" : " _literal"
57425746 }
57435747 ]
57445748 },
5749+ "yield_expression" : {
5750+ "type" : " CHOICE" ,
5751+ "members" : [
5752+ {
5753+ "type" : " PREC_LEFT" ,
5754+ "value" : 0 ,
5755+ "content" : {
5756+ "type" : " SEQ" ,
5757+ "members" : [
5758+ {
5759+ "type" : " STRING" ,
5760+ "value" : " yield"
5761+ },
5762+ {
5763+ "type" : " SYMBOL" ,
5764+ "name" : " _expression"
5765+ }
5766+ ]
5767+ }
5768+ },
5769+ {
5770+ "type" : " PREC" ,
5771+ "value" : -1 ,
5772+ "content" : {
5773+ "type" : " STRING" ,
5774+ "value" : " yield"
5775+ }
5776+ }
5777+ ]
5778+ },
57455779 "call_expression" : {
57465780 "type" : " PREC" ,
57475781 "value" : 14 ,
Original file line number Diff line number Diff line change 248248 {
249249 "type" : " while_let_expression" ,
250250 "named" : true
251+ },
252+ {
253+ "type" : " yield_expression" ,
254+ "named" : true
251255 }
252256 ]
253257 },
45324536 ]
45334537 }
45344538 },
4539+ {
4540+ "type" : " yield_expression" ,
4541+ "named" : true ,
4542+ "fields" : {},
4543+ "children" : {
4544+ "multiple" : false ,
4545+ "required" : false ,
4546+ "types" : [
4547+ {
4548+ "type" : " _expression" ,
4549+ "named" : true
4550+ }
4551+ ]
4552+ }
4553+ },
45354554 {
45364555 "type" : " !" ,
45374556 "named" : false
49885007 "type" : " while" ,
49895008 "named" : false
49905009 },
5010+ {
5011+ "type" : " yield" ,
5012+ "named" : false
5013+ },
49915014 {
49925015 "type" : " {" ,
49935016 "named" : false
You can’t perform that action at this time.
0 commit comments