Skip to content

Commit a12edf0

Browse files
committed
lecture: fix pattern matching example (ANTLR)
1 parent 5f9452e commit a12edf0

1 file changed

Lines changed: 10 additions & 3 deletions

File tree

lecture/02-parsing/antlr-parsing.md

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -642,16 +642,23 @@ ist *Pattern Matching* über Klassen und Records so weit ausgebaut, dass man es
642642
Alternative zum Visitor-Pattern oder zu den ANTLR-Listenern nutzen kann.
643643
:::
644644

645+
``` antlr
646+
expr : e1=expr '*' e2=expr # MULT
647+
| e1=expr '+' e2=expr # ADD
648+
| DIGIT # ZAHL
649+
;
650+
```
651+
652+
\bigskip
653+
645654
``` java
646655
public static class PatternMatching {
647656
static Integer eval(calcParser.ExprContext e) {
648657
return switch (e) {
649658
case calcParser.MULTContext m -> eval(m.e1) * eval(m.e2);
650659
case calcParser.ADDContext a -> eval(a.e1) + eval(a.e2);
651660
case calcParser.ZAHLContext n -> Integer.parseInt(n.DIGIT().getText());
652-
default ->
653-
throw new IllegalStateException("Unhandled expr: "
654-
+ e.getClass().getSimpleName());
661+
default -> throw new IllegalStateException();
655662
};
656663
}
657664
}

0 commit comments

Comments
 (0)