MCPcopy Create free account
hub / github.com/GPPVM-Project/SkyLC / statement

Method statement

crates/skyl-parser/src/parser.rs:796–819  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

794 }
795
796 fn statement(&mut self) -> Result<Statement, ParseError> {
797 match self.advance().kind {
798 TokenKind::Keyword(keyword) => match keyword {
799 KeywordKind::If => self.if_statement(),
800 KeywordKind::While => self.while_statement(),
801 KeywordKind::For => self.for_statement(),
802 KeywordKind::Let => self.variable_declaration(),
803 KeywordKind::Import => self.import_statement(),
804 _ => Err(ParseError::new(
805 CompilationErrorKind::InvalidKeyword {
806 keyword: self.peek().lexeme.clone(),
807 },
808 self.peek().line,
809 self.peek().span,
810 )),
811 },
812 TokenKind::Punctuation(PunctuationKind::LeftBrace) => self.parse_scope(),
813
814 _ => {
815 self.backtrack();
816 self.expression_statement()
817 }
818 }
819 }
820
821 fn for_statement(&mut self) -> Result<Statement, ParseError> {
822 let start_token = self.previous();

Callers 2

declarationMethod · 0.80
if_statementMethod · 0.80

Calls 11

if_statementMethod · 0.80
while_statementMethod · 0.80
for_statementMethod · 0.80
variable_declarationMethod · 0.80
import_statementMethod · 0.80
cloneMethod · 0.80
parse_scopeMethod · 0.80
expression_statementMethod · 0.80
advanceMethod · 0.45
peekMethod · 0.45
backtrackMethod · 0.45

Tested by

no test coverage detected