615 lines
17 KiB
Plaintext
615 lines
17 KiB
Plaintext
================================================================================
|
|
From keyword can be a variable
|
|
================================================================================
|
|
|
|
var a = Assert.Range(from, to);
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(invocation_expression
|
|
function: (member_access_expression
|
|
expression: (identifier)
|
|
name: (identifier))
|
|
arguments: (argument_list
|
|
(argument
|
|
(identifier))
|
|
(argument
|
|
(identifier))))))))))
|
|
|
|
================================================================================
|
|
File keyword in invocation
|
|
================================================================================
|
|
|
|
file.Method(1, 2);
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (member_access_expression
|
|
expression: (identifier)
|
|
name: (identifier))
|
|
arguments: (argument_list
|
|
(argument
|
|
(integer_literal))
|
|
(argument
|
|
(integer_literal)))))))
|
|
|
|
================================================================================
|
|
File contextual keyword
|
|
================================================================================
|
|
|
|
void file() { }
|
|
void m(file p) { }
|
|
void m(int file) { }
|
|
void m()
|
|
{
|
|
file v = null;
|
|
int file = file;
|
|
|
|
file();
|
|
m(file);
|
|
|
|
var x = file + 1;
|
|
}
|
|
|
|
file class file { }
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (identifier)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (predefined_type)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(null_literal)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(identifier)))))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list)))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list
|
|
(argument
|
|
(identifier)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(binary_expression
|
|
left: (identifier)
|
|
right: (integer_literal)))))))))
|
|
(class_declaration
|
|
(modifier)
|
|
name: (identifier)
|
|
body: (declaration_list)))
|
|
|
|
================================================================================
|
|
Scoped contextual keyword
|
|
================================================================================
|
|
|
|
void scoped() { }
|
|
void m(scoped p) { }
|
|
void m(scoped ref int p) { }
|
|
void m(scoped ref scoped p) { }
|
|
void m(int scoped) { }
|
|
void m()
|
|
{
|
|
scoped v = null;
|
|
scoped ref int v = null;
|
|
scoped ref scoped v = null;
|
|
int scoped = null;
|
|
|
|
scoped();
|
|
m(scoped);
|
|
|
|
var x = scoped + 1;
|
|
var l = scoped => null;
|
|
var l = (scoped i) => null;
|
|
var l = (scoped, i) => null;
|
|
var l = scoped (int i, int j) => null;
|
|
}
|
|
|
|
class scoped { }
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (identifier)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
(parameter_modifier)
|
|
(parameter_modifier)
|
|
type: (predefined_type)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
(parameter_modifier)
|
|
(parameter_modifier)
|
|
type: (identifier)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (predefined_type)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(null_literal)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (scoped_type
|
|
type: (ref_type
|
|
type: (predefined_type)))
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(null_literal)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (scoped_type
|
|
type: (ref_type
|
|
type: (identifier)))
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(null_literal)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(null_literal)))))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list)))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list
|
|
(argument
|
|
(identifier)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(binary_expression
|
|
left: (identifier)
|
|
right: (integer_literal))))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(lambda_expression
|
|
parameters: (implicit_parameter_list
|
|
(parameter
|
|
name: (identifier)))
|
|
body: (null_literal))))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(lambda_expression
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (identifier)
|
|
name: (identifier)))
|
|
body: (null_literal))))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(lambda_expression
|
|
parameters: (parameter_list
|
|
(parameter
|
|
name: (identifier))
|
|
(parameter
|
|
name: (identifier)))
|
|
body: (null_literal))))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(lambda_expression
|
|
type: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (predefined_type)
|
|
name: (identifier))
|
|
(parameter
|
|
type: (predefined_type)
|
|
name: (identifier)))
|
|
body: (null_literal)))))))))
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list)))
|
|
|
|
================================================================================
|
|
Set contextual keyword
|
|
================================================================================
|
|
|
|
void set() { }
|
|
void m(set p) { }
|
|
void m(int set) { }
|
|
void m()
|
|
{
|
|
set v = null;
|
|
int set = set;
|
|
|
|
set();
|
|
m(set);
|
|
|
|
var x = set + 1;
|
|
}
|
|
|
|
class set { }
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (identifier)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (predefined_type)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(null_literal)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(identifier)))))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list)))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list
|
|
(argument
|
|
(identifier)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(binary_expression
|
|
left: (identifier)
|
|
right: (integer_literal)))))))))
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list)))
|
|
|
|
================================================================================
|
|
Var contextual keyword
|
|
================================================================================
|
|
|
|
void var() { }
|
|
void m(var p) { }
|
|
void m(int var) { }
|
|
void m()
|
|
{
|
|
var v = null;
|
|
int var = var;
|
|
var var = 1;
|
|
|
|
var();
|
|
m(var);
|
|
|
|
var x = var + 1;
|
|
}
|
|
|
|
class var { }
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (implicit_type)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (predefined_type)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(null_literal)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(identifier)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(integer_literal)))))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list)))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list
|
|
(argument
|
|
(identifier)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(binary_expression
|
|
left: (identifier)
|
|
right: (integer_literal)))))))))
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list)))
|
|
|
|
================================================================================
|
|
Nameof contextual keyword
|
|
================================================================================
|
|
|
|
void nameof() { }
|
|
void m(nameof p) { }
|
|
void m(int nameof) { }
|
|
void m()
|
|
{
|
|
nameof v = null;
|
|
int nameof = nameof;
|
|
|
|
nameof();
|
|
nameof(a, b);
|
|
m(nameof);
|
|
|
|
var x = nameof + 1;
|
|
}
|
|
|
|
class nameof { }
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (identifier)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (predefined_type)
|
|
name: (identifier)))
|
|
body: (block)))
|
|
(global_statement
|
|
(local_function_statement
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list)
|
|
body: (block
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(null_literal)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(identifier)))))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list)))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list
|
|
(argument
|
|
(identifier))
|
|
(argument
|
|
(identifier)))))
|
|
(expression_statement
|
|
(invocation_expression
|
|
function: (identifier)
|
|
arguments: (argument_list
|
|
(argument
|
|
(identifier)))))
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(binary_expression
|
|
left: (identifier)
|
|
right: (integer_literal)))))))))
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list)))
|