refactor(frontends/lean/{parser,util}): extract quote functions
Also fixes ``f when f is private
This commit is contained in:
parent
1c7ca3f20a
commit
dfe1874365
5 changed files with 27 additions and 32 deletions
|
|
@ -682,7 +682,7 @@ static expr parse_quoted_name(parser_state & p, unsigned, expr const *, pos_info
|
|||
}
|
||||
}
|
||||
lean_assert(id.is_string());
|
||||
expr e = quote_name(id);
|
||||
expr e = quote(id);
|
||||
return p.rec_save_pos(e, pos);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1000,7 +1000,7 @@ static expr mk_opt_param(expr const & t, expr const & val) {
|
|||
}
|
||||
|
||||
static expr mk_auto_param(expr const & t, name const & tac_name) {
|
||||
return copy_tag(t, mk_app(copy_tag(t, mk_constant(get_auto_param_name())), t, quote_name(tac_name)));
|
||||
return copy_tag(t, mk_app(copy_tag(t, mk_constant(get_auto_param_name())), t, quote(tac_name)));
|
||||
}
|
||||
|
||||
static bool is_tactic_unit(environment const & env, expr const & c) {
|
||||
|
|
@ -1715,26 +1715,6 @@ struct to_pattern_fn {
|
|||
}
|
||||
};
|
||||
|
||||
static expr quote(unsigned u) {
|
||||
return mk_app(mk_constant(get_char_of_nat_name()), mk_prenum(mpz(u)));
|
||||
}
|
||||
|
||||
static expr quote(char const * str) {
|
||||
return from_string(str);
|
||||
}
|
||||
|
||||
static expr quote(name const & n) {
|
||||
switch (n.kind()) {
|
||||
case name_kind::ANONYMOUS:
|
||||
return mk_constant({"name", "anonymous"});
|
||||
case name_kind::NUMERAL:
|
||||
return mk_app(mk_constant({"name", "mk_numeral"}), quote(n.get_numeral()), quote(n.get_prefix()));
|
||||
case name_kind::STRING:
|
||||
return mk_app(mk_constant({"name", "mk_string"}), quote(n.get_string()), quote(n.get_prefix()));
|
||||
}
|
||||
lean_unreachable();
|
||||
}
|
||||
|
||||
static expr quote(expr const & e) {
|
||||
switch (e.kind()) {
|
||||
case expr_kind::Var:
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ Author: Leonardo de Moura
|
|||
#include "frontends/lean/parser.h"
|
||||
#include "frontends/lean/tokens.h"
|
||||
#include "frontends/lean/decl_util.h" // TODO(Leo): remove
|
||||
#include "frontends/lean/prenum.h"
|
||||
|
||||
namespace lean {
|
||||
void consume_until_end_or_command(parser & p) {
|
||||
while (!p.curr_is_command() && !p.curr_is_eof() && !p.curr_is_token(get_period_tk())) {
|
||||
|
|
@ -341,16 +343,24 @@ expr mk_tactic_unit() {
|
|||
return mk_app(mk_constant(get_tactic_name(), {mk_level_zero()}), mk_constant(get_unit_name()));
|
||||
}
|
||||
|
||||
expr quote_name(name const & n) {
|
||||
if (n.is_anonymous()) {
|
||||
return mk_constant(get_name_anonymous_name());
|
||||
} else if (n.is_string()) {
|
||||
expr prefix = quote_name(n.get_prefix());
|
||||
expr str = from_string(n.get_string());
|
||||
return mk_app(mk_constant(get_name_mk_string_name()), str, prefix);
|
||||
} else {
|
||||
lean_unreachable();
|
||||
expr quote(unsigned u) {
|
||||
return mk_app(mk_constant(get_char_of_nat_name()), mk_prenum(mpz(u)));
|
||||
}
|
||||
|
||||
expr quote(char const * str) {
|
||||
return from_string(str);
|
||||
}
|
||||
|
||||
expr quote(name const & n) {
|
||||
switch (n.kind()) {
|
||||
case name_kind::ANONYMOUS:
|
||||
return mk_constant(get_name_anonymous_name());
|
||||
case name_kind::NUMERAL:
|
||||
return mk_app(mk_constant(get_name_mk_numeral_name()), quote(n.get_numeral()), quote(n.get_prefix()));
|
||||
case name_kind::STRING:
|
||||
return mk_app(mk_constant(get_name_mk_string_name()), quote(n.get_string()), quote(n.get_prefix()));
|
||||
}
|
||||
lean_unreachable();
|
||||
}
|
||||
|
||||
static name * g_no_info = nullptr;
|
||||
|
|
|
|||
|
|
@ -106,7 +106,9 @@ pair<name, option_kind> parse_option_name(parser & p, char const * error_msg);
|
|||
/** Create (tactic unit) type */
|
||||
expr mk_tactic_unit();
|
||||
|
||||
expr quote_name(name const & n);
|
||||
expr quote(unsigned u);
|
||||
expr quote(char const * str);
|
||||
expr quote(name const & n);
|
||||
|
||||
expr mk_no_info(expr const & e);
|
||||
bool is_no_info(expr const & e);
|
||||
|
|
|
|||
|
|
@ -11,3 +11,6 @@ by do
|
|||
trace t2,
|
||||
r ← mk_app (`eq.refl) [a],
|
||||
exact r
|
||||
|
||||
private def f := unit
|
||||
check ``f
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue