当前位置: 首页>>代码示例>>Java>>正文


Java AstNode.getPosition方法代码示例

本文整理汇总了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;
    }
}
 
开发者ID:MikaGuraN,项目名称:HL4A,代码行数:27,代码来源:Parser.java

示例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);
}
 
开发者ID:MikaGuraN,项目名称:HL4A,代码行数:39,代码来源:Parser.java

示例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;
}
 
开发者ID:MikaGuraN,项目名称:HL4A,代码行数:36,代码来源:Parser.java

示例4: getNodeEnd

import org.mozilla.javascript.ast.AstNode; //导入方法依赖的package包/类
private int getNodeEnd(AstNode n) {
    return n.getPosition() + n.getLength();
}
 
开发者ID:MikaGuraN,项目名称:HL4A,代码行数:4,代码来源:Parser.java

示例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;
}
 
开发者ID:MikaGuraN,项目名称:HL4A,代码行数:56,代码来源:Parser.java

示例6: nodeEnd

import org.mozilla.javascript.ast.AstNode; //导入方法依赖的package包/类
private int nodeEnd(AstNode node) {
    return node.getPosition() + node.getLength();
}
 
开发者ID:MikaGuraN,项目名称:HL4A,代码行数:4,代码来源:Parser.java


注:本文中的org.mozilla.javascript.ast.AstNode.getPosition方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。