MCPcopy Index your code
hub / github.com/aiscriptdev/aiscript / parse_directive

Method parse_directive

aiscript-directive/src/lib.rs:79–106  ·  view source on GitHub ↗
(&mut self)

Source from the content-addressed store, hash-verified

77
78 #[must_use]
79 pub fn parse_directive(&mut self) -> Option<Directive> {
80 self.scanner
81 .consume(TokenType::At, "Expected '@' at start of directive");
82
83 if self.scanner.is_at_end() {
84 self.scanner.error_at_current("Unexpected end");
85 return None;
86 }
87
88 let name_token = self.scanner.current;
89 self.scanner.advance();
90 let name = name_token.lexeme.to_owned();
91
92 let params = if self.scanner.match_token(TokenType::OpenParen) {
93 let params = self.parse_parameters()?;
94 self.scanner
95 .consume(TokenType::CloseParen, "Expect ')' after parameters.");
96 params
97 } else {
98 DirectiveParams::KeyValue(HashMap::new())
99 };
100
101 Some(Directive {
102 name,
103 params,
104 line: name_token.line,
105 })
106 }
107
108 fn parse_parameters(&mut self) -> Option<DirectiveParams> {
109 // Handle empty parentheses case first

Callers 4

parse_directivesMethod · 0.45
parse_parametersMethod · 0.45
parse_single_directiveFunction · 0.45

Calls 6

is_at_endMethod · 0.80
error_at_currentMethod · 0.80
advanceMethod · 0.80
match_tokenMethod · 0.80
parse_parametersMethod · 0.80
consumeMethod · 0.45

Tested by

no test coverage detected