MCPcopy Index your code
hub / github.com/aiscript-dev/aiscript / parseStatement

Function parseStatement

src/parser/syntaxes/statements.ts:11–66  ·  view source on GitHub ↗
(s: ITokenStream)

Source from the content-addressed store, hash-verified

9import type { ITokenStream } from '../streams/token-stream.js';
10
11export function parseStatement(s: ITokenStream): Ast.Statement | Ast.Expression {
12 const startPos = s.getPos();
13
14 switch (s.getTokenKind()) {
15 case TokenKind.VarKeyword:
16 case TokenKind.LetKeyword: {
17 return parseVarDef(s);
18 }
19 case TokenKind.At: {
20 // 識別子が続く場合はFnDef、そうでなければFnExpr
21 if (s.lookahead(1).kind === TokenKind.Identifier) {
22 return parseFnDef(s);
23 }
24 break;
25 }
26 case TokenKind.Out: {
27 return parseOut(s);
28 }
29 case TokenKind.ReturnKeyword: {
30 return parseReturn(s);
31 }
32 case TokenKind.OpenSharpBracket: {
33 return parseStatementWithAttr(s);
34 }
35 case TokenKind.Sharp: {
36 return parseStatementWithLabel(s);
37 }
38 case TokenKind.EachKeyword: {
39 return parseEach(s);
40 }
41 case TokenKind.ForKeyword: {
42 return parseFor(s);
43 }
44 case TokenKind.LoopKeyword: {
45 return parseLoop(s);
46 }
47 case TokenKind.DoKeyword: {
48 return parseDoWhile(s);
49 }
50 case TokenKind.WhileKeyword: {
51 return parseWhile(s);
52 }
53 case TokenKind.BreakKeyword: {
54 return parseBreak(s);
55 }
56 case TokenKind.ContinueKeyword: {
57 return parseContinue(s);
58 }
59 }
60 const expr = parseExpr(s, false);
61 const assign = tryParseAssign(s, expr);
62 if (assign) {
63 return assign;
64 }
65 return expr;
66}
67
68/**

Callers 5

parseBlockFunction · 0.85
parseTopLevelFunction · 0.85
parseBlockOrStatementFunction · 0.85
parseStatementWithLabelFunction · 0.85
parseStatementWithAttrFunction · 0.85

Calls 15

parseVarDefFunction · 0.85
parseFnDefFunction · 0.85
parseOutFunction · 0.85
parseReturnFunction · 0.85
parseStatementWithAttrFunction · 0.85
parseStatementWithLabelFunction · 0.85
parseEachFunction · 0.85
parseForFunction · 0.85
parseLoopFunction · 0.85
parseDoWhileFunction · 0.85
parseWhileFunction · 0.85
parseBreakFunction · 0.85

Tested by

no test coverage detected