| 1355 | |
| 1356 | |
| 1357 | static int statement (LexState *ls) { |
| 1358 | int line = ls->linenumber; /* may be needed for error messages */ |
| 1359 | switch (ls->t.token) { |
| 1360 | case TK_IF: { /* stat -> ifstat */ |
| 1361 | ifstat(ls, line); |
| 1362 | return 0; |
| 1363 | } |
| 1364 | case TK_WHILE: { /* stat -> whilestat */ |
| 1365 | whilestat(ls, line); |
| 1366 | return 0; |
| 1367 | } |
| 1368 | case TK_DO: { /* stat -> DO block END */ |
| 1369 | luaX_next(ls); /* skip DO */ |
| 1370 | block(ls); |
| 1371 | check_match(ls, TK_END, TK_DO, line); |
| 1372 | return 0; |
| 1373 | } |
| 1374 | case TK_FOR: { /* stat -> forstat */ |
| 1375 | forstat(ls, line); |
| 1376 | return 0; |
| 1377 | } |
| 1378 | case TK_REPEAT: { /* stat -> repeatstat */ |
| 1379 | repeatstat(ls, line); |
| 1380 | return 0; |
| 1381 | } |
| 1382 | case TK_FUNCTION: { |
| 1383 | funcstat(ls, line); /* stat -> funcstat */ |
| 1384 | return 0; |
| 1385 | } |
| 1386 | case TK_LOCAL: { /* stat -> localstat */ |
| 1387 | luaX_next(ls); /* skip LOCAL */ |
| 1388 | if (testnext(ls, TK_FUNCTION)) /* local function? */ |
| 1389 | localfunc(ls); |
| 1390 | else |
| 1391 | localstat(ls); |
| 1392 | return 0; |
| 1393 | } |
| 1394 | case TK_DECLARE: { |
| 1395 | luaX_next(ls); /* skip DECLARE */ |
| 1396 | declarestat(ls); |
| 1397 | return 0; |
| 1398 | } |
| 1399 | case TK_RETURN: { /* stat -> retstat */ |
| 1400 | retstat(ls); |
| 1401 | return 1; /* must be last statement */ |
| 1402 | } |
| 1403 | case TK_BREAK: { /* stat -> breakstat */ |
| 1404 | luaX_next(ls); /* skip BREAK */ |
| 1405 | breakstat(ls); |
| 1406 | return 1; /* must be last statement */ |
| 1407 | } |
| 1408 | default: { |
| 1409 | exprstat(ls); |
| 1410 | return 0; /* to avoid warnings */ |
| 1411 | } |
| 1412 | } |
| 1413 | } |
| 1414 |
no test coverage detected