本文整理汇总了Java中org.mozilla.javascript.ast.AstNode.getPosition方法的典型用法代码示例。如果您正苦于以下问题:Java AstNode.getPosition方法的具体用法?Java AstNode.getPosition怎么用?Java AstNode.getPosition使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.mozilla.javascript.ast.AstNode
的用法示例。
在下文中一共展示了AstNode.getPosition方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: autoInsertSemicolon
import org.mozilla.javascript.ast.AstNode; //导入方法依赖的package包/类
private void autoInsertSemicolon(AstNode pn) throws IOException {
int ttFlagged = peekFlaggedToken();
int pos = pn.getPosition();
switch (ttFlagged & CLEAR_TI_MASK) {
case Token.SEMI:
// Consume ';' as a part of expression
consumeToken();
// extend the node bounds to include the semicolon.
pn.setLength(ts.tokenEnd - pos);
break;
case Token.ERROR:
case Token.EOF:
case Token.RC:
// Autoinsert ;
warnMissingSemi(pos, nodeEnd(pn));
break;
default:
if ((ttFlagged & TI_AFTER_EOL) == 0) {
// Report error if no EOL or autoinsert ; otherwise
reportError("msg.no.semi.stmt");
} else {
warnMissingSemi(pos, nodeEnd(pn));
}
break;
}
}
示例2: statement
import org.mozilla.javascript.ast.AstNode; //导入方法依赖的package包/类
private AstNode statement()
throws IOException
{
int pos = ts.tokenBeg;
try {
AstNode pn = statementHelper();
if (pn != null) {
if (compilerEnv.isStrictMode() && !pn.hasSideEffects()) {
int beg = pn.getPosition();
beg = Math.max(beg, lineBeginningFor(beg));
addStrictWarning(pn instanceof EmptyStatement
? "msg.extra.trailing.semi"
: "msg.no.side.effects",
"", beg, nodeEnd(pn) - beg);
}
return pn;
}
} catch (ParserException e) {
// an ErrorNode was added to the ErrorReporter
}
// error: skip ahead to a probable statement boundary
guessingStatementEnd: for (;;) {
int tt = peekTokenOrEOL();
consumeToken();
switch (tt) {
case Token.ERROR:
case Token.EOF:
case Token.EOL:
case Token.SEMI:
break guessingStatementEnd;
}
}
// We don't make error nodes explicitly part of the tree;
// they get added to the ErrorReporter. May need to do
// something different here.
return new EmptyStatement(pos, ts.tokenBeg - pos);
}
示例3: condExpr
import org.mozilla.javascript.ast.AstNode; //导入方法依赖的package包/类
private AstNode condExpr()
throws IOException
{
AstNode pn = orExpr();
if (matchToken(Token.HOOK)) {
int line = ts.lineno;
int qmarkPos = ts.tokenBeg, colonPos = -1;
/*
* Always accept the 'in' operator in the middle clause of a ternary,
* where it's unambiguous, even if we might be parsing the init of a
* for statement.
*/
boolean wasInForInit = inForInit;
inForInit = false;
AstNode ifTrue;
try {
ifTrue = assignExpr();
} finally {
inForInit = wasInForInit;
}
if (mustMatchToken(Token.COLON, "msg.no.colon.cond"))
colonPos = ts.tokenBeg;
AstNode ifFalse = assignExpr();
int beg = pn.getPosition(), len = getNodeEnd(ifFalse) - beg;
ConditionalExpression ce = new ConditionalExpression(beg, len);
ce.setLineno(line);
ce.setTestExpression(pn);
ce.setTrueExpression(ifTrue);
ce.setFalseExpression(ifFalse);
ce.setQuestionMarkPosition(qmarkPos - beg);
ce.setColonPosition(colonPos - beg);
pn = ce;
}
return pn;
}
示例4: getNodeEnd
import org.mozilla.javascript.ast.AstNode; //导入方法依赖的package包/类
private int getNodeEnd(AstNode n) {
return n.getPosition() + n.getLength();
}
示例5: arrowFunction
import org.mozilla.javascript.ast.AstNode; //导入方法依赖的package包/类
private AstNode arrowFunction(AstNode params) throws IOException {
int baseLineno = ts.lineno; // line number where source starts
int functionSourceStart = params != null ? params.getPosition() : -1; // start of "function" kwd
FunctionNode fnNode = new FunctionNode(functionSourceStart);
fnNode.setFunctionType(FunctionNode.ARROW_FUNCTION);
fnNode.setJsDocNode(getAndResetJsDoc());
// Would prefer not to call createDestructuringAssignment until codegen,
// but the symbol definitions have to happen now, before body is parsed.
Map<String, Node> destructuring = new HashMap<String, Node>();
Set<String> paramNames = new HashSet<String>();
PerFunctionVariables savedVars = new PerFunctionVariables(fnNode);
try {
if (params instanceof ParenthesizedExpression) {
fnNode.setParens(0, params.getLength());
AstNode p = ((ParenthesizedExpression)params).getExpression();
if (!(p instanceof EmptyExpression)) {
arrowFunctionParams(fnNode, p, destructuring, paramNames);
}
} else {
arrowFunctionParams(fnNode, params, destructuring, paramNames);
}
if (!destructuring.isEmpty()) {
Node destructuringNode = new Node(Token.COMMA);
// Add assignment helper for each destructuring parameter
for (Map.Entry<String, Node> param: destructuring.entrySet()) {
Node assign = createDestructuringAssignment(Token.VAR,
param.getValue(), createName(param.getKey()));
destructuringNode.addChildToBack(assign);
}
fnNode.putProp(Node.DESTRUCTURING_PARAMS, destructuringNode);
}
fnNode.setBody(parseFunctionBody(FunctionNode.ARROW_FUNCTION, fnNode));
fnNode.setEncodedSourceBounds(functionSourceStart, ts.tokenEnd);
fnNode.setLength(ts.tokenEnd - functionSourceStart);
} finally {
savedVars.restore();
}
if (fnNode.isGenerator()) {
reportError("msg.arrowfunction.generator");
return makeErrorNode();
}
fnNode.setSourceName(sourceURI);
fnNode.setBaseLineno(baseLineno);
fnNode.setEndLineno(ts.lineno);
return fnNode;
}
示例6: nodeEnd
import org.mozilla.javascript.ast.AstNode; //导入方法依赖的package包/类
private int nodeEnd(AstNode node) {
return node.getPosition() + node.getLength();
}