Beginnings of list literals

This commit is contained in:
greg 2017-02-17 21:36:39 -08:00
parent 4da771036a
commit d8df98ba01

View File

@ -17,9 +17,10 @@ use std::convert::From;
// //
// expression := postop_expression (op postop_expression)* // expression := postop_expression (op postop_expression)*
// postop_expression := primary_expression postop // postop_expression := primary_expression postop
// primary_expression := number_expr | String | identifier_expr | paren_expr | conditional_expr | while_expr | lambda_expr // primary_expression := number_expr | String | identifier_expr | paren_expr | conditional_expr | while_expr | lambda_expr | list_expr
// number_expr := (PLUS | MINUS ) number_expr | Number // number_expr := (PLUS | MINUS ) number_expr | Number
// identifier_expr := call_expression | Variable // identifier_expr := call_expression | Variable
// list_expr := LSquareBracket exprlist RSquareBracket
// call_expression := Identifier LParen exprlist RParen // call_expression := Identifier LParen exprlist RParen
// while_expr := WHILE primary_expression LCurlyBrace (expression delimiter)* RCurlyBrace // while_expr := WHILE primary_expression LCurlyBrace (expression delimiter)* RCurlyBrace
// paren_expr := LParen expression RParen // paren_expr := LParen expression RParen
@ -432,6 +433,7 @@ impl Parser {
Some(Identifier(_)) => try!(self.identifier_expr()), Some(Identifier(_)) => try!(self.identifier_expr()),
Some(Token::LParen) => try!(self.paren_expr()), Some(Token::LParen) => try!(self.paren_expr()),
Some(Keyword(Kw::Fn)) => try!(self.lambda_expr()), Some(Keyword(Kw::Fn)) => try!(self.lambda_expr()),
Some(Token::LSquareBracket) => try!(self.list_expr()),
Some(e) => { Some(e) => {
return ParseError::result_from_str(&format!("Expected primary expression, got \ return ParseError::result_from_str(&format!("Expected primary expression, got \
{:?}", {:?}",
@ -441,6 +443,10 @@ impl Parser {
}) })
} }
fn list_expr(&mut self) -> ParseResult<Expression> {
unimplemented!()
}
fn number_expression(&mut self) -> ParseResult<Expression> { fn number_expression(&mut self) -> ParseResult<Expression> {
let mut multiplier = 1; let mut multiplier = 1;
loop { loop {