rhai/tools/reserved.txt

109 lines
3.7 KiB
Plaintext
Raw Normal View History

2023-03-15 10:22:11 +01:00
// This file holds a list of reserved symbols for the Rhai language.
//
// The mapped attributes are:
// - is this a reserved symbol? (bool)
// - can this keyword be called normally as a function? (bool)
// - can this keyword be called in method-call style? (bool)
//
// Generate the output table via:
// ```bash
2023-03-31 03:00:52 +02:00
// gperf reserved.txt
2023-03-15 10:22:11 +01:00
// ```
//
// Since GNU gperf does not produce Rust output, the ANSI-C output must be hand-edited and
// manually spliced into `tokenizer.rs`.
//
// This includes:
// * Rewrite the C hashing program (especially since it uses a `switch` statement with fall-through)
// into equivalent Rust as the function `is_reserved_keyword_or_symbol`.
// * Update the values for the `???_RESERVED_???` constants.
// * Copy the `asso_values` array into `RESERVED_ASSOC_VALUES`.
// * Copy the `wordlist` array into `RESERVED_LIST` with the following modifications:
// - Remove the `#line` comments
// - Change the entry wrapping `{ .. }` into tuples `( .. )`
// - Feature flags can be incorporated directly into the output via the `cfg!` macro
//
2023-03-31 03:00:52 +02:00
%global-table
%struct-type
%omit-struct-type
%define initializer-suffix ,false,false,false
2023-03-15 10:22:11 +01:00
struct reserved;
%%
2023-03-31 03:00:52 +02:00
# reserved under certain flags
#
?., cfg!(feature = no_object), false, false
?[, cfg!(feature = no_index), false, false
fn, cfg!(feature = no_function), false, false
private, cfg!(feature = no_function), false, false
import, cfg!(feature = no_module), false, false
export, cfg!(feature = no_module), false, false
as, cfg!(feature = no_module), false, false
#
# reserved symbols
#
===, true, false, false
!==, true, false, false
->, true, false, false
<-, true, false, false
?, true, false, false
:=, true, false, false
:;, true, false, false
~, true, false, false
!., true, false, false
::<, true, false, false
(*, true, false, false
*), true, false, false
2023-03-15 10:22:11 +01:00
"#", true, false, false
"#!", true, false, false
2023-03-31 03:00:52 +02:00
@, true, false, false
$, true, false, false
++, true, false, false
--, true, false, false
..., true, false, false
<|, true, false, false
|>, true, false, false
#
# reserved keywords
#
public, true, false, false
protected, true, false, false
super, true, false, false
new, true, false, false
use, true, false, false
module, true, false, false
package, true, false, false
var, true, false, false
static, true, false, false
shared, true, false, false
with, true, false, false
is, true, false, false
goto, true, false, false
exit, true, false, false
match, true, false, false
case, true, false, false
default, true, false, false
void, true, false, false
null, true, false, false
nil, true, false, false
spawn, true, false, false
thread, true, false, false
go, true, false, false
sync, true, false, false
async, true, false, false
await, true, false, false
yield, true, false, false
#
# keyword functions
#
print, true, true, false
debug, true, true, false
type_of, true, true, true
eval, true, true, false
Fn, true, true, false
call, true, true, true
curry, true, true, true
this, true, false, false
is_def_var, true, true, false
is_def_fn, cfg!(not(feature = no_function)), true, false
is_shared, cfg!(not(feature = no_closure)), true, true