1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package com.github.maven_nar.cpptasks.parser;
21
22 public class BranchState extends AbstractParserState {
23 private final char[] branchChars;
24 private final AbstractParserState[] branchStates;
25 private final AbstractParserState noMatchState;
26
27 public BranchState(final AbstractParser parser, final char[] branchChars, final AbstractParserState[] branchStates,
28 final AbstractParserState noMatchState) {
29 super(parser);
30 this.branchChars = branchChars.clone();
31 this.branchStates = branchStates.clone();
32 this.noMatchState = noMatchState;
33 }
34
35 @Override
36 public AbstractParserState consume(final char ch) {
37 AbstractParserState state;
38 for (int i = 0; i < this.branchChars.length; i++) {
39 if (ch == this.branchChars[i]) {
40 state = this.branchStates[i];
41 return state.consume(ch);
42 }
43 }
44 state = getNoMatchState();
45 if (state != null) {
46 return state.consume(ch);
47 }
48 return state;
49 }
50
51 protected AbstractParserState getNoMatchState() {
52 return this.noMatchState;
53 }
54 }