tree-sitter/spec/runtime/languages/javascript/main.txt

171 lines
6 KiB
Text

==========================================
parses literals
==========================================
theFunction(
100.0,
200,
/the-regex/,
'the-single-quoted-string',
"the-double-quoted-string"
);
---
(program (expression_statement (function_call
(identifier)
(number)
(number)
(regex)
(string)
(string))))
==========================================
parses constructor calls
==========================================
var x = new Node(5, new Node(3, null));
---
(program (var_declaration
(assignment (identifier)
(constructor_call (function_call (identifier)
(number)
(constructor_call (function_call (identifier)
(number)
(null))))))))
==========================================
parses multiple statements
==========================================
var x = {}, z, i = 0;
firstFunction(x)
secondFunction(x);
---
(program
(var_declaration
(assignment (identifier) (object))
(identifier)
(assignment (identifier) (number)))
(expression_statement (function_call (identifier) (identifier)))
(expression_statement (function_call (identifier) (identifier))))
==========================================
parses function expressions and calls
==========================================
var x = {
theMethod: function(argA, argB) {
var x = argA;
}
};
x.theMethod(5, 6);
---
(program
(var_declaration (assignment
(identifier)
(object (identifier) (function_expression
(formal_parameters (identifier) (identifier))
(statement_block (var_declaration (assignment (identifier) (identifier))))))))
(expression_statement (function_call
(property_access (identifier) (identifier))
(number) (number))))
==========================================
parses property access with dot notation
==========================================
object.property = "the-value";
print(object.property);
---
(program
(expression_statement (assignment
(property_access (identifier) (identifier))
(string)))
(expression_statement (function_call
(identifier)
(property_access (identifier) (identifier)))))
===========================================
parses dynamic property access
==========================================
object[propertName()] = propertyValue();
print(object[propertyName()]);
---
(program
(expression_statement (assignment
(property_access (identifier) (function_call (identifier)))
(function_call (identifier))))
(expression_statement (function_call
(identifier)
(property_access (identifier) (function_call (identifier))))))
==========================================
parses comments
==========================================
var thing = {
// this is a property.
// its value is a function.
key: function(x /* this is a parameter */) {
// this is a statement
doStuff();
}
};
---
(program (var_declaration (assignment (identifier) (object
(comment)
(comment)
(identifier) (function_expression
(formal_parameters (identifier) (comment))
(statement_block
(comment)
(expression_statement (function_call (identifier)))))))))
======================================
parses real code
=====================================
_.each = _.forEach = function(obj, iterator, context) {
if (obj == null) return obj;
if (obj.length === obj.length) {
for (var i = 0; i < length; i++) {
if (iterator.call(context, obj[i], i, obj) === breaker) return;
}
} else {
var keys = _.keys(obj);
for (var i = 0; i < length; i++) {
if (iterator.call(context, obj[keys[i]], keys[i], obj) === breaker) return;
}
}
return obj;
};
---
(program (expression_statement
(assignment
(property_access (identifier) (identifier))
(assignment (property_access (identifier) (identifier))
(function_expression
(formal_parameters (identifier) (identifier) (identifier))
(statement_block
(if_statement (bool_op (identifier) (null)) (return_statement (identifier)))
(if_statement
(property_access (bool_op (property_access (identifier) (identifier)) (identifier)) (identifier))
(statement_block
(for_statement
(var_declaration (assignment (identifier) (number)))
(expression_statement (bool_op (identifier) (identifier)))
(math_op (identifier))
(statement_block
(if_statement
(bool_op (function_call (property_access (identifier) (identifier)) (identifier) (property_access (identifier) (identifier)) (identifier) (identifier)) (identifier))
(return_statement)))))
(statement_block
(var_declaration (assignment (identifier) (function_call (property_access (identifier) (identifier)) (identifier))))
(for_statement
(var_declaration (assignment (identifier) (number)))
(expression_statement (bool_op (identifier) (identifier)))
(math_op (identifier))
(statement_block
(if_statement
(bool_op (function_call
(property_access (identifier) (identifier))
(identifier)
(property_access (identifier) (property_access (identifier) (identifier)))
(property_access (identifier) (identifier)) (identifier)) (identifier))
(return_statement))))))
(return_statement (identifier))))))))