1264 lines
39 KiB
Plaintext
1264 lines
39 KiB
Plaintext
================================================================================
|
|
integer literals
|
|
================================================================================
|
|
|
|
const int dec = 1_2;
|
|
const long hex = 0xf_1l;
|
|
const long hex2 = 0Xffff;
|
|
const long hex3 = 0x_0_f;
|
|
const UInt64 dec = 1uL;
|
|
const UInt16 bin = 0b0100_100;
|
|
const UInt16 bin2 = 0B01010__10;
|
|
const long bin3 = 0b_0_10;
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(integer_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(integer_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(integer_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(integer_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(integer_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(integer_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(integer_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(integer_literal)))))))
|
|
|
|
================================================================================
|
|
boolean literals
|
|
================================================================================
|
|
|
|
const bool t = true, u = false;
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(boolean_literal)))
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(boolean_literal)))))))
|
|
|
|
================================================================================
|
|
char literals
|
|
================================================================================
|
|
|
|
const char c = 'a';
|
|
const char esc = '\n';
|
|
const char hex = '\xf09a';
|
|
const char uni16 = '\ua0bf';
|
|
const char uni32 = '\UA0BFf9ca';
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(character_literal
|
|
(character_literal_unescaped)))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(character_literal
|
|
(escape_sequence)))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(character_literal
|
|
(escape_sequence)))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(character_literal
|
|
(escape_sequence)))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(character_literal
|
|
(escape_sequence))))))))
|
|
|
|
================================================================================
|
|
real literals
|
|
================================================================================
|
|
|
|
const float s = 012.23F;
|
|
const float e = 1e6f;
|
|
const Single en = 0e-1f;
|
|
const Single ep = 1_1e+12f;
|
|
const double d = 0.9_9d;
|
|
const double e = .4_9d;
|
|
const decimal m = 0_1_2.9m;
|
|
const Decimal m2 = 102.349M;
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(real_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(real_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(real_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(real_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(real_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(real_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(real_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(real_literal)))))))
|
|
|
|
================================================================================
|
|
null literals
|
|
================================================================================
|
|
|
|
const string x = null;
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(modifier)
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(null_literal)))))))
|
|
|
|
================================================================================
|
|
string literals
|
|
================================================================================
|
|
|
|
class A {
|
|
String e = "";
|
|
string s = "a";
|
|
string m = "abc";
|
|
string esc = "ab\"\t";
|
|
string hex = "ab\x22r";
|
|
string hex2 = "\x22r\x00";
|
|
string u16 = "\ub0d0ok";
|
|
string u32 = "\uF1D20ff0test";
|
|
string ve = @"";
|
|
string v = @"abcde\ef";
|
|
string quotes = @"<TestClass xmlns=""http://example.com/omg"" xmlns:i=""http://www.w3.org/2001/XMLSchema-instance""></TestClass>";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (identifier)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal)))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(string_literal_fragment))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(string_literal_fragment))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(string_literal_fragment)
|
|
(escape_sequence)
|
|
(escape_sequence))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(string_literal_fragment)
|
|
(escape_sequence)
|
|
(string_literal_fragment))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(escape_sequence)
|
|
(string_literal_fragment)
|
|
(escape_sequence))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(escape_sequence)
|
|
(string_literal_fragment))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(escape_sequence)
|
|
(string_literal_fragment))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(verbatim_string_literal)))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(verbatim_string_literal)))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(verbatim_string_literal))))))))
|
|
|
|
================================================================================
|
|
string literals
|
|
================================================================================
|
|
|
|
var e = @"This
|
|
is
|
|
a
|
|
multi-line";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(verbatim_string_literal)))))))
|
|
|
|
================================================================================
|
|
string literals containing the line comment token
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = "//\n//";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(string_literal_fragment)
|
|
(escape_sequence)
|
|
(string_literal_fragment)))))))))
|
|
|
|
================================================================================
|
|
utf-8 string literals
|
|
================================================================================
|
|
|
|
var a = "lower"u8;
|
|
var b = "upper"U8;
|
|
var c = @"lower"u8;
|
|
var d = @"upper"U8;
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(string_literal_fragment)
|
|
(string_literal_encoding)))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(string_literal_fragment)
|
|
(string_literal_encoding)))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(verbatim_string_literal))))))
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(verbatim_string_literal)))))))
|
|
|
|
================================================================================
|
|
string literals containing newline
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = $"This contains {
|
|
abc
|
|
}";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_string_text)
|
|
(interpolation
|
|
(identifier))))))))))
|
|
|
|
================================================================================
|
|
string literals containing block comment
|
|
================================================================================
|
|
|
|
string s = "\u0065/* \u0065 */\u0065";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(string_literal
|
|
(escape_sequence)
|
|
(string_literal_fragment)
|
|
(escape_sequence)
|
|
(string_literal_fragment)
|
|
(escape_sequence))))))))
|
|
|
|
================================================================================
|
|
verbatim string literals containing block comment
|
|
================================================================================
|
|
|
|
string s = @"/* comment */";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(verbatim_string_literal)))))))
|
|
|
|
================================================================================
|
|
interpolated string literals
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = $"hello";
|
|
string esc = $"ab\"\t";
|
|
string double = $"{{nope}}";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_string_text))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_string_text)
|
|
(interpolated_string_text
|
|
(escape_sequence))
|
|
(interpolated_string_text
|
|
(escape_sequence)))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_string_text)
|
|
(interpolated_string_text)))))))))
|
|
|
|
================================================================================
|
|
interpolated string literals with expressions
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = $"hello {name}, how are you?";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_string_text)))))))))
|
|
|
|
================================================================================
|
|
interpolated string literals with formatted expressions
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = $"hello {name:0.00}, how are you?";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_string_text)
|
|
(interpolation
|
|
(identifier)
|
|
(interpolation_format_clause))
|
|
(interpolated_string_text)))))))))
|
|
|
|
================================================================================
|
|
interpolated string literals with alignment expressions
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = $"hello {name,25}, how are you?";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_string_text)
|
|
(interpolation
|
|
(identifier)
|
|
(interpolation_alignment_clause
|
|
(integer_literal)))
|
|
(interpolated_string_text)))))))))
|
|
|
|
================================================================================
|
|
interpolated string literals containing block comment
|
|
================================================================================
|
|
|
|
string s = $"\u0065/* \u0065 */\u0065";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_string_text
|
|
(escape_sequence))
|
|
(interpolated_string_text)
|
|
(interpolated_string_text
|
|
(escape_sequence))
|
|
(interpolated_string_text)
|
|
(interpolated_string_text
|
|
(escape_sequence)))))))))
|
|
|
|
================================================================================
|
|
interpolated verbatim string literals
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = $@"hello";
|
|
string s = @$"hello";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_verbatim_string_text))))))
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_verbatim_string_text)))))))))
|
|
|
|
================================================================================
|
|
interpolated verbatim string literals with expressions
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = $@"hello {name}, how are you?";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_verbatim_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_verbatim_string_text)))))))))
|
|
|
|
================================================================================
|
|
interpolated verbatim string literals with formatted expressions
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = $@"hello {name:g}, how are you?";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_verbatim_string_text)
|
|
(interpolation
|
|
(identifier)
|
|
(interpolation_format_clause))
|
|
(interpolated_verbatim_string_text)))))))))
|
|
|
|
================================================================================
|
|
interpolated verbatim string literals with alignment expressions
|
|
================================================================================
|
|
|
|
class A {
|
|
string s = $@"hello {name,-10}, how are you?";
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(class_declaration
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(field_declaration
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_verbatim_string_text)
|
|
(interpolation
|
|
(identifier)
|
|
(interpolation_alignment_clause
|
|
(prefix_unary_expression
|
|
(integer_literal))))
|
|
(interpolated_verbatim_string_text)))))))))
|
|
|
|
================================================================================
|
|
interpolated verbatim string literals bracket escapes (WRONG!)
|
|
================================================================================
|
|
|
|
var s = $@"Another
|
|
multiple
|
|
line";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_verbatim_string_text))))))))
|
|
|
|
================================================================================
|
|
interpolated verbatim string literals bracket escapes
|
|
================================================================================
|
|
|
|
string s = $@"
|
|
class A
|
|
{{
|
|
bool Method(int value)
|
|
{{
|
|
return value is {operatorText} 3 or {operatorText} 5;
|
|
}}
|
|
}}
|
|
";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_verbatim_string_text)
|
|
(interpolated_verbatim_string_text)
|
|
(interpolated_verbatim_string_text)
|
|
(interpolated_verbatim_string_text)
|
|
(interpolated_verbatim_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_verbatim_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_verbatim_string_text))))))))
|
|
|
|
================================================================================
|
|
interpolated verbatim string containing block comment
|
|
================================================================================
|
|
|
|
string s = $@"{a}/* comment */{a}";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_verbatim_string_text)
|
|
(interpolation
|
|
(identifier)))))))))
|
|
|
|
================================================================================
|
|
interpolated verbatim string comment with interpolation
|
|
================================================================================
|
|
|
|
var x = $@"/* {world} */";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_verbatim_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_verbatim_string_text))))))))
|
|
|
|
================================================================================
|
|
Raw string literal (basic)
|
|
================================================================================
|
|
|
|
var x = """Hello""";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(raw_string_literal)))))))
|
|
|
|
================================================================================
|
|
Raw string literal (multi-line)
|
|
================================================================================
|
|
|
|
var x = """
|
|
Hello
|
|
""";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(raw_string_literal)))))))
|
|
|
|
================================================================================
|
|
Raw string literal (embedded one double quotes)
|
|
================================================================================
|
|
|
|
var x = """
|
|
Hello "Damien"
|
|
""";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(raw_string_literal)))))))
|
|
|
|
================================================================================
|
|
Raw string literal (embedded two double quotes)
|
|
================================================================================
|
|
|
|
var x = """
|
|
Hello ""Damien""
|
|
""";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(raw_string_literal)))))))
|
|
|
|
================================================================================
|
|
Raw string literal (UTF-8)
|
|
================================================================================
|
|
|
|
var x = """
|
|
Hello "Damien"
|
|
"""u8;
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(raw_string_literal)))))))
|
|
|
|
================================================================================
|
|
Interpolated raw string literal (basic)
|
|
================================================================================
|
|
|
|
var x = $"""The point {X}, {Y} is {Math.Sqrt(X * X + Y * Y)} from the origin""";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(invocation_expression
|
|
function: (member_access_expression
|
|
expression: (identifier)
|
|
name: (identifier))
|
|
arguments: (argument_list
|
|
(argument
|
|
(binary_expression
|
|
left: (binary_expression
|
|
left: (identifier)
|
|
right: (identifier))
|
|
right: (binary_expression
|
|
left: (identifier)
|
|
right: (identifier)))))))
|
|
(interpolated_raw_string_text))))))))
|
|
|
|
================================================================================
|
|
Interpolated raw string literal (one double quotes)
|
|
================================================================================
|
|
|
|
var x = $"""The point "{X}, {Y}" is {Math.Sqrt(X * X + Y * Y)} from the origin""";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_raw_string_text)
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_raw_string_text)
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(invocation_expression
|
|
function: (member_access_expression
|
|
expression: (identifier)
|
|
name: (identifier))
|
|
arguments: (argument_list
|
|
(argument
|
|
(binary_expression
|
|
left: (binary_expression
|
|
left: (identifier)
|
|
right: (identifier))
|
|
right: (binary_expression
|
|
left: (identifier)
|
|
right: (identifier)))))))
|
|
(interpolated_raw_string_text))))))))
|
|
|
|
================================================================================
|
|
Interpolated raw string literal (two double quotes)
|
|
================================================================================
|
|
|
|
var x = $"""The point ""{X}, {Y}"" is {Math.Sqrt(X * X + Y * Y)} from the origin""";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_raw_string_text)
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_raw_string_text)
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(invocation_expression
|
|
function: (member_access_expression
|
|
expression: (identifier)
|
|
name: (identifier))
|
|
arguments: (argument_list
|
|
(argument
|
|
(binary_expression
|
|
left: (binary_expression
|
|
left: (identifier)
|
|
right: (identifier))
|
|
right: (binary_expression
|
|
left: (identifier)
|
|
right: (identifier)))))))
|
|
(interpolated_raw_string_text))))))))
|
|
|
|
================================================================================
|
|
Interpolated raw string literal (multi-line)
|
|
================================================================================
|
|
|
|
var x = $"""The point
|
|
""{X}, {Y}""
|
|
is {Math.Sqrt(X * X + Y * Y)}
|
|
from the origin""";
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(global_statement
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (implicit_type)
|
|
(variable_declarator
|
|
name: (identifier)
|
|
(equals_value_clause
|
|
(interpolated_string_expression
|
|
(interpolated_raw_string_text)
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(identifier))
|
|
(interpolated_raw_string_text)
|
|
(interpolated_raw_string_text)
|
|
(interpolation
|
|
(invocation_expression
|
|
function: (member_access_expression
|
|
expression: (identifier)
|
|
name: (identifier))
|
|
arguments: (argument_list
|
|
(argument
|
|
(binary_expression
|
|
left: (binary_expression
|
|
left: (identifier)
|
|
right: (identifier))
|
|
right: (binary_expression
|
|
left: (identifier)
|
|
right: (identifier)))))))
|
|
(interpolated_raw_string_text))))))))
|
|
|
|
================================================================================
|
|
multiple raw string literals should not be combined
|
|
================================================================================
|
|
|
|
using System;
|
|
|
|
public class RawStringLiterals {
|
|
public static void Main(string[] args) {
|
|
string tb1, tb2, tb3;
|
|
tb1 = """text block 1""";
|
|
tb2 = """
|
|
text block 2
|
|
""";
|
|
tb3 = """"
|
|
text block 3
|
|
"""";
|
|
}
|
|
}
|
|
|
|
--------------------------------------------------------------------------------
|
|
|
|
(compilation_unit
|
|
(using_directive
|
|
name: (identifier))
|
|
(class_declaration
|
|
(modifier)
|
|
name: (identifier)
|
|
body: (declaration_list
|
|
(method_declaration
|
|
(modifier)
|
|
(modifier)
|
|
type: (predefined_type)
|
|
name: (identifier)
|
|
parameters: (parameter_list
|
|
(parameter
|
|
type: (array_type
|
|
type: (predefined_type)
|
|
rank: (array_rank_specifier))
|
|
name: (identifier)))
|
|
body: (block
|
|
(local_declaration_statement
|
|
(variable_declaration
|
|
type: (predefined_type)
|
|
(variable_declarator
|
|
name: (identifier))
|
|
(variable_declarator
|
|
name: (identifier))
|
|
(variable_declarator
|
|
name: (identifier))))
|
|
(expression_statement
|
|
(assignment_expression
|
|
left: (identifier)
|
|
(assignment_operator)
|
|
right: (raw_string_literal)))
|
|
(expression_statement
|
|
(assignment_expression
|
|
left: (identifier)
|
|
(assignment_operator)
|
|
right: (raw_string_literal)))
|
|
(expression_statement
|
|
(assignment_expression
|
|
left: (identifier)
|
|
(assignment_operator)
|
|
right: (raw_string_literal))))))))
|