Revision 46095 trunk/org.gvsig.desktop/org.gvsig.desktop.library/org.gvsig.expressionevaluator/org.gvsig.expressionevaluator.lib/org.gvsig.expressionevaluator.lib.impl/src/main/java/org/gvsig/expressionevaluator/impl/DefaultStatement.java
DefaultStatement.java | ||
---|---|---|
95 | 95 |
|
96 | 96 |
} |
97 | 97 |
|
98 |
public class RuleRequireTokens implements Rule { |
|
99 |
|
|
100 |
private final String[] required_tokens; |
|
101 |
private String id; |
|
102 |
|
|
103 |
public RuleRequireTokens(String... required_token) { |
|
104 |
this.required_tokens = required_token; |
|
105 |
} |
|
106 |
|
|
107 |
@Override |
|
108 |
public RuleRequireTokens capture_as(String... ids) { |
|
109 |
this.id = ids[0]; |
|
110 |
return this; |
|
111 |
} |
|
112 |
|
|
113 |
@Override |
|
114 |
public void parse(StatementContext context) { |
|
115 |
context.trace(this.toString()+".parse"); |
|
116 |
BaseCodes args = (BaseCodes) context.getCodeBuilder().args(); |
|
117 |
Token token = context.look_token(); |
|
118 |
|
|
119 |
for (String required_token : this.required_tokens) { |
|
120 |
String token_literal = (String) token.getLiteral(); |
|
121 |
if( !StringUtils.equals(required_token, token_literal) ) { |
|
122 |
throw new ExpressionSyntaxException( |
|
123 |
I18N.An_identifier_was_expected_and_XliteralX_was_found(token_literal), |
|
124 |
context.getLexicalAnalyzer() |
|
125 |
); |
|
126 |
} |
|
127 |
context.next_token(); |
|
128 |
token = context.look_token(); |
|
129 |
} |
|
130 |
if( this.id!=null ) { |
|
131 |
Code code = context.getCodeBuilder().constant(true); |
|
132 |
context.setCode(id, code); |
|
133 |
} |
|
134 |
} |
|
135 |
|
|
136 |
@Override |
|
137 |
public String toString() { |
|
138 |
return "require_tokens(" + StringUtils.join(this.required_tokens) + ")"; |
|
139 |
} |
|
140 |
|
|
141 |
} |
|
142 |
|
|
98 | 143 |
public class RuleRequireIdentifier implements IsApplicableRule { |
99 | 144 |
|
100 | 145 |
private String id; |
... | ... | |
926 | 971 |
} |
927 | 972 |
|
928 | 973 |
@Override |
974 |
public Rule require_tokens(String... token) { |
|
975 |
return new RuleRequireTokens(token); |
|
976 |
} |
|
977 |
|
|
978 |
@Override |
|
929 | 979 |
public Rule require_identifier() { |
930 | 980 |
return new RuleRequireIdentifier(); |
931 | 981 |
} |
Also available in: Unified diff