MCPcopy Create free account
hub / github.com/agenticsorg/lean-agentic / parse_params

Method parse_params

leanr-syntax/src/parser.rs:275–314  ·  view source on GitHub ↗

Parse function parameters

(&mut self)

Source from the content-addressed store, hash-verified

273
274 /// Parse function parameters
275 fn parse_params(&mut self) -> crate::Result<Vec<Param>> {
276 let mut params = Vec::new();
277
278 while self.check(&TokenKind::LParen) || self.check(&TokenKind::LBrace) {
279 let implicit = self.check(&TokenKind::LBrace);
280 let start = self.current().span;
281 self.advance();
282
283 let mut names = vec![self.parse_ident()?];
284
285 // Multiple names: (x y z : T)
286 while !self.check(&TokenKind::Colon) && !self.is_eof() {
287 names.push(self.parse_ident()?);
288 }
289
290 let type_ = if self.check(&TokenKind::Colon) {
291 self.advance();
292 Some(Box::new(self.parse_expr()?))
293 } else {
294 None
295 };
296
297 let end_token = if implicit {
298 TokenKind::RBrace
299 } else {
300 TokenKind::RParen
301 };
302
303 let end = self.expect(end_token)?.span;
304
305 params.push(Param {
306 span: start.to(end),
307 names,
308 type_,
309 implicit,
310 });
311 }
312
313 Ok(params)
314 }
315
316 /// Parse an expression
317 pub fn parse_expr(&mut self) -> crate::Result<Expr> {

Callers 7

parse_defMethod · 0.80
parse_theoremMethod · 0.80
parse_axiomMethod · 0.80
parse_inductiveMethod · 0.80
parse_constructorMethod · 0.80
parse_structureMethod · 0.80
parse_forall_exprMethod · 0.80

Calls 9

currentMethod · 0.80
parse_identMethod · 0.80
parse_exprMethod · 0.80
expectMethod · 0.80
toMethod · 0.80
checkMethod · 0.45
advanceMethod · 0.45
is_eofMethod · 0.45
pushMethod · 0.45

Tested by

no test coverage detected