parse_js/parse/
toplevel.rs

1use super::pattern::ParsePatternRules;
2use super::ParseCtx;
3use super::Parser;
4use crate::ast::Node;
5use crate::ast::Syntax;
6use crate::error::SyntaxResult;
7use crate::token::TokenType;
8
9impl<'a> Parser<'a> {
10  pub fn parse_top_level(&mut self) -> SyntaxResult<Node> {
11    let ctx = ParseCtx {
12      rules: ParsePatternRules {
13        await_allowed: true,
14        yield_allowed: true,
15      },
16    };
17    let body = self.parse_stmts(ctx, TokenType::EOF)?;
18    self.require(TokenType::EOF)?;
19    let top_level_node = Node::new(self.source_range(), Syntax::TopLevel { body });
20    Ok(top_level_node)
21  }
22}