MCPcopy Create free account
hub / github.com/dop251/goja / parseStatement

Method parseStatement

parser/statement.go:38–128  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

36}
37
38func (self *_parser) parseStatement() ast.Statement {
39
40 if self.token == token.EOF {
41 self.errorUnexpectedToken(self.token)
42 return &ast.BadStatement{From: self.idx, To: self.idx + 1}
43 }
44
45 switch self.token {
46 case token.SEMICOLON:
47 return self.parseEmptyStatement()
48 case token.LEFT_BRACE:
49 return self.parseBlockStatement()
50 case token.IF:
51 return self.parseIfStatement()
52 case token.DO:
53 return self.parseDoWhileStatement()
54 case token.WHILE:
55 return self.parseWhileStatement()
56 case token.FOR:
57 return self.parseForOrForInStatement()
58 case token.BREAK:
59 return self.parseBreakStatement()
60 case token.CONTINUE:
61 return self.parseContinueStatement()
62 case token.DEBUGGER:
63 return self.parseDebuggerStatement()
64 case token.WITH:
65 return self.parseWithStatement()
66 case token.VAR:
67 return self.parseVariableStatement()
68 case token.LET:
69 tok := self.peek()
70 if tok == token.LEFT_BRACKET || self.scope.allowLet && (token.IsId(tok) || tok == token.LEFT_BRACE) {
71 return self.parseLexicalDeclaration(self.token)
72 }
73 self.insertSemicolon = true
74 case token.CONST:
75 return self.parseLexicalDeclaration(self.token)
76 case token.ASYNC:
77 if f := self.parseMaybeAsyncFunction(true); f != nil {
78 return &ast.FunctionDeclaration{
79 Function: f,
80 }
81 }
82 case token.FUNCTION:
83 return &ast.FunctionDeclaration{
84 Function: self.parseFunction(true, false, self.idx),
85 }
86 case token.CLASS:
87 return &ast.ClassDeclaration{
88 Class: self.parseClass(true),
89 }
90 case token.SWITCH:
91 return self.parseSwitchStatement()
92 case token.RETURN:
93 return self.parseReturnStatement()
94 case token.THROW:
95 return self.parseThrowStatement()

Callers 7

parseStatementListMethod · 0.95
parseWithStatementMethod · 0.95
parseCaseStatementMethod · 0.95
parseDoWhileStatementMethod · 0.95
parseIfStatementMethod · 0.95
parseSourceElementsMethod · 0.95

Calls 15

errorUnexpectedTokenMethod · 0.95
parseEmptyStatementMethod · 0.95
parseBlockStatementMethod · 0.95
parseIfStatementMethod · 0.95
parseDoWhileStatementMethod · 0.95
parseWhileStatementMethod · 0.95
parseBreakStatementMethod · 0.95
parseWithStatementMethod · 0.95

Tested by

no test coverage detected