luau-parser 0.2.68

A blazingly fast Luau parser with robust error recovery.
Documentation
//! All `impl` blocks for [`Var`].

use luau_lexer::prelude::{Error, Lexer, Symbol, Token, TokenType};

use crate::types::{Parse, TableAccess, TableAccessKey, TableAccessPrefix, TryParse, Var};

impl Parse for Var {
    fn parse(token: Token, lexer: &mut Lexer, errors: &mut Vec<Error>) -> Option<Self> {
        if !matches!(
            token.token_type,
            TokenType::PartialKeyword(_) | TokenType::Identifier(_)
        ) {
            return None;
        }

        maybe_next_token!(
            lexer,
            maybe_dot_or_bracket,
            TokenType::Symbol(Symbol::Dot) | TokenType::Symbol(Symbol::OpeningBrackets)
        );
        if let Some(dot_or_bracket) = maybe_dot_or_bracket {
            return Some(Self::TableAccess(TableAccess {
                prefix: TableAccessPrefix::Name(token),
                accessed_keys: Vec::<TableAccessKey>::parse(dot_or_bracket, lexer, errors)?,
            }));
        }

        Some(Self::Name(token))
    }
}
impl TryParse for Var {}