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


Java VarNode.IS_LET属性代码示例

本文整理汇总了Java中jdk.nashorn.internal.ir.VarNode.IS_LET属性的典型用法代码示例。如果您正苦于以下问题:Java VarNode.IS_LET属性的具体用法?Java VarNode.IS_LET怎么用?Java VarNode.IS_LET使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在jdk.nashorn.internal.ir.VarNode的用法示例。


在下文中一共展示了VarNode.IS_LET属性的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: variableStatement

/**
 * VariableStatement :
 *      var VariableDeclarationList ;
 *
 * VariableDeclarationList :
 *      VariableDeclaration
 *      VariableDeclarationList , VariableDeclaration
 *
 * VariableDeclaration :
 *      Identifier Initializer?
 *
 * Initializer :
 *      = AssignmentExpression
 *
 * See 12.2
 *
 * Parse a VAR statement.
 * @param isStatement True if a statement (not used in a FOR.)
 */
private List<VarNode> variableStatement(final TokenType varType, final boolean isStatement) {
    // VAR tested in caller.
    next();

    final List<VarNode> vars = new ArrayList<>();
    int varFlags = 0;
    if (varType == LET) {
        varFlags |= VarNode.IS_LET;
    } else if (varType == CONST) {
        varFlags |= VarNode.IS_CONST;
    }

    while (true) {
        // Get starting token.
        final int  varLine  = line;
        final long varToken = token;
        // Get name of var.
        final IdentNode name = getIdent();
        verifyStrictIdent(name, "variable name");

        // Assume no init.
        Expression init = null;

        // Look for initializer assignment.
        if (type == ASSIGN) {
            next();

            // Get initializer expression. Suppress IN if not statement.
            defaultNames.push(name);
            try {
                init = assignmentExpression(!isStatement);
            } finally {
                defaultNames.pop();
            }
        } else if (varType == CONST) {
            throw error(AbstractParser.message("missing.const.assignment", name.getName()));
        }

        // Allocate var node.
        final VarNode var = new VarNode(varLine, varToken, finish, name.setIsDeclaredHere(), init, varFlags);
        vars.add(var);
        appendStatement(var);

        if (type != COMMARIGHT) {
            break;
        }
        next();
    }

    // If is a statement then handle end of line.
    if (isStatement) {
        final boolean semicolon = type == SEMICOLON;
        endOfLine();
        if (semicolon) {
            lc.getCurrentBlock().setFinish(finish);
        }
    }

    return vars;
}
 
开发者ID:SunburstApps,项目名称:OpenJSharp,代码行数:79,代码来源:Parser.java


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