java getfirstchild_Java ScriptNode.getFirstChild方法代碼示例

本文详细介绍了Java中org.mozilla.javascript.ast.ScriptNode.getFirstChild方法的使用,包括其在处理表达式树时的不同场景和操作。文章通过4个代码示例展示了如何在不同情况下调用此方法,涉及函数编译、脚本处理、判断列引用等功能。
摘要由CSDN通过智能技术生成

本文整理匯總了Java中org.mozilla.javascript.ast.ScriptNode.getFirstChild方法的典型用法代碼示例。如果您正苦於以下問題:Java ScriptNode.getFirstChild方法的具體用法?Java ScriptNode.getFirstChild怎麽用?Java ScriptNode.getFirstChild使用的例子?那麽恭喜您, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類org.mozilla.javascript.ast.ScriptNode的用法示例。

在下文中一共展示了ScriptNode.getFirstChild方法的4個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於我們的係統推薦出更棒的Java代碼示例。

示例1: CompiledExprFromTree

​點讚 2

import org.mozilla.javascript.ast.ScriptNode; //導入方法依賴的package包/類

/**

* compile the expression from a script tree

*

* @param expression

* @param context

* @param tree

* @param columnExprList

* @throws BirtException

*/

private void CompiledExprFromTree( String expression, Context context,

ScriptNode tree, List columnExprList ) throws BirtException

{

if ( tree.getFirstChild( ) == tree.getLastChild( ) )

{

if ( tree.getFirstChild( ).getType( ) == Token.FUNCTION )

{

int index = getFunctionIndex( tree.getFirstChild( ).getString( ),

tree );

compileFunctionNode( tree.getFunctionNode( index ),

tree,

columnExprList );

}

else

{

// A single expression

if ( tree.getFirstChild( ).getType( ) != Token.EXPR_RESULT

&& tree.getFirstChild( ).getType( ) != Token.EXPR_VOID

&& tree.getFirstChild( ).getType( ) != Token.BLOCK

&& tree.getFirstChild( ).getType( ) != Token.SCRIPT)

{

// This should never happen?

throw new CoreException( pluginId,

ResourceConstants.INVALID_EXPRESSION );

}

Node exprNode = tree.getFirstChild( );

processChild( exprNode, tree, columnExprList );

}

}

else

{

compileComplexExpr( tree, tree, columnExprList );

}

}

開發者ID:eclipse,項目名稱:birt,代碼行數:44,

示例2: processScriptTree

​點讚 2

import org.mozilla.javascript.ast.ScriptNode; //導入方法依賴的package包/類

/**

* process the script tree to produce a CompiledExpression

*

* @param expression

* @param tree

* @param context

* @return @throws

* DataException

*/

private CompiledExpression processScriptTree( String expression,

ScriptNode tree, Context context ) throws DataException

{

CompiledExpression expr;

if ( tree.getFirstChild( ) == tree.getLastChild( ) )

{

if( tree.getFirstChild( ) == null )

throw new DataException( "Expression parse error: first child is null. The expression is " + expression,

expression );

// A single expression

if ( tree.getFirstChild( ).getType( ) != Token.EXPR_RESULT

&& tree.getFirstChild( ).getType( ) != Token.EXPR_VOID

&& tree.getFirstChild( ).getType( ) != Token.BLOCK )

{

// This should never happen?

throw new DataException( ResourceConstants.INVALID_JS_EXPR,

expression );

}

Node child, parent = tree;

Node exprNode = parent.getFirstChild( );

child = exprNode.getFirstChild( );

if ( child.getNext( ) != null )

child = exprNode;

else

{

parent = exprNode;

}

assert ( child != null && parent != null );

expr = processChild( context, false, parent, child, tree );

}

else

{

// complex expressions

// Multiple expressions exist; we should produce complex expressions

// However, individual subexpressions still needs to be processed

// to identify the interesting subexpressions

expr = compileComplexExpr( context, tree, false );

}

if ( expr instanceof BytecodeExpression )

compileForBytecodeExpr( context, tree, expr );

return expr;

}

開發者ID:eclipse,項目名稱:birt,代碼行數:53,

示例3: isColumnExpression

