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

Method parse_def

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

Parse def declaration: def name params : type := body

(&mut self)

Source from the content-addressed store, hash-verified

70
71 /// Parse def declaration: def name params : type := body
72 fn parse_def(&mut self) -> crate::Result<DefDecl> {
73 let start = self.expect(TokenKind::Def)?.span;
74
75 let name = self.parse_ident()?;
76 let universe_params = self.parse_universe_params()?;
77 let params = self.parse_params()?;
78
79 let return_type = if self.check(&TokenKind::Colon) {
80 self.advance();
81 Some(Box::new(self.parse_expr()?))
82 } else {
83 None
84 };
85
86 self.expect(TokenKind::ColonEq)?;
87 let body = Box::new(self.parse_expr()?);
88
89 let end = body.span();
90
91 Ok(DefDecl {
92 span: start.to(end),
93 name,
94 universe_params,
95 params,
96 return_type,
97 body,
98 })
99 }
100
101 /// Parse theorem declaration
102 fn parse_theorem(&mut self) -> crate::Result<TheoremDecl> {

Callers 1

parse_declMethod · 0.80

Calls 9

expectMethod · 0.80
parse_identMethod · 0.80
parse_universe_paramsMethod · 0.80
parse_paramsMethod · 0.80
parse_exprMethod · 0.80
spanMethod · 0.80
toMethod · 0.80
checkMethod · 0.45
advanceMethod · 0.45

Tested by

no test coverage detected