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

View differences:

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