Now, the root node of a document is always a document node. It will often have only one child node which corresponds to the grammar's start symbol, but not always. Currently, it may have more than one child if there are ubiquitous tokens such as comments at the beginning of the document. In the future, it will also be possible be possible to have multiple for the document to have multiple children if the document is partially parsed.
76 lines
2 KiB
Text
76 lines
2 KiB
Text
==========================================
|
|
parses regexes
|
|
==========================================
|
|
theFunction(/regex1/, /regex2/g);
|
|
---
|
|
(program (expression_statement (function_call (identifier)
|
|
(regex) (regex))))
|
|
|
|
==========================================
|
|
parses numbers
|
|
==========================================
|
|
theFunction(100.0, 200);
|
|
---
|
|
(program (expression_statement (function_call (identifier)
|
|
(number) (number))))
|
|
|
|
==========================================
|
|
parses strings
|
|
==========================================
|
|
theFunction('', "", 'single-quoted-string', "double-quoted-string");
|
|
---
|
|
(program (expression_statement (function_call (identifier)
|
|
(string) (string) (string) (string))))
|
|
|
|
==========================================
|
|
parses function expressions
|
|
==========================================
|
|
var x = {
|
|
theMethod: function(argA, argB) {
|
|
var x = argA;
|
|
}
|
|
};
|
|
---
|
|
(program
|
|
(var_declaration
|
|
(identifier)
|
|
(object (identifier) (function_expression
|
|
(formal_parameters (identifier) (identifier))
|
|
(statement_block (var_declaration (identifier) (identifier)))))))
|
|
|
|
==========================================
|
|
parses comments
|
|
==========================================
|
|
// this is the beginning of the script.
|
|
// here we go.
|
|
var thing = {
|
|
|
|
// this is a property.
|
|
// its value is a function.
|
|
key: function(x /* this is a parameter */) {
|
|
|
|
// this is a statement
|
|
doStuff();
|
|
}
|
|
};
|
|
---
|
|
(comment)
|
|
(comment)
|
|
(program
|
|
(var_declaration (identifier) (object
|
|
(comment)
|
|
(comment)
|
|
(identifier) (function_expression
|
|
(formal_parameters (identifier) (comment))
|
|
(statement_block
|
|
(comment)
|
|
(expression_statement (function_call (identifier))))))))
|
|
|
|
==========================================
|
|
parses comments within expressions
|
|
==========================================
|
|
y // comment
|
|
* z;
|
|
---
|
|
(program
|
|
(expression_statement (math_op (expression (identifier) (comment)) (identifier))))
|