​點讚 2

import org.mozilla.javascript.ast.ScriptNode; //導入方法依賴的package包/類

/**

* whether the expression is column reference

* @param expression

* @return

*/

public static boolean isColumnExpression( String expression, boolean mode )

{

boolean isColumn = false;

if ( expression == null || expression.trim( ).length( ) == 0 )

return isColumn;

if ( getCompiledExpCacheMap( mode ).containsKey( expression ) )

{

return ( (Boolean) getCompiledExpCacheMap( mode ).get( expression ) ).booleanValue( );

}

Context context = Context.enter( );

ScriptNode tree;

try

{

CompilerEnvirons m_compilerEnv = new CompilerEnvirons( );

m_compilerEnv.initFromContext( context );

Parser p = new Parser( m_compilerEnv, context.getErrorReporter( ) );

AstRoot root = p.parse( expression, null, 0 );

IRFactory ir = new IRFactory( m_compilerEnv );

tree = ir.transformTree( root );

}

catch ( Exception e )

{

getCompiledExpCacheMap( mode ).put( expression,

Boolean.valueOf( false ) );

return false;

}

finally

{

Context.exit( );

}

if ( tree.getFirstChild( ) == tree.getLastChild( ) )

{

// A single expression

if ( tree.getFirstChild( ).getType( ) != Token.EXPR_RESULT

&& tree.getFirstChild( ).getType( ) != Token.EXPR_VOID

&& tree.getFirstChild( ).getType( ) != Token.BLOCK )

{

isColumn = false;

}

Node exprNode = tree.getFirstChild( );

Node child = exprNode.getFirstChild( );

assert ( child != null );

if ( child.getType( ) == Token.GETELEM

|| child.getType( ) == Token.GETPROP )

isColumn = getDirectColRefExpr( child, mode );

else

isColumn = false;

}

else

{

isColumn = false;

}

getCompiledExpCacheMap( mode ).put( expression,

Boolean.valueOf( isColumn ) );

return isColumn;

}

開發者ID:eclipse,項目名稱:birt,代碼行數:63,

示例4: isColumnExpression

​點讚 2

import org.mozilla.javascript.ast.ScriptNode; //導入方法依賴的package包/類

/**

* whether the expression is column reference

*

* @param expression

* @return

*/

public static boolean isColumnExpression( String expression )

{

boolean isColumn = false;

if ( expression == null || expression.trim( ).length( ) == 0 )

return isColumn;

if ( compiledExprCache.containsKey( expression ) )

return ( (Boolean) compiledExprCache.get( expression ) ).booleanValue( );

Context context = Context.enter( );

ScriptNode tree;

try

{

CompilerEnvirons m_compilerEnv = new CompilerEnvirons( );

m_compilerEnv.initFromContext( context );

Parser p = new Parser( m_compilerEnv, context.getErrorReporter( ) );

AstRoot root = p.parse( expression, null, 0 );

IRFactory ir = new IRFactory( m_compilerEnv );

tree = ir.transformTree( root );

}

catch ( Exception e )

{

compiledExprCache.put( expression, Boolean.valueOf( false ) );

return false;

}

finally

{

Context.exit( );

}

if ( tree.getFirstChild( ) == tree.getLastChild( ) )

{

// A single expression

if ( tree.getFirstChild( ).getType( ) != Token.EXPR_RESULT

&& tree.getFirstChild( ).getType( ) != Token.EXPR_VOID

&& tree.getFirstChild( ).getType( ) != Token.BLOCK )

{

isColumn = false;

}

Node exprNode = tree.getFirstChild( );

Node child = exprNode.getFirstChild( );

assert ( child != null );

if ( child.getType( ) == Token.GETELEM

|| child.getType( ) == Token.GETPROP )

isColumn = getDirectColRefExpr( child );

else

isColumn = false;

}

else

{

isColumn = false;

}

compiledExprCache.put( expression, Boolean.valueOf( isColumn ) );

return isColumn;

}

開發者ID:eclipse,項目名稱:birt,代碼行數:61,

注:本文中的org.mozilla.javascript.ast.ScriptNode.getFirstChild方法示例整理自Github/MSDocs等源碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值