add argument

pull/185/head
Tim Whiting 2021-06-04 09:33:29 +07:00
parent 6f332a211a
commit 7d7fa53d4a
12 changed files with 55559 additions and 56044 deletions

@ -127,9 +127,9 @@ module.exports = grammar({
[$.library_name, $.dotted_identifier_list],
[$._top_level_definition, $.inferred_type],
[$._final_const_var_or_type, $._top_level_definition, $.function_signature],
[$.assignable_selector_part, $.selector],
[$.assignable_selector_part, $._postfix_expression],
[$.assignable_selector_part, $.postfix_expression],
[$._assignable_selector_part, $.selector],
[$._assignable_selector_part, $._postfix_expression],
[$._assignable_selector_part, $.postfix_expression],
[$._primary, $.assignable_expression],
[$._simple_formal_parameter, $.assignable_expression],
// [$._type_name, $._primary, $.assignable_expression],
@ -629,14 +629,14 @@ module.exports = grammar({
)),
assignable_expression: $ => choice(
seq($._primary, $.assignable_selector_part), // dart issue?
seq($._primary, $._assignable_selector_part), // dart issue?
seq($.super, $.unconditional_assignable_selector),
seq($.constructor_invocation, $.assignable_selector_part),
seq($.constructor_invocation, $._assignable_selector_part),
$.identifier
),
assignable_selector_part: $ => seq(
_assignable_selector_part: $ => seq(
repeat($.selector),
$.assignable_selector
$._assignable_selector
),
//'+=', '-=', '*=', '/=', '&=', '|=', '^=', '%=', '<<=', '>>=', '>>>=', '??='
//todo: use the op names in place of these.
@ -962,7 +962,7 @@ module.exports = grammar({
selector: $ => choice(
// '!',
$._exclamation_operator,
$.assignable_selector,
$._assignable_selector,
$.argument_part
),
@ -1072,7 +1072,7 @@ module.exports = grammar({
_argument_list: $ => choice(
commaSep1($.named_argument),
seq(commaSep1($._expression),
seq(commaSep1($.argument),
repeat(
seq(
',',
@ -1082,6 +1082,8 @@ module.exports = grammar({
)
),
argument: $ => $._expression,
named_argument: $ => seq($.label, $._expression),
cascade_section: $ => prec.left(
@ -1103,7 +1105,7 @@ module.exports = grammar({
// DART_PREC.Cascade,
// ),
_cascade_subsection: $ => seq(
$.assignable_selector,
$._assignable_selector,
repeat($.argument_part)
),
_cascade_assignment_section: $ => seq(
@ -1130,9 +1132,11 @@ module.exports = grammar({
seq('.', $.identifier)
),
assignable_selector: $ => choice(
conditional_assignable_selector: $ => seq('?.', $.identifier),
_assignable_selector: $ => choice(
$.unconditional_assignable_selector,
seq('?.', $.identifier)
$.conditional_assignable_selector
),
type_arguments: $ => choice( // was prec.right

@ -0,0 +1,13 @@
try {
module.exports = require("./build/Release/tree_sitter_dart_binding");
} catch (error) {
try {
module.exports = require("./build/Debug/tree_sitter_dart_binding");
} catch (_) {
throw error
}
}
try {
module.exports.nodeTypeInfo = require("./src/node-types.json");
} catch (_) {}

@ -0,0 +1,28 @@
#include "tree_sitter/parser.h"
#include <node.h>
#include "nan.h"
using namespace v8;
extern "C" TSLanguage * tree_sitter_dart();
namespace {
NAN_METHOD(New) {}
void Init(Local<Object> exports, Local<Object> module) {
Local<FunctionTemplate> tpl = Nan::New<FunctionTemplate>(New);
tpl->SetClassName(Nan::New("Language").ToLocalChecked());
tpl->InstanceTemplate()->SetInternalFieldCount(1);
Local<Function> constructor = Nan::GetFunction(tpl).ToLocalChecked();
Local<Object> instance = constructor->NewInstance(Nan::GetCurrentContext()).ToLocalChecked();
Nan::SetInternalFieldPointer(instance, 0, tree_sitter_dart());
Nan::Set(instance, Nan::New("name").ToLocalChecked(), Nan::New("dart").ToLocalChecked());
Nan::Set(module, Nan::New("exports").ToLocalChecked(), instance);
}
NODE_MODULE(tree_sitter_dart_binding, Init)
} // namespace

@ -1876,7 +1876,7 @@
},
{
"type": "SYMBOL",
"name": "assignable_selector_part"
"name": "_assignable_selector_part"
}
]
},
@ -1902,7 +1902,7 @@
},
{
"type": "SYMBOL",
"name": "assignable_selector_part"
"name": "_assignable_selector_part"
}
]
},
@ -1912,7 +1912,7 @@
}
]
},
"assignable_selector_part": {
"_assignable_selector_part": {
"type": "SEQ",
"members": [
{
@ -1924,7 +1924,7 @@
},
{
"type": "SYMBOL",
"name": "assignable_selector"
"name": "_assignable_selector"
}
]
},
@ -2981,7 +2981,7 @@
},
{
"type": "SYMBOL",
"name": "assignable_selector"
"name": "_assignable_selector"
},
{
"type": "SYMBOL",
@ -3359,7 +3359,7 @@
"members": [
{
"type": "SYMBOL",
"name": "_expression"
"name": "argument"
},
{
"type": "REPEAT",
@ -3372,7 +3372,7 @@
},
{
"type": "SYMBOL",
"name": "_expression"
"name": "argument"
}
]
}
@ -3420,6 +3420,10 @@
}
]
},
"argument": {
"type": "SYMBOL",
"name": "_expression"
},
"named_argument": {
"type": "SEQ",
"members": [
@ -3481,7 +3485,7 @@
"members": [
{
"type": "SYMBOL",
"name": "assignable_selector"
"name": "_assignable_selector"
},
{
"type": "REPEAT",
@ -3611,7 +3615,20 @@
}
]
},
"assignable_selector": {
"conditional_assignable_selector": {
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "?."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
},
"_assignable_selector": {
"type": "CHOICE",
"members": [
{
@ -3619,17 +3636,8 @@
"name": "unconditional_assignable_selector"
},
{
"type": "SEQ",
"members": [
{
"type": "STRING",
"value": "?."
},
{
"type": "SYMBOL",
"name": "identifier"
}
]
"type": "SYMBOL",
"name": "conditional_assignable_selector"
}
]
},
@ -9834,15 +9842,15 @@
"function_signature"
],
[
"assignable_selector_part",
"_assignable_selector_part",
"selector"
],
[
"assignable_selector_part",
"_assignable_selector_part",
"_postfix_expression"
],
[
"assignable_selector_part",
"_assignable_selector_part",
"postfix_expression"
],
[
@ -9928,7 +9936,6 @@
"function_signature"
]
],
"precedences": [],
"externals": [
{
"type": "SYMBOL",

@ -300,31 +300,12 @@
}
},
{
"type": "argument_part",
"type": "argument",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "arguments",
"named": true
},
{
"type": "type_arguments",
"named": true
}
]
}
},
{
"type": "arguments",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "_literal",
@ -390,10 +371,6 @@
"type": "multiplicative_expression",
"named": true
},
{
"type": "named_argument",
"named": true
},
{
"type": "new_expression",
"named": true
@ -445,6 +422,44 @@
]
}
},
{
"type": "argument_part",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "arguments",
"named": true
},
{
"type": "type_arguments",
"named": true
}
]
}
},
{
"type": "arguments",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": false,
"types": [
{
"type": "argument",
"named": true
},
{
"type": "named_argument",
"named": true
}
]
}
},
{
"type": "as_operator",
"named": true,
@ -604,10 +619,6 @@
"type": "additive_expression",
"named": true
},
{
"type": "assignable_selector_part",
"named": true
},
{
"type": "assignment_expression",
"named": true
@ -628,6 +639,10 @@
"type": "cascade_section",
"named": true
},
{
"type": "conditional_assignable_selector",
"named": true
},
{
"type": "conditional_expression",
"named": true
@ -719,44 +734,6 @@
]
}
},
{
"type": "assignable_selector",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
},
{
"type": "unconditional_assignable_selector",
"named": true
}
]
}
},
{
"type": "assignable_selector_part",
"named": true,
"fields": {},
"children": {
"multiple": true,
"required": true,
"types": [
{
"type": "assignable_selector",
"named": true
},
{
"type": "selector",
"named": true
}
]
}
},
{
"type": "assignment_expression",
"named": true,
@ -772,7 +749,7 @@
]
},
"operator": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -826,7 +803,7 @@
]
},
"right": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -968,7 +945,7 @@
]
},
"operator": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -1022,7 +999,7 @@
]
},
"right": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -1735,10 +1712,6 @@
"type": "argument_part",
"named": true
},
{
"type": "assignable_selector",
"named": true
},
{
"type": "assignment_expression",
"named": true
@ -1767,6 +1740,10 @@
"type": "cascade_selector",
"named": true
},
{
"type": "conditional_assignable_selector",
"named": true
},
{
"type": "conditional_expression",
"named": true
@ -2116,12 +2093,27 @@
]
}
},
{
"type": "conditional_assignable_selector",
"named": true,
"fields": {},
"children": {
"multiple": false,
"required": true,
"types": [
{
"type": "identifier",
"named": true
}
]
}
},
{
"type": "conditional_expression",
"named": true,
"fields": {
"alternative": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -2255,7 +2247,7 @@
]
},
"consequence": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -3114,7 +3106,7 @@
]
},
"object": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
@ -3424,7 +3416,7 @@
]
},
"class": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -3646,7 +3638,7 @@
"named": true,
"fields": {
"body": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -3788,7 +3780,7 @@
]
},
"condition": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
@ -4180,7 +4172,7 @@
]
},
"value": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
@ -4368,7 +4360,7 @@
]
},
"condition": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
@ -4760,7 +4752,7 @@
]
},
"value": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
@ -5168,7 +5160,7 @@
]
},
"parameters": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -5443,7 +5435,7 @@
"named": true,
"fields": {
"alternative": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
@ -5595,7 +5587,7 @@
]
},
"consequence": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -5743,7 +5735,7 @@
"named": true,
"fields": {
"first": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -5870,7 +5862,7 @@
},
"second": {
"multiple": true,
"required": true,
"required": false,
"types": [
{
"type": "(",
@ -6236,7 +6228,7 @@
]
},
"value": {
"multiple": true,
"multiple": false,
"required": false,
"types": [
{
@ -7605,7 +7597,7 @@
"fields": {},
"children": {
"multiple": true,
"required": false,
"required": true,
"types": [
{
"type": "_literal",
@ -7765,7 +7757,7 @@
"named": true,
"fields": {
"key": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -7891,7 +7883,7 @@
]
},
"value": {
"multiple": true,
"multiple": false,
"required": true,
"types": [
{
@ -8766,7 +8758,11 @@
"named": true
},
{
"type": "assignable_selector",
"type": "conditional_assignable_selector",
"named": true
},
{
"type": "unconditional_assignable_selector",
"named": true
}
]
@ -11319,10 +11315,6 @@
"type": "class",
"named": false
},
{
"type": "comment",
"named": true
},
{
"type": "const_builtin",
"named": true
@ -11355,10 +11347,6 @@
"type": "do",
"named": false
},
{
"type": "documentation_comment",
"named": true
},
{
"type": "dynamic",
"named": false

File diff suppressed because it is too large Load Diff

@ -13,8 +13,6 @@ extern "C" {
#define ts_builtin_sym_end 0
#define TREE_SITTER_SERIALIZATION_BUFFER_SIZE 1024
typedef uint16_t TSStateId;
#ifndef TREE_SITTER_API_H_
typedef uint16_t TSSymbol;
typedef uint16_t TSFieldId;
@ -32,10 +30,11 @@ typedef struct {
uint16_t length;
} TSFieldMapSlice;
typedef uint16_t TSStateId;
typedef struct {
bool visible;
bool named;
bool supertype;
bool visible : 1;
bool named : 1;
} TSSymbolMetadata;
typedef struct TSLexer TSLexer;
@ -57,21 +56,21 @@ typedef enum {
TSParseActionTypeRecover,
} TSParseActionType;
typedef union {
struct {
uint8_t type;
TSStateId state;
bool extra;
bool repetition;
} shift;
struct {
uint8_t type;
uint8_t child_count;
TSSymbol symbol;
int16_t dynamic_precedence;
uint16_t production_id;
} reduce;
uint8_t type;
typedef struct {
union {
struct {
TSStateId state;
bool extra : 1;
bool repetition : 1;
} shift;
struct {
TSSymbol symbol;
int16_t dynamic_precedence;
uint8_t child_count;
uint8_t production_id;
} reduce;
} params;
TSParseActionType type : 4;
} TSParseAction;
typedef struct {
@ -83,7 +82,7 @@ typedef union {
TSParseAction action;
struct {
uint8_t count;
bool reusable;
bool reusable : 1;
} entry;
} TSParseActionEntry;
@ -93,24 +92,13 @@ struct TSLanguage {
uint32_t alias_count;
uint32_t token_count;
uint32_t external_token_count;
uint32_t state_count;
uint32_t large_state_count;
uint32_t production_id_count;
uint32_t field_count;
uint16_t max_alias_sequence_length;
const uint16_t *parse_table;
const uint16_t *small_parse_table;
const uint32_t *small_parse_table_map;
const TSParseActionEntry *parse_actions;
const char **symbol_names;
const char **field_names;
const TSFieldMapSlice *field_map_slices;
const TSFieldMapEntry *field_map_entries;
const TSSymbolMetadata *symbol_metadata;
const TSSymbol *public_symbol_map;
const uint16_t *alias_map;
const TSSymbol *alias_sequences;
const uint16_t *parse_table;
const TSParseActionEntry *parse_actions;
const TSLexMode *lex_modes;
const TSSymbol *alias_sequences;
uint16_t max_alias_sequence_length;
bool (*lex_fn)(TSLexer *, TSStateId);
bool (*keyword_lex_fn)(TSLexer *, TSStateId);
TSSymbol keyword_capture_token;
@ -123,6 +111,14 @@ struct TSLanguage {
unsigned (*serialize)(void *, char *);
void (*deserialize)(void *, const char *, unsigned);
} external_scanner;
uint32_t field_count;
const TSFieldMapSlice *field_map_slices;
const TSFieldMapEntry *field_map_entries;
const char **field_names;
uint32_t large_state_count;
const uint16_t *small_parse_table;
const uint32_t *small_parse_table_map;
const TSSymbol *public_symbol_map;
};
/*
@ -171,50 +167,66 @@ struct TSLanguage {
#define ACTIONS(id) id
#define SHIFT(state_value) \
{{ \
.shift = { \
.type = TSParseActionTypeShift, \
.state = state_value \
} \
}}
#define SHIFT(state_value) \
{ \
{ \
.params = { \
.shift = { \
.state = state_value \
} \
}, \
.type = TSParseActionTypeShift \
} \
}
#define SHIFT_REPEAT(state_value) \
{{ \
.shift = { \
.type = TSParseActionTypeShift, \
.state = state_value, \
.repetition = true \
{ \
{ \
.params = { \
.shift = { \
.state = state_value, \
.repetition = true \
} \
}, \
.type = TSParseActionTypeShift \
} \
}}
}
#define RECOVER() \
{ \
{ .type = TSParseActionTypeRecover } \
}
#define SHIFT_EXTRA() \
{{ \
.shift = { \
.type = TSParseActionTypeShift, \
.extra = true \
{ \
{ \
.params = { \
.shift = { \
.extra = true \
} \
}, \
.type = TSParseActionTypeShift \
} \
}}
}
#define REDUCE(symbol_val, child_count_val, ...) \
{{ \
.reduce = { \
.type = TSParseActionTypeReduce, \
.symbol = symbol_val, \
.child_count = child_count_val, \
__VA_ARGS__ \
}, \
}}
#define RECOVER() \
{{ \
.type = TSParseActionTypeRecover \
}}
#define ACCEPT_INPUT() \
{{ \
.type = TSParseActionTypeAccept \
}}
{ \
{ \
.params = { \
.reduce = { \
.symbol = symbol_val, \
.child_count = child_count_val, \
__VA_ARGS__ \
}, \
}, \
.type = TSParseActionTypeReduce \
} \
}
#define ACCEPT_INPUT() \
{ \
{ .type = TSParseActionTypeAccept } \
}
#ifdef __cplusplus
}

@ -236,9 +236,9 @@ void main() {
(program
(function_signature (void_type) (identifier) (formal_parameter_list))
(function_body (block (expression_statement (unary_expression
(await_expression (identifier) (selector (assignable_selector (unconditional_assignable_selector (identifier)))) (selector (argument_part
(arguments (decimal_integer_literal) (selector (assignable_selector (unconditional_assignable_selector (identifier))))
(function_expression (formal_parameter_list) (function_expression_body (block))))))))))))
(await_expression (identifier) (selector (unconditional_assignable_selector (identifier))) (selector (argument_part
(arguments (argument (decimal_integer_literal) (selector (unconditional_assignable_selector (identifier))))
(argument (function_expression (formal_parameter_list) (function_expression_body (block)))))))))))))
==================================================
@ -313,9 +313,9 @@ abstract class MyDataClass implements _$MyDataClass {
(class_body
(declaration (redirecting_factory_constructor_signature (const_builtin) (identifier) (identifier) (formal_parameter_list
(optional_formal_parameters (formal_parameter
(annotation (identifier) (arguments (false))) (type_identifier) (identifier)))) (type_identifier)))
(annotation (identifier) (arguments (argument (false)))) (type_identifier) (identifier)))) (type_identifier)))
(method_signature (factory_constructor_signature (identifier) (identifier) (formal_parameter_list)))
(function_body (identifier) (selector (assignable_selector (unconditional_assignable_selector (identifier))))
(function_body (identifier) (selector (unconditional_assignable_selector (identifier)))
(selector (argument_part (arguments (named_argument (label (identifier)) (true)))))))))
@ -337,3 +337,24 @@ class MyClass {
(formal_parameter_list (formal_parameter (type_identifier) (identifier)))))
(function_body (block (expression_statement (assignment_expression (assignable_expression (identifier)) (identifier))))))))
======================================
Basic selector
======================================
void main() {
f(a.b);
}
---
(program
(function_signature (void_type) (identifier) (formal_parameter_list))
(function_body (block
(expression_statement
(identifier)
(selector (argument_part
(arguments
(argument
(identifier)
(selector (unconditional_assignable_selector (identifier)))))))))))

@ -222,22 +222,14 @@ class Point {
(block (expression_statement (assignment_expression
left: (assignable_expression
(this)
(assignable_selector_part
(assignable_selector
(unconditional_assignable_selector (identifier))
)
)
)
right: (identifier))
)
(expression_statement (assignment_expression
left: (assignable_expression
(this)
(assignable_selector_part
(assignable_selector
(unconditional_assignable_selector (identifier))
)
)
)
right: (identifier))
)
@ -253,8 +245,8 @@ class Point {
(selector
(argument_part
(arguments
(decimal_integer_literal)
(decimal_integer_literal)
(argument (decimal_integer_literal))
(argument (decimal_integer_literal))
)
)
)
@ -513,7 +505,7 @@ const my.MyType newMyType = my.MyType();
(static_final_declaration
(identifier)
(identifier) (selector
(assignable_selector (unconditional_assignable_selector (identifier)))
(unconditional_assignable_selector (identifier))
)
(selector (argument_part (arguments)))
)
@ -550,7 +542,7 @@ if (blah) {
(program
(local_variable_declaration (initialized_variable_definition (final_builtin) (type_identifier) (type_identifier) (identifier) (identifier) (selector
(assignable_selector (unconditional_assignable_selector (identifier)))) (selector (argument_part (arguments)))))
(unconditional_assignable_selector (identifier))) (selector (argument_part (arguments)))))
(local_variable_declaration (initialized_variable_definition (final_builtin) (type_identifier) (type_identifier) (identifier)))
(if_statement (parenthesized_expression (identifier))
(block

@ -236,23 +236,21 @@ for (j.init(i); j.check(); j.update()) {
(expression_statement
(identifier)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
(unconditional_assignable_selector (identifier))
)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
(unconditional_assignable_selector (identifier))
)
(selector
(argument_part
(arguments
(argument
(additive_expression
(string_literal)
(additive_operator)
(identifier)
)
)
)
)
)
@ -261,31 +259,28 @@ for (j.init(i); j.check(); j.update()) {
)
(for_statement
init: (identifier)
init: (selector (assignable_selector (unconditional_assignable_selector (identifier))))
init: (selector (argument_part (arguments (identifier))))
init: (selector (unconditional_assignable_selector (identifier)))
init: (selector (argument_part (arguments (argument (identifier)))))
condition: (identifier)
condition: (selector (assignable_selector (unconditional_assignable_selector (identifier))))
condition: (selector (unconditional_assignable_selector (identifier)))
condition: (selector (argument_part (arguments)))
update: (identifier)
update: (selector (assignable_selector (unconditional_assignable_selector (identifier))))
update: (selector (unconditional_assignable_selector (identifier)))
update: (selector (argument_part (arguments)))
body: (block
(expression_statement
(identifier)
(selector
(unconditional_assignable_selector (identifier))
)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
(unconditional_assignable_selector (identifier))
)
(selector
(argument_part
(arguments
(identifier)
(argument
(identifier))
)
)
)
@ -310,7 +305,7 @@ for (A b in c) {
(identifier)
(identifier)
(block
(expression_statement (identifier) (selector (argument_part (arguments (identifier))))))))
(expression_statement (identifier) (selector (argument_part (arguments (argument (identifier)))))))))
================================
@ -326,10 +321,10 @@ void main() async {
(program (function_signature (void_type) (identifier) (formal_parameter_list))
(function_body (block
(local_variable_declaration (initialized_variable_definition (final_builtin) (identifier) (unary_expression
(await_expression (identifier) (selector (assignable_selector (unconditional_assignable_selector (identifier))))
(selector (argument_part (arguments
(await_expression (identifier) (selector (unconditional_assignable_selector (identifier)))
(selector (argument_part (arguments (argument
(const_object_expression (const_builtin) (type_identifier)
(arguments (named_argument (label (identifier)) (decimal_integer_literal))))))))))))))
(arguments (named_argument (label (identifier)) (decimal_integer_literal)))))))))))))))
================================
unary negation expression
@ -377,7 +372,7 @@ if (data['frame_count'] as int < 5) {
(relational_expression
(type_cast_expression
(identifier) (selector
(assignable_selector (unconditional_assignable_selector (string_literal)))
(unconditional_assignable_selector (string_literal))
)
(type_cast (as_operator) (type_identifier))
)
@ -407,7 +402,7 @@ if ((data['frame_count'] as int) < 5) {
(relational_expression
(type_cast_expression
(identifier) (selector
(assignable_selector (unconditional_assignable_selector (string_literal)))
(unconditional_assignable_selector (string_literal))
)
(type_cast (as_operator) (type_identifier))
)
@ -431,12 +426,8 @@ my!.size = 1;
(expression_statement
(assignment_expression
(assignable_expression (identifier)
(assignable_selector_part
(selector)
(assignable_selector
(unconditional_assignable_selector (identifier))
)
)
(selector)
(unconditional_assignable_selector (identifier))
)
(decimal_integer_literal)
)
@ -453,15 +444,11 @@ my!.size += 1;
(program
(expression_statement
(assignment_expression
(assignable_expression (identifier)
(assignable_selector_part
(selector)
(assignable_selector
(unconditional_assignable_selector (identifier))
)
)
)
(decimal_integer_literal)
(assignable_expression (identifier)
(selector)
(unconditional_assignable_selector (identifier))
)
(decimal_integer_literal)
)
)
)
@ -478,8 +465,8 @@ my.size!.run();
(program
(expression_statement (identifier)
(selector
(assignable_selector (unconditional_assignable_selector (identifier)))) (selector)
(selector (assignable_selector (unconditional_assignable_selector (identifier))))
(unconditional_assignable_selector (identifier))) (selector)
(selector (unconditional_assignable_selector (identifier)))
(selector (argument_part (arguments))))
)
@ -495,15 +482,9 @@ my.size.whatever = 1;
(expression_statement
(assignment_expression
(assignable_expression (identifier)
(assignable_selector_part
(selector
(assignable_selector
(unconditional_assignable_selector (identifier)))
)
(assignable_selector
(unconditional_assignable_selector (identifier))
)
)
(selector
(unconditional_assignable_selector (identifier)))
(unconditional_assignable_selector (identifier))
)
(decimal_integer_literal)
)
@ -526,14 +507,16 @@ printStream(args['json'] as bool ? '' : 'hi');
(selector
(argument_part
(arguments
(argument
(conditional_expression
(type_cast_expression (identifier)
(selector (assignable_selector (unconditional_assignable_selector (string_literal))))
(selector (unconditional_assignable_selector (string_literal)))
(type_cast (as_operator) (type_identifier))
)
(string_literal)
(string_literal)
)
)
)
)
)
@ -554,14 +537,16 @@ printStream((args['json'] as bool) ? '' : 'hi');
(selector
(argument_part
(arguments
(argument
(conditional_expression
(type_cast_expression (identifier)
(selector (assignable_selector (unconditional_assignable_selector (string_literal))))
(selector (unconditional_assignable_selector (string_literal)))
(type_cast (as_operator) (type_identifier))
)
(string_literal)
(string_literal)
)
)
)
)
)
@ -589,14 +574,14 @@ a as BigB | b as BigB;
(expression_statement
(relational_expression
(type_cast_expression (identifier)
(selector (assignable_selector (unconditional_assignable_selector (string_literal))))
(selector (unconditional_assignable_selector (string_literal)))
(type_cast (as_operator) (type_identifier)))
(relational_operator)
(identifier)))
(expression_statement
(relational_expression (identifier) (relational_operator)
(type_cast_expression (identifier)
(selector (assignable_selector (unconditional_assignable_selector (string_literal))))
(selector (unconditional_assignable_selector (string_literal)))
(type_cast (as_operator) (type_identifier)))))
(expression_statement (equality_expression (identifier) (equality_operator) (type_cast_expression (identifier) (type_cast (as_operator) (type_identifier)))))
(expression_statement (relational_expression (type_cast_expression (identifier) (type_cast (as_operator) (type_identifier))) (relational_operator) (identifier)))
@ -608,7 +593,7 @@ a as BigB | b as BigB;
(parenthesized_expression
(relational_expression
(type_cast_expression (identifier)
(selector (assignable_selector (unconditional_assignable_selector (string_literal))))
(selector (unconditional_assignable_selector (string_literal)))
(type_cast (as_operator) (type_identifier)))
(relational_operator)
(type_cast_expression (identifier) (type_cast (as_operator) (type_identifier))))) (block))
@ -629,4 +614,4 @@ parameters?["charset"];
(program
(expression_statement (identifier)
(selector (assignable_selector (unconditional_assignable_selector (string_literal))))))
(selector (unconditional_assignable_selector (string_literal)))))

@ -25,7 +25,7 @@ class MyApp extends StatelessWidget {
(library_import (import_specification (configurable_uri (uri (string_literal))))))
(function_signature (void_type) (identifier) (formal_parameter_list))
(function_body (block (expression_statement (identifier) (selector (argument_part
(arguments (identifier) (selector (argument_part (arguments)))))))))
(arguments (argument (identifier) (selector (argument_part (arguments))))))))))
(class_definition (identifier) (superclass (type_identifier))
(class_body
(declaration (constant_constructor_signature (const_builtin) (qualified (identifier))
@ -91,21 +91,22 @@ class CatalogThumbnailUI extends StatelessWidget {
(block (comment)
(local_variable_declaration
(initialized_variable_definition (inferred_type) (identifier) (identifier)
(selector (assignable_selector (unconditional_assignable_selector (identifier))))
(selector (assignable_selector (unconditional_assignable_selector (identifier))))))
(selector (unconditional_assignable_selector (identifier)))
(selector (unconditional_assignable_selector (identifier)))))
(local_variable_declaration
(initialized_variable_definition (inferred_type) (identifier) (identifier)
(selector (assignable_selector (unconditional_assignable_selector (identifier))))
(selector (assignable_selector (unconditional_assignable_selector (identifier))))
(selector (argument_part (arguments (decimal_integer_literal) (identifier)
(selector (assignable_selector (unconditional_assignable_selector (identifier))))
(selector (assignable_selector (unconditional_assignable_selector (identifier)))))))))
(selector (unconditional_assignable_selector (identifier)))
(selector (unconditional_assignable_selector (identifier)))
(selector (argument_part (arguments (argument (decimal_integer_literal)) (argument (identifier)
(selector (unconditional_assignable_selector (identifier)))
(selector (unconditional_assignable_selector (identifier)))))))))
(local_variable_declaration
(initialized_variable_definition (inferred_type) (identifier) (identifier)
(selector (assignable_selector (unconditional_assignable_selector (identifier))))
(selector (unconditional_assignable_selector (identifier)))
(selector
(argument_part
(arguments
(argument
(function_expression
(formal_parameter_list (formal_parameter (identifier)))
(function_expression_body (identifier)
@ -125,42 +126,36 @@ class CatalogThumbnailUI extends StatelessWidget {
(identifier)
(selector
(argument_part
(arguments (identifier)
(arguments (argument (identifier)
(selector
(assignable_selector
(unconditional_assignable_selector
(identifier))))
(unconditional_assignable_selector
(identifier)))
(selector
(assignable_selector
(unconditional_assignable_selector
(identifier))))
(unconditional_assignable_selector
(identifier)))
(selector
(argument_part
(arguments (identifier)
(arguments (argument (identifier)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))))
(selector (argument_part (arguments))))))
(unconditional_assignable_selector (identifier)))
(selector (argument_part (arguments)))))))
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))))
(unconditional_assignable_selector (identifier)))
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))))
(selector (argument_part (arguments))))))
(unconditional_assignable_selector (identifier)))
(selector (argument_part (arguments)))))))
(identifier)
(selector
(argument_part
(arguments (identifier)
(arguments (argument (identifier)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier)))))))
(identifier)
(selector
(argument_part
(arguments
(string_literal))))
)))))))))))))))))
(arguments (argument
(string_literal)))))
))))))))))))))))))
(return_statement
(identifier)
(selector
@ -182,7 +177,7 @@ class CatalogThumbnailUI extends StatelessWidget {
(named_argument (label (identifier))
(identifier)
(selector
(argument_part (arguments (identifier) (true))))))))
(argument_part (arguments (argument (identifier)) (argument (true)))))))))
(spread_element (identifier))))))))))))
)))))
@ -218,8 +213,8 @@ class AWidget extends StatelessWidget {
(list_literal (const_builtin) (identifier)
(selector (argument_part (arguments (named_argument (label (identifier)) (identifier)
(selector (argument_part (arguments (named_argument (label (identifier)) (identifier)
(selector (assignable_selector (unconditional_assignable_selector (identifier)))))))))))) (identifier)
(selector (unconditional_assignable_selector (identifier))))))))))) (identifier)
(selector (argument_part (arguments (named_argument (label (identifier)) (identifier)
(selector (argument_part (arguments (named_argument (label (identifier)) (identifier)
(selector (assignable_selector (unconditional_assignable_selector (identifier)))))))))))))))))))))))
(selector (unconditional_assignable_selector (identifier))))))))))))))))))))))

@ -46,22 +46,18 @@ class WhileDemo {
(expression_statement
(identifier)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
(unconditional_assignable_selector (identifier))
)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
(unconditional_assignable_selector (identifier))
)
(selector
(argument_part (arguments
(additive_expression
(argument (additive_expression
(string_literal)
(additive_operator)
(identifier)
)
))
))
)
)
@ -108,9 +104,7 @@ var a;
value: (identifier)
value:
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
(unconditional_assignable_selector (identifier))
)
value:
(selector
@ -155,7 +149,7 @@ return fire(x);
(return_statement (identifier))
(return_statement (multiplicative_expression (identifier) (multiplicative_operator) (identifier)))
(return_statement (additive_expression (identifier) (additive_operator) (decimal_integer_literal)))
(return_statement (identifier) (selector (argument_part (arguments (identifier))))))
(return_statement (identifier) (selector (argument_part (arguments (argument (identifier)))))))
==================================
annotation
@ -172,11 +166,11 @@ class Duck {
(program
(annotation
(identifier)
(arguments (assignment_expression (assignable_expression (identifier)) (string_literal)))
(arguments (argument (assignment_expression (assignable_expression (identifier)) (string_literal))))
)
(annotation
(identifier)
(arguments (assignment_expression (assignable_expression (identifier)) (true)))
(arguments (argument (assignment_expression (assignable_expression (identifier)) (true))))
)
(class_definition
(identifier)
@ -228,9 +222,9 @@ class Quack {
(program
(annotation (identifier)
(arguments (identifier) (selector (assignable_selector (unconditional_assignable_selector (identifier)))))
(arguments (argument (identifier) (selector (unconditional_assignable_selector (identifier)))))
)
(annotation (identifier) (arguments (string_literal)))
(annotation (identifier) (arguments (argument (string_literal))))
(class_definition
(identifier)
(class_body)))
@ -366,17 +360,13 @@ class SwitchDemo {
(expression_statement
(identifier)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
(unconditional_assignable_selector (identifier))
)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
(unconditional_assignable_selector (identifier))
)
(selector
(argument_part (arguments (identifier)))
(argument_part (arguments (argument (identifier))))
)
)
)
@ -480,9 +470,7 @@ class someClass <T> {
(identifier)
(identifier)
(selector
(assignable_selector
(unconditional_assignable_selector (identifier))
)
(unconditional_assignable_selector (identifier))
)
(selector
(argument_part
@ -502,7 +490,7 @@ class someClass <T> {
(type_identifier)
(type_identifier)
)
(arguments (identifier))
(arguments (argument (identifier)))
)
)
)
@ -526,11 +514,9 @@ class someClass <T> {
(identifier)
(identifier)
(selector
(assignable_selector
(unconditional_assignable_selector
(identifier)
)
)
(unconditional_assignable_selector
(identifier)
)
)
(selector
(argument_part