Author: doogie
Date: Mon Aug 2 17:41:23 2010 New Revision: 981610 URL: http://svn.apache.org/viewvc?rev=981610&view=rev Log: FORMAT: Re-indent; couldn't find a standard for indentation, so this is an attempt to have some sort of common pattern for doing so. Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj Modified: ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj?rev=981610&r1=981609&r2=981610&view=diff ============================================================================== --- ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj (original) +++ ofbiz/trunk/framework/sql/src/org/ofbiz/sql/Parser.jj Mon Aug 2 17:41:23 2010 @@ -17,11 +17,11 @@ * under the License. */ options { - JAVA_UNICODE_ESCAPE = false; - ERROR_REPORTING = true; - STATIC = false; + JAVA_UNICODE_ESCAPE = false; + ERROR_REPORTING = true; + STATIC = false; // MULTI = true; - JDK_VERSION = "1.5"; + JDK_VERSION = "1.5"; // VISITOR = true; // BUILD_NODE_FILES = true; // NODE_FACTORY = false; @@ -31,10 +31,10 @@ options { // DEBUG_PARSER = true; // DEBUG_LOOKAHEAD = true; // DEBUG_TOKEN_MANAGER = true; - LOOKAHEAD = 1; + LOOKAHEAD = 1; // CHOICE_AMBIGUITY_CHECK = 3; // OTHER_AMBIGUITY_CHECK = 3; - IGNORE_CASE = true; + IGNORE_CASE = true; } PARSER_BEGIN(Parser) @@ -85,66 +85,66 @@ TOKEN_MGR_DECLS: { } TOKEN: { - <OPEN_PAREN: "("> -| <CLOSE_PAREN: ")"> -| <AND: "AND"> -| <OR: "OR"> -| <PERIOD: "."> -| <JOIN: "JOIN"> -| <LEFT: "LEFT"> -| <AS: "AS"> -| <COUNT: "COUNT"> -| <DISTINCT: "DISTINCT"> -| <WHERE: "WHERE"> -| <HAVING: "HAVING"> -| <GROUP: "GROUP"> -| <ORDER: "ORDER"> -//| <UNION: "UNION"> -| <BY: "BY"> -| <ON: "ON"> -| <USING: "USING"> -| <LIMIT: "LIMIT"> -| <OFFSET: "OFFSET"> -| <SELECT: "SELECT"> -| <DELETE: "DELETE"> -| <UPDATE: "UPDATE"> -| <INSERT: "INSERT"> -| <RELATION: "RELATION"> -| <EXCLUDE: "EXCLUDE"> -| <UPPER: "UPPER"> -| <LOWER: "LOWER"> -| <TYPE: "TYPE"> -| <TITLE: "TITLE"> -| <SET: "SET"> -| <FROM: "FROM"> -| <SEMI: ";"> -| <STAR: "*"> -| <COMMA: ","> -| <PLUS: "+"> -| <MINUS: "-"> -| <DESC: "DESC"> -| <ASC: "ASC"> -| <EQUALS: "="> -| <BETWEEN: "BETWEEN"> -| <INTO: "INTO"> -| <VALUES: "VALUES"> -| <CREATE: "CREATE"> -| <VIEW: "VIEW"> -| <IS: "IS"> -| <NOT: "NOT"> -| <NULL: "NULL"> -| <START_DQUOTE: "\""> { pushState(IN_DQUOTE); } -| <START_SQUOTE: "'"> { pushState(IN_SQUOTE); } -| <INTEGER: - "0" ( - "x" (["0"-"9","a"-"b"])+ - | (["0"-"7"])+ - ) - | ["1"-"9"] (["0"-"9"])* + <OPEN_PAREN: "("> + | <CLOSE_PAREN: ")"> + | <AND: "AND"> + | <OR: "OR"> + | <PERIOD: "."> + | <JOIN: "JOIN"> + | <LEFT: "LEFT"> + | <AS: "AS"> + | <COUNT: "COUNT"> + | <DISTINCT: "DISTINCT"> + | <WHERE: "WHERE"> + | <HAVING: "HAVING"> + | <GROUP: "GROUP"> + | <ORDER: "ORDER"> +// | <UNION: "UNION"> + | <BY: "BY"> + | <ON: "ON"> + | <USING: "USING"> + | <LIMIT: "LIMIT"> + | <OFFSET: "OFFSET"> + | <SELECT: "SELECT"> + | <DELETE: "DELETE"> + | <UPDATE: "UPDATE"> + | <INSERT: "INSERT"> + | <RELATION: "RELATION"> + | <EXCLUDE: "EXCLUDE"> + | <UPPER: "UPPER"> + | <LOWER: "LOWER"> + | <TYPE: "TYPE"> + | <TITLE: "TITLE"> + | <SET: "SET"> + | <FROM: "FROM"> + | <SEMI: ";"> + | <STAR: "*"> + | <COMMA: ","> + | <PLUS: "+"> + | <MINUS: "-"> + | <DESC: "DESC"> + | <ASC: "ASC"> + | <EQUALS: "="> + | <BETWEEN: "BETWEEN"> + | <INTO: "INTO"> + | <VALUES: "VALUES"> + | <CREATE: "CREATE"> + | <VIEW: "VIEW"> + | <IS: "IS"> + | <NOT: "NOT"> + | <NULL: "NULL"> + | <START_DQUOTE: "\""> { pushState(IN_DQUOTE); } + | <START_SQUOTE: "'"> { pushState(IN_SQUOTE); } + | <INTEGER: + "0" ( + "x" (["0"-"9","a"-"b"])+ + | (["0"-"7"])+ + ) + | ["1"-"9"] (["0"-"9"])* > -| <NAME: ["a"-"z"] (["a"-"z","0"-"9","_","-"])*> -| <PARAMETER: "?" (["a"-"z"])+> -//| <WORD: (~["'", "\"", "/", " ", "\f", "\n", "\r", "\t", "*"])+> + | <NAME: ["a"-"z"] (["a"-"z","0"-"9","_","-"])*> + | <PARAMETER: "?" (["a"-"z"])+> +// | <WORD: (~["'", "\"", "/", " ", "\f", "\n", "\r", "\t", "*"])+> } <DEFAULT> @@ -159,8 +159,8 @@ MORE: { <IN_COMMENT> MORE: { - <(~[])> -| <COMMENT_END: "*/"> { popState(); } + <(~[])> + | <COMMENT_END: "*/"> { popState(); } } <IN_DQUOTE,IN_SQUOTE> @@ -175,8 +175,8 @@ TOKEN: { <IN_SQUOTE> TOKEN: { - <ESCAPE_SQUOTE: "''"> -| <END_SQUOTE: "'"> { popState(); } + <ESCAPE_SQUOTE: "''"> + | <END_SQUOTE: "'"> { popState(); } } <DEFAULT,IN_DQUOTE,IN_SQUOTE> @@ -186,97 +186,82 @@ TOKEN: { // ------------------- -public List<SQLStatement<?>> SQLFile(): -{ +public List<SQLStatement<?>> SQLFile(): { List<SQLStatement<?>> list = FastList.newInstance(); SQLStatement<?> statement; -} -{ - ( statement=Statement() ( <SEMI> )? { list.add(statement); } )* +} { + ( + statement=Statement() ( <SEMI> )? + { list.add(statement); } + )* <EOF> { return list; } } -public SQLStatement StandaloneStatement(): -{ +public SQLStatement StandaloneStatement(): { SQLStatement statement; -} -{ - statement=Statement() ( <SEMI> )? <EOF> { return statement; } +} { + statement=Statement() ( <SEMI> )? <EOF> + { return statement; } } -public SQLView ViewStatement(): -{ +public SQLView ViewStatement(): { SQLView sqlView; -} -{ - sqlView=View() ( <SEMI> )? <EOF> { return sqlView; } +} { + sqlView=View() ( <SEMI> )? <EOF> + { return sqlView; } } -public SQLSelect SelectStatement(): -{ +public SQLSelect SelectStatement(): { SQLSelect sqlSelect; -} -{ +} { sqlSelect=Select() ( <SEMI> )? <EOF> { return sqlSelect; } } -public SQLDelete DeleteStatement(): -{ +public SQLDelete DeleteStatement(): { SQLDelete sqlDelete; -} -{ +} { sqlDelete=Delete() ( <SEMI> )? <EOF> { return sqlDelete; } } -public SQLUpdate UpdateStatement(): -{ +public SQLUpdate UpdateStatement(): { SQLUpdate sqlUpdate; -} -{ +} { sqlUpdate=Update() ( <SEMI> )? <EOF> { return sqlUpdate; } } -public SQLInsert InsertStatement(): -{ +public SQLInsert InsertStatement(): { SQLInsert sqlInsert; -} -{ +} { sqlInsert=Insert() ( <SEMI> )? <EOF> { return sqlInsert; } } -public Condition Condition(): -{ Condition c; } -{ +public Condition Condition(): { + Condition c; +} { c=ConditionExpression() <EOF> { return c; } } -private SQLStatement Statement(): -{ +private SQLStatement Statement(): { SQLStatement statement; -} -{ +} { ( - statement=Select() { return statement; } - | statement=Delete() { return statement; } - | statement=Update() { return statement; } - | statement=Insert() { return statement; } - | statement=View() { return statement; } + statement=Select() { return statement; } + | statement=Delete() { return statement; } + | statement=Update() { return statement; } + | statement=Insert() { return statement; } + | statement=View() { return statement; } ) } -private SQLView View(): -{ +private SQLView View(): { String name; SQLSelect sqlSelect; -} -{ - <CREATE> <VIEW> name=NamePart() <AS> sqlSelect=Select() - { return new SQLView(name, sqlSelect); } +} { + <CREATE> <VIEW> name=NamePart() <AS> sqlSelect=Select() { return new SQLView(name, sqlSelect); } } -private SQLSelect Select(): -{ +private SQLSelect Select(): { Integer i; boolean isDistinct = false; List<OrderByItem> orderBy = null; @@ -288,8 +273,7 @@ private SQLSelect Select(): Map<String, Relation> relations = FastMap.newInstance(); Condition whereCondition = null, havingCondition = null; int offset = -1, limit = -1; -} -{ +} { <SELECT> (<DISTINCT> { isDistinct = true; })? ( FieldDef(fieldDefs, fieldAlls, fieldAllAliases) ( <COMMA> FieldDef(fieldDefs, fieldAlls, fieldAllAliases) )* @@ -305,12 +289,10 @@ private SQLSelect Select(): { return new SQLSelect(isDistinct, fieldAlls, fieldDefs, table, relations, whereCondition, havingCondition, groupBy, orderBy, offset, limit); } } -private void Relation(Map<String, Relation> relations): -{ +private void Relation(Map<String, Relation> relations): { String type = null, title = null, entityName; List<KeyMap> keyMaps; -} -{ +} { ( <TYPE> type=NamePart() )? ( <TITLE> title=NamePart() )? <NAME> { entityName = getToken(0).image; } @@ -322,17 +304,14 @@ private void Relation(Map<String, Relati } } - -private SQLUpdate Update(): -{ +private SQLUpdate Update(): { TableName tableName; List<Table> tableList = null; Condition whereCondition = null; List<SetField> allSetFields = FastList.newInstance(); List<SetField> setFields; Joined joined = null; -} -{ +} { <UPDATE> tableName=TableName() <SET> setFields=SetField() { allSetFields.addAll(setFields); } @@ -342,28 +321,24 @@ private SQLUpdate Update(): { return new SQLUpdate(new Table(tableName, joined), allSetFields, whereCondition); } } -private SQLDelete Delete(): -{ +private SQLDelete Delete(): { TableName tableName; List<Table> tableList = null; Condition whereCondition = null; Joined joined = null; -} -{ +} { <DELETE> <FROM> tableName=TableName() ( LOOKAHEAD(<USING>, {deleteSupportsUsing}) <USING> joined=JoinedRest(false, tableName) )? ( <WHERE> whereCondition=ConditionExpression() )? { return new SQLDelete(new Table(tableName, joined), whereCondition); } } -private SQLInsert Insert(): -{ +private SQLInsert Insert(): { TableName tableName; List<String> columns = FastList.newInstance(); String n; InsertSource source; -} -{ +} { <INSERT> <INTO> tableName=TableName() ( <OPEN_PAREN> n=NamePart() { columns.add(n); } @@ -374,24 +349,20 @@ private SQLInsert Insert(): { return new SQLInsert(tableName, source, columns); } } -private InsertValues InsertValues(): -{ +private InsertValues InsertValues(): { List<InsertRow> list = FastList.newInstance(); InsertRow row; -} -{ +} { <VALUES> row=InsertRow() { list.add(row); } ( <COMMA> row=InsertRow() { list.add(row); } )* { return new InsertValues(list); } } -private InsertRow InsertRow(): -{ +private InsertRow InsertRow(): { List<Value> list = FastList.newInstance(); Value v; -} -{ +} { <OPEN_PAREN> v=InsertValue() { list.add(v); } ( <COMMA> v=InsertValue() { list.add(v); } )* @@ -399,112 +370,96 @@ private InsertRow InsertRow(): { return new InsertRow(list); } } -private Value InsertValue(): -{ +private Value InsertValue(): { Value v; Integer i; String s; -} -{ - v=ParameterValue() { return v; } -| i=Integer() { return new NumberValue<Integer>(i); } -| s=SQuoted() { return new StringValue(s); } +} { + v=ParameterValue() { return v; } + | i=Integer() { return new NumberValue<Integer>(i); } + | s=SQuoted() { return new StringValue(s); } } -private List<SetField> SetField(): -{ +private List<SetField> SetField(): { List<SetField> setFields = FastList.newInstance(); String n; Value v; List<String> columnList = FastList.newInstance(); List<Value> valueList = FastList.newInstance(); -} -{ +} { ( - n=NamePart() <EQUALS> ( - v=Value() { setFields.add(new SetField(n, v)); } - | v=MathValue() { setFields.add(new SetField(n, v)); } - ) - | <OPEN_PAREN> - n=NamePart() { columnList.add(n); } - ( <COMMA> n=NamePart() { columnList.add(n); } )* - <CLOSE_PAREN> - <EQUALS> - <OPEN_PAREN> - (v=Value()|v=MathValue()) { valueList.add(v); } - ( <COMMA> (v=Value()|v=MathValue()) { valueList.add(v); } )* - <CLOSE_PAREN> { + n=NamePart() <EQUALS> ( + v=Value() { setFields.add(new SetField(n, v)); } + | v=MathValue() { setFields.add(new SetField(n, v)); } + ) + | <OPEN_PAREN> + n=NamePart() { columnList.add(n); } + ( <COMMA> n=NamePart() { columnList.add(n); } )* + <CLOSE_PAREN> + <EQUALS> + <OPEN_PAREN> + ( v=Value() | v=MathValue() ) { valueList.add(v); } + ( <COMMA> (v=Value()|v=MathValue()) { valueList.add(v); } )* + <CLOSE_PAREN> { if (columnList.size() != valueList.size()) throw new ParseException(); for (int i = 0; i < columnList.size(); i++) { setFields.add(new SetField(columnList.get(i), valueList.get(i))); } - } + } ) { return setFields; } } -private Table Table(): -{ +private Table Table(): { TableName tableName; Joined joined = null; -} -{ +} { tableName=TableName() ( joined=Joined(tableName) )? { return new Table(tableName, joined); } } -private Joined Joined(TableName leftTableName): -{ +private Joined Joined(TableName leftTableName): { Boolean isOptional; Joined joined = null; -} -{ +} { isOptional=Joiner() joined=JoinedRest(isOptional, leftTableName) { return joined; } } -private Joined JoinedRest(boolean isOptional, TableName leftTableName): -{ +private Joined JoinedRest(boolean isOptional, TableName leftTableName): { TableName rightTableName; List<KeyMap> keyMaps; Joined joined = null; -} -{ +} { rightTableName=TableName() keyMaps=KeyMaps(leftTableName.getAlias(), rightTableName.getAlias()) ( joined=Joined(rightTableName) )? { return new Joined(isOptional, rightTableName, keyMaps, joined); } } -private List<KeyMap> KeyMaps(String leftAlias, String rightAlias): -{ +private List<KeyMap> KeyMaps(String leftAlias, String rightAlias): { List<KeyMap> keyMaps = FastList.newInstance(); String n; -} -{ +} { ( - <ON> - KeyMap(keyMaps, leftAlias, rightAlias) - ( <AND> KeyMap(keyMaps, leftAlias, rightAlias) )* - | - <USING> - n=NamePart() { keyMaps.add(new KeyMap(n, n)); } - ( <COMMA> n=NamePart() { keyMaps.add(new KeyMap(n, n)); } )* + <ON> + KeyMap(keyMaps, leftAlias, rightAlias) + ( <AND> KeyMap(keyMaps, leftAlias, rightAlias) )* + | <USING> + n=NamePart() { keyMaps.add(new KeyMap(n, n)); } + ( <COMMA> n=NamePart() { keyMaps.add(new KeyMap(n, n)); } )* ) { return keyMaps; } } -private void KeyMap(List<KeyMap> keyMaps, String leftAlias, String rightAlias): -{ +private void KeyMap(List<KeyMap> keyMaps, String leftAlias, String rightAlias): { String alias1, field1; String alias2, field2; -} -{ +} { alias1=NamePart() <PERIOD> field1=NamePart() <EQUALS> - alias2=NamePart() <PERIOD> field2=NamePart() - { + alias2=NamePart() <PERIOD> field2=NamePart() { if (alias1.equals(leftAlias)) { if (!alias2.equals(rightAlias)) throw new ParseException("invalid right alias(" + alias2 + "), expected(" + rightAlias + ")"); keyMaps.add(new KeyMap(field1, field2)); @@ -517,36 +472,30 @@ private void KeyMap(List<KeyMap> keyMaps } } -private TableName TableName(): -{ +private TableName TableName(): { String tableName, alias = null; -} -{ +} { tableName=NamePart() - ( (<AS>)? alias=NamePart() )? + ( ( <AS> )? alias=NamePart() )? { return new TableName(tableName, alias); } } -private Boolean Joiner(): -{} -{ - <LEFT> <JOIN> { return Boolean.TRUE; } -| <JOIN> { return Boolean.FALSE; } +private Boolean Joiner(): { +} { + <LEFT> <JOIN> { return Boolean.TRUE; } + | <JOIN> { return Boolean.FALSE; } } -private void FieldDef(Map<String, FieldDef> fieldDefs, List<FieldAll> fieldAlls, Set<String> fieldAllAliases): -{ +private void FieldDef(Map<String, FieldDef> fieldDefs, List<FieldAll> fieldAlls, Set<String> fieldAllAliases): { StaticValue v; String n, fieldAlias = null, fieldName, exc; FieldDef def; Set<String> excludeList = FastSet.newInstance(); -} -{ +} { ( - n=NamePart() ( - <PERIOD> ( - <STAR> - ( + n=NamePart() ( + <PERIOD> ( + <STAR> ( { if (fieldAllAliases.contains(n)) throw new ParseException("Duplicate aliasAll(" + n + ")"); } <EXCLUDE> <OPEN_PAREN> exc=NamePart() { excludeList.add(exc); } @@ -554,304 +503,264 @@ private void FieldDef(Map<String, FieldD <CLOSE_PAREN> )? { fieldAlls.add(new FieldAll(n, excludeList)); return; } - | fieldName=NamePart() ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(new FieldValue(n, fieldName), fieldAlias); } - ) - | v=FunctionCallRest(n) ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(v, fieldAlias); } - | ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(new FieldValue(null, n), fieldAlias); } - ) - | v=MathValue() ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(v, fieldAlias); } - | v=Count() ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(v, fieldAlias); } + | fieldName=NamePart() ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(new FieldValue(n, fieldName), fieldAlias); } + ) + | v=FunctionCallRest(n) ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(v, fieldAlias); } + | ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(new FieldValue(null, n), fieldAlias); } + ) + | v=MathValue() ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(v, fieldAlias); } + | v=Count() ( <AS> fieldAlias=NamePart() )? { def = new FieldDef(v, fieldAlias); } ) { if (fieldDefs.containsKey(def.getAlias())) throw new ParseException("duplicate alias(" + def.getAlias() + ")"); fieldDefs.put(def.getAlias(), def); } } -private StaticValue Count(): -{ +private StaticValue Count(): { String n, fieldName; -} -{ - <COUNT> <OPEN_PAREN> - ( - n=NamePart() ( - <PERIOD> ( - <STAR> <CLOSE_PAREN> { return new CountAllFunction(); } - | fieldName=NamePart() <CLOSE_PAREN> { return new CountFunction(false, new FieldValue(n, fieldName)); } - ) - | <CLOSE_PAREN> { return new CountFunction(false, new FieldValue(null, n)); } - ) - | <DISTINCT> n=NamePart() ( - <PERIOD> fieldName=NamePart() <CLOSE_PAREN> { return new CountFunction(true, new FieldValue(n, fieldName)); } - | <CLOSE_PAREN> { return new CountFunction(true, new FieldValue(null, n)); } +} { + <COUNT> <OPEN_PAREN> ( + n=NamePart() ( + <PERIOD> ( + <STAR> <CLOSE_PAREN> { return new CountAllFunction(); } + | fieldName=NamePart() <CLOSE_PAREN> { return new CountFunction(false, new FieldValue(n, fieldName)); } + ) + | <CLOSE_PAREN> { return new CountFunction(false, new FieldValue(null, n)); } + ) + | <DISTINCT> n=NamePart() ( + <PERIOD> fieldName=NamePart() <CLOSE_PAREN> { return new CountFunction(true, new FieldValue(n, fieldName)); } + | <CLOSE_PAREN> { return new CountFunction(true, new FieldValue(null, n)); } ) ) } -private StaticValue MathValue(): -{ +private StaticValue MathValue(): { ConstantValue v; List<ConstantValue> values = FastList.newInstance(); String operator = null, newOperator; -} -{ - <OPEN_PAREN> - v=ConstantValue() { values.add(v); } - ( - newOperator=MathOperator() - v=ConstantValue() { - if (operator == null) { - operator = newOperator; - } else if (!newOperator.equals(operator)) { - throw new ParseException("Different operators in complex alias(" + operator + ":" + newOperator + ")"); - } - values.add(v); +} { + <OPEN_PAREN> v=ConstantValue() { values.add(v); } ( + newOperator=MathOperator() v=ConstantValue() { + if (operator == null) { + operator = newOperator; + } else if (!newOperator.equals(operator)) { + throw new ParseException("Different operators in complex alias(" + operator + ":" + newOperator + ")"); } - )* - <CLOSE_PAREN> - { + values.add(v); + } + )* + <CLOSE_PAREN> { if (values.size() == 1 && values.get(0) instanceof StaticValue) return (StaticValue) values.get(0); return new MathValue(operator, values); } } -private FunctionCall FunctionCallRest(String name): -{ +private FunctionCall FunctionCallRest(String name): { Value arg; List<Value> args = FastList.newInstance(); -} -{ - <OPEN_PAREN> - ( +} { + <OPEN_PAREN> ( arg=Value() { args.add(arg); } ( <COMMA> arg=Value() { args.add(arg); } )* - ) ? + )? <CLOSE_PAREN> { return new FunctionCall(name, args); } } -private ConstantValue ConstantValue(): -{ +private ConstantValue ConstantValue(): { String n; ConstantValue v; int i; String s; +} { + n=NamePart() ( + v=FunctionCallRest(n) { return v; } + | v=FieldValue(n) { return v; } + ) + | i=Integer() { return new NumberValue<Integer>(i); } + | s=SQuoted() { return new StringValue(s); } + | v=MathValue() { return v; } +} + +private String NamePart(): { +} { + <NAME> { return getToken(0).image; } + | <TYPE> { return getToken(0).image; } } -{ - n=NamePart() ( - v=FunctionCallRest(n) { return v; } - | v=FieldValue(n) { return v; } - ) -| i=Integer() { return new NumberValue<Integer>(i); } -| s=SQuoted() { return new StringValue(s); } -| v=MathValue() { return v; } -} - -private String NamePart(): -{} -{ - <NAME> { return getToken(0).image; } -| <TYPE> { return getToken(0).image; } -} - -private String DQuoted(): -{ StringBuilder sb = new StringBuilder(); } -{ - <START_DQUOTE> (<TEXT> { sb.append(getToken(0).image); } | <ESCAPED> { sb.append(getToken(0).image); })* <END_DQUOTE> + +private String DQuoted(): { + StringBuilder sb = new StringBuilder(); +} { + <START_DQUOTE> ( + <TEXT> { sb.append(getToken(0).image); } + | <ESCAPED> { sb.append(getToken(0).image); } + )* <END_DQUOTE> { return sb.toString(); } } -private String SQuoted(): -{ StringBuilder sb = new StringBuilder(); } -{ +private String SQuoted(): { + StringBuilder sb = new StringBuilder(); +} { <START_SQUOTE> ( - <TEXT> { sb.append(getToken(0).image); } - | <ESCAPED> { sb.append(getToken(0).image); } - | <ESCAPE_SQUOTE> { sb.append("'"); } + <TEXT> { sb.append(getToken(0).image); } + | <ESCAPED> { sb.append(getToken(0).image); } + | <ESCAPE_SQUOTE> { sb.append("'"); } )* <END_SQUOTE> { return sb.toString(); } } -private String Text(): -{ +private String Text(): { StringBuilder sb = new StringBuilder(); -} -{ +} { ( <TEXT> { sb.append(getToken(0).image); } )+ { return sb.toString(); } } -private List<String> FieldList(): -{ + +private List<String> FieldList(): { List<String> list = FastList.newInstance(); String n; -} -{ +} { n=NamePart() { list.add(n); } ( <COMMA> n=NamePart() { list.add(n); } )* { return list; } } -private FieldValue FieldValue(String fieldName): -{ +private FieldValue FieldValue(String fieldName): { String s; -} -{ +} { ( <PERIOD> s=NamePart() { return new FieldValue(fieldName, s); } )? - { - return new FieldValue(fieldName); - } + { return new FieldValue(fieldName); } } -private List<OrderByItem> OrderByList(): -{ +private List<OrderByItem> OrderByList(): { List<OrderByItem> orderBy = FastList.newInstance(); OrderByItem obi; -} -{ +} { obi=OrderByItem() { orderBy.add(obi); } ( <COMMA> obi=OrderByItem() { orderBy.add(obi); } )* { return orderBy; } } -private OrderByItem OrderByItem(): -{ +private OrderByItem OrderByItem(): { String functionName = null, fieldName = null; boolean descending = false, orderingSet = false; OrderByItem.Order ordering = OrderByItem.Order.DEFAULT; -} -{ +} { ( - <PLUS> { ordering = OrderByItem.Order.ASCENDING; } + <PLUS> { ordering = OrderByItem.Order.ASCENDING; } | <MINUS> { ordering = OrderByItem.Order.DESCENDING; } )? ( - ( <UPPER> | <LOWER> ) { functionName = getToken(0).image; } - <OPEN_PAREN> fieldName=NamePart() <CLOSE_PAREN> + ( <UPPER> | <LOWER> ) { functionName = getToken(0).image; } <OPEN_PAREN> fieldName=NamePart() <CLOSE_PAREN> | fieldName=NamePart() ) LOOKAHEAD({!orderingSet}) ( - <DESC> { ordering = OrderByItem.Order.DESCENDING; } + <DESC> { ordering = OrderByItem.Order.DESCENDING; } | <ASC> { ordering = OrderByItem.Order.ASCENDING; } )? { return new OrderByItem(ordering, functionName, fieldName); } } -private Integer Integer(): -{} -{ +private Integer Integer(): { +} { <INTEGER> { return Integer.decode(getToken(0).image); } } -private Value Value(): -{ +private Value Value(): { String n; Value v; int i; String s; -} -{ - n=NamePart() ( - v=FunctionCallRest(n) { return v; } - | v=FieldValue(n) { return v; } - ) -| i=Integer() { return new NumberValue<Integer>(i); } -| s=SQuoted() { return new StringValue(s); } +} { + n=NamePart() ( + v=FunctionCallRest(n) { return v; } + | v=FieldValue(n) { return v; } + ) + | i=Integer() { return new NumberValue<Integer>(i); } + | s=SQuoted() { return new StringValue(s); } } -private Condition ConditionExpression(): -{ Condition c; } -{ +private Condition ConditionExpression(): { + Condition c; +} { c=OrExpression() { return c; } } -private Condition AndExpression(): -{ +private Condition AndExpression(): { List<Condition> list = FastList.newInstance(); Condition c; -} -{ +} { c=BooleanExpression() { list.add(c); } - ( <AND> c=BooleanExpression() { list.add(c); } )* + ( <AND> c=BooleanExpression() { list.add(c); } )* { return reduce(list, Joiner.AND); } } -private Condition OrExpression(): -{ +private Condition OrExpression(): { List<Condition> list = FastList.newInstance(); Condition c; -} -{ +} { c=AndExpression() { list.add(c); } - ( <OR> c=AndExpression() { list.add(c); } )* + ( <OR> c=AndExpression() { list.add(c); } )* { return reduce(list, Joiner.OR); } } -private Value RightValue(): -{ +private Value RightValue(): { Value v; -} -{ - v=Value() { return v; } -| v=ParameterValue() { return v; } +} { + v=Value() { return v; } + | v=ParameterValue() { return v; } } -private ParameterValue ParameterValue(): -{} -{ +private ParameterValue ParameterValue(): { +} { <PARAMETER> { return new ParameterValue(getToken(0).image.substring(1)); } } -private Condition BooleanExpression(): -{ +private Condition BooleanExpression(): { Value v1, v2, v, r1, r2; String op; Condition c; List<Value> list = FastList.newInstance(); -} -{ +} { v1=Value() ( - <BETWEEN> - r1=RightValue() - <AND> - r2=RightValue() - { return new BetweenCondition(v1, r1, r2); } - | <IS> ( - <NULL> { op = "="; v2 = Value.NULL; } - | <NOT> <NULL> { op = "!="; v2 = Value.NULL; } - ) - | op=ComparisonOperator() ( - v2=RightValue() - | <OPEN_PAREN> - v=RightValue() { list.add(v); } - ( <COMMA> v=RightValue() { list.add(v); } )* - <CLOSE_PAREN> - { return new ListCondition(v1, op, list); } + <BETWEEN> r1=RightValue() <AND> r2=RightValue() + { return new BetweenCondition(v1, r1, r2); } + | <IS> ( + <NULL> { op = "="; v2 = Value.NULL; } + | <NOT> <NULL> { op = "!="; v2 = Value.NULL; } ) - ) - { return new BooleanCondition(v1, op, v2); } -| <OPEN_PAREN> c=ConditionExpression() <CLOSE_PAREN> { return c; } + | op=ComparisonOperator() ( + v2=RightValue() + | <OPEN_PAREN> + v=RightValue() { list.add(v); } + ( + <COMMA> v=RightValue() { list.add(v); } + )* + <CLOSE_PAREN> + { return new ListCondition(v1, op, list); } + ) + ) + { return new BooleanCondition(v1, op, v2); } + | <OPEN_PAREN> c=ConditionExpression() <CLOSE_PAREN> { return c; } } -private String ComparisonOperator(): -{ +private String ComparisonOperator(): { StringBuilder sb = new StringBuilder(); String s; -} -{ - s=Text() { sb.append(s); } - ( +} { + s=Text() { sb.append(s); } + ( <EQUALS> { sb.append(getToken(0).image); } - (s=Text() { sb.append(s); })? - )* { return sb.toString(); } -| <NAME> { return getToken(0).image; } -| <EQUALS> { return getToken(0).image; } + ( s=Text() { sb.append(s); } )? + )* + { return sb.toString(); } + | <NAME> { return getToken(0).image; } + | <EQUALS> { return getToken(0).image; } } -private String MathOperator(): -{ +private String MathOperator(): { String s; -} -{ - s=Text() { return s; } -| <NAME> { return getToken(0).image; } +} { + s=Text() { return s; } + | <NAME> { return getToken(0).image; } } |
Free forum by Nabble | Edit this page |