Skip to content

Commit 8b412d1

Browse files
committed
---
yaml --- r: 216888 b: refs/heads/stable c: e607d76 h: refs/heads/master v: v3
1 parent 69c31d8 commit 8b412d1

File tree

2 files changed

+46
-15
lines changed

2 files changed

+46
-15
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,5 +29,5 @@ refs/heads/tmp: 378a370ff2057afeb1eae86eb6e78c476866a4a6
2929
refs/tags/1.0.0-alpha.2: 4c705f6bc559886632d3871b04f58aab093bfa2f
3030
refs/tags/homu-tmp: a5286998df566e736b32f6795bfc3803bdaf453d
3131
refs/tags/1.0.0-beta: 8cbb92b53468ee2b0c2d3eeb8567005953d40828
32-
refs/heads/stable: ab913c881cfd559591fcde3ca1c82c784c5aab87
32+
refs/heads/stable: e607d76564cf01247b247e0e83c7abdc4bb1fbee
3333
refs/tags/1.0.0: 55bd4f8ff2b323f317ae89e254ce87162d52a375

branches/stable/src/doc/grammar.md

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,15 @@ expr_stmt : expr ';' ;
463463

464464
## Expressions
465465

466-
**FIXME:** grammar?
466+
```antlr
467+
expr : literal | path | tuple_expr | unit_expr | struct_expr
468+
| block_expr | method_call_expr | field_expr | array_expr
469+
| idx_expr | range_expr | unop_expr | binop_expr
470+
| paren_expr | call_expr | lambda_expr | while_expr
471+
| loop_expr | break_expr | continue_expr | for_expr
472+
| if_expr | match_expr | if_let_expr | while_let_expr
473+
| return_expr ;
474+
```
467475

468476
#### Lvalues, rvalues and temporaries
469477

@@ -475,19 +483,23 @@ expr_stmt : expr ';' ;
475483

476484
### Literal expressions
477485

478-
**FIXME:** grammar?
486+
See [Literals](#literals).
479487

480488
### Path expressions
481489

482-
**FIXME:** grammar?
490+
See [Paths](#paths).
483491

484492
### Tuple expressions
485493

486-
**FIXME:** grammar?
494+
```antlr
495+
tuple_expr : '(' [ expr [ ',' expr ] * | expr ',' ] ? ')' ;
496+
```
487497

488498
### Unit expressions
489499

490-
**FIXME:** grammar?
500+
```antlr
501+
unit_expr : "()" ;
502+
```
491503

492504
### Structure expressions
493505

@@ -545,41 +557,60 @@ range_expr : expr ".." expr |
545557

546558
### Unary operator expressions
547559

548-
**FIXME:** grammar?
560+
```antlr
561+
unop_expr : unop expr ;
562+
unop : '-' | '*' | '!' ;
563+
```
549564

550565
### Binary operator expressions
551566

552567
```antlr
553-
binop_expr : expr binop expr ;
568+
binop_expr : expr binop expr | type_cast_expr
569+
| assignment_expr | compound_assignment_expr ;
570+
binop : arith_op | bitwise_op | lazy_bool_op | comp_op
554571
```
555572

556573
#### Arithmetic operators
557574

558-
**FIXME:** grammar?
575+
```antlr
576+
arith_op : '+' | '-' | '*' | '/' | '%' ;
577+
```
559578

560579
#### Bitwise operators
561580

562-
**FIXME:** grammar?
581+
```antlr
582+
bitwise_op : '&' | '|' | '^' | "<<" | ">>" ;
583+
```
563584

564585
#### Lazy boolean operators
565586

566-
**FIXME:** grammar?
587+
```antlr
588+
lazy_bool_op : "&&" | "||" ;
589+
```
567590

568591
#### Comparison operators
569592

570-
**FIXME:** grammar?
593+
```antlr
594+
comp_op : "==" | "!=" | '<' | '>' | "<=" | ">=" ;
595+
```
571596

572597
#### Type cast expressions
573598

574-
**FIXME:** grammar?
599+
```antlr
600+
type_cast_expr : value "as" type ;
601+
```
575602

576603
#### Assignment expressions
577604

578-
**FIXME:** grammar?
605+
```antlr
606+
assignment_expr : expr '=' expr ;
607+
```
579608

580609
#### Compound assignment expressions
581610

582-
**FIXME:** grammar?
611+
```antlr
612+
compound_assignment_expr : expr [ arith_op | bitwise_op ] '=' expr ;
613+
```
583614

584615
#### Operator precedence
585616

0 commit comments

Comments
 (0)