前一篇文章讲了如何解析let与return,那么今天就讲如何parse前缀表达式.
1.前缀表达式都包含什么
- 变量名
- 数字
- "!"感叹号
- "-"减号
- 逻辑值 true,false
- "("左小括号
- if关键字
- fn关键字
- 字符串
- "{"左大括号
- "["左中括号
p.prefix_parser_fns.insert(token::IDENT, Parser::parse_identifier);
p.prefix_parser_fns.insert(token::INT, Parser::parse_integer_literal);
p.prefix_parser_fns.insert(token::BANG, Parser::parse_prefix_expression);
p.prefix_parser_fns.insert(token::MINUS, Parser::parse_prefix_expression);
p.prefix_parser_fns.insert(token::TRUE, Parser::parse_boolean);
p.prefix_parser_fns.insert(token::FALSE, Parser::parse_boolean);
p.prefix_parser_fns.insert(token::LPAREN, Parser::parse_group_expression);
p.prefix_parser_fns.insert(token::IF,Parser::parse_if_expression);
p.prefix_parser_fns.insert(token::FUNCTION,Parser::parse_func_literal);
p.prefix_parser_fns.insert(token::STRING, Parser::parse_string_literal);
p.prefix_parser_fns.insert(token::LBRACKET,Parser::parse_array_literal);
p.prefix_parser_fns.insert(token::LBRACE, Parser::parse_hash_literal);