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

145 lines
No EOL
5.4 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 multiple statements
==========================================
var x = {}
firstFunction(x)
secondFunction(x);
---
(program
(var_declaration (assignment (identifier) (object)))
(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
==========================================
// this is another comment
stuff(); // this is a comment
---
(program
(comment)
(expression_statement (function_call (identifier)))
(comment))
======================================
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 = i + 1) {
if (iterator.call(context, obj[i], i, obj) === breaker) return;
}
} else {
var keys = _.keys(obj);
for (var i = 0; i < length; i = i + 1) {
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)))
(assignment (identifier) (math_op (identifier) (number)))
(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)))
(assignment (identifier) (math_op (identifier) (number)))
(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))))))))