tree-sitter-dart
Version:
Dart grammar attempt for tree-sitter
700 lines (554 loc) • 18 kB
Plain Text
===============
local variable
===============
class A {
int b() {
int c = 5;
}
}
(program
(class_definition
name: (identifier)
body: (class_body
(method_signature (function_signature
(type_identifier)
name: (identifier)
(formal_parameter_list))
)
(function_body (block
(local_variable_declaration (initialized_variable_definition
(type_identifier)
name: (identifier)
value: (decimal_integer_literal))))))))
===============================
single type import declaration
===============================
import 'package:dektor/catalog.dart';
(program (import_or_export (library_import (import_specification (configurable_uri (uri (string_literal)))))))
===========================
type_import_on_declaraction
===========================
import 'package:dektor/catalog.dart';
(program (import_or_export (library_import (import_specification (configurable_uri (uri (string_literal)))))))
=================================
single static import declaration
=================================
import 'package:dektor/catalog.dart';
(program (import_or_export (library_import (import_specification (configurable_uri (uri (string_literal)))))))
===================================
static import on demand declaration
===================================
import 'package:dektor/catalog.dart';
(program (import_or_export (library_import (import_specification (configurable_uri (uri (string_literal)))))))
=================
class declaration
=================
class Point {
}
(program
(class_definition
(identifier)
(class_body)))
=====================================================================
class declaration involving public, private, abstract and superclass
=====================================================================
class Point {
}
class Point {
}
abstract class ColoredPoint extends Point {
}
(program
(class_definition (identifier) (class_body))
(class_definition (identifier) (class_body))
(class_definition (identifier) (superclass (type_identifier)) (class_body)))
==================================
class declaration with implements
==================================
class Dog implements ISpeak {
}
(program
(class_definition
(identifier)
(interfaces (type_identifier)) (class_body)))
============================
class declaration with body
============================
class Point {
var x;
var s = 'g';
void bar() {
x = 2;
}
}
(program
(class_definition
(identifier)
(class_body
(declaration
(inferred_type)
(initialized_identifier_list (initialized_identifier (identifier))))
(declaration
(inferred_type)
(initialized_identifier_list
(initialized_identifier
(identifier)
(string_literal))))
(method_signature (function_signature
(void_type)
(identifier)
(formal_parameter_list)))
(function_body
(block
(expression_statement
(assignment_expression (assignable_expression (identifier)) (decimal_integer_literal))))))))
===================
method declaration
===================
class Beyonce {
void calculateAnswer(double wingSpan, int numberOfEngines,
double length, double grossTons) {
//do the calculation here
}
}
(program
(class_definition
(identifier)
(class_body
(method_signature (function_signature
(void_type)
(identifier)
(formal_parameter_list
(formal_parameter (type_identifier) (identifier))
(formal_parameter (type_identifier) (identifier))
(formal_parameter (type_identifier) (identifier))
(formal_parameter (type_identifier) (identifier))))
)
(function_body
(block (comment))))))
========================
constructor declaration
========================
class Point {
int x, y;
Point(int x, int y) {
this.x = x;
this.y = y;
}
Point.json() {
this(0, 0);
}
Point.json(this.x, this.y);
}
(program
(class_definition
name: (identifier)
body: (class_body
(declaration
(type_identifier)
(initialized_identifier_list
(initialized_identifier (identifier))
(initialized_identifier (identifier))
)
)
(method_signature (constructor_signature
name: (identifier)
parameters: (formal_parameter_list
(formal_parameter
(type_identifier)
name: (identifier))
(formal_parameter
(type_identifier)
name: (identifier)))))
(function_body
(block (expression_statement (assignment_expression
left: (assignable_expression
(this)
(unconditional_assignable_selector (identifier))
)
right: (identifier))
)
(expression_statement (assignment_expression
left: (assignable_expression
(this)
(unconditional_assignable_selector (identifier))
)
right: (identifier))
)
))
(method_signature (constructor_signature
name: (identifier)
name: (identifier)
parameters: (formal_parameter_list)))
(function_body
(block
(expression_statement
(this)
(selector
(argument_part
(arguments
(argument (decimal_integer_literal))
(argument (decimal_integer_literal))
)
)
)
)
)
)
(declaration
(constructor_signature
name: (identifier)
name: (identifier)
parameters: (formal_parameter_list
(formal_parameter (constructor_param (this) (identifier)))
(formal_parameter (constructor_param (this) (identifier)))
)
)
)
)
)
)
======================
object instantiation
======================
class Point {
double Foo() {
new BufferedWriter();
}
}
(program
(class_definition
(identifier)
(class_body
(method_signature (function_signature
(type_identifier)
(identifier)
(formal_parameter_list))
)
(function_body (block
(expression_statement
(new_expression
(type_identifier)
(arguments)))
)))))
=====================
variable declaration
=====================
class JayZ {
void Beyonce() {
int blue_ivy_carter;
}
}
(program
(class_definition
(identifier)
(class_body
(method_signature (function_signature
(void_type)
(identifier)
(formal_parameter_list)))
(function_body
(block
(local_variable_declaration (initialized_variable_definition
(type_identifier)
(identifier))))))))
=================
enum declaration
=================
enum HandSign {
SCISSOR, PAPER, STONE
}
(program
(enum_declaration
name: (identifier)
body: (enum_body
(enum_constant name: (identifier))
(enum_constant name: (identifier))
(enum_constant name: (identifier)))))
=================
variable inferred type declaration
=================
var x = 0;
(program (inferred_type)
(initialized_identifier_list (initialized_identifier (identifier) (decimal_integer_literal))))
=================
top level annotated declaration
=================
@annotation
final y = 0;
(program
(marker_annotation (identifier))
(final_builtin)
(static_final_declaration_list (static_final_declaration (identifier) (decimal_integer_literal))))
=================
static final top level declaration
=================
final y = 1.0;
final double y1 = 1.0;
const z = "100";
const String z1 = "100";
(program
(final_builtin)
(static_final_declaration_list (static_final_declaration (identifier) (decimal_floating_point_literal)))
(final_builtin)
(type_identifier) (static_final_declaration_list (static_final_declaration (identifier) (decimal_floating_point_literal)))
(const_builtin)
(static_final_declaration_list (static_final_declaration (identifier) (string_literal)))
(const_builtin)
(type_identifier) (static_final_declaration_list (static_final_declaration (identifier) (string_literal))))
=================
identifier with dollar signs
=================
final $y$ = 0;
(program
(final_builtin)
(static_final_declaration_list (static_final_declaration (identifier) (decimal_integer_literal))))
=================
typedefs
=================
typedef CreateCallback = void Function(String);
typedef void EndCallback(String endValue);
typedef Future<String> Handler(String method, Map<String, String> parameters);
typedef MyFunction<T> = T Function();
typedef DismissMethod = Future<void> Function(WidgetTester tester, Finder finder, {@required AxisDirection gestureDirection});
(program
(type_alias (type_identifier)
(function_type
(void_type)
(parameter_type_list (normal_parameter_type (type_identifier)))))
(type_alias
(void_type)
(type_identifier)
(formal_parameter_list (formal_parameter (type_identifier) (identifier))))
(type_alias
(type_identifier) (type_arguments (type_identifier))
(type_identifier)
(formal_parameter_list (formal_parameter (type_identifier) (identifier)) (formal_parameter (type_identifier) (type_arguments (type_identifier) (type_identifier)) (identifier))))
(type_alias
(type_identifier) (type_parameters (type_parameter (type_identifier)))
(function_type (type_identifier) (parameter_type_list)))
(type_alias
(type_identifier)
(function_type (type_identifier) (type_arguments (void_type))
(parameter_type_list (normal_parameter_type (typed_identifier (type_identifier) (identifier))) (normal_parameter_type (typed_identifier (type_identifier) (identifier)))
(optional_parameter_types (named_parameter_types (marker_annotation (identifier)) (typed_identifier (type_identifier) (identifier))))))))
=================
script tag
=================
#! /usr/bin/env dshell
import 'package:dshell/dshell.dart';
(program
(script_tag)
(import_or_export (library_import (import_specification (configurable_uri (uri (string_literal)))))))
================================================================
non final and final declarations
================================================================
List<String> animations = ['1', '2', '3', '4', 'Default'];
final String assetFile = "assets/myasset.flr";
class MyClass {
}
(program
(type_identifier) (type_arguments (type_identifier))
(initialized_identifier_list (initialized_identifier (identifier) (list_literal (string_literal) (string_literal) (string_literal) (string_literal) (string_literal))))
(final_builtin)
(type_identifier) (static_final_declaration_list (static_final_declaration (identifier) (string_literal)))
(class_definition (identifier) (class_body)))
==================================
Nullable Function Parameter
==================================
void callback(Future<void> Function(String?) handler) {
}
(program
(function_signature (void_type) (identifier)
(formal_parameter_list
(formal_parameter
(function_type
(type_identifier)
(type_arguments (void_type))
(parameter_type_list (normal_parameter_type (type_identifier)))) (identifier))))
(function_body (block)))
==================================
Type with Library Prefix
==================================
const my.MyType newMyType = my.MyType();
(program
(const_builtin)
(type_identifier) (type_identifier)
(static_final_declaration_list
(static_final_declaration
(identifier)
(identifier) (selector
(unconditional_assignable_selector (identifier))
)
(selector (argument_part (arguments)))
)
)
)
==================================
Type with Library Prefix Plus
==================================
const my.MyType newMyType;
const my.MyType newMytype;
(program
(local_variable_declaration (initialized_variable_definition (const_builtin) (type_identifier) (type_identifier) (identifier)))
(local_variable_declaration (initialized_variable_definition (const_builtin) (type_identifier) (type_identifier) (identifier)))
)
==================================
Type with Library Prefix Plus Final
==================================
final my.MyType newMyType = my.MyType();
final my.MyType newMytype;
if (blah) {
const my.myType newMyType = ggg;
const mytype = 2;
}
(program
(final_builtin) (type_identifier) (type_identifier)
(static_final_declaration_list (static_final_declaration (identifier) (identifier) (selector
(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
(local_variable_declaration (initialized_variable_definition (const_builtin) (type_identifier) (type_identifier) (identifier) (identifier)))
(local_variable_declaration (initialized_variable_definition (const_builtin) (identifier) (decimal_integer_literal)))
)
)
)
==================================
Null function argument
==================================
void _invoke(void callback()?, Zone? zone) {
}
(program
(function_signature (void_type) (identifier)
(formal_parameter_list
(formal_parameter (void_type) (identifier) (formal_parameter_list))
(formal_parameter (type_identifier) (identifier))))
(function_body (block)))
==================================
Get and set methods (not keyword)
==================================
// Interesting issue of conflict between dart grammar itself and actual value of elements?
String get(String hello) => 'A string $hello';
class MyClass {
void set(String name, Object value) {}
}
(program
(comment)
(function_signature (type_identifier) (identifier) (formal_parameter_list (formal_parameter (type_identifier) (identifier))))
(function_body (string_literal (template_substitution (identifier_dollar_escaped))))
(class_definition (identifier)
(class_body
(method_signature
(function_signature (void_type) (identifier)
(formal_parameter_list (formal_parameter (type_identifier) (identifier)) (formal_parameter (type_identifier) (identifier)))))
(function_body (block)))))
==================================
Get and set methods (functional?)
==================================
String get myGetterName => 'A string hello';
class MyClass {
void set myValue(String name, Object value) {}
}
(program
(getter_signature (type_identifier) (identifier))
(function_body (string_literal))
(class_definition (identifier)
(class_body
(method_signature
(setter_signature (void_type) (identifier)
(formal_parameter_list (formal_parameter (type_identifier) (identifier))
(formal_parameter (type_identifier) (identifier)))))
(function_body (block)))))
======================================
Get and set identifiers (ERROR)
======================================
class Tree {
Set toSet() {
Set set = Set();
set._count = _count;
set._root = _root;
return set;
}
}
(program
(class_definition
(identifier)
(class_body
(method_signature
(function_signature
(type_identifier)
(identifier)
(formal_parameter_list)))
(function_body
(block
(ERROR
(function_signature
(type_identifier)
(identifier)
(ERROR
(identifier))
(formal_parameter_list))
(identifier)
(identifier)
(identifier)
(identifier))
(return_statement
(identifier)))))))
==================================
void types
==================================
class MyClass {
void mySet(String name, Object value) {}
}
(program
(class_definition (identifier)
(class_body
(method_signature
(function_signature (void_type) (identifier)
(formal_parameter_list (formal_parameter (type_identifier) (identifier))
(formal_parameter (type_identifier) (identifier)))))
(function_body (block)))))
==================================
external factories
==================================
class LinkedHashMap {
external factory LinkedHashMap();
external factory LinkedHashMap.identity();
}
(program
(class_definition (identifier)
(class_body
(declaration (factory_constructor_signature (identifier) (formal_parameter_list)))
(declaration (factory_constructor_signature (identifier) (identifier) (formal_parameter_list))))))