3 * Copyright 2002-2004 The Ant-Contrib project
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
9 * http://www.apache.org/licenses/LICENSE-2.0
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
17 package net
.sf
.antcontrib
.cpptasks
.parser
;
18 public class BranchState
extends AbstractParserState
{
19 private char[] branchChars
;
20 private AbstractParserState
[] branchStates
;
21 private AbstractParserState noMatchState
;
22 public BranchState(AbstractParser parser
, char[] branchChars
,
23 AbstractParserState
[] branchStates
, AbstractParserState noMatchState
) {
25 this.branchChars
= (char[]) branchChars
.clone();
26 this.branchStates
= (AbstractParserState
[]) branchStates
.clone();
27 this.noMatchState
= noMatchState
;
29 public AbstractParserState
consume(char ch
) {
30 AbstractParserState state
;
31 for (int i
= 0; i
< branchChars
.length
; i
++) {
32 if (ch
== branchChars
[i
]) {
33 state
= branchStates
[i
];
34 return state
.consume(ch
);
37 state
= getNoMatchState();
39 return state
.consume(ch
);
43 protected AbstractParserState
getNoMatchState() {