push (Rust::Token::make (UNSAFE, qualifiers.get_locus ()));
if (qualifiers.is_extern ())
{
- push (Rust::Token::make (EXTERN_TOK, qualifiers.get_locus ()));
+ push (Rust::Token::make (EXTERN_KW, qualifiers.get_locus ()));
if (qualifiers.has_abi ())
{
push (Rust::Token::make_string (UNDEF_LOCATION,
void
TokenCollector::visit (ReturnExpr &expr)
{
- push (Rust::Token::make (RETURN_TOK, expr.get_locus ()));
+ push (Rust::Token::make (RETURN_KW, expr.get_locus ()));
if (expr.has_returned_expr ())
visit (expr.get_returned_expr ());
}
void
TokenCollector::visit (MatchExpr &expr)
{
- push (Rust::Token::make (MATCH_TOK, expr.get_locus ()));
+ push (Rust::Token::make (MATCH_KW, expr.get_locus ()));
visit (expr.get_scrutinee_expr ());
push (Rust::Token::make (LEFT_CURLY, UNDEF_LOCATION));
newline ();
TokenCollector::visit (ExternCrate &crate)
{
visit_items_as_lines (crate.get_outer_attrs ());
- push (Rust::Token::make (EXTERN_TOK, crate.get_locus ()));
+ push (Rust::Token::make (EXTERN_KW, crate.get_locus ()));
push (Rust::Token::make (CRATE, UNDEF_LOCATION));
auto ref = crate.get_referenced_crate ();
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (ref)));
auto qualifiers = function.get_qualifiers ();
visit (qualifiers);
- push (Rust::Token::make (FN_TOK, function.get_locus ()));
+ push (Rust::Token::make (FN_KW, function.get_locus ()));
auto name = function.get_function_name ().as_string ();
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (name)));
if (function.has_generics ())
if (struct_item.has_visibility ())
visit (struct_item.get_visibility ());
auto struct_name = struct_item.get_identifier ().as_string ();
- push (Rust::Token::make (STRUCT_TOK, struct_item.get_locus ()));
+ push (Rust::Token::make (STRUCT_KW, struct_item.get_locus ()));
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (struct_name)));
if (struct_item.has_generics ())
{
visit_items_as_lines (tuple_struct.get_outer_attrs ());
auto struct_name = tuple_struct.get_identifier ().as_string ();
- push (Rust::Token::make (STRUCT_TOK, tuple_struct.get_locus ()));
+ push (Rust::Token::make (STRUCT_KW, tuple_struct.get_locus ()));
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (struct_name)));
if (tuple_struct.has_generics ())
visit (tuple_struct.get_generic_params ());
visit_items_as_lines (enumeration.get_outer_attrs ());
if (enumeration.has_visibility ())
visit (enumeration.get_visibility ());
- push (Rust::Token::make (ENUM_TOK, enumeration.get_locus ()));
+ push (Rust::Token::make (ENUM_KW, enumeration.get_locus ()));
auto id = enumeration.get_identifier ().as_string ();
push (
Rust::Token::make_identifier (enumeration.get_locus (), std::move (id)));
TokenCollector::visit (StaticItem &item)
{
visit_items_as_lines (item.get_outer_attrs ());
- push (Rust::Token::make (STATIC_TOK, item.get_locus ()));
+ push (Rust::Token::make (STATIC_KW, item.get_locus ()));
if (item.is_mutable ())
push (Rust::Token::make (MUT, UNDEF_LOCATION));
auto func = item.get_trait_function_decl ();
auto id = func.get_identifier ().as_string ();
- push (Rust::Token::make (FN_TOK, item.get_locus ()));
+ push (Rust::Token::make (FN_KW, item.get_locus ()));
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (id)));
push (Rust::Token::make (LEFT_PAREN, UNDEF_LOCATION));
auto method = item.get_trait_method_decl ();
auto id = method.get_identifier ().as_string ();
- push (Rust::Token::make (FN_TOK, item.get_locus ()));
+ push (Rust::Token::make (FN_KW, item.get_locus ()));
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (id)));
push (Rust::Token::make (LEFT_PAREN, UNDEF_LOCATION));
visit_items_as_lines (item.get_outer_attrs ());
if (item.has_visibility ())
visit (item.get_visibility ());
- push (Rust::Token::make (STATIC_TOK, item.get_locus ()));
+ push (Rust::Token::make (STATIC_KW, item.get_locus ()));
if (item.is_mut ())
push (Rust::Token::make (MUT, UNDEF_LOCATION));
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (id)));
auto id = function.get_identifier ().as_string ();
- push (Rust::Token::make (FN_TOK, function.get_locus ()));
+ push (Rust::Token::make (FN_KW, function.get_locus ()));
push (Rust::Token::make_identifier (UNDEF_LOCATION, std::move (id)));
if (function.has_generics ())
visit (function.get_generic_params ());
TokenCollector::visit (ExternBlock &block)
{
visit_items_as_lines (block.get_outer_attrs ());
- push (Rust::Token::make (EXTERN_TOK, block.get_locus ()));
+ push (Rust::Token::make (EXTERN_KW, block.get_locus ()));
if (block.has_abi ())
{
visit (type.get_function_qualifiers ());
- push (Rust::Token::make (FN_TOK, type.get_locus ()));
+ push (Rust::Token::make (FN_KW, type.get_locus ()));
push (Rust::Token::make (LEFT_PAREN, UNDEF_LOCATION));
visit_items_joined_by_separator (type.get_function_params (), COMMA);
using namespace Rust::Values;
std::set<std::string> invalid{
- Keywords::CRATE, Keywords::EXTERN_TOK, Keywords::SELF,
+ Keywords::CRATE, Keywords::EXTERN_KW, Keywords::SELF,
Keywords::SUPER, Keywords::SELF_ALIAS,
};
RS_TOKEN_KEYWORD (DO, "do") /* unused */ \
RS_TOKEN_KEYWORD (DYN, "dyn") \
RS_TOKEN_KEYWORD (ELSE, "else") \
- RS_TOKEN_KEYWORD (ENUM_TOK, "enum") \
- RS_TOKEN_KEYWORD (EXTERN_TOK, "extern") \
+ RS_TOKEN_KEYWORD (ENUM_KW, "enum") \
+ RS_TOKEN_KEYWORD (EXTERN_KW, "extern") \
RS_TOKEN_KEYWORD (FALSE_LITERAL, "false") \
- RS_TOKEN_KEYWORD (FINAL_TOK, "final") /* unused */ \
- RS_TOKEN_KEYWORD (FN_TOK, "fn") \
+ RS_TOKEN_KEYWORD (FINAL_KW, "final") /* unused */ \
+ RS_TOKEN_KEYWORD (FN_KW, "fn") \
RS_TOKEN_KEYWORD (FOR, "for") \
RS_TOKEN_KEYWORD (IF, "if") \
RS_TOKEN_KEYWORD (IMPL, "impl") \
RS_TOKEN_KEYWORD (LET, "let") \
RS_TOKEN_KEYWORD (LOOP, "loop") \
RS_TOKEN_KEYWORD (MACRO, "macro") \
- RS_TOKEN_KEYWORD (MATCH_TOK, "match") \
+ RS_TOKEN_KEYWORD (MATCH_KW, "match") \
RS_TOKEN_KEYWORD (MOD, "mod") \
RS_TOKEN_KEYWORD (MOVE, "move") \
RS_TOKEN_KEYWORD (MUT, "mut") \
- RS_TOKEN_KEYWORD (OVERRIDE_TOK, "override") /* unused */ \
- RS_TOKEN_KEYWORD (PRIV, "priv") /* unused */ \
+ RS_TOKEN_KEYWORD (OVERRIDE_KW, "override") /* unused */ \
+ RS_TOKEN_KEYWORD (PRIV, "priv") /* unused */ \
RS_TOKEN_KEYWORD (PUB, "pub") \
RS_TOKEN_KEYWORD (REF, "ref") \
- RS_TOKEN_KEYWORD (RETURN_TOK, "return") \
+ RS_TOKEN_KEYWORD (RETURN_KW, "return") \
RS_TOKEN_KEYWORD (SELF_ALIAS, \
"Self") /* mrustc does not treat this as a reserved word*/ \
RS_TOKEN_KEYWORD (SELF, "self") \
- RS_TOKEN_KEYWORD (STATIC_TOK, "static") \
- RS_TOKEN_KEYWORD (STRUCT_TOK, "struct") \
+ RS_TOKEN_KEYWORD (STATIC_KW, "static") \
+ RS_TOKEN_KEYWORD (STRUCT_KW, "struct") \
RS_TOKEN_KEYWORD (SUPER, "super") \
RS_TOKEN_KEYWORD (TRAIT, "trait") \
RS_TOKEN_KEYWORD (TRUE_LITERAL, "true") \
case ASYNC:
case CONST:
case UNSAFE:
- case EXTERN_TOK:
- case FN_TOK:
+ case EXTERN_KW:
+ case FN_KW:
case IMPL:
case DYN:
case QUESTION_MARK:
return nullptr;
case PUB:
case MOD:
- case EXTERN_TOK:
+ case EXTERN_KW:
case USE:
- case FN_TOK:
+ case FN_KW:
case TYPE:
- case STRUCT_TOK:
- case ENUM_TOK:
+ case STRUCT_KW:
+ case ENUM_KW:
case CONST:
- case STATIC_TOK:
+ case STATIC_KW:
case AUTO:
case TRAIT:
case IMPL:
{
case MOD:
return parse_module (std::move (vis), std::move (outer_attrs));
- case EXTERN_TOK:
+ case EXTERN_KW:
// lookahead to resolve syntactical production
t = lexer.peek_token (1);
{
case CRATE:
return parse_extern_crate (std::move (vis), std::move (outer_attrs));
- case FN_TOK: // extern function
+ case FN_KW: // extern function
return parse_function (std::move (vis), std::move (outer_attrs));
case LEFT_CURLY: // extern block
return parse_extern_block (std::move (vis), std::move (outer_attrs));
switch (t->get_id ())
{
- case FN_TOK:
+ case FN_KW:
return parse_function (std::move (vis), std::move (outer_attrs));
case LEFT_CURLY:
return parse_extern_block (std::move (vis),
}
case USE:
return parse_use_decl (std::move (vis), std::move (outer_attrs));
- case FN_TOK:
+ case FN_KW:
return parse_function (std::move (vis), std::move (outer_attrs));
case TYPE:
return parse_type_alias (std::move (vis), std::move (outer_attrs));
- case STRUCT_TOK:
+ case STRUCT_KW:
return parse_struct (std::move (vis), std::move (outer_attrs));
- case ENUM_TOK:
+ case ENUM_KW:
return parse_enum (std::move (vis), std::move (outer_attrs));
// TODO: implement union keyword but not really because of
// context-dependence case UNION: crappy hack to do union "keyword"
case UNDERSCORE:
return parse_const_item (std::move (vis), std::move (outer_attrs));
case UNSAFE:
- case EXTERN_TOK:
- case FN_TOK:
+ case EXTERN_KW:
+ case FN_KW:
return parse_function (std::move (vis), std::move (outer_attrs));
default:
add_error (
lexer.skip_token (1); // TODO: is this right thing to do?
return nullptr;
}
- case STATIC_TOK:
+ case STATIC_KW:
return parse_static_item (std::move (vis), std::move (outer_attrs));
case AUTO:
case TRAIT:
case AUTO:
case TRAIT:
return parse_trait (std::move (vis), std::move (outer_attrs));
- case EXTERN_TOK:
- case FN_TOK:
+ case EXTERN_KW:
+ case FN_KW:
return parse_function (std::move (vis), std::move (outer_attrs));
case IMPL:
return parse_impl (std::move (vis), std::move (outer_attrs));
AST::AttrVec outer_attrs)
{
location_t locus = lexer.peek_token ()->get_locus ();
- if (!skip_token (EXTERN_TOK))
+ if (!skip_token (EXTERN_KW))
{
skip_after_semicolon ();
return nullptr;
// Get qualifiers for function if they exist
AST::FunctionQualifiers qualifiers = parse_function_qualifiers ();
- skip_token (FN_TOK);
+ skip_token (FN_KW);
// Save function name token
const_TokenPtr function_name_tok = expect_token (IDENTIFIER);
has_unsafe = true;
}
- if (lexer.peek_token ()->get_id () == EXTERN_TOK)
+ if (lexer.peek_token ()->get_id () == EXTERN_KW)
{
lexer.skip_token ();
has_extern = true;
/* Tuple struct <- 'struct' IDENTIFIER generic_params? '(' tuple_fields? ')'
* where_clause? ';' */
location_t locus = lexer.peek_token ()->get_locus ();
- skip_token (STRUCT_TOK);
+ skip_token (STRUCT_KW);
// parse struct name
const_TokenPtr name_tok = expect_token (IDENTIFIER);
AST::AttrVec outer_attrs)
{
location_t locus = lexer.peek_token ()->get_locus ();
- skip_token (ENUM_TOK);
+ skip_token (ENUM_KW);
// parse enum name
const_TokenPtr enum_name_tok = expect_token (IDENTIFIER);
AST::AttrVec outer_attrs)
{
location_t locus = lexer.peek_token ()->get_locus ();
- skip_token (STATIC_TOK);
+ skip_token (STATIC_KW);
// determine whether static item is mutable
bool is_mut = false;
// TODO: find out how to disable gcc "implicit fallthrough" error
gcc_fallthrough ();
case UNSAFE:
- case EXTERN_TOK:
- case FN_TOK: {
+ case EXTERN_KW:
+ case FN_KW: {
/* function and method can't be disambiguated by lookahead alone
* (without a lot of work and waste), so either make a
* "parse_trait_function_or_method" or parse here mostly and pass in
// parse function or method qualifiers
AST::FunctionQualifiers qualifiers = parse_function_qualifiers ();
- skip_token (FN_TOK);
+ skip_token (FN_KW);
// parse function or method name
const_TokenPtr ident_tok = expect_token (IDENTIFIER);
// TODO: is a recursive call to parse_inherent_impl_item better?
switch (lexer.peek_token ()->get_id ())
{
- case EXTERN_TOK:
+ case EXTERN_KW:
case UNSAFE:
- case FN_TOK:
+ case FN_KW:
// function or method
return parse_inherent_impl_function_or_method (std::move (vis),
std::move (
return parse_const_item (std::move (vis),
std::move (outer_attrs));
case UNSAFE:
- case EXTERN_TOK:
- case FN_TOK:
+ case EXTERN_KW:
+ case FN_KW:
return parse_inherent_impl_function_or_method (std::move (vis),
std::move (
outer_attrs));
return nullptr;
}
}
- case EXTERN_TOK:
+ case EXTERN_KW:
case UNSAFE:
- case FN_TOK:
+ case FN_KW:
// function or method
return parse_inherent_impl_function_or_method (
AST::Visibility::create_private (), std::move (outer_attrs));
return parse_const_item (AST::Visibility::create_private (),
std::move (outer_attrs));
case UNSAFE:
- case EXTERN_TOK:
- case FN_TOK:
+ case EXTERN_KW:
+ case FN_KW:
return parse_inherent_impl_function_or_method (
AST::Visibility::create_private (), std::move (outer_attrs));
default:
// parse function or method qualifiers
AST::FunctionQualifiers qualifiers = parse_function_qualifiers ();
- skip_token (FN_TOK);
+ skip_token (FN_KW);
// parse function or method name
const_TokenPtr ident_tok = expect_token (IDENTIFIER);
return parse_macro_invocation_semi (std::move (outer_attrs));
case TYPE:
return parse_type_alias (visibility, std::move (outer_attrs));
- case EXTERN_TOK:
+ case EXTERN_KW:
case UNSAFE:
- case FN_TOK:
+ case FN_KW:
// function or method
return parse_trait_impl_function_or_method (visibility,
std::move (outer_attrs));
case UNDERSCORE:
return parse_const_item (visibility, std::move (outer_attrs));
case UNSAFE:
- case EXTERN_TOK:
- case FN_TOK:
+ case EXTERN_KW:
+ case FN_KW:
return parse_trait_impl_function_or_method (visibility,
std::move (outer_attrs));
default:
// parse function or method qualifiers
AST::FunctionQualifiers qualifiers = parse_function_qualifiers ();
- skip_token (FN_TOK);
+ skip_token (FN_KW);
// parse function or method name
const_TokenPtr ident_tok = expect_token (IDENTIFIER);
AST::AttrVec outer_attrs)
{
location_t locus = lexer.peek_token ()->get_locus ();
- skip_token (EXTERN_TOK);
+ skip_token (EXTERN_KW);
// detect optional abi name
std::string abi;
{
case IDENTIFIER:
return parse_macro_invocation_semi (outer_attrs);
- case STATIC_TOK: {
+ case STATIC_KW: {
// parse extern static item
lexer.skip_token ();
has_mut, std::move (vis),
std::move (outer_attrs), locus));
}
- case FN_TOK:
+ case FN_KW:
return parse_external_function_item (std::move (vis),
std::move (outer_attrs));
case TYPE:
return parse_let_stmt (std::move (outer_attrs), restrictions);
case PUB:
case MOD:
- case EXTERN_TOK:
+ case EXTERN_KW:
case USE:
- case FN_TOK:
+ case FN_KW:
case TYPE:
- case STRUCT_TOK:
- case ENUM_TOK:
+ case STRUCT_KW:
+ case ENUM_KW:
case CONST:
- case STATIC_TOK:
+ case STATIC_KW:
case AUTO:
case TRAIT:
case IMPL:
if (locus == UNKNOWN_LOCATION)
{
locus = lexer.peek_token ()->get_locus ();
- skip_token (RETURN_TOK);
+ skip_token (RETURN_KW);
}
// parse expression to return, if it exists
if (locus == UNKNOWN_LOCATION)
{
locus = lexer.peek_token ()->get_locus ();
- skip_token (MATCH_TOK);
+ skip_token (MATCH_KW);
}
/* parse scrutinee expression, which is required (and HACK to prevent struct
case ASYNC:
case CONST:
case UNSAFE:
- case EXTERN_TOK:
- case FN_TOK:
+ case EXTERN_KW:
+ case FN_KW:
// bare function type (with no for lifetimes)
return parse_bare_function_type (std::vector<AST::LifetimeParam> ());
case IMPL:
case ASYNC:
case CONST:
case UNSAFE:
- case EXTERN_TOK:
- case FN_TOK:
+ case EXTERN_KW:
+ case FN_KW:
return parse_bare_function_type (std::move (for_lifetimes));
case SCOPE_RESOLUTION:
case IDENTIFIER:
AST::FunctionQualifiers qualifiers = parse_function_qualifiers ();
- if (!skip_token (FN_TOK))
+ if (!skip_token (FN_KW))
return nullptr;
if (!skip_token (LEFT_PAREN))
case ASYNC:
case CONST:
case UNSAFE:
- case EXTERN_TOK:
- case FN_TOK:
+ case EXTERN_KW:
+ case FN_KW:
// bare function type (with no for lifetimes)
return parse_bare_function_type (std::vector<AST::LifetimeParam> ());
case IMPL:
}
case PUB:
case MOD:
- case EXTERN_TOK:
+ case EXTERN_KW:
case USE:
- case FN_TOK:
+ case FN_KW:
case TYPE:
- case STRUCT_TOK:
- case ENUM_TOK:
+ case STRUCT_KW:
+ case ENUM_KW:
case CONST:
- case STATIC_TOK:
+ case STATIC_KW:
case AUTO:
case TRAIT:
case IMPL: {
parse_vis_item (std::move (outer_attrs)));
return ExprOrStmt (std::move (item));
}
- case EXTERN_TOK:
- case FN_TOK: {
+ case EXTERN_KW:
+ case FN_KW: {
// unsafe function
std::unique_ptr<AST::VisItem> item (
parse_vis_item (std::move (outer_attrs)));
case DOT_DOT_EQ:
// range to inclusive expr
return parse_range_to_inclusive_expr (tok, std::move (outer_attrs));
- case RETURN_TOK:
+ case RETURN_KW:
// FIXME: is this really a null denotation expression?
return parse_return_expr (std::move (outer_attrs), tok->get_locus ());
case BREAK:
case FOR:
return parse_for_loop_expr (std::move (outer_attrs),
AST::LoopLabel::error ());
- case MATCH_TOK:
+ case MATCH_KW:
// also an expression with block
return parse_match_expr (std::move (outer_attrs), tok->get_locus ());
case LEFT_SQUARE:
DO,
DYN,
ELSE,
- ENUM_TOK,
- EXTERN_TOK,
+ ENUM_KW,
+ EXTERN_KW,
FALSE_LITERAL,
- FINAL_TOK,
- FN_TOK,
+ FINAL_KW,
+ FN_KW,
FOR,
IF,
IMPL,
LET,
LOOP,
MACRO,
- MATCH_TOK,
+ MATCH_KW,
MOD,
MOVE,
MUT,
- OVERRIDE_TOK,
+ OVERRIDE_KW,
PUB,
REF,
- RETURN_TOK,
+ RETURN_KW,
SELF_ALIAS,
SELF,
- STATIC_TOK,
- STRUCT_TOK,
+ STATIC_KW,
+ STRUCT_KW,
SUPER,
TRAIT,
TRUE_LITERAL,
case DO:
case DYN:
case ELSE:
- case ENUM_TOK:
- case EXTERN_TOK:
- case FINAL_TOK:
- case FN_TOK:
+ case ENUM_KW:
+ case EXTERN_KW:
+ case FINAL_KW:
+ case FN_KW:
case FOR:
case IF:
case IMPL:
case LET:
case LOOP:
case MACRO:
- case MATCH_TOK:
+ case MATCH_KW:
case MOD:
case MOVE:
case MUT:
- case OVERRIDE_TOK:
+ case OVERRIDE_KW:
case PRIV:
case PUB:
case REF:
- case RETURN_TOK:
+ case RETURN_KW:
case SELF_ALIAS:
case SELF:
- case STATIC_TOK:
- case STRUCT_TOK:
+ case STATIC_KW:
+ case STRUCT_KW:
case SUPER:
case TRAIT:
case TRY: