java expression 用法_Java ExpressionList.getExpressions方法代碼示例

import net.sf.jsqlparser.expression.operators.relational.ExpressionList; //導入方法依賴的package包/類

public static CompiledInExpression create(InExpression in, String validatedTableAlias) {

if (in.getLeftItemsList() != null) {

throw new StatementExecutionException("Unsupported operand " + in.getClass() + " with a non-expression left argument (" + in + ")");

}

CompiledSQLExpression left = compileExpression(validatedTableAlias, in.getLeftExpression());

if (left == null) {

return null;

}

if (in.getRightItemsList() instanceof ExpressionList) {

List expList = new ArrayList<>();

ExpressionList exps = (ExpressionList) in.getRightItemsList();

for (Expression exp : exps.getExpressions()) {

CompiledSQLExpression newExp = compileExpression(validatedTableAlias, exp);

if (newExp == null) {

return null;

}

expList.add(newExp);

}

return new CompiledInExpression(in.isNot(), left, expList, null);

}

if (in.getRightItemsList() instanceof SubSelect) {

SubSelect ss = (SubSelect) in.getRightItemsList();

if (!(ss.getSelectBody() instanceof PlainSelect)) {

throw new StatementExecutionException("unsupported operand " + in.getClass()

+ " with subquery of type " + ss.getClass() + "(" + ss + ")");

}

return new CompiledInExpression(in.isNot(), left, null, ss);

}

throw new StatementExecutionException("unsupported operand " + in.getClass()

+ " with argument of type " + in.getRightItemsList().getClass() + "(" + in + ")");

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Java代码的文法可以用BNF(巴克斯-诺尔范式)表示,如下所示: ``` <compilationUnit> ::= [<packageDeclaration>] [<importDeclaration>] {<typeDeclaration>} <packageDeclaration> ::= "package" <qualifiedName> ";" <importDeclaration> ::= "import" ["static"] <qualifiedName> ["." "*"] ";" <typeDeclaration> ::= <classDeclaration> | <interfaceDeclaration> <classDeclaration> ::= {<modifier>} "class" <identifier> [<typeParameters>] [<superclass>] [<superinterfaces>] <classBody> <interfaceDeclaration> ::= {<modifier>} "interface" <identifier> [<typeParameters>] [<extendsInterfaces>] <interfaceBody> <modifier> ::= "public" | "protected" | "private" | "static" | "abstract" | "final" | "native" | "synchronized" | "transient" | "volatile" | "strictfp" <typeParameters> ::= "<" <typeParameterList> ">" <typeParameterList> ::= <typeParameter> {"," <typeParameter>} <typeParameter> ::= <identifier> [<extendsBound>] <extendsBound> ::= "extends" <type> [<additionalBound> {"," <additionalBound>}] <additionalBound> ::= "extends" <type> <superclass> ::= "extends" <classType> <superinterfaces> ::= "implements" <interfaceTypeList> <classBody> ::= "{" {<classBodyDeclaration>} "}" <classBodyDeclaration> ::= <classMemberDeclaration> | <staticInitializer> | <constructorDeclaration> <classMemberDeclaration> ::= <fieldDeclaration> | <methodDeclaration> | <classDeclaration> | <interfaceDeclaration> | <enumDeclaration> <staticInitializer> ::= "static" <block> <constructorDeclaration> ::= {<modifier>} <constructorDeclarator> <throws> <constructorBody> <constructorDeclarator> ::= <identifier> "(" [<formalParameterList>] ")" <formalParameterList> ::= <formalParameter> {"," <formalParameter>} <formalParameter> ::= {<annotation>} [<final>] <type> <variableDeclaratorId> <variableDeclaratorId> ::= <identifier> [<dims>] <dims> ::= "[" "]" <methodDeclaration> ::= {<modifier>} <type> <methodDeclarator> <throws> [<methodBody> | <nativeMethodBody>] <methodDeclarator> ::= <identifier> "(" [<formalParameterList>] ")" <methodBody> ::= <block> <nativeMethodBody> ::= "native" ";" <fieldDeclaration> ::= {<modifier>} <type> <variableDeclarators> ";" <variableDeclarators> ::= <variableDeclarator> {"," <variableDeclarator>} <variableDeclarator> ::= <variableDeclaratorId> ["=" <variableInitializer>] <variableInitializer> ::= <expression> | <arrayInitializer> <arrayInitializer> ::= "{" [<variableInitializer> {"," <variableInitializer>}] [","] "}" <block> ::= "{" {<blockStatement>} "}" <blockStatement> ::= <localVariableDeclarationStatement> | <statement> <localVariableDeclarationStatement> ::= <type> <variableDeclarators> ";" <statement> ::= <expressionStatement> | <declarationStatement> | <ifStatement> | <switchStatement> | <whileStatement> | <doStatement> | <forStatement> | <breakStatement> | <continueStatement> | <returnStatement> | <throwStatement> | <tryStatement> <expressionStatement> ::= [<expression>] ";" <declarationStatement> ::= <localVariableDeclarationStatement> <ifStatement> ::= "if" "(" <expression> ")" <statement> ["else" <statement>] <switchStatement> ::= "switch" "(" <expression> ")" "{" {<switchBlockStatementGroup>} "}" <switchBlockStatementGroup> ::= <switchLabels> <blockStatements> <switchLabels> ::= <switchLabel> {<switchLabel>} <switchLabel> ::= "case" <constantExpression> ":" | "default" ":" <blockStatements> ::= {<blockStatement>} <whileStatement> ::= "while" "(" <expression> ")" <statement> <doStatement> ::= "do" <statement> "while" "(" <expression> ")" ";" <forStatement> ::= "for" "(" [<forControl>] ")" <statement> <forControl> ::= <enhancedForControl> | <forInit> ";" [<expression>] ";" [<forUpdate>] <enhancedForControl> ::= <type> <variableDeclaratorId> ":" <expression> <forInit> ::= <localVariableDeclarationStatement> | [<expressionList>] <forUpdate> ::= <expressionList> <expressionList> ::= <expression> {"," <expression>} <breakStatement> ::= "break" [<identifier>] ";" <continueStatement> ::= "continue" [<identifier>] ";" <returnStatement> ::= "return" [<expression>] ";" <throwStatement> ::= "throw" <expression> ";" <tryStatement> ::= "try" <block> <catches> [<finally>] | "try" <resourceSpecification> <block> [<catches>] [<finally>] <resourceSpecification> ::= "(" {<resource>} [","] ")" <resource> ::= <variableModifiers> <classType> <variableDeclaratorId> "=" <expression> <catches> ::= {<catchClause>} <catchClause> ::= "catch" "(" <catchFormalParameter> ")" <block> <catchFormalParameter> ::= [<final>] <catchType> <variableDeclaratorId> <catchType> ::= <qualifiedName> { "|" <qualifiedName>} <finally> ::= "finally" <block> <annotation> ::= "@" <qualifiedName> [<elementValuePairs>] | "@" <qualifiedName> "(" [<elementValuePairs>] ")" <elementValuePairs> ::= <elementValuePair> {"," <elementValuePair>} <elementValuePair> ::= <identifier> "=" <elementValue> <elementValue> ::= <expression> | <annotation> | <elementValueArrayInitializer> <elementValueArrayInitializer> ::= "{" {<elementValue>} [","] "}" ``` 这个文法描述了Java代码的语法结构,可以用于编写Java编译器。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值