Skip to content

Control-Flow.sdf3

pdmosses/metaborg-tiger/org.metaborg.lang.tiger.statix/syntax/Control-Flow.sdf3

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
module Control-Flow

imports Base

context-free syntax

  .Seq = <
    (
      <{Exp ";\n"}*>
    )
  >

  .If = <
    if <Exp> then
      <Exp>
    else
      <Exp>
  >

  .IfThen = <
    if <Exp> then
      <Exp>
  >

  .While = <
    while <Exp> do
      <Exp>
  >

  .For = <
    for <Var> := <Exp> to <Exp> do
      <Exp>
  >

  .Break = <break>

  . = <<LValue> := <Exp>>

context-free priorities

  {
    Exp.Assign
  } > { right:
    Exp.If
    Exp.IfThen
    Exp.While
    Exp.For
  }