| 1219 | } |
| 1220 | |
| 1221 | func (c *cc) convertCase(n *parser.Expr_caseContext) ast.Node { |
| 1222 | e := &ast.CaseExpr{ |
| 1223 | Args: &ast.List{}, |
| 1224 | } |
| 1225 | es := n.AllExpr() |
| 1226 | if n.ELSE_() != nil { |
| 1227 | e.Defresult = c.convert(es[len(es)-1]) |
| 1228 | es = es[:len(es)-1] |
| 1229 | } |
| 1230 | if len(es)%2 == 1 { |
| 1231 | e.Arg = c.convert(es[0]) |
| 1232 | es = es[1:] |
| 1233 | } |
| 1234 | for i := 0; i < len(es); i += 2 { |
| 1235 | e.Args.Items = append(e.Args.Items, &ast.CaseWhen{ |
| 1236 | Expr: c.convert(es[i+0]), |
| 1237 | Result: c.convert(es[i+1]), |
| 1238 | }) |
| 1239 | } |
| 1240 | return e |
| 1241 | } |
| 1242 | |
| 1243 | func (c *cc) convert(node node) ast.Node { |
| 1244 | switch n := node.(type) { |