mirror of
https://github.com/zhigang1992/DefinitelyTyped.git
synced 2026-05-22 20:37:58 +08:00
205 lines
5.8 KiB
TypeScript
205 lines
5.8 KiB
TypeScript
/// <reference path="esprima.d.ts" />
|
|
|
|
import esprima = require('esprima');
|
|
import Syntax = esprima.Syntax;
|
|
|
|
var token: esprima.Token;
|
|
var options: esprima.Options;
|
|
var comment: Syntax.Comment;
|
|
var program: Syntax.Program;
|
|
var statement: Syntax.Statement;
|
|
var expression: Syntax.Expression;
|
|
var property: Syntax.Property;
|
|
var identifier: Syntax.Identifier;
|
|
var literal: Syntax.Literal;
|
|
var switchCase: Syntax.SwitchCase;
|
|
var catchClause: Syntax.CatchClause;
|
|
var variableDeclaratorOrExpression: Syntax.VariableDeclaratorOrExpression;
|
|
var literalOrIdentifier: Syntax.LiteralOrIdentifier;
|
|
var blockStatementOrExpression: Syntax.BlockStatementOrExpression;
|
|
var identifierOrExpression: Syntax.IdentifierOrExpression;
|
|
var any: any;
|
|
var string: string;
|
|
var boolean: boolean;
|
|
var number: number;
|
|
|
|
// esprima
|
|
string = esprima.version;
|
|
program = esprima.parse('code');
|
|
program = esprima.parse('code', {range: true});
|
|
token = esprima.tokenize('code')[0];
|
|
token = esprima.tokenize('code', {range: true})[0];
|
|
|
|
// Token
|
|
string = token.type;
|
|
string = token.value;
|
|
|
|
// Program
|
|
string = program.type;
|
|
statement = program.body[0];
|
|
comment = program.comments[0]
|
|
|
|
// Location
|
|
number = program.loc.start.line;
|
|
number = program.loc.start.column;
|
|
number = program.loc.end.line;
|
|
number = program.loc.end.column;
|
|
number = program.range[0];
|
|
|
|
// Comment
|
|
string = comment.value;
|
|
|
|
// Statement
|
|
// BlockStatement
|
|
var blockStatement: Syntax.BlockStatement;
|
|
string = blockStatement.type;
|
|
statement = blockStatement.body[0];
|
|
comment = blockStatement.leadingComments[0];
|
|
comment = blockStatement.trailingComments[0];
|
|
|
|
// ExpressionStatement
|
|
var expressionStatement: Syntax.ExpressionStatement;
|
|
expression = expressionStatement.expression;
|
|
|
|
// IfStatement
|
|
var ifStatement: Syntax.IfStatement;
|
|
expression = ifStatement.test;
|
|
statement = ifStatement.consequent;
|
|
statement = ifStatement.alternate;
|
|
|
|
// LabeledStatement
|
|
var labeledStatement: Syntax.LabeledStatement;
|
|
identifier = labeledStatement.label;
|
|
statement = labeledStatement.body;
|
|
|
|
// WithStatement
|
|
var withStatement: Syntax.WithStatement;
|
|
expression = withStatement.object;
|
|
|
|
// SwitchStatement
|
|
var switchStatement: Syntax.SwitchStatement;
|
|
expression = switchStatement.discriminant;
|
|
switchCase = switchStatement.cases[0];
|
|
boolean = switchStatement.lexical;
|
|
|
|
// ReturnStatement
|
|
var returnStatement: Syntax.ReturnStatement;
|
|
expression = returnStatement.argument;
|
|
|
|
// TryStatement
|
|
var tryStatement: Syntax.TryStatement;
|
|
blockStatement = tryStatement.block;
|
|
catchClause = tryStatement.handler;
|
|
catchClause = tryStatement.guardedHandlers[0];
|
|
blockStatement = tryStatement.finalizer;
|
|
|
|
// ForStatement
|
|
var forStatement: Syntax.ForStatement;
|
|
variableDeclaratorOrExpression = forStatement.init;
|
|
expression = forStatement.update;
|
|
|
|
// ForInStatement
|
|
var forInStatement: Syntax.ForInStatement;
|
|
variableDeclaratorOrExpression = forInStatement.left;
|
|
expression = forInStatement.right;
|
|
boolean = forInStatement.each;
|
|
|
|
// Expression
|
|
// ArrayExpression
|
|
var arrayExpression: Syntax.ArrayExpression;
|
|
string = arrayExpression.type;
|
|
expression = arrayExpression.elements[0];
|
|
|
|
// ObjectExpression
|
|
var objectExpression: Syntax.ObjectExpression;
|
|
property = objectExpression.properties[0];
|
|
string = property.type;
|
|
literalOrIdentifier = property.key;
|
|
expression = property.value;
|
|
string = property.kind;
|
|
|
|
// FunctionExpression
|
|
var functionExpression: Syntax.FunctionExpression;
|
|
identifier = functionExpression.id;
|
|
identifier = functionExpression.params[0];
|
|
expression = functionExpression.defaults[0];
|
|
identifier = functionExpression.rest;
|
|
blockStatementOrExpression = functionExpression.body;
|
|
boolean = functionExpression.generator;
|
|
boolean = functionExpression.expression;
|
|
|
|
// SequenceExpression
|
|
var sequenceExpression: Syntax.SequenceExpression;
|
|
expression = sequenceExpression.expressions[0]
|
|
|
|
// UnaryExpression
|
|
var unaryExpression: Syntax.UnaryExpression;
|
|
string = unaryExpression.operator;
|
|
boolean = unaryExpression.prefix;
|
|
|
|
// BinaryExpression
|
|
var binaryExpression: Syntax.BinaryExpression;
|
|
expression = binaryExpression.left;
|
|
expression = binaryExpression.right;
|
|
|
|
// ConditionalExpression
|
|
var conditionalExpression: Syntax.ConditionalExpression;
|
|
expression = conditionalExpression.test;
|
|
expression = conditionalExpression.alternate;
|
|
expression = conditionalExpression.consequent;
|
|
|
|
// NewExpression
|
|
var newExpression: Syntax.NewExpression;
|
|
expression = newExpression.callee;
|
|
expression = newExpression.arguments[0];
|
|
|
|
// CallExpression
|
|
var callExpression: Syntax.CallExpression;
|
|
expression = callExpression.callee;
|
|
expression = callExpression.arguments[0];
|
|
|
|
// MemberExpression
|
|
var memberExpression: Syntax.MemberExpression;
|
|
expression = memberExpression.object;
|
|
identifierOrExpression = memberExpression.property;
|
|
boolean = memberExpression.computed;
|
|
|
|
// Declarations
|
|
var functionDeclaration: Syntax.FunctionDeclaration;
|
|
identifier = functionDeclaration.id;
|
|
var params:Syntax.Identifier[] = functionDeclaration.params;
|
|
var defaults:Syntax.Expression[] = functionDeclaration.defaults;
|
|
identifier = functionDeclaration.rest;
|
|
var body:Syntax.BlockStatementOrExpression = functionDeclaration.body;
|
|
boolean = functionDeclaration.generator;
|
|
boolean = functionDeclaration.expression;
|
|
|
|
var variableDeclaration: Syntax.VariableDeclaration;
|
|
var declarations:Syntax.VariableDeclarator[] = variableDeclaration.declarations;
|
|
string = variableDeclaration.kind; // "var" | "let" | "const"
|
|
|
|
var variableDeclarator: Syntax.VariableDeclarator;
|
|
identifier = variableDeclarator.id; // Pattern
|
|
expression = variableDeclarator.init;
|
|
|
|
// Clauses
|
|
// SwitchCase
|
|
string = switchCase.type;
|
|
expression = switchCase.test;
|
|
statement = switchCase.consequent[0];
|
|
|
|
// CatchClause
|
|
string = catchClause.type;
|
|
identifier = catchClause.param;
|
|
expression = catchClause.guard;
|
|
blockStatement = catchClause.body;
|
|
|
|
// Misc
|
|
// Identifier
|
|
string = identifier.type;
|
|
string = identifier.name;
|
|
|
|
// Literal
|
|
string = literal.type;
|
|
any = literal.value;
|