Skip to contentMethod: DefinitionVariableNState()
      1: package parser.states.definitionstates;
2: 
3: import model.RouterSoftware;
4: import model.definition.AbstractVariableDefinition;
5: import parser.DefinitionFileParser;
6: import parser.ParserException;
7: import parser.tempparserobjects.TempVariableDefinition;
8: import symbols.AbstractSymbol;
9: import symbols.EmptySymbol;
10: import symbols.IdentifierSymbol;
11: import basic.Buffer;
12: 
13: /**
14:  * 
15:  * @author Muri
16:  * 
17:  */
18: public class DefinitionVariableNState extends AbstractDefinitionState {
19: 
20:         /**
21:          * 
22:          * @param tVD
23:          *            TempVariableDefinition
24:          * @param dFP
25:          *            DefinitionFileParser
26:          * @param buffer
27:          *            Buffer<Symbol>
28:          * @return
29:          * @throws InterruptedException
30:          *             InterruptedException
31:          * @throws ParserException
32:          *             ParserException
33:          */
34:         @Override
35:         public void parse(final RouterSoftware rs, final TempVariableDefinition tVD,
36:                         final Buffer<AbstractSymbol> buffer, final DefinitionFileParser dFP)
37:                         throws InterruptedException, ParserException {
38:                 final AbstractSymbol nextSymbol = buffer.peek();
39:                 if (nextSymbol instanceof EmptySymbol) {
40:                         // TODO what to Do if no Vaiable Exists?
41:                         tVD.setVariableN(null);
42:                         tVD.setArrayElement(false);
43:                         dFP.setState(new DefinitionTypeState());
44:                         buffer.remove();
45:                 } else if (nextSymbol instanceof IdentifierSymbol) {
46:                         final AbstractVariableDefinition variableN =
47:                                         dFP.getVariableDefinitionList()
48:                                                         .get(((IdentifierSymbol) nextSymbol).getText());
49:                         tVD.setVariableN(variableN);
50:                         tVD.setArrayElement(true);
51:                         dFP.setState(new DefinitionTypeState());
52:                         buffer.remove();
53:                 } else {
54:                         throw new ParserException("no valid symbol: "
55:                                         + buffer.peek().getClass().getCanonicalName());
56:                 }
57:         }
58: